当前位置:首页 > 数字温度计设计
读温度函数执行过程:
1)初始化DS18B20;
2)发送跳过ROM命令,因为总线上只有一个DS18B20;
3)再次初始化DS18B20,跳过ROM,启动温度转换,延时等待温度转换完成; 4)读出温度数据,并存储当前温度数据;
5)处理温度数据,以便单片机将温度数据显示, 采完则结束退出函数。
(3)DS18B20初始化函数流程图如图4(a)所示,读一字节如图4(b)所示,写 一字节如图4(c)所示。
Init_ds18b20Read_ds18b20Write_ds18b20DQ=1DQ=1DQ=1延时4us延时8us延时1usDQ=0DQ=0右移一位取值取值延时7us延时1usDQ=18位数据读完?延时1us返回函数左移一位延时80usDQ=1延时14us结束8位数据写完?返回函数结束
(a) (b) (c)
图4 DS18B20的初始化、读一字节、写一字节函数流程图
7
(4)取键值函数和判键函数流程图如图5(a)(b)所示
key调取键值函数判断键值=0 N延时消抖调取键值函数key_data键值=0 Ni←(P1)Y保护键值将i取反调取键值函数NY取i的第二位,屏蔽其它位键是否松开 Y返回i的值返回键值返回 返回 (a)取键值 (b)判键值
图5 取键值、判键函数流程图
8
(5)显示函数流程图如图6所示。
displayNYBZ=0?送P.段控码送百分位段控码送十分位位控码调延时1ms函数送低位位控码送百分位位控码调延时1ms函数调延时1ms函数送个位及小数点段控码送十段控码送十位位控码调延时1ms函数送十分位段控码送个位位控码调延时1ms函数返回
图6 显示函数流程图
3.4 程序清单
程序清单见附录E。
9
4 设计结论、实物结果
4.1 设计结论及使用说明
(1)设计结论:
本系统就是充分利用了AT89S52芯片的I/O引脚。该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入测温准备状态。当按下S0键时,温度计开启,数码管显示当前温度值,并显示小数点后两位,当再次按下S0键时,关闭温度计数码管显示提示符“P.”。通过测试和修改,该数字温度计完成了设计任务,符合设计要求。 (2)使用说明:
1)该数字温度计测量温度范围0℃~99℃,测量精度小数点后两位,应用于对温度比较准确的场所,工业生产、医疗或科研实验室使用。
2)数字温度计上电或按键复位后自动显示系统提示符“P.”, 进入测温准备状态。当使用者按下S0键时启动温度测量,数码管显示当前温度。
3)使用者再次按下S0键时关闭温度测量,系统进入测温准备状态,数码管显示系统提示符“P.”。
4.2 实物结果
将程序输入Keil中,在proteus软件中将电路原理图连好,在Keil 中编译没有错误与警告后,生产hexs文件,然后导入proteus中。
(1)当温度计上电后,数字温度计进入准备状态,数码管显示系统提示符“P.”,如图5所示:
图5 数字温度计进入准备状态
(2)当按下S6后,数字温度计进入测温状态,数码管显示当前温度值,如图6示:
10
共分享92篇相关文档