I基于单片机的数字温度计设计与仿真盘桂云(吉首大学物理科学与信息工程学院,湖南吉首416000)摘要本课题以单片机为控制核心,设计了一款数字温度计。该系统由51单片机、DS18B20温度传感器以及1602LCD液晶显示屏等部件组成。系统上电后进入实时温度显示状态,此时将DS18B20中的温度值读到单片机中并将其显示在LCD液晶显示屏上。系统可以设置上下限报警温度值,当测得结果超过设定值时进行相应的报警,提供一个接口可以将温度值传送给其它控制器或计算机,测量准确且误差小,其误差在±0.02℃。关键词:单片机;温度采集;LCD显示;温度传感器;数字温度计;EmluaterandDesignofDigitalThermometerBasedonMicrocomputerControlPanguiyun(CollegeofPhysicsScienceandInformationEngineering,JishouUniversity,Jishou,Hunan416000)AbstractThistopicwiththemicrocontrollerascontrolcore,anddesignadigitalthermometer.Itconsistsof51single-chipmicrocomputer,18B20temperaturesensorand1602LCDscreendisplayetc.Afterpoweron,thesystemintoreal-timetemperaturedisplaystate,thenthetemperature18B20willreadinthesingle-chipmicrocomputeranddisplayedintheLCDscreen.Systemcansetuppertemperaturealarm,whenthealarmmeasuredresultsthanthesettingmeasuredcorrespondingalarm,Systemcanprovideaninterfacewhichsendsthetemperaturetoothercontrollerorcomputer.Thereislittlemeasuringerror,measuringerrorat±0.02℃.Keywords:Microcontroller;Temperatureacquisition;LCDdisplay;Temperateresensor;DigitalthermometerII目录第一章绪论…………………………………………………………………………11.1系统背景………………………………………………………………………11.2系统概述………………………………………………………………………11.2.1系统功能…………………………………………………………………11.2.2系统所用器件及其作用……………………………………………………1第二章系统总体设计2.1系统硬件电路总体设计………………………………………………………32.2系统软件的总体设计……………………………………………………………42.3主程序的流程设计与实现程序…………………………………………………63.2.1主程序的流程设计…………………………………………………………63.2.2主程序的实现程序………………………………………………………7第三章主要器件介绍3.118B20温度传感器……………………………………………………………83.21602液晶显示器……………………………………………………………8第四章系统详细设计4.1控制模块电路设计…………………………………………………………104.1.1晶振电路设计……………………………………………………………104.1.2复位电路设计…………………………………………………………104.2温度传感器模块……………………………………………………………114.2.1温度传感器模块电路设计……………………………………………114.2.2温度传感器模块程序设计……………………………………………124.3液晶显示模块…………………………………………………………164.3.1液晶显示模块电路设计………………………………………………164.3.2液晶显示模块程序设计………………………………………………174.4键盘输入模块…………………………………………………………………174.4.1键盘输入模块电路设计………………………………………………174.4.2键盘输入模块程序设计………………………………………………184.5报警模块…………………………………………………………………194.5.1报警模块电路设计……………………………………………………194.5.1报警模块程序设计……………………………………………………204.6串行输出模块………………………………………………………………20第五章软件仿真与测试III5.1软件的仿真分析与仿真结果……………………………………………………21结束语…………………………………………………………………………………25参考文献………………………………………………………………………………26致谢……………………………………………………………………………………27附录1:系统电路图…………………………………………………………………28附录2:源程序清单……………………………………………………………………29基于单片机的数字温度计设计与仿真绪论1第一章绪论1.1系统背景在工农业生产和日常生活中,对温度的测量占据着极其重要地位。冰箱、空调、烘干机中均用了温度控制系统。目前,我国单片机的开发应用正在兴起,单片机在机电一体化、智能仪表、工业控制、家用电器等方面的应用成果尤为显著。本课题基于单片机设计了一款数字温度计。1.2系统概述本设计以单片机为控制核心。其设计通过18B20进行温度采集,采用1602液晶来进行温度显示,有键盘输入和LED二极管进行温度报警功能。其温度通过MAX232通信方式传送出去,可给另一控制器或计算机进行其它操作用。硬件总的包括单片机及相应单片机小系统相关元件、18B20温度传感、1602液晶显示屏、三个按键,MAX232电平转换器件和两个LED二极管。1.2.1系统的功能本数字温度计系统主要完成的功能是对测量温度进行显示,其中包括过温报警功能。具体的功能如下所述:(1)能够实时的测得温度并进行显示,显示的误差在±0.02℃;(2)可以通过键盘输入相应的上下限温度;(3)数字温度计测得的温度值和我们设定的上下限温度都可以在LCD上显示出来。其中在主界面下是实时显示测得的温度值;(4)当系统测得的温度低于最低温度或高于最高温度时会进行相应的报警;(5)测得温度通过MAX232传送出去,可供其它器件操作。本数字温度计的工作过程如下:首先通过18B20温度传感器进行温度采集,然后将采集到的数据传送给单片机,单片机将收到的数据进行相应的处理后通过1602液晶显示给用户。在此过程中如果测得的温度超过了上下限温度时系统会启动报警。其中上下限温度值可由用户进行设定,如未设定则为系统初始值。系统还可将温度通过MAX232传送给计算机等进行相应的操作。1.2.2系统所用器件及其作用在数字温度计系统中所使用的器件及其作用如下所述:(1)单片机:系统的控制部分,能对采集的温度进行相应处理。基于单片机的数字温度计设计与仿真绪论2(2)18B20温度传感器:用来采集温度。(3)1602液晶显示屏:用来显示单片机控制器处理的相应结显。(4)LED发光二极管:用来进行报警的模拟。(5)按键:用来输入相应的上下限温度值。(6)MAX232:进行串行通信的电平转换。3第二章系统总体设计2.1系统硬件电路总体设计数字温度计系统硬件电路按功能可以分为以下几个模块电路:控制模块电路、温度传感器模块电路、液晶显示模块电路、键盘输入模块电路、报警模块、串行通信模块电路。系统硬件电路总体设计方框图,如图2.1所示:图2.1.2系统的电路图液晶显示模块电路控制模块电路即单片机小系统键盘输入模块电路报警模块温度传感器模块电路图2.1.1数字温度计系统硬件电路总体基于单片机的数字温度计设计与仿真系统总体设计42.2系统软件的总体设计软件部分即程序编写部分。为了程序的可读性和独立性,程序的书写分模块书写,且同一个模块放在同一个文件下。根据此思路,程序分为主程序模块部分、1602液晶显示驱动模块部分、按键模块部分、DS18B20驱动模块部分、报警模块部分、串行输出程序模块和组合程序模块部分。各部分的联系都通过组合程序模块部分进行组合,而组合程序只给主程序调用。各程序部分的相关关系如图:各个程序模块设计之间的关系如上图,且在它们的对应关系中还有一个文件名为head.h,此文件用来定义IO端口和进行相关的外部变量和外部函数的声明。每一个".C"文件前面都会有:#include“head.h”来包含些头文件.各文件的联接通过外部函数和外部变量。其各部分的外部函数和外部变量声明在head.h文件中。各程序模块对应的外部函数及外部变量如下:DS18B20驱动程序部分:externvoidget_temperature();externinttemperature;主程序部分对应mian.c文件按键模块程序部对应key_scanf.c文件中1602液晶驱动程序部分对应1602.c报警程序模块部分对应baoji.c文件中DS18B20驱动程序部分对应18B20.C中图2.2.1程序各模块之间的关系图组合程序部分对应unite.c文件串行通信模块对应usart.c文件中基于单片机的数字温度计设计与仿真系统总体设计51602液晶驱动程序部分:externvoidlcd_prints(uchar*strint,ucharx,uchary);按键模块程序部分:externvoidkey_scanf();externucharkey1,key2,key3;报警程序模块部分:externvoidcompare_temperature();externvoiddeal_compare_temperature();externucharlow_flag,high_flag;串行通信模块部分:externvoidusart();组合程序部分:externvoiddis_temperature(inttemp_temperature);externvoidmain_init();externvoidmain_scanf_deal();以上列出的各外部函数与外部变量是各个.C文件相互联接的基础,其关系如图2.2.1所示.其中这些外部函数与IO定义都放在head.h文件中.IO定义列出如下:/*IO口的定义*///******************************************************//******************************************************sbitrs=P2^0;sbitrw=P2^1;sbiten=P2^2;sbitbusy_f=P0^7;#definedc_portP1#definelcd_com0//Command#definelcd_data1//Data#definekeyP2//按键IO定义sbitB20_IO=P3^7;//温度输入口sbitbeer=P3^2;//报警IO口1sbitbeer1=P3^3;//报警IO口2//******************************************************//******************************************************基于单片机的数字温度计设计与仿真系统总体设计62.3主程序的流程设计与实现程序2