永发信息网

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

答案:1  悬赏:40  手机版
解决时间 2021-08-02 08:44
信号是什么,LCD 1602显示字符,编写程序的时候,为何要弄一个忙信号判断函数?这个有什么作用?
最佳答案
你好:
LCD 1602的响应速度相对于单片机的速度来说是偏慢的。
举个简单的例子,把一桶油通过漏斗向一个瓶子里倒,倒油的速度,即流量必须维持在一定范围之内,倒得太快油会从漏斗顶部溢出来,这样就浪费掉了。我们通过眼睛可以判断并使油面保持在顶面以下,以漏斗的额定流量来倒油,这样效率最高。
而对于单片机来说,1602好比那个瓶子漏斗,写入1602中要显示的数据好比油,如果以单片机的高运行速度向1602写数据就很可能造成上面所说的溢出,比如连续写入abc,结果只显示出了a,这是因为1602的显示芯片每次都要花时间来处理输入的ascii码数据,并把它显示出来。而我们却不容易主动地去控制写入数据的速度,所以1602使用忙信号就有必要了,每次单片机只有检测到忙信号为0,即不忙时,才向1602发数据。比如要显示abc,则这样操作,写a---判忙---写b---判忙---写c---判忙。这样就不会出错了。
这几年推出的lcd,像手机的屏响应速度就比较快,而1602这个古董我用示波器测过,大约40us左右的忙处理时间,而很多速度快的单片机的指令周期都是ns级的。也就是说单片机相当一段时间都在‘等’LCD。
#include
#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函数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
宁乡市长沙相约炭河酒家怎么去啊,谁知道地址
英语课堂教学中的问题,小学英语课堂教学中存
黄州区黄冈爱戴生活体验馆地址在什么地方,想
隆回县邵阳隆回喜德盛自行车专卖店这个地址在
我喜欢我自己 作文我喜欢我自己 一篇初中作文
邮箱如何发送文件,用QQ邮箱怎么发送DOC文件?
雨湖区湘潭金灿原味粉店地址有谁知道?有点事
麻油是花椒油吗,花椒油和麻油的区别?
祝开心快乐的周末短信,关于周末愉快句子
西华县周口艾尚造型专业美发怎么去啊,谁知道
关于赞美荷花的古诗句,有关海鸥的诗句
隆回县邵阳中国体育彩票地址在什么地方,想今
力矩怎么求,最新音乐排行榜 5分
沙特阿拉伯有一句谚语,趵突泉有一句谚语是什
城步苗族自治县邵阳城步苗族自治县公证处地址
推荐资讯
为什么玩炫舞人人都要结婚啊
求机器人大战J女副驾驶好感度金手指
我儿子后脑有一边稍微大一点,怎么办!
数学难题请帮解决一下
重庆巴南区一品镇街道办网站
为什么我下载的QQ飞车公测版不是全屏
怎么设置动态的QQ秀?
温州新南站到温州动物园 公交路线怎么乘 或者
有玩力法的来
怀孕十天试纸能不能测出来?
我右耳垂下方1cm处有个硬块
武汉船院机械报名在哪儿报名啊?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?