基于单片机的数字温度计设计大学本科毕业论文.doc
基于单片机的数字温度计的设计摘 要温度作为一个重要的物理量,是工业生产过程中最普遍、最常用的测量及被控参数之一。随着社会的发展、科学技术的不断更新,温度的测量范围要求不断扩大,同时温度的测量准确性要求不断提高。它直接影响燃烧、化学反应、发酵、烘烤、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制失误就可能引起生产安全、产品质量、产品产量等一系列问题, 因此对温度测量的意义就越来越大。本文主要介绍了一个基于89S51单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行了介绍,该系统可以方便的实现实现温度采集和显示,并可根据需要任意设定上下限报警温度,它使用起来相当方便,具有精度高、量程宽、灵敏度高、体积小、功耗低等优点,适合于我们日常生活和工、农业生产中的温度测量,也可以当作温度处理模块嵌入其它系统中,作为其他主系统的辅助扩展。DS18B20与AT89S51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。本文主要包括两个方面的设计:一方面是硬件电路的设计,另一方面是系统程序的设计。其中,硬件电路各部分组成如下:中央控制器采用单片机AT89S51,温度检测部分采用DS18B20温度传感器,用LCD液晶1602作为显示器。其次,系统软件程序包括主程序,温度值读取、转换及计算程序,显示数据刷新程序等。该温度计整体功能的实现是通过温度传感器DS18B20采集温度信号送该给单片机处理,单片机再把温度数据送液晶显示器1602显示。关键词:单片机;温度传感器;DS18B20;LCD液晶显示器THE DESEGN OF THE ELECTRONIC THERMOMETER BASED ON MICROCONTROLLERAbstractTemperature as an important physics, is the most common industrial production process, the most commonly used one of measuring and controlled parameter. With the development of society, the science and technology unceasing renewal, temperature measurement range requirements, at the same time expanding temperature measurement accuracy requirement enhances unceasingly. It directly affects combustion, chemical reaction, fermentation, roasted, distillation, concentration, extrusion, crystallization and air flow etc physical and chemical processes. Temperature control error could cause a production safety, product quality, product yield and so on. So the significance of temperature measurement is more and more big. This paper describes the digital thermometer which is consisted of the central controller, temperature detectors, monitors and police components.The thermometers basic range is from -50 to 110 ,its accuracy error is less than 0.5 and LCD directly shows numerical temperature. When the measured temperature exceed the limit alarm doors, the system will output alarm signal.The paper includes tow aspects of the design: one is hardware circuit design, the other is the system process design. Among them, the hardware components are as following: the central controller SCM AT89S51,the temperature detection DS18B20 part of a temperature sensor,and LCD monitors, as LCD 1602 F; the system software programs, including the main program, the temperature reading, conversion and calculation procedures, the data show that refresh procedures and so on.Temperature Sensor DS18B20 acquisition of the temperature signal sent to SCM for processing, SCM then the temperature data sent 1602 F LCD display.Key words: temperature sensor;DS18B20;LCD liquid crystal display目 录1 绪论11.1 设计背景及目的11.2 设计研究方法21.3 设计构成及内容32 数字温度计硬件电路的实现42.1 单片机的选取和介绍42.1.1 引脚描述42.1.2 特殊功能寄存器与存储结构62.1.3 编写方法72.2 复位电路及晶振电路设计82.2.1 复位电路82.2.2 晶振电路82.3 温度传感器设计82.3.1 DS18B20的外形及内部结构82.3.2 DS18B20工作原理112.3.3 DS18B20的外部电路图122.4 液晶显示电路设计122.4.1 1602的引脚功能介绍122.4.2 1602液晶模块内部的控制指令132.4.3 1602的外部电路图143 数字温度计软件设计流程153.1 主程序设计153.2 温度值读取程序设计163.3 计算温度程序设计173.4 显示数据及刷新程序设计184 仿真调试195 结论22致谢23参考文献24附录26附录A 原理图26附录B 源程序27 附件 附件1 开题报告(文献综述) 附件2 译文及原文影印件1 绪论1.1 设计背景及目的 传统的温度计有反应速度慢、读数麻烦、测量精度不高、误差大等缺点,本文介绍了一种基于 DS18B20 的数字温度计设计方案。本方案利用AT89S51单片机控制 DS18B20 进行数据采集并由 HS1602 液晶显示模块显示结果。目前的数字温度传感器是微电子技术,计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。现在的温度传感器正在基于单片机的基础上,从模拟式向数字式,从集成化向智能化,网络化的方向飞速发展,并朝着高精度、多功能、总线标准化,高可靠性及安全性,开发虚拟传感器和网络传感器,研制单片测温系统等高科技的方向迅速发展。测量温度的关键是温度传感器,其发展经历了三个发展阶段:(1)传统的分立式温度传感器;(2)模拟集成温度传感器;(3)智能集成温度传感器1。随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人 带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求 越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技 术入手,一切向着数字化控制,智能化控制方向发展。本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用。本毕业设计介绍了温度计的测量和控制之间的关系:检测是控制的基础和前提,而检测的精度必须高于控制的精确度,否则无从实现控制的精度要求。不仅如此,检测还 涉及国计民生各个部门,可以说在所有科学技术领域无时不在进行检测。科学技术的发 展和检测技术的发展是密切相关的。现代化的检测手段能达到的精度、灵敏度及测量范围等,在很大程度上决定了科学技术的发展水平。同时,科学技术的发展达到的水平越高,又为检测技术、传感器技术提供了新的前提手段。目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。目前的温度计中传感器是它的重要组成部分,它的精度灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。传感器应用极其广泛,目前已经研制出多种 新型传感器。但是,作为应用系统的设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统相互连接起来,从而构成性能优良的监控系统2。1.2 设计研究方法根据系统设计的功能,本时钟温度系统的设计必须采用单片机软件系统实现,用单片机的自动控制能力来测量、显示温度数值3。初步确定设计系统由单片机主控模块、测温模块、显示模块、报警模块共4个模块组成,电路系统框图如图1.1所示。传感器部分AT89S51单片机LCD显示报警扬声器 图1.1 系统基本方框图对于单片机的选择,如果用8051系列,由于它没有内部RAM,系统又需要一定的内存存储数据。AT89S51是一个低功耗、高性能CMOS 8位的单片机,片内含8k Bytes ISP的可反复擦写1000次的Flash只读程序存储器,兼容标准MCS-51指令系统及80C51引脚结构,功能强大的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。而AT89S51与AT89C51相比,外型管脚完全相同,AT89C51的HEX程序无须任何转换可直接在AT89S51运行,且AT89S51比AT89C51新增了一些功能,相比较后,在本设计中选用AT89S51更能很好的实现温度计控制功能。 测温电路可以使用热敏电阻之类的器件,利用其感温效应,将被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据处理。但是这种感温电路比较复杂,且采用热敏电阻精度低,重复性、可靠性都比较差。如果采用温度传感器DS18B20可以减少外部硬件电路,而且可以很容易直接读取被测温度值,进而转换,还可以在高温报警,且成本低、易使用,可以很好的满足设计要求。所以本文采用传感器DS18B20代替传统的测温电路。温度的显示可以采用LED数码管来显示,LED亮度高、醒目,但是电路复杂,占用资源多且信息量小。而采用液晶显示器有明显的优点:工作电流比LED小几个数量级,功耗低;尺寸小,厚度约为LED的1/3;字迹清晰、美观、使人舒服;寿命长,使用方便,可得性强。故本设计采用LCD来显示温度。采用数字温度芯片DS18B20 测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0100 摄氏度时,最大线形偏差小于1 摄氏度。DS18B20 的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟4。该系统利用AT89S51芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度。显示电路是使用的LCD液晶1602液晶显示,这种显示最大的优点就是使用方便,接线简单,显示比较清楚,并能结合所需的字母显示。利用LED液晶1602显示器,AT89S51芯片和温度传感器DS18B20这些硬件,再通过C语言编程使得各种功能得以串联起来,逐一实现所需要的功能。这样软硬件的结合就能使数字温度计准确成功的运行了。1.3 设计构成及内容本设计主要是介绍了单片机控制下的温度的检测和其显示系统,十分详细的介绍了其硬件和软件设计,并对其各功能模块做了详细介绍,其主要功能和指标如下:利用温度传感器(DS18B20)测量某一点环境温度测量范围为-5599,精度为±0.5用液晶进行实际温度值显示能够根据需要方便设定上下限报警温度 2 数字温度计硬件电路的实现2.1 单片机的选取和介绍AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案5。 AT89C51具有如下特点:40个引脚如图2.1,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。 图2.1 单片机管脚图 2.1.1 引脚描述VCC:电源电压 GND:地P0口:P0口是一组8位漏极开路双向I/O口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。P2口:P2口是一个内部带有上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。另外P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上的高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。DISRTO位缺省为RESET输出高电平打开状态。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟振荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。EA/VPP:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.1.2 特殊功能寄存器与存储结构中断寄存器:各中断允许控制位于IE寄存器,5个中断源的中断优先级控制位于IP寄存器。双时钟指针寄存器:为更方便地访问内部和外部数据结构,提供了两个16位数据指针寄存器:DP0位于特殊功能寄存器取块中的地址82H、83H和DP1位于地址84H、85H,当特殊功能寄存器中的位DPS=0选择DP0,而DPS=1则选择DP1.用户应在访问相应的数据指针寄存器前初始化DPS位。MCS-51单片机系列对外部程序和数据存储器有一个独立地址空间。每个外部程序和数据存储器的地址有64K字节。程序存储器:如果EA脚被接地,所有的程序直接由外部存储器读取。在AT89S51单片机中,如果EA脚链接电源,程序的地址在0000H到FFFFH范围内由内部存储器读取,地址由1000H到FFFFH范围内由外部存储器读取。数据存储器:AT89S51单片机执行RAM的128字节数据。这128字节可通过直接和间接地址访问方式获得。堆栈操作是直接寻址方式,因此数据RAM存储器内的128字节可作为堆栈空间。看门狗定时器(WDT):看门狗是为了解决CPU程序运行时可进入混乱或死循环而设置,它由一个14bit计数器和看门狗复位SFR构成。外部复位时,看门狗默认为关闭状态,要打开看门狗,用户必须按顺序将0E1H和0E1H写到WDTRST寄存器(SFR地址为0A6H),当启动了看门狗,它会随晶体振荡器在每个机器周期计数,除硬件复位或看门狗溢出复位外没有其它方法关闭看门狗,当看门狗溢出,将使RST引脚输出高电平的复位脉冲。打开看门狗需要按次序写01EH和0E1H到WDTRST寄存器(SFR的地址为0A6H),当看门狗打开后,需要在一定的时候写01EH和0E1H到WDTRST寄存器以避免看门狗计数溢出。14位看门狗计数器计数达到16383(3FFFH),看门狗将溢出并使器件复位。看门狗打开时,它会随晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个16383机器周期内复位看门狗,也即写01EH和0E1H到WDTRST寄存器。看门狗计数器既不可读也不可写,当看门狗溢出时,通常将使RST引脚输出高电平的复位脉冲。复位脉冲持续时间为98Xt0SC,而T0SC=1/F0SC(晶体振荡频率)。为使看门狗工作最优化,必须在合适的程序代码时间段周期地复位看门狗防止看门狗溢出。掉电时期,晶体振荡停止,看门狗也停止。掉电模式下,用户不能再复位看门狗。有两种方法可退出掉电模式:硬件复位或通过激活外部中断。当硬件复位退出掉电模式时,处理看门狗可以像通常的上电复位一样。当又由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。为防止中断误复位,当器件复位,中断引脚持续为低,看门狗并未开始计数,直到中断引脚被拉高为止。这为在掉电模式下的中断执行中断服务程序而设置。为保证看门狗在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位看门狗程序。时钟振荡器:AT89S51中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然振荡器。 外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联振荡电路。电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。用户也可以采用外部时钟。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。2.1.3 编写方法编程前,需要按照编程模式设置好地址、数据及控制信号,AT89S51编程方法如下: (1)在地址线上加上要编程单元的地址信号。(2)在数据线上加上要写入的数据字节。(3)激活相应的控制信号。(4)将EA/Vpp端加上+12V编程电压。 (5)每对Flash存储阵列写入一个字节或每写入一个程序加密位,加上一个ALE/PROG编程脉冲。每个字节写入周期是自身定时的,大多数约为50us。改变编程单元的地址和写入的数据,重复(1)(5)步骤,直到全部文件编程结束。2.2 复位电路及晶振电路设计 根据方案的设计,系统硬件电路主要由主控单片机AT80S51、温度传感器DS18B20、液晶显示器1602等组成。影响单片机系统运行稳定性的内部因素包括复位电路和振荡源的稳定性,振荡源的稳定性主要由起振时间、频率稳定度和占空比稳定度决定,起振时间可由电路参数整定,稳定度受振荡器类型、温度和电压等参数影响。2.2.1 复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。在本系统中,上电复位采用电平方式开关复位,具体电路如图2.2所示。上电复位采用RC电路,其中电容为10微法,电阻为10千欧。2.2.2 晶振电路单片机系统里晶振的作用非常大,它结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振提供的时种频率越高,单片机运行的速度也就越快。单片机的晶振频率应低于40兆赫兹,本设计中采用的晶振频率为12兆赫兹,具体电路如2.3所示,在晶振上并联两个30微法电容。 图2.2 复位电路 图2.3 晶振电路2.3 温度传感器设计2.3.1 DS18B20的外形及内部结构 DS18B20温度传感器是一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式6。DS18B20的性能特点如下: (1)独特的单线接口仅需要一个端口引脚进行通信; (2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能; (3)无须外部器件; (4)可通过数据线供电,电压范围为3.05.5V; (5)零待机功耗; (6)温度以9或12位数字; (7)用户可定义报警设置; (8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; (9)负电压特性,电极接反时,温度计不会因发热而烧毁,只是不能正常工作。DS18B20的外形及引脚如图2.4所示。DS18B20引脚功能的详细描述如表2-1所示。DS18B20的电源供电方式有两种,一种为寄生电源供电方式,另一种为外部电源工作方式。其中,在寄生电源供电方式下,DS18B20从单线信号线汲取能量:在信号DQ处于高电平期间把能量储存在内部电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。其具体电路如图2.5。 表2-1 DS18B20详细引脚功能描述图名称引脚功能描述GND地信号 DQ数据输入/输出引脚。开漏单总线接口引脚。当被用在寄生电源下,可以向器提供电源。 VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。 图2.4 DS18B20的引脚 图2.5 寄生电源工作方式DS18B20独特的寄生电源方式有如下三个好处: (1)进行远距离测温时,无需本地电源; (2)可在没有常规电源的条件下读取ROM; (3)电路更简洁,仅用一根I/O口实现测温。 要使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流要达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差大。 因此,图2.5的寄生电源电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大7。 DS18B20外部电源供电方式如图2.6所示,其工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度,同时在总线理论上可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空,否则不能转换温度,读取的温度总是85。外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,本设计中使用外部电源供电方式。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。图2.6 外部电源工作方式DS18B20内部结构如图2.7,它主要由四部分组成:64位光刻ROM、温度传感器、存储器、非挥发的温度报警触发器TH和TL。图2.7 DS18B20内部结构图 2.3.2 DS18B20工作原理 DS18B20的温度值的位数因分辨率不同而不同,温度转换时的最大延时为750ms。 DS18B20测温原理如图2.8所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值10。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值11。 图2.8 DS18B20测温原理 2.3.3 DS18B20的外部电路图根据设计要求,传感器的硬件电路图如图2.9所示。图2.9 DS18B20外部电路图2.4 液晶显示电路设计液晶屏显示模块与数码管相比,它显得更为专业、漂亮。液晶显示屏以其微功耗、体积小、显示内容丰富、超薄轻巧、使用方便等诸多优点,在通讯、仪器仪表、电子设备、家用电器等低功耗应用系统中得到越来越广泛的应用,使这些电子设备的人机界面变得越来越直观形象,目前已广泛应用于电子表、计算器、-液晶电视机、便携式电脑、复印机、传真机等许多方面15。1602字符型液晶模块(带背光),是目前工控系统中使用最为广泛的液晶屏之一。2.4.1 1602的引脚功能介绍1602采用标准的16脚接口,其引脚功能如下:第1脚:VSS为电源地,接GND。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:BLA背光电源正极(+5V)输入引脚。第16脚:BLK背光源负极,接GND。2.4.2 1602液晶模块内部的控制指令1602液晶模块内部的控制器共有11条控制指令,如表2-2所示。表2-2 1602控制器指令指令RSR/WD7D6D5D4D3D2D1D0清显示0000000001光标返回000000001*置输入模式00000001IS显示开/关的控制0000001DCB光标或字符移位000001S/CR/L*置功能00001DLNF*置字符发生存贮器地址0001字符发生存贮器地址(AGG)置数据存贮器地址001显示数据存贮器地址(ADD)读忙标志或地址01BF计数器地址(AC)写数到CGRAM或DDRAM10要写的数据从CGRAM或DDRAM读数11读出的数据1602的读写操作、屏幕和光标的操作都是通过指令编程来实现的(其中,1为高电平、0为低电平),各指令的解释如下:指令1:清显示,指令码01H,光标复位到地址00H位置;指令2:光标复位,光标返回到地址00H; 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移;S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效; 指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁;指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标;指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符;指令7:字符发生器RAM地址设置;指令8:DDRAM地址设置;指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙;指令10:写数据;指令11:读数据;液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符。2.4.3 1602的外部电路图根据设计要求,1602液晶显示器的硬件电路图如图2.10所示。 图2.10 LCD1602外部连接图3 数字温度计软件设计流程 3.1 主程序设计单片机应用系统软件可采用汇编语言和C语言进行编写,由于汇编语言的可读性和可移植性都较差,采用汇编语言编写的单片机应用程序不但周期长,而且调试和排错也比较困难。为了提高编制单片机应用程序的效率,改善程序的可读性和可移植性,采用C语言无疑是一种最好的选择。C语言具有一般高级语言的特点,还能直接对计算机的硬件进行操作,表达和运算能力也较强。所以,本设计采用C语言编写程序。 YYSS YN N初始化 调用显示子程序序序序 读出温度值温度计算处理显示数据刷新 发温度转换开始命令 1秒到? 初次上电? 图3.1 DS18B20温度计主程序流程图 主程序的主要功能是负责读出并处理DS18B20的测量的当前温度值、实时显示温度值。温度测量每1s进行一次,这样可以在一秒之内测量一次被测温度。系统主程序首先对系统进行初始化,然后显示开机画面。由于单片机没有停止指令,所以可以设计系统程序不断地循环执行上述显示结果。其程序流程如图3.1所示。 Y N N Y结束读取操作,CRC校验 移入温度暂存9字节完?完?CRC校验 正确?图3.2 读出温度子程序流程图发DS18B20复位命令位命令发跳过ROM命令发读取温度命令令3.2 温度值读取程序设计读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进行温度数据的改写。其程序流程图如图2.1。温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750毫秒,在本程序设计中采用1秒显示程序延时法等待转换