當前位置:歷史故事大全網 - 範文作文 - LCD 1602显示字符,编写程序的时候,为何要弄一个忙信号判断函数?这个有什么作用?

LCD 1602显示字符,编写程序的时候,为何要弄一个忙信号判断函数?这个有什么作用?

你好:

LCD 1602的响应速度相对于单片机的速度来说是偏慢的。

举个简单的例子,把一桶油通过漏斗向 一个瓶子里倒,倒油的速度,即流量必须维持在一定范围之内,倒得太快油就会从漏斗顶部溢出来,这样就浪费掉了。我们通过眼睛可以判断净化油面保持在顶部 面以下,以漏斗的额定流量来倒油,这样效率最高。

而对于单片机来说,1602好比那个瓶子漏斗,写入1602中要显示的数据好比油,如果以单片机的 高运行速度向1602写入数据就很可能造成上面所说的失败,比如连续写入abc,结果只??显示产生a,这是1602的显示芯片每次都要花时间来处理输入的ascii码数据 ,并把它显示出来。而我们却已主动去控制写入数据的速度,所以1602使用忙信号就有必要了,每次单片机只有检测到忙信号为0,即不忙时,才向 1602发数据。比如要显示abc,则这样操作,写a---判忙---写b---判忙---写c---判忙。这样就不会出错了。

这几年推出的lcd,像手机的屏响应速度就比较快,而1602这个餐厅我用内存测过,大约40us左右的忙处理时间,而速度快的很多单片机的指令周期都 是ns级别的。 p>#define uint unsigned int

void busy(void)

{ uchar temp=0x80; //初始化temp最高位为1,使得能够进入下面

//的while循环

P0=0xff;(P0就是8个数据口)

rs=0; //设置操作命令

rw=1; //设置读操作

en=1; //使能

delay(100);(这是设定的延迟函数,不用解释)

while(temp & 0x80) // 判忙,一旦表达式为 false,即temp最高位为0,

//则表示1602不忙,跳出while。

{temp=P0;delay(20);} //把p0的 的高位读入temp、延迟

en=0; //关闭使能信号

}

每次读写操作都要调用这个busy函数

  • 上一篇:珠海偉創力是生產什麽產品的
  • 下一篇:說出中國歷史上N大恐怖靈異事件或故事。
  • copyright 2024歷史故事大全網