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

帮忙看下这个函数,这个函数有什么作用, 最好能一行行解释下,十分感谢!!
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
void busy(void)
{ uchar temp=0x80;
P0=0xff;(P0就是8个数据口)
rs=0;
rw=1;
en=1;
delay(100);(这是设的延时函数,不用解释)
while(temp & 0x80)
{temp=P0;delay(20);}
en=0;
}

你好:
LCD 1602的响应速度相对于单片机的速度来说是偏慢的。
举个简单的例子,把一桶油通过漏斗向一个瓶子里倒,倒油的速度,即流量必须维持在一定范围之内,倒得太快油会从漏斗顶部溢出来,这样就浪费掉了。我们通过眼睛可以判断并使油面保持在顶面以下,以漏斗的额定流量来倒油,这样效率最高。
而对于单片机来说,1602好比那个瓶子漏斗,写入1602中要显示的数据好比油,如果以单片机的高运行速度向1602写数据就很可能造成上面所说的溢出,比如连续写入abc,结果只显示出了a,这是因为1602的显示芯片每次都要花时间来处理输入的ascii码数据,并把它显示出来。而我们却不容易主动地去控制写入数据的速度,所以1602使用忙信号就有必要了,每次单片机只有检测到忙信号为0,即不忙时,才向1602发数据。比如要显示abc,则这样操作,写a---判忙---写b---判忙---写c---判忙。这样就不会出错了。
这几年推出的lcd,像手机的屏响应速度就比较快,而1602这个古董我用示波器测过,大约40us左右的忙处理时间,而很多速度快的单片机的指令周期都是ns级的。也就是说单片机相当一段时间都在‘等’LCD。

#include<reg52.h>
#define uchar unsigned char
#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) //判忙,一旦表达式为假,即temp最高位为0,
//则表示1602不忙,跳出while.
{temp=P0;delay(20);} //把p0的的高位读入temp,延时
en=0; //关闭使能信号
}

每次读写操作都要调用这个busy函数
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-08-30
这个程序是用来判断液晶是否忙碌的,可以一直留着以后用,大同小异

LCD 1602显示字符,编写程序的时候,为何要弄一个忙信号判断函数?这个...
而对于单片机来说,1602好比那个瓶子漏斗,写入1602中要显示的数据好比油,如果以单片机的高运行速度向1602写数据就很可能造成上面所说的溢出,比如连续写入abc,结果只显示出了a,这是因为1602的显示芯片每次都要花时间来处理输入的ascii码数据,并把它显示出来。而我们却不容易主动地去控制写入数据的速度...

用1602液晶屏显示 姓名学号 用的芯片是AT89S52 我的名字是张晶 学号是...
实际上1602显示汉字不怎么好写,因为显示一个汉字要16X16的点阵才可以,而1602是8X8的点阵(显示屏幕由16X2个8X8的点阵构成),按你的要求显示你的名字就得要8个8X8的点阵才能显示,而1602里面刚好显示8个自定义字符,所以刚刚好可以显示你的名字、、、下面给出锐志开发板的程序,你修改一下就可以用了...

问一个系统的问题?
一个非法的pif文件(用ascii字符\\'x\\'填充)至少要369字节,系统才认为是一个合法的pif文件,才会以pif的图标[pifmgr.dll,0]显示,才会在属性里有程序、 字体、内存、屏幕”等内容。而且仅仅当一个非pif文件的大小是369字节时察看属性的“程序”页时,不会发生程序错误,哪怕是370字节也不行。当对一个大于369字节...

电脑蓝屏时的提示都有什么作用?能不能列出错误代码的含义和解诀...
31 0x001F 连接到系统的某个装置没有作用。 32 0x0020 The process cannot access the file because it is being used by another process. 33 0x0021 档案的一部份被锁定, 现在无法存取。 34 0x0022 磁碟机的磁片不正确。 请将 %2 (Volume Serial Number: %3) 插入磁碟 机%1。 36 0x0024 开启的分享...

为何有人说红极一时的电视盒子已经越来越不受欢迎了?
新装宽带时又送了一个高清电视机顶盒,但是不能用无线WIFI,必须用实际的连接线。用连接线连出来的高清电视,清晰度真的很高,比较前用无线WIFI的清晰度强太多了。 虽然说家里装的有中国移动高清电视机顶盒,但是平常真的很少看电视。天天早上6:30分起床,开始一天的忙碌,孩子下学后辅导作业要到晚上8点,孩子看一会儿电视...

...引用的0x00000000内存,该内存不能为written是什么意思?
这是由于程序编写不严谨造成的,除去程序自身BUG以外(这种情况只能由程序编写者修正),一般都是因为程序所依赖的DLL缺失、而程序编写又不严谨、没有判断DLL是否成功载入就进行调用造成的。作为软件的使用者,只能处理DLL缺失所造成的“该内存不能为written”,无非就是两种情况:1、程序运行环境被破坏或者卸载不完全,这时...

我家的电脑这样怎么办???
信息第一行通常用来识别生产错误的驱动程序或者设备. 这种信息多数很简洁, 但停机码可以作为搜索项在微软知识库和其他技术资料中使用. 2.推荐操作 蓝屏第二部分是推荐用户进行的操作信息. 有时, 推荐的操作仅仅是一般性的建议(比如: 到销售商网站查找BIOS的更新等); 有时, 也就是显示一条与当前问题相关的提示....

用液晶12864和DS18B20传感器做的温度传感器为什么不会变化,老是显示85...
你好 没见你的源程序 显示没变化 可能是你两个子程序中的一个或两个都有问题 再就是在主程序中没有进行循环检测及显示刷新。贴上我的程序 你自己看看吧。老是显示85是上电时18B20没有进入正常状态,读出的数据。把我主程序中对你没有用的删了 自己看着搞吧 硬件接口上须从新对应一下。我的仿真库没有新型...

我的计算机为什么一关闭一个程序就会弹出对话框?
通常的原因:内核模式进程试图执行一个非法或未知的处理器指令. 解决方法:确保有足够的空间,尤其是在执行一次新安装的时候. 如果停止错误消息指出了某个特定的驱动程序,那么禁用他.如果无法启动计算机.应试着用安全模式启动,以便删除或禁用该驱动程序. 如果有非 Microsoft支持的视频驱动程序,尽量切换到标准的VGA驱动程序...

论文的文献综述怎么写?格式是什么?
前言部分,主要是说明写作的目的,介绍有关的概念及定义以及综述的范围,扼要说明有关主题的现状或争论焦点,使读者对全文要叙述的问题有一个初步的轮廓.前言部分要写清:(1)首先要说明写作的目的.(2)有关概念的定义.(3)规定综述的范围,包括:"专题涉及的学科范围",综述范围切忌过宽,过杂,"时间范围",必须声明引用...

相似回答