欢迎来到天天文库
浏览记录
ID:41037253
大小:35.50 KB
页数:5页
时间:2019-08-14
《LCD1602四线编程实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、LCD1602四线编程实现——51单片机和LPC23xx系列单片机(2009-05-0719:49:49)转载标签:lcd1602四线51单片机lpc23xxit分类:单片机第一次调4线的LCD1602,比较困难,或者因为延迟不对,或者因为命令错误,我足足用了一天时间,搞定了4线的1602编程实现。这里提供51单片机和LPC23XX系列单片机的程序。51的程序是我上网找的,可以参考里面的实现步骤,可以直接仿真,但是不知道烧到板子里是否可以。LPC23XX系列单片机的程序可以直接烧写板子里运行,注意里面的管脚定义,因为在proteus里没找到对应的芯片,这里不知是否可
2、以仿真。51程序#includesbitLCM_RW=P2^0;//定义引脚sbitLCM_RS=P2^1;sbitLCM_E=P2^2;#defineLCM_Data P1#defineBusy0x80//用于检测LCM状态字中的Busy标识voidWriteDataLCM(unsignedcharData);voidWriteCommandLCM(unsignedcharCommand);voidLCMInit(void);voidDisplayOneChar(unsignedcharX,unsignedcharY,unsignedcharDD
3、ata);voidDisplayListChar(unsignedcharX,unsignedcharY,unsignedcharcode*DData);voidDelayms(unsignedintn);voiddellay(unsignedint h);unsignedcharcodeblog_adr[]={"EDNchina"};unsignedcharcodeemail[]={"tengjingshu@126.com"};voidmain(void){ //Delay400Ms(); //启动等待,等LCM讲入工作状态 LCMIn
4、it(); //LCM初始化 DisplayListChar(3,0,blog_adr); DisplayListChar(0,1,email); while(1);}//写数据RS=H,RW=L,D0~D7=数据,E=高脉冲voidWriteDataLCM(unsignedcharData) { LCM_RS=1; LCM_RW=0; LCM_E =0; LCM_Data=(Data&0xF0); LCM_E =1; dellay(100); //短暂延时,代替检测忙
5、状态 LCM_E =0; LCM_Data=(Data&0x0F)<<4; LCM_E =1; dellay(100); LCM_E =0;}//写指令RS=L,RW=L,D0~D7=指令码,E=高脉冲voidWriteCommandLCM(unsignedcharCommand){dellay(100); //短暂延时,代替检测忙状态 LCM_RS=0; LCM_RW=0; LCM_E =0; LCM_Data=(Command&0xF0); LCM_E =1; dellay(100); LCM_
6、E =0; LCM_Data=(Command&0x0F)<<4; LCM_E =1; dellay(100); LCM_E =0;}//读数据RS=H,RW=H,E=H//读状态RS=L,RW=H,E=H//由于不要检测忙,所以读数据和读状态两个函数省略voidLCMInit(void) //LCM初始化{ LCM_Data=0; Delayms(15); WriteCommandLCM(0x03);//三次显示模式设置,不检测忙信号 Delayms(5); WriteCommandLCM(0
7、x03); Delayms(5); WriteCommandLCM(0x03); Delayms(5); WriteCommandLCM(0x02); Delayms(5); WriteCommandLCM(0x28);//显示模式设置,开始要求每次检测忙信号 WriteCommandLCM(0x06);//显示光标移动设置 WriteCommandLCM(0x0C); WriteCommandLCM(0x01); Delayms(5);}//按指定位置显示一个字符voidDisplayOneCha
此文档下载收益归作者所有