基于单片机的温度测量系统
5 系统流程图
5.1 主程序
开始 初始化中断和定时器 显示初始化 SET键被按下? N 从DS18B20读取温度并显示 Y 按键设置 温度极限 N Y 执行报警程序 返回 图5-1 主程序流程
主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。主程序的第二个功能是查询SET键是否被按下,以实现设置温度上下限的功能。其程序流程见图5-1所示。由总的流程图可以分析出,在整个程序中应该包括如下几个部分:读写温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。
20
基于单片机的温度测量系统
5.2 读出温度子程序
读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。流程图5-2如下:
图5-2 读出温度子程序流程图
5.3 温度转换命令子程序
温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。流程图5-3如下:
21
基于单片机的温度测量系统
发DS18B20复位命令 发跳过ROM命令 发温度转换开始命令 结束 图5-3 温度转换命令字程序流程图
5.4 计算温度子程序
计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定。流程图5-4如下:
开始 ? 温度零下Y 温度值取补码置“-”标志 置“+”标志 N
计算小数位温度BCD值 计算整数位温度BCD值 结束 图5-4 计算温度子程序流程图
5.5显示数据刷新子程序
显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,当最
22
基于单片机的温度测量系统
高数据显示位为0时,将符号显示位移入下一位。如图5-5所示:
温度数据移入显示寄存十位数百位数0? 十位数显示符号 百位数不显示 百位数显示数据 (不显示符号) 结束
图5-5 显示数据刷新子程序
23
基于单片机的温度测量系统
6 软件仿真
在本设计中用到了两种软件,一种是Proteus 7 Professional,主要用于设计原理图的绘制及电路仿真,一种是Keil C51编译系统,主要用于调试、编译AT89S52单片机程序。
6.1 软件设计流程
软件设计流程框图如图6-1所示。
图6-1 软件设计流程框图
6.2 原理图的绘制
在设计过程中我主要使用Proteus7 Professional issis软件完成系统原理图的绘制与仿真。
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件,它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,它是目前最好的仿真单片机及外围器件的工具。
Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元气库。Proteus可提供的仿真仪表资源:示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、
24