微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求教:关于LCD1602测忙函数,不懂的两个问题

求教:关于LCD1602测忙函数,不懂的两个问题

时间:10-02 整理:3721RD 点击:
void lcd_busy_wait() /*LCD1602 忙等待*/
{
    RS = 0;
    RW = 1;
    LCDEN = 1;   delay(1);//问题一:为什么有的加了延时函数,有的没加延时函数?延时函数的作用是什么?
    lcd_data_port = 0xff;
    while (lcd_data_port&0x80);  //问题二:为什么LCD不忙之后 lcd_data_port&0x80=0?
    LCDEN = 0;
}

关于问题一:1602的驱动芯片(例如HD44780,KS0066)大都是80年代的技术,读写速度奇低,而单片机的速度往往相对其较高。由于读写速度上的不匹配,需要单片机在操作1602之前进行读忙检测,确认其处于空闲状态后方可写入新的数据。延时函数和读忙本质上都是等待一段时间。具体什么时候加延时函数要看驱动芯片的datasheet,时序图会有很详细的说明,主频较低的单片机(例如51单片机)由于自身主频也相对较低,读写速度相对不高,在某些进行耗时较短的操作的场合可以省去读忙或者延时操作。

关于问题二:这个问题就需要看芯片的手册,以HD44780为例,读出的字节数据中最高位忙状态标志位,若为1代表处于忙状态,0为空闲状态,与0x80按位与是检测该位是0还是1。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top