[ZLG-MCU] 我的LCD1602为什么只能显示一行阿?我已经弄了很多天了

[复制链接]
4804|6
 楼主| eagle109 发表于 2007-8-9 16:25 | 显示全部楼层 |阅读模式
1602我以前用过很多次了,都没有出现这个问题。<br /><br />首先,液晶是好的,我在51、AVR上都试过了。但是我接到LPC2210上就只能显示一行了,一开双行显示就什么也不能显示了,怪。我测了引脚的状态,完全正确。我用的是EasyARM2200,P2.16-P2.23为液晶数据线,控制线用的P0口的
sanxinwork 发表于 2007-8-9 16:53 | 显示全部楼层

原因可能还是1602没使用正确

重点注意:<br />确定设好了显示第二行时地址码<br />可以在第一行的基础上+0x40;也可:<br />WriteCommandLCM(0xc0,&nbsp;1);&nbsp;&nbsp;&nbsp;&nbsp;//输入第二行首个字符的首地址<br /><br />同时还要注意是否关显示了:<br /><br />WriteCommandLCM(0x08,1);&nbsp;//关闭显示&nbsp;<br />WriteCommandLCM(0x0e,1);&nbsp;//开显示&nbsp;<br /><br />真不行的话在显第二行之前,先执行<br />WriteCommandLCM(0x01,1);&nbsp;//清屏光标归位.<br /><br />总之,你在单片机上1602正常,只是你程序的问题没有暴露出来而已。重新再看看吧。祝你成功
sanxinwork 发表于 2007-8-9 17:01 | 显示全部楼层

回复1602

顺便问一下:你知道现在LPC2200系列各芯片价格吗?如LPC2210、2212、2290的零售价,前面我用得大多是LPC213X。想用用LPC2200系列<br />&nbsp;&nbsp;谢谢
sanxinwork 发表于 2007-8-10 00:00 | 显示全部楼层

1602是否读忙信号了

WriteCommandLCM(0x38,1);&nbsp;//准确意思是:<br /><br />显示模式设置,开始要求每次检测忙信号&nbsp;工作方式:总线为8位,显2行,5&nbsp;X&nbsp;7<br /><br />ARM7的速度快,你是否每次在对1602操作时,是否检测了1602为不忙时再进行下一次操作.
sanxinwork 发表于 2007-8-10 00:09 | 显示全部楼层

检测忙标志的方法

下面是我51检测忙&nbsp;的程序段:其中在前面定义了:<br />#define&nbsp;LCM_Data&nbsp;&nbsp;P1&nbsp;&nbsp;&nbsp;//(P)<br />#define&nbsp;Busy&nbsp;&nbsp;&nbsp;&nbsp;0x80&nbsp;//用于检测LCM状态字中的Busy标识&nbsp;<br /><br />unsigned&nbsp;char&nbsp;ReadStatusLCM(void)&nbsp;<br />{&nbsp;<br />&nbsp;LCM_Data=0xFF;&nbsp;&nbsp;<br />&nbsp;LCM_RS=0;//&nbsp;<br />&nbsp;LCM_RW=1;//&nbsp;<br />&nbsp;LCM_E=0;//<br />&nbsp;LCM_E=0;//&nbsp;<br />&nbsp;LCM_E=1;&nbsp;<br />&nbsp;while&nbsp;(LCM_Data&nbsp;&&nbsp;Busy);&nbsp;//检测忙信号&nbsp;&nbsp;&nbsp;P1.7对应忙标志位<br />&nbsp;return(LCM_Data);&nbsp;<br />}&nbsp;<br /><br />如果为忙,此子函数不返回<br /><br /><br /><br />//在写指令时&nbsp;根据需要检测忙&nbsp;<br />void&nbsp;WriteCommandLCM(unsigned&nbsp;char&nbsp;WCLCM,BuysC)&nbsp;//BuysC为0时忽略忙检测&nbsp;<br />{&nbsp;<br />&nbsp;if&nbsp;(BuysC)&nbsp;ReadStatusLCM();&nbsp;//根据需要检测忙&nbsp;<br />&nbsp;LCM_Data&nbsp;=&nbsp;WCLCM;&nbsp;<br />&nbsp;LCM_RS&nbsp;=&nbsp;0;&nbsp;<br />&nbsp;LCM_RW&nbsp;=&nbsp;0;&nbsp;&nbsp;<br />&nbsp;LCM_E&nbsp;=&nbsp;0;&nbsp;<br />&nbsp;LCM_E&nbsp;=&nbsp;0;&nbsp;<br />&nbsp;LCM_E&nbsp;=&nbsp;1;&nbsp;<br />&nbsp;<br />}&nbsp;<br /><br /><br />&nbsp;&nbsp;&nbsp;有技术问题欢迎与郑州三芯电子设计工作室联系.&nbsp;HTTP://www.sanxinwork.net<br />
 楼主| eagle109 发表于 2007-8-10 13:22 | 显示全部楼层

问题依旧

我加了判忙了,还是不行<br /><br />我的问题是不能写入0x38这条指令,反正只要在开双行显示那位写入1就不行了<br /><br />数据的0x38可以,其他的指令和数据都正常
myway 发表于 2007-8-11 10:18 | 显示全部楼层

我的网站上有demo

你自己去下载吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

57

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部