void busy_check()//忙忙信号检测 (
lcdrs=0;
lcdrw=1;
lcden=1;
_nop_();
while(P0&0x80)//忙忙信号检测关键
(
lcden=0;
_nop_();
lc
void busy_check()//忙忙信号检测 (
lcdrs=0;
lcdrw=1;
lcden=1;
_nop_();
while(P0&0x80)//忙忙信号检测关键
(
lcden=0;
_nop_();
lcden=1;
_nop_();
}
现在让我们来分析一下这个忙信号的检测过程:
1、读状态RS = L RW = H EN = H然后就可以读它的状态了,我 看到很多人写这个读状态的时候都是这样的:
void busy_check()//忙忙信号检测
(
lcdrs=0;
lcdrw=1;
lcden=1;
_nop_();
while(P0&0x80);
2、这样写其实是不对的,为什么呢,现在我们来看一下1602的时 序:
从时序当中可以看出,如果1602为忙状态的话,那么DB7为 1,当E也一直高电平的时候,DB0-DB7的数据就会维持不变,所 以读到的DB7都是高电平(忙状态)。现在假设当DB7为H是,我 们让E再来一个脉冲,这个时候DB0-DB7的数据就有机会发生改变, 那么它才有可能发生变化,DB7才有可能变为0,这样检测才是正确 的。
检测忙状态 来自淘豆网m.daumloan.com转载请标明出处.