微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于AT89S52温度自动控制检测系统设计

基于AT89S52温度自动控制检测系统设计

时间:08-23 来源:互联网 点击:



4 软件设计
4.1 主程序设计
从软件的功能不同可分为3大类:1)检测软件,它是用来检测温度;2)显示部分,用来显示所检测到的温度;3)控制部分,用来控制马达。每一个执行软件也就是一个小的功能执行模块。这里将各执行模块一一列出,并为每一个执行模块进行功能定义。下图为软件设计流程图。


4.2 温度检测
4.2.1 读取温度设计
DS18B20可以从单总线获取电源,当信号线为高电平时,将能量贮存在内部电容器中;当单信号线为低电平时,将该电源断开,直到信号线变为高电平重新接上寄生电源为止。此外,还可外接5 V电源,给DS18B20供电。
读取温度子程序的主要功能是读出RAM中的9个字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高低位在后,低位在前,共12位数,小数4位,整数7位,还有一位符号位。
读取温度的主程序如下:

4.2.2 温度数据处理设计
读出温度数据后,TempL的低四位为温度的小数部分,可以精确到0.062 5℃,TempL的高四位和TempH的低四位为温度的整数部分,Tem pH的高四位全部为1表示负数,全为0表示正数。所以先将数据提取出来,分为3个部分:小数部分、整数部分和符号部分。小数部分进行四舍五入处理:大干0.5℃的话,向个位进1;小于0.5℃的时候,舍去不要。当数据是个负数的时候,显示之前要进行数据转换,将其整数部分取反加一。还因为DS18B20最低温度只能为-55℃,所以可以将整数部分的最高位换成一个“-”,表示为负数。由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节高5位是用来保存温度的正负,高字节低3位和低字节来保存温度值。其中低字节的低4位来保存温度的小数位。由于本程序采用的是0.062 5的精度,小数部分的值,可以用后四位代表的实际数值乘以0.062 5,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。
温度数据处理主程序如下:


5 结束语
基于AT89S52的自动温控系统能广泛地应用于工、农业及人们的居家生活中。由于本系统采用AT89S52开发,可以很方便地根据用户的要求实现不同的专用的自动温控系统,具有广阔的市场前景。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top