当前位置:首页 > 单片机 > 单片机
[导读] 由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教!/***

由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序,并且也没有对应于12232F的并口程序,串口C51程序极少见,为了方便大家使用,所以本站把它调试了一个出来,大家多多指教!

/******************************************************/
/**/
/*12232F串口驱动程序C51,11.0592M晶振*/

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



#defineuintunsignedint
#defineucharunsignedchar



/*12232fPINsdefine*/
sbitCS=P1^5;
sbitSID=P1^6;
sbitSCLK=P1^7;



voiddelay_1ms(uintx)
{
uintj;
uchari;
for(j=0;j{
for(i=0;i<120;i++);
}
}



voidsend_command(ucharcommand_data)
{
uchari;
uchari_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;
}

voidsend_data(ucharcommand_data)
{
uchari;
uchari_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;
}



voidlcd_init()
{
ucharcommand_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,即为第一行的首位*/
}



voiddisplay_cpubbs()
{
ucharcommand_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()
{
ucharcommand_data;
lcd_init();
display_cpubbs();
while(1);
}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在这篇文章中,小编将对PLC的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: PLC 模块化 程序

7月29日消息,LG Display已将其在美国的70项LCD液晶显示器相关专利转让给三星显示,值得注意的是,三星显示已于三年前退出LCD业务。

关键字: LCD 三星

HT16K24操作电压为2.4V~5.5V,内建I²C通信接口,提供三种LCD显示与按键模式:24SEG × 4COM + 24 KEY;22SEG × 6COM + 22 KEY;20SEG × 8COM + 20 K...

关键字: LCD MCU 蜂鸣器

离线GPS工具:跟踪、保存和查找具有距离和方位的航路点——没有网络,没有云,您的数据,您的规则。

关键字: GPS设备 LCD 微控制器 Arduino Uno

在技术上,LCD和OLED各有其独特之处。液晶电视通过控制液态晶体实现图像显示,其原理是在两片玻璃基板中夹入液态晶体,通过细小的电线控制水晶分子的方向。而OLED凭借自发光二极管带来更优的视角与色彩表现,其RGB色彩信号...

关键字: OLED LCD

上海 2025年5月29日 /美通社/ -- 2025年5月,飞凯材料旗下子公司江苏和成显示科技有限公司(以下简称"和成显示")与全球领先的液晶材料企业JNC株式会社(前身为日本智索Chisso株式...

关键字: 液晶 液晶材料 终端 人机交互

双锁系统,通过键盘输入密码开门,客人来了用短信开门

关键字: LCD 双锁系统 L293D 变压器

在汽车显示系统领域,TFT LCD显示屏目前是车载显示面板的主流选择。与此同时,OLED和micro-LED显示屏也逐渐吸引了市场的广泛关注。为了适应不同的显示技术,我们需要开发相应的电源技术。TFT LCD显示屏通常使...

关键字: LCD OLED micro-LED

如今,汽车行业对先进显示屏的需求空前高涨,亟需能够实现更大尺寸、更高亮度、曲面设计、更高分辨率和更高对比度的解决方案。与此同时,各类新型车载显示屏也日益受到青睐。目前,TFT LCD是汽车平板显示技术的主流选择。OLED...

关键字: LCD OLED micro-LED

大家好,欢迎回来。在这个项目中,我们将学习如何使用键盘和LCD显示制作一个安全的基于Arduino的门锁。你可以用它来保护你的办公室、房间或家里的保险箱。要锁门和开锁,你需要在安全系统中输入密码。这确保了只有经过授权的人...

关键字: 键盘 LCD Arduino 电子门锁
关闭