当前位置: 代码迷 >> 单片机 >> LCD1602忙碌状态检测,该怎么解决
  详细解决方案

LCD1602忙碌状态检测,该怎么解决

热度:54   发布时间:2016-04-28 16:01:55.0
LCD1602忙碌状态检测
请问LCD忙碌状态是什么意思啊?
有必要要检测忙碌状态吗?
看到了这样一条程序
bit lcd_busy()
{
  bit result;
  rs = 0; //数据、命令选择端 1为数据
  rw = 1; //读、写选择端 1为读
  ep = 1; //使能控制
  _nop_()
  _nop_();
  _nop_();
  _nop_();
  result=bit(P0&0x80); //LCD的D0-D7中,D7=1为忙碌,0为空闲
  //result 是检测那里的数据啊?????
  ep = 0;
  return result;
 
}
 先谢啦!

------解决方案--------------------
result=bit(P0&0x80); //LCD的D0-D7中,D7=1为忙碌,0为空闲 
RESULT是从LCD里读出来的状态位

PS:一个_nop_();是一个机器周期,是1us么?那延时几us作用有用么?
你的机器多快就是多少

这几个延时是给
rs = 0; //数据、命令选择端 1为数据
rw = 1; //读、写选择端 1为读
ep = 1; //使能控制 

留出足够的时间,让LCD能够反应过来
把数据送到IO上,让你上面那句RESULT读


------解决方案--------------------
可能是命令下达以后,回读数据或者状态需要一定的延时,D7为1的时候说明控制器还没有准备好回读数据
------解决方案--------------------
那个时间是给lcd反应的 lcd反应比较慢
------解决方案--------------------
LCD通过数据线送过来的
P0.7~P0.0
------解决方案--------------------
LCD控制器的电路的内部寄存器
读操作时,其内容就出现在数据总线上