您当前的位置:五五电子网电子知识单片机-工控设备AVR单片机lcd液晶12232F的串口C51程序(ST7920) 正文
lcd液晶12232F的串口C51程序(ST7920)

lcd液晶12232F的串口C51程序(ST7920)

点击数:7808 次   录入时间:03-04 12:00:56   整理:http://www.55dianzi.com   AVR单片机
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教!

/******************************************************/ 
/* */ 
/* 12232F串口驱动程序C51,11.0592M晶振 */ 
/*使用这款LCD应该要注意的问题: */ 
/*一定要在VO与VDD及VSS这三个脚间接一个20K的电位器, */ 
/*电位器的中间脚接VO,其它二脚接VDD和VSS。 */ 
/*然后调节电位器的大小,直到有显示为止。若是不接的话,*/ 
/*显示器可能是一片黑暗,什么也没有显示,发命令也没有反*/ 
/*应的。本程序我已经测试通过了。欢迎大家提出意见。 */ 
/******************************************************/ 
#include <AT89X52.H> 
#include <intrins.h>



#define uint unsigned int 
#define uchar unsigned char



/*12232f PINs define*/ 
sbit CS=P1^5; 
sbit SID=P1^6; 
sbit SCLK=P1^7; 



void delay_1ms(uint x) 

uint j; 
uchar i; 
for(j=0;j<x;j++) 

for(i=0;i<120;i++); 

}



void send_command(uchar command_data) 

uchar i; 
uchar i_data,data1,data2; 
i_data=0xf8; 
delay_1ms(10); 
CS=1; 
SCLK=0; 
for(i=0;i<8;i++) 

SID=(bit)(i_data&0x80); 
SCLK=0; 
SCLK=1; 
i_data=i_data<<1; 

i_data=command_data; 
i_data&=0xf0; 
for(i=0;i<8;i++) 

SID=(bit)(i_data&0x80); 
SCLK=0; 
SCLK=1; 
i_data=i_data<<1; 

i_data=command_data; 
data1=i_data&0xf0; 
data2=i_data&0x0f; 
data1>>=4; 
data2<<=4; 
i_data=data1|data2; 
i_data&=0xf0; 
for(i=0;i<8;i++) 

SID=(bit)(i_data&0x80); 
SCLK=0; 
SCLK=1; 
i_data=i_data<<1; 

CS=0; 


void send_data(uchar command_data) 

uchar i; 
uchar i_data,data1,data2; 
i_data=0xfa; 
delay_1ms(10); 
CS=1; 
for(i=0;i<8;i++) 

SID=(bit)(i_data&0x80); 
SCLK=0; 
SCLK=1; 
i_data=i_data<<1; 

i_data=command_data; 
i_data&=0xf0; 
for(i=0;i<8;i++) 

SID=(bit)(i_data&0x80); 
SCLK=0; 
SCLK=1; 
i_data=i_data<<1; 

i_data=command_data; 
data1=i_data&0xf0; 
data2=i_data&0x0f; 
data1>>=4; 
data2<<=4; 
i_data=data1|data2; 
i_data&=0xf0; 
for(i=0;i<8;i++) 

SID=(bit)(i_data&0x80); 
SCLK=0; 
SCLK=1; 
i_data=i_data<<1; 

CS=0; 
}



void lcd_init() 

uchar command_data; 
delay_1ms(100); 
command_data=0x30; 
send_command(command_data); /*功能设置:一次送8位数据,基本指令集*/ 
command_data=0x04; 
send_command(command_data); /*点设定:显示字符/光标从左到右移位,DDRAM地址加1*/ 
command_data=0x0f; 
send_command(command_data); /*显示设定:开显示,显示光标,当前显示位反白闪动*/ 
command_data=0x01; 
send_command(command_data); /*清DDRAM*/ 
command_data=0x02; 
send_command(command_data); /*DDRAM地址归位*/ 
command_data=0x80; 
send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/ 
}



void display_cpubbs() 

uchar command_data; 
while(1) 

command_data=0x01; 
send_command(command_data); /*清DDRAM*/ 
command_data=0x80; 
send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/ 
command_data=0x68; /*“h”字的编码*/ 
send_data(command_data); 
command_data=0x74; 
send_data(command_data); /*“t”字的编码*/ 
command_data=0x74; 
send_data(command_data); /*“t”字的编码*/ 
command_data=0x70; 
send_data(command_data); /*“p”字的编码*/ 
command_data=0x3a; 
send_data(command_data); /*“:”字的编码*/ 
command_data=0x2f; 
send_data(command_data); /*“/”字的编码*/ 
command_data=0x2f; 
send_data(command_data); /*“/”字的编码*/ 
command_data=0x57; 
send_data(command_data); /*“w”字的编码*/ 
command_data=0x57; 
send_data(command_data); /*“w”字的编码*/ 
command_data=0x57; 
send_data(command_data); /*“w”字的编码*/ 
command_data=0x2e; 
send_data(command_data); /*“.”字的编码*/ 
command_data=0x63; 
send_data(command_data); /*“c”字的编码*/ 
command_data=0x70; 
send_data(command_data); /*“p”字的编码*/ 
command_data=0x75; 
send_data(command_data); /*“u”字的编码*/ 
command_data=0x62; 
send_data(command_data); /*“b”字的编码*/ 

command_data=0x90; 
send_command(command_data); /*把显示地址设为0X90,即为第二行的首位,因为第一行已经满了*/ 
command_data=0x62; 
send_data(command_data); /*“b”字的编码*/ 
command_data=0x73; 
send_data(command_data); /*“s”字的编码*/ 
command_data=0x2e; 
send_data(command_data); /*“.”字的编码*/ 
command_data=0x63; 
send_data(command_data); /*“c”字的编码*/ 
command_data=0x6f; 
send_data(command_data); /*“o”字的编码*/ 
command_data=0x6d; 
send_data(command_data); /*“m”字的编码*/ 

delay_1ms(3000); 

command_data=0x01; 
send_command(command_data); /*清DDRAM*/ 
command_data=0x80; 
send_command(command_data); /*把显示地址设为0X80,即为第一行的首位*/ 

command_data=0xbb; 
send_data(command_data); 
command_data=0xb6; 
send_data(command_data); /*“欢”字的编码*/ 
command_data=0xd3; 
send_data(command_data); 
command_data=0xad; 
send_data(command_data); /*“迎”字的编码*/ 
command_data=0xb7; 
send_data(command_data); 
command_data=0xc3; 
send_data(command_data); /*“访”字的编码*/ 
command_data=0xce; 
send_data(command_data); 
command_data=0xca; 
send_data(command_data); /*“问”字的编码*/ 
command_data=0x90; 
send_command(command_data); /*把显示地址设为0X90,即为第二行的首位,因为第一行已经满了*/ 
command_data=0x63; 
send_data(command_data); /*“c”字的编码*/ 
command_data=0x70; 
send_data(command_data); /*“p”字的编码*/ 
command_data=0x75; 
send_data(command_data); /*“u”字的编码*/ 
command_data=0x62; 
send_data(command_data); /*“b”字的编码*/ 
command_data=0x62; 
send_data(command_data); /*“b”字的编码*/ 
command_data=0x73; 
send_data(command_data); /*“s”字的编码*/ 

[1] [2]  下一页


本文关键字:程序  AVR单片机单片机-工控设备 - AVR单片机