文档库 最新最全的文档下载
当前位置:文档库 › RT12232F-2的串行驱动

RT12232F-2的串行驱动

RT12232F-2的串行驱动



要在VLCD与VDD及VSS这三个脚间接一个20K或50K的电位器,电位器的中间脚接VLCD,其它二脚接VDD和VSS.然后调节电位器的大小,直到不显示黑板为止。上电全显示黑的就需要调那个电位器。

使用RT12232F的串行接口要按图的说明跳线,否则你几天都成不了。

实验中试了那么多次,没有想到瑞特把这个东西给搞掉了,看来这RT也是
抄板来的. 跳线好了,显示也行了.编程的时候可以参考LCD在线的
12232F使用文档,控制流程也比较简单,注意发送数据间有点延时,
等待LCM数据处理完成。

部分代码:
#define LCM_WR_COM B1111_1000
#define LCM_WR_DATA B1111_1010
#define LCM_RD_STA B1111_1100
#define LCM_RD_DATA B1111_1110

//type:命令控制字,读或写数据、命令类型

//dat:数据

void send_lcd_data(uchar type,uchar dat)

{

uchar i,j;

j=type;

C_CS=1;

for(i=0;i<8;i++){

SID=(bit)(j&0x80);

SCLK=0;

j<<=1;

_nop_();

SCLK=1;

_nop_();

}

j=dat&0xf0;

for(;i<16;i++){

SID=(bit)(j&0x80);

SCLK=0;

j<<=1;

_nop_();

SCLK=1;

_nop_();

}

j=dat<<4;

j&=0xf0;

for(;i<24;i++){

SID=(bit)(j&0x80);

SCLK=0;

j<<=1;

_nop_();

SCLK=1;

_nop_();

}

C_CS=0;

}//line:显示的行

//要显示的缓冲

//要显示的字符的个数(汉字算2个字符)

void diap_line(uchar line,uchar *disp,uchar no)

{

uchar i=0;

if(line==1){

send_lcd_data(LCM_WR_COM,0X80);

}

else{

send_lcd_data(LCM_WR_COM,0X90);

}

while(buzzer_counter<1);

disp_lcm_counter=0;

for(i=0;i<15;i++){

while(disp_lcm_counter
if(i>=no){

send_lcd_data(LCM_WR_DATA,' ');

}

else{

send_lcd_data(LCM_WR_DATA,disp[i]);

}

}

}

//初始化LCM,2005-8-16 04:57下午

void init_rt12232(void)

{

uchar code start1[]=" 欢迎使用 ";

uchar code start2[]={"广州XXX产品! "};

while(buzzer_counter<40);//延时,等待处理完毕

send_lcd_data(LCM_WR_COM,0X30);

while(buzzer_counter<42);

send_lcd_data(LCM_WR_COM,0X30);

while(buzzer_counter<44);

send_lcd_data(LCM_WR_COM,0X30);

while(buzzer_counter<46);

send_lcd_data(LCM_WR_COM,0X30);

while(buzzer_counter<48);

send_lcd_data(LCM_WR_COM,0X3F);


while(buzzer_counter<50);

send_lcd_data(LCM_WR_COM,0X38);

while(buzzer_counter<50);

send_lcd_data(LCM_WR_COM,0X04);//

while(buzzer_counter<52);

send_lcd_data(LCM_WR_COM,b0000_1100);

while(buzzer_counter<54);

send_lcd_data(LCM_WR_COM,0X01);

while(buzzer_counter<56);

send_lcd_data(LCM_WR_COM,0X02);

while(buzzer_counter<58);

send_lcd_data(LCM_WR_COM,0X80);

while(buzzer_counter<60);

disp_lcm_counter=0;

diap_line(1,start1,sizeof(start1));

diap_line(2,start2,sizeof(start2));

_nop_();

}

相关文档