由于12232F這個顯示器用得比較平常,但平常見到的是一些并口的匯編程序,并且也沒有對應(yīng)于12232F的并口程序,串口的C51程序極少見,為了方便大家使用,所以本站把它調(diào)試了一個出來,大家多多指教!
由于12232F這個顯示器用得比較平常,但平常見到的是一些并口的匯編程序,并且也沒有對應(yīng)于12232F的并口程序,串口的C51程序極少見,為了方便大家使用,所以本站把它調(diào)試了一個出來,大家多多指教!
/******************************************************/
/* 12232F串口驅(qū)動程序C51,11.0592M晶振 */
/*使用這款LCD應(yīng)該要注意的問題: */ z
/*一定要在VO與VDD及VSS這三個腳間接一個20K的電位器, */
/*電位器的中間腳接VO,其它二腳接VDD和VSS。 */
/*然后調(diào)節(jié)電位器的大小,直到有顯示為止。若是不接的話,*/
/*顯示器可能是一片黑暗,什么也沒有顯示,發(fā)命令也沒有反*/
/*應(yīng)的。本程序我已經(jīng)測試通過了。歡迎大家提出意見。 */
/******************************************************/
#include
#include
#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
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); /*功能設(shè)置:一次送8位數(shù)據(jù),基本指令集*/
command_data=0x04;
send_command(command_data); /*點設(shè)定:顯示字符/光標(biāo)從左到右移位,DDRAM地址加1*/
command_data=0x0f;
send_command(command_data); /*顯示設(shè)定:開顯示,顯示光標(biāo),當(dāng)前顯示位反白閃動*/
command_data=0x01;
send_command(command_data); /*清DDRAM*/
command_data=0x02;
send_command(command_data); /*DDRAM地址歸位*/
command_data=0x80;
send_command(command_data); /*把顯示地址設(shè)為0X80,即為第一行的首位*/
}
void display_cpubbs()
{
uchar command_data;
while(1)
{
command_data=0x01;
send_command(command_data); /*清DDRAM*/
command_data=0x80;
send_command(command_data); /*把顯示地址設(shè)為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); /*把顯示地址設(shè)為0X90,即為第二行的首位,因為第一行已經(jīng)滿了*/
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); /*把顯示地址設(shè)為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); /*把顯示地址設(shè)為0X90,即為第二行的首位,因為第一行已經(jīng)滿了*/
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);
}