黄金会员 
 
主题
回帖0
积分8163
阅读权限40
注册时间2009-1-13
最后登录1970-1-1
在线时间 小时
 
 
 
 
 | 
你这个lcd应该是ST7920驱动的 
 
试下这个能否驱动 http://www.mcu123.com/news/article/design/uc/200610/2364.html 
只接串口就好 
 
lcd液晶12232F的串口C51程序(ST7920)  
  
作者:佚名    文章来源:本站原创    点击数:4070    更新时间:2006-10-18      
 
 
  
lcd液晶12232F的串口C51程序 
<--Element not supported - Type: 8 Name: #comment--> 
 
 
 
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! 
 
 
由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教! 
 
/******************************************************/  
/*作者:赖卫国 email:laiweiguo@163.com */  
/* */  
/* 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,temp_data1,temp_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;  
temp_data1=i_data&0xf0;  
temp_data2=i_data&0x0f;  
temp_data1>>=4;  
temp_data2<<=4;  
i_data=temp_data1|temp_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,temp_data1,temp_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;  
temp_data1=i_data&0xf0;  
temp_data2=i_data&0x0f;  
temp_data1>>=4;  
temp_data2<<=4;  
i_data=temp_data1|temp_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”字的编码*/  
command_data=0xc2;  
send_data(command_data);  
command_data=0xdb;  
send_data(command_data); /*“论”字的编码*/  
command_data=0xcc;  
send_data(command_data);  
command_data=0xb3;  
send_data(command_data); /*“坛”字的编码*/  
delay_1ms(3000);  
}  
} 
 
 
 
main()  
{  
uchar command_data;  
lcd_init();  
display_cpubbs();  
while(1);  
} 
 
  
ST7920 |   
 
 
 
 |