ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:25.22KB ,
资源ID:22091345      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22091345.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(智能水杯软件设计docxWord下载.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

智能水杯软件设计docxWord下载.docx

1、165.定时模块程序设计 .185.1定时器设置.195.2定时器中断子程序 .206.中断模块程序设计 .226.1 外部中断设置 .22,.6.2 键盘扫描中断子程序 237. 整体编程的实现 258. 设计过程中的问题及解决方案 259. 收获与感悟 261.前言随着社会进步与经济发展, 人们对生活质量的要求越来越高, 每天的饮水量是衡量健康的重要指标。 但有多少人因为忙碌的工作而全天忘记喝水?当你感到口渴想要喝水的时候,体内的失水已经达到 2% ,口渴本身其实是体内已经严重缺水的表现,这是造成 “亚健康”状态的致命习惯之一。同时,越不注意喝水,喝水的欲望就会越低,人就会变得越来越缺水。

2、研究表明,通常情况下,正常人每次喝水应控制在 300ml ,间隔时间为 30 到60 分钟。本课程设计就此设计出一款智能水杯, 用来智能显示水温和提醒喝水, 既方便了生活,又保持了健康。 本报告针对智能水杯的软件系统进行阐述, 软件编程在keil 上操作。2.总体设计框架2.1 实现的功能定时开启按键设置外部中断定时器中断蜂鸣器提醒STC89C51温度读入温度提示灯控制器DS18B20LCD 温度显示硬件结构框架图如图 1 所示。图 1 硬件结构简图(1)水温检测使用 DS18B20 温度传感器,完成水温的时时检测功能。(2)水温及定时时间显示使用 LCD1602 液晶显示屏,完成水温及定时时

3、间的显示功能。(3)智能提醒使用定时器 0 ,开启定时器中断,蜂鸣器提醒。(4)定时时间设置使用外部中断 0 扩展电路,用三个按键触发中断, 完成对应定时开启和定时时间加减的功能。2.2 总体程序流程图总体程序流程图分为主程序和中断程序两部分, 其中中断程序分为外部中断程序和定时器中断程序。流程图如下图所示。开始初始化DS18B20 检测水温LCD1602 显示水温N水温 40?Y高温提示灯红灯亮水温 50000)/ 等待 50MSreturn 0;/ 初始化失败return 1;/ 初始化成功3.3 DS18B20 写周期写周期最少为 60 微秒,最长不超过 120 微秒。写周期一开始做为主

4、机先把总线拉低 1 微秒表示写周期开始。随后若主机想写 0 ,则将总线置为低电平,若主机想写 1,则将总线置为高电平,持续时间最少 60 微秒直至写周期结束,然后释放总线为高电平至少 1 微秒给总线恢复 。而 DS18B20 则在检测到总线被拉底后等待 15 微秒然后从 15us 到 45us 开始对总线采样,在采样期内总线为高电平则为 1 ,若采样期内总线为低电平则为 0。写周期时序图如图 6 所示。图6 DS18B20 写周期时序图 Ds18b20WriteByte*函数功能: 向 18B20 写入一个字节*输入: comvoid Ds18b20WriteByte(unsigned cha

5、r dat)unsigned int i,j;for(j=0;j=1;3.4 DS18B20 读周期读周期是从主机把单总线拉低 1 微秒之后就得释放单总线为高电平,以让DS18B20 把数据传输到单总线上。作为从机 DS18B20 在检测到总线被拉低 1 微秒后,便开始送出数据,若是要送出 0 就把总线拉为低电平直到读周期结束。若要送出 1 则释放总线为高电平。主机在一开始拉低总线 1 微秒后释放总线,然后在包括前面的拉低总线电平 1 微秒在内的 15 微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为 0。采样期内总线为高电平则确认为 1。完成一个读时序过程至少需要 60 微秒才

6、能完成。其读周期的时序图如图7 所 示 。图7 DS18B20 读周期时序图/* Ds18b20ReadByte 读取一个字节unsigned char Ds18b20ReadByte()unsigned char byte,bi;for(j=8;j0;j-)Dsport=0;/ 先将总线拉低 1us/ 然后释放总线/ 延时 6us 等待数据稳定bi=Dsport; / 读取数据,从最低位开始读取byte=(byte1)|(bi7); /* 将 byte 左移一位,然后与上右移 7 位后的 bi ,注意移动之后移掉那位补 0 。 */i=4; / 读取完之后等待 48us 再接着读取下一个数r

7、eturn byte;3.5 温度读取程序简单的读取温度值的步骤如下:跳过 ROM 操作 - 发送温度转换命令 - 跳过 ROM 操作 - 发送读取温度命令 - 读取温度值(1)温度转换指令:/* Ds18b20ChangTemp 让 18b20 开始转换温度*/void Ds18b20ChangTemp()Ds18b20Init();Delay1ms(1);Ds18b20WriteByte(0xcc); / 跳过 ROM 操作命令Ds18b20WriteByte(0x44); / 温度转换命令Delay1ms(100);(2)温度读取指令 Ds18b20ReadTempCom 发送读取温度命

8、令void Ds18b20ReadT empCom()Ds18b20WriteByte(0xbe); / 发送读取温度命令(3)读取温度:/* Ds18b20ReadTemp 读取温度*/int Ds18b20ReadTemp()unsigned int temp=0;unsigned char tmh,tml;Ds18b20ChangTemp(); / 先写入转换命令Ds18b20ReadTempCom();/ 然后等待转换完后发送读取温度命令tml=Ds18b20ReadByte(); / 读取温度值共 16 位,先读低字节tmh=Ds18b20ReadByte(); / 再读高字节tem

9、p=tmh;temp=8;temp|=tml;return temp;4.显示模块程序设计表 1 LCD1602 指令表指令码功能D=1开显示;D=0关显示00001DCBC=1显示光标; C=0不显示光标B=1光标闪烁; B=0光标不显示000001NSN=1当读或写一个字符后地址指针加一, 且光标加一N=0当读或写一个字符后地址指针减一, 且光标减一S=1当写一个字符时,整屏显示左移(N=1 )或右移( N=0 ),以得到光标不移动而屏幕移动的效果S=0当写一个字符,整屏显示不移动01H显示清屏:所有显示清零80H+ 地址码( 0-27H ,设置数据地址40H-67H) LcdInit()

10、 初始化 LCD 屏void LcdInit() /LCD 初始化子程序LcdWriteCom(0x38); / 设置显示模式LcdWriteCom(0x0c); / 开显示不显示光标,光标不闪烁LcdWriteCom(0x06); / 写一个指针加 1LcdWriteCom(0x01); / 清屏LcdWriteCom(0x80); / 设置数据指针起点4.2 LCD1602 写周期时序图如图 8 所示,RS=0 为写命令,RS=1 为写数据。在写周期, R/W=0 ,E为写数据或命令使能输入。图 8 LCD1602 写时序图(1)写命令: LcdWriteCom 向 LCD 写入一个字节的命令void LcdWriteCom(unsigned char com) / 写入命令RS=0;RW=0;GPIO_LCD=com;Delay1ms(10);E=1;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1