开始 初始化 DS18B20存在? N Y ROM操作指令 存储操作命令 读取温度值 返回
4.2-1 温度采集流程图
4.2.1 温度转换
温度的转换也需要程序运行,在硬件系统中运行传输数据,就要将十进制码转换成机器能识别的代码,现在的的计算机一般都是二进制代码,所以首先要将RAM中存储的值进行BCD码的转换运算,然后来判断温度的正负值。如图4.2.1-1所示。
12
图4.2.1-1 温度转换流程图
开始 N 温度是否零下 Y 温度值取补码置“—”标志 置“+”标志 计算小数位温度BCD值 计算整数位温度BCD值 结束
4.3 按键处理
温度初始化通过键盘输入,每按下一次键盘上的按键,通过系统设置的程序扫描该按键下是否会有一系列操作,若有则根据按下的按键进入相应程序,从而进行对应的操作设置,若没有则退出程序,不做出反应。该按键系统主要有如下几个按键功能:预设温度设定,温度增加1,温度减少1,确定保存等按键。流程如图附录2所示。 4.4 显示模块
显示模块采用的液晶显示,也要通过编译相应程序做出一系列操作,该系统显示主要包括当前温度显示,和正在进行的操作提示。譬如预设温度加1或减1等等。如图4.4-1所示。
13
液晶管脚宏定义 液晶驱动函数 写命令函数 写数据函数 画图及温度读取显示子函数
图4.4-1 液晶显示流程图
温度是可以变幻的,随着时间的变化,经过一系列的加热或散热操作,温度会逐渐增加或者逐渐降低,在设置参数时,温度的显示也会根据按键的操作而改变数据,自然液晶屏上温度的显示是不断更新的,而显示数据的刷新其实就是对显示缓冲器中的数据进行刷新更改操作,且最重要一点就是最高位前的符号表示,当最高显示位为0时将符号显示位移入下一位。如图4.4-2所示。
14
图4.4-2 数据刷新流程图
温度数据移入显示寄存器 N
十位数0? Y 百位数0? Y 十位数显示符号百位数不显示 百位数显示数据(不显示符号) N 结束
4.5 继电器加热系统
通过单片机控制,接收到DS18B20传输的二进制代码经过一系列的公式计算将二进制代码转换成十进制数得出实际测量温度,根据事先预设的温度值做出比较,并判断出对温度到底是加热还是降温,继而继电器做出一些列反应,通过控制电流的大小从而控制温度。
5 调试说明
水温控制器对水温的精确度要求较高,现在我们需要将制作的基于单片机的水温控制器对其温度误差,显示误差,水温控制等进行调试,使的该系统更加精确。 该调试过程需用到精密温度计(量程是0℃-100℃,分度值是0.5℃,且防水);秒表等。该调试过程中,室内温度在13℃。 5.1 温度采集误差
在该水温控制系统,设置温度的最小分度为1℃,按一下上调和下调键分别增加温
15
度1和减少温度1,固按键系统调整成功,显示预设参数值模块也调试成功。 然而,在本系统中温度采集部分相当重要,该水温控制系统是否可靠就是看温度采集数据的精确度到什么地步。对温度采集模块调试采用精密温度计测试出的温度作为基准温度,测不同的水温,在温度稳定且不在上升或下降时读出当前温度,并与显示值做比较,得出误差。调试结果如表5.1-1所示。
表5.1-1 温度数据采集及误差
实测显示值(℃) 40.1 52.6 65.2 76.4 86.6
系统显示值(℃) 40.3 52.5 65.2 76.7 86.5 误差(℃) +0.2 -0.1 0 +0.2 -0.1 由上表数据可知,实际测量温度与系统显示得出温度值误差掌握在1℃以内,误差及其小,可以满足我们的实际所需,固该采集温度模块运行正常,调试成功。 5.2 水温控制测试
水温控制系统是对单片机通过判断,对继电器进行控制,进而进行对水温的加热或是散热的操作。固然控制系统也较为重要,使水温能达到我们预设值,水温控制的调试,我们采用的方法是先预设一个温度,通过向之前的水里添加较之前水温更热的水或比之前水温更低的水来改变之前水的水温,通过继电器控制电流的大小对当前水温进行操作,使其与预设值相当。测试数据如下表5.2-1所示。
16