求助:lcd1602一直处于忙状态

[复制链接]
5091|5
 楼主| duanhan 发表于 2008-6-7 15:30 | 显示全部楼层 |阅读模式
写入读忙标志指令后,一直处于忙状态。请问可能由哪些原因造成的。<br />我用的单片机io口电压为3.3v,这也有关系不?<br /><br />谢谢!
eiyouwei 发表于 2008-6-7 17:05 | 显示全部楼层

如果硬件没有问题,一定是程序的问题了。认真检查程序看

  
delong_z 发表于 2008-6-14 12:18 | 显示全部楼层

注意单片机 IO 口方向

你用的什么单片机?可能是IO口方向的问题。在输出命令或数据后要将IO口转为输入才能检测到忙信号。<br /><br />这是我写的PIC的部份代码:<br /><br />//LCD1602接线引脚定义<br />#define&nbsp;&nbsp;&nbsp;&nbsp;LCD_RS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RA0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LCD数据/命令寄存器选择。<br />#define&nbsp;&nbsp;&nbsp;&nbsp;LCD_RW&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RA1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LCD读/写。<br />#define&nbsp;&nbsp;&nbsp;&nbsp;LCD_EN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RA2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LCD使能。<br />#define&nbsp;&nbsp;&nbsp;&nbsp;LCD_DATA&nbsp;&nbsp;&nbsp;&nbsp;PORTC&nbsp;&nbsp;&nbsp;&nbsp;//MCU数据口。<br />#define&nbsp;&nbsp;&nbsp;&nbsp;LCD_IODIR&nbsp;&nbsp;&nbsp;&nbsp;TRISC&nbsp;&nbsp;&nbsp;&nbsp;//MCU数据口方向控制寄存器。<br />#define&nbsp;&nbsp;&nbsp;&nbsp;LCD_BUSY&nbsp;&nbsp;&nbsp;&nbsp;RC7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//LCD忙信号。<br /><br />//检测忙标志。<br />void&nbsp;LCD_CheckBusy(void)&nbsp;&nbsp;&nbsp;&nbsp;//检测LCD忙标志,等待内部操作完成。<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_RS=LOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_RW=HIGH;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_EN=HIGH;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_IODIR=IN;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(LCD_BUSY==HIGH);<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_EN=LOW;<br />}<br />//发送一条命令。<br />void&nbsp;LCD_SendCommand(unsigned&nbsp;char&nbsp;command)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_CheckBusy();<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_RS=LOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_RW=LOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_EN=HIGH;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_IODIR=OUT;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_DATA=command;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_EN=LOW;<br />}<br />//发送一字节数据。<br />void&nbsp;LCD_SendData(unsigned&nbsp;char&nbsp;dat)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_CheckBusy();<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_RS=HIGH;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_RW=LOW;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_EN=HIGH;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_IODIR=OUT;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_DATA=dat;<br />&nbsp;&nbsp;&nbsp;&nbsp;LCD_EN=LOW;<br />}
dayu111 发表于 2010-12-3 11:46 | 显示全部楼层
关于LCD忙信号检测一直很迷茫。难道它自己会变,为什么只要不断的检测那个端口就行呢
beandy 发表于 2011-1-15 19:48 | 显示全部楼层
我也遇到同样的问题了
xia9628 发表于 2015-3-27 22:58 | 显示全部楼层
在检查忙状态前延时一下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

5

帖子

1

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