吴坤,何英昊
(大连理工大学城市学院,辽宁大连,116023)
温度是日常生活中极为重要的一个参数,所以对温度的检测的意义也不言而喻。本设计是通过温度传感器给单片机系统提供了温度数据,然后再根据用户设置温度的上下限来判断是否报警从而提醒用户的注意。
图1为系统的设计框图。根据实际需求,系统由主控单片机、显示模块、测温模块、报警模块及人机接口模块和电源等6部分组成。主控模块单片机为核心,接收测温模块传来的数据并进行处理,通过报警模块和显示模块给出结果。人机接口模块通过按键电路来实现,通过按键完成对系统的设置和修改等功能。电源保证系统供电。
图1 设计框图
系统的结构可分为单片机最小系统、温度采集模块、数码管显示部分、声光报警模块、按键模块和电源模块等六个模块。下面分别对每个模块进行说明。
图2 单片机最小系统
单片机控制模块用STC89c52单片机作为控制器,STC89c52的正常工作需要时钟电路及复位电路作为单片机的最小系统。电路如图2所示。
温度采集模块使用DS18B20温度传感器实现。该传感器可直接读出被测温度,并将读数以数字量的形式输入到单片机的I/O口。此外,如果需要提高精度,可以将多个DS18B20传感器连接在同一条总线上,而不会相互影响。图3为DS18B20的内部框图。图4为电路原理图。
图3 DS18B20内部框图
图4 DS18B20电路原理图
七段显示译码管分为共阳极数码管和共阴极数码管两种。设计采用四位共阳极数码管实现。具体电路如图5所示。在本设计中运用了三极管作为反相器,因为共阳数码管的显示需要动态扫描进行位选,共阳数码管在高电平的情况下可以触发位选,选择动态扫描的方式数码管可以工作但是亮度远远不够,所以在这里加上三极管就起反相器的作用,能将共阳数码管的驱动方式变换为低电平驱动,且因单片机I/O口的电流吞吐量不够,只有在三极管放大的情况下四位共阳数码管才能正常的显示工作,为了防止电流过大烧毁数码管,选择1k的电阻限流。
图5 数码管显示电路
声光报警模块的电路设计如图6所示,发光二极管接高电平后接一个1K的电阻后连接单片机后的P2.3口,蜂鸣器连接三极管S9012(PNP型)的发射极后集电极接地,三极管主要起电子开关的作用,当单片机管脚输出高电平时三极管为导通状态,此时发光二极管闪烁蜂鸣器鸣叫起到报警的作用。
按键模块如图7所示,三个按键分别实现选择和设置加减功能。
图6 声光报警电路
图7 按键模块电路设计
电源模块可以采用外接电源或使用USB供电,本设计使用USB供电。
系统程序流程图如图8所示。首先,整个系统开始初始化,调用温度检测模块的子程序检查DS18B20是否在线并返回一个结果作为应答,接着由DS18B20测出环境温度并处理转换数据通过IIC通信给单片机,在此同时由键盘模块的子程序扫描键盘看设置的温度上下限,然后由主程序判断外界温度是否越限,如果越限,便调用声光报警模块的子程序,如果没有将循环往复的检测和判断。
图8 主程序流程图
图9 仿真图
基于DS18B20的简易温度报警器采用C51语言编程,C51语言是C语言适用于单片机应用平台的演化。编程使用模块化思想,先编写读取数字温度传感器中的温度并将其存到EEPROM,然后编写了数码管显示的子程序,最后编写声光报警的子程序,再通过主程序对子程序的调用,最终达到了能够在设定的温度上下限内正常工作,超过温度上下限能立即发出报警信号的功能。选择IIC通信模式使该系统扩展能力和工作效率大大提高,选择EEPOROM作为存储器即使断电数据也不会丢失,使该系统稳定性得到了有效提高。对源程序编译调试后,使用Proteus软件进行仿真,仿真结果如图9所示;此时上限温度为25摄氏度,系统实测温度为27摄氏度,发光二极管闪烁蜂鸣器鸣叫触发报警。最后,使用Altium Designer完成电路原理图的设计,并最终完成实物制作及调试。实物图如图10所示。
图10 温度报警器实物图
本次设计选用STC89C52单片机作为主控芯片,使用C51实现程序的编写,选择DS18B20作为温度传感器,此系统能够实现对周围环境温度进行高精度、稳性能、低功耗的实时监测,再加上其他外围电路搭建了较为完善可靠的测温系统。