LCD1602忙碌状态检测

efenwu 2009-05-14 06:55:35
请问LCD忙碌状态是什么意思啊?
有必要要检测忙碌状态吗?
看到了这样一条程序
bit lcd_busy()
{
bit result;
rs = 0; //数据、命令选择端 1为数据
rw = 1; //读、写选择端 1为读
ep = 1; //使能控制
_nop_()
_nop_();
_nop_();
_nop_();
result=bit(P0&0x80); //LCD的D0-D7中,D7=1为忙碌,0为空闲
//result 是检测那里的数据啊?????
ep = 0;
return result;

}
先谢啦!
...全文
4030 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpfzhx 2012-04-10
  • 打赏
  • 举报
回复
什么意思啊
cx787851711 2009-10-04
  • 打赏
  • 举报
回复
恩,不错
wang0635 2009-05-17
  • 打赏
  • 举报
回复
LCD控制器的电路的内部寄存器
读操作时,其内容就出现在数据总线上
efenwu 2009-05-17
  • 打赏
  • 举报
回复
数据是怎样给出的?为什么 会是 0或1
wang0635 2009-05-17
  • 打赏
  • 举报
回复
LCD通过数据线送过来的
P0.7~P0.0
gaoxiao16 2009-05-15
  • 打赏
  • 举报
回复
那个时间是给lcd反应的 lcd反应比较慢
rodger_br 2009-05-15
  • 打赏
  • 举报
回复
可能是命令下达以后,回读数据或者状态需要一定的延时,D7为1的时候说明控制器还没有准备好回读数据
lbing7 2009-05-14
  • 打赏
  • 举报
回复
result=bit(P0&0x80); //LCD的D0-D7中,D7=1为忙碌,0为空闲
RESULT是从LCD里读出来的状态位

PS:一个_nop_();是一个机器周期,是1us么?那延时几us作用有用么?
你的机器多快就是多少

这几个延时是给
rs = 0; //数据、命令选择端 1为数据
rw = 1; //读、写选择端 1为读
ep = 1; //使能控制

留出足够的时间,让LCD能够反应过来
把数据送到IO上,让你上面那句RESULT读

efenwu 2009-05-14
  • 打赏
  • 举报
回复
PS:一个_nop_();是一个机器周期,是1us么?那延时几us作用有用么?
目 录 1.前言 3 2.总体设计框架 3 2.1实现的功能 3 2.2总体程序流程图 4 3.水温采集模块程序设计 5 3.1 DS18B20简介 5 3.2 DS18B20的初始化 6 3.3 DS18B20写周期 7 3.4 DS18B20读周期 8 3.5 温度读取程序 9 4.显示模块程序设计 11 4.1 LCD1602初始化 11 4.2 LCD1602写周期 12 5. 定时模块程序设计 13 5.1定时器设置 14 5.2 定时器中断子程序 15 6.中断模块程序设计 16 6.1外部中断设置 16 6.2键盘扫描中断子程序 16 7.整体编程的实现 17 8.设计过程中的问题及解决方案 18 9.收获与感悟 19 1.前言 随着社会进步与经济发展,人们对生活质量的要求越来越高,每天的饮水量是衡量健 康的重要指标。但有多少人因为忙碌的工作而全天忘记喝水?当你感到口渴想要喝水的 时候,体内的失水已经达到2%,口渴本身其实是体内已经严重缺水的表现,这是造成 " 亚健康"状态的致命习惯之一。同时,越不注意喝水,喝水的欲望就会越低,人就会变得 越来越缺水。研究表明,通常情况下,正常人每次喝水应控制在300ml,间隔时间为30到 60分钟。 本课程设计就此设计出一款智能水杯,用来智能显示水温和提醒喝水,既方便了生活 ,又保持了健康。本报告针对智能水杯的软件系统进行阐述,软件编程在keil上操作。 2.总体设计框架 2.1实现的功能 硬件结构框架图如图1所示。 图1 硬件结构简图 (1)水温检测 使用DS18B20温度传感器,完成水温的时时检测功能。 (2)水温及定时时间显示 使用LCD1602液晶显示屏,完成水温及定时时间的显示功能。 (3)智能提醒 使用定时器0,开启定时器中断,蜂鸣器提醒。 (4)定时时间设置 使用外部中断0扩展电路,用三个按键触发中断,完成对应定时开启和定时时间加减 的功能。 2.2总体程序流程图 总体程序流程图分为主程序和中断程序两部分,其中中断程序分为外部中断程序和定 时器中断程序。流程图如下图所示。 图2 主程序流程图 图3 外部按键中断流程图 图4 定时器中断程序设计流程图 3.水温采集模块程序设计 3.1 DS18B20简介 DS18B20 单线数字温度传感器,即"一线器件",其具有独特的优点: (1)采用单总线的接口方式,与微处理器连接时,仅需要一条口线即可实现微处理 器与DS18B20的双向通讯。单总线具有经济性好,抗干扰能力强,适合于恶劣环境的现场 温度测量,使用方便等优点,使用户可轻松地组建传感器网络,为测量系统的构建引入 全新概念。 (2)测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 ~+ 125 ; 在 -10~+ 85°C 范围内,精度为 ± 0.5°C 。 (4)持多点组网功能 多个DS18B20 可以并联在惟一的单线上,实现多点测温。 (5)供电方式灵活DS18B20 可以通过内部寄生电路从数据线上获取电源。因此,当数据线上的时序满足一定的要求 时,可以不接外部电源,从而 使系统结构更趋简单,可靠性更高。 (6)测量参数可配置DS18B20 的测量分辨率可通过程序设定 9~12 位。 3.2 DS18B20的初始化 主机首先发出一个480-960微秒的低电平脉冲,然后释放总线变为高电平,并在随后 的480微秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若 无低电平出现一直都是高电平说明总线上无器件应答。作为从 图5 DS18B20初始化时序图 器件的DS18B20在一上电后就一直在检测总线上是否有480-960微秒的低电平出现, 如果有,在总线转为高电平后等待15-60微秒后将总线电平拉低60-240微秒做出响应存 在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。 初始化时序图如图5所示。 /**************************************************************** * 函数名 : Ds18b20Init * 函数功能 : 初始化 * 输入 : 无 * 输出 : 初始化成功返回1,失败返回0 ****************************************************************/ unsigned char Ds18b20Init() { unsigned int i; Desport=0; //将总线拉低480us~960us i=70; while(i--);//延时642us Dsport=1;//然后拉高总线,若DS18B20做出反应会将在15us~60us后将总线拉低 i=0; while(Desport)

27,368

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧