1、关键词DS18B20;AT89C52;温度测量;控制第1章 绪论随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的。温度测控技术也在各个领域应用越来越广泛,同时温度测量也被人们异常关注,一时间涌现出大量各式各样的测试温度仪器,这些仪器的原理到底是怎样的呢?说到底也是所以温度测控的范畴,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、学习、生活提供更好的更方便的设施就需要从数字单片机技术入手,一切想着数字化,智能化控制方向发展。本设计所介绍的数字温度计与传统数字温度计相比,具有读数方便,测温范围广,测量准确,其输出采
2、用数字显示,主要用于对测温比较准确的地方,或科研实验室使用,测温传感器使用DS18B20,用LCD实现温度显示。第2章 系统方案论证与比较2.1 方案比较方案一:采用热电偶温差电路测温,温度检测部分可以采用低温热偶,热电偶由两个焊接在一起的异金属导线组成(热电偶的组成如图2-1),热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可以推测出检测结点的温度。数据采集部分则使用带有A/D通道的单片机,在将随被温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据处理了,在显示电路上就可以将北侧温度显示出来。热电偶的优点是工作
3、温度宽,且体积小,但是也存在输出电压小,容易遭受来自导线环路噪音的影响以及漂移较高的缺点并且这种电路需要用到A/D转换电路,感温电路比较麻烦。方案二:采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理和控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性质稳定,它温用作工业测温元件,此元件线性较好。在0-100摄氏度时,最大线性偏差小于1摄氏度。DS18B20的最大特点之一是采用了单总数的数据传输,由数字温度计DS18B20和微控制器AT89C52构成温度测量装置,它直接输出温度的数字信号,可直接和计算机连接。这样温度系统的结构就比较简单,体积也不大。采用51单片
4、机控制软件编程的自由度大,而且体积小,硬件实现简单,安装方便。该系统利用AT89C51芯片控制温度传感器DS18B20进行温度的实时检测并显示,能够实现快速测量环境温度,并可以根据需要设置上限报警温度。从以上两总方案,容易看出方案一的温测装置可测温度范围广,体积小,但是单线性误差大。方案二的温测装置电路简单,精准度较高,实现方便,软件设计也比较简单,故本次设计采用方案二。显示电路可以采用两种方案:第一种是通过单片机控制译码器将译码器输出的数据送给数码管进行显示,但是要单独增加一个显示电路,使设计比较复杂。另一种是直接运用LCD液晶显示,即直接通过单片对其进行显示以及数据处理较多;因此选择第二种
5、方案。2.2 方案论证在日常生活及工农业生产中经常要检测温度,传统的方式是采用热电偶或热电阻。其硬件电路和软件调试比较复杂,制作成本较高。近年来随着科技的飞速发展,单片机的应用正不断走向深入。所以我们选用单片机作为核心部件进行逻辑控制及信号的产生,用单片机本生的优势节约成本,使电路更简单。根据题目的要求,本次设计采用由 AT89C51单片机及DS18B20温度传感器组成数据采集电路,加上显示电路和控制电路等,根据温度数据测量,通过控制电路对温度进行控制。本系统具有快速显示、测量准确、精度高、可调温控范围、硬件结构简单等优点,是一种比较经济的温度控制系统。A/D转换器将温度传感器采集的温度模拟信
6、号转化成数字信号,送入单片机的I/O数据接口,然后通过单片机读回I/O数据进行温度的判断,最后将数据送入显示译码单元。显示时,译码电路是将单片机输出的BCD码送入译码器,通过其译码后送入LCD显示电路。第3章 硬件设计3.1主控芯片介绍单片机AT89C2051具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存
7、储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。3-1AT89C51主要功能特性:兼容MCS-51指令系统4k可反复擦写(1000次)Flash ROM32个双向I/O口
8、可编程UARL通道两个16位可编程定时/计数器全静态操作0-24MHz1个串行中断128x8bit内部RAM两个外部中断源共6个中断源可直接驱动LED3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能表3-1AT89C51单片机的管脚功能。VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻
9、的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数
10、据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下所示:P3口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)
11、P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX
12、,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTA
13、L2:来自反向振荡器的输出。3.2 复位电路为确保两点间温度控制系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般电路正常工作需要供电电源为5V5%,即4.755.25V。复位是单片机的初始化操作,其目的是使CPU及各专用寄存器处于一个确定的初始状态。如:把PC的内容初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要复位以使其恢复正常工作状态。RST端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。按键手动复位有电平方式和脉冲方式两种,本系
14、统设计采用上电复位,如图2-3所示。上电复位是直接将RST端通过电阻接高电平来实现单片机的复位。3.3 时钟电路单片机的时钟信号用来提供单片机内各种微操作的时间基准,时钟电路用于产生单片机工作所需要的时钟信号。单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。本系统设计采用内部振荡方式,如图2-4所示。MCS-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTALl和XTAL2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。3.4 矩阵电路按照键盘与单片机的连
15、接方式可分为独立式键盘与矩阵式键盘。矩阵式键盘是一种常见的输入装置,在日常生活中,矩阵式键盘在计数机、电话、手机、微波炉等各式电子产品上已经被广泛应用。在键盘中按键较多时,为了减少I/O 口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连接,而是通过一个按键加以连接。这样,一个端口就可以构成4x4=16个按键,比之直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显,比如再多加一条线就可以构成20的键盘,而直接用端口线则只能多出一键。所以本次设计采用的是矩阵式键盘,确定矩阵式键盘上的何键被按下可以采用行扫描法。判断键盘中有无键按下:将全部行线置低电平,然
16、后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位低于电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则按键中无键按下。判断闭合键所在位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,在逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。3.5 显示电路在单片机应用系统中,对于系统的运行状态和运行结果,通常都需要直观交互显示出来。单片机应用系统中最常用的显示器有LED和LCD两种。这两种显示器都可以显示数字、
17、字符及系统的状态,LED和LED数码显示最为普遍,本设计采用的是更为环保的LCD显示器。字符型液晶显示模块是一种专门用于显示字母,数字,字符等点阵式LCD,目前常用的有16x1,16x2,20x2,40x2行等模块。点阵字符型LCD的接口特性点阵字符型LCD是专门用于显示数字,字母,图形符号及少量自定义字号的液晶显示器。这类显示器把LCD控制器,点阵驱动器,字符存储器,显示体及少量的组容元件等集成一个液晶显示模块,鉴于字符型液晶显示模块目前在国际上已经规范化,其电特性及接口特性是统一的。因此,只要设计出一种字号的接口电路,在指令上稍加修改即可使用各种规格的字符型液晶显示模块。字符型液晶显示模块
18、的控制器大多数为日立公司生产的HD44780及其兼容的控制器。点阵型液晶显示模块的基本特点(1)液晶显示屏是以若干5x8或5x11点阵块组成的显示字符群。每个点阵块为一个字符位,字符间距和行距都为一个点的宽度。(2)主控电路电路为HD44780-及其他公司的全兼容电路。因此从程序员的角度来说,LCD的显示接口与编程是面向HD44780的,只要了解HD44780的编程结构即可进行LCD的显示编程。(3)内部具有字符发生器ROM,可显示192种字符。(4)具有64字节的自定义字符RAM,可以定义8个5x8点阵字符或4个5x11点阵字符。(5)具有64字节的数据显示RAM,共进行显示编程时使用。(6
19、)标准接口,与M68HC08系列MCU容易接口。(7)模块结构紧凑,轻巧,装备容易。(8)单+5V电源供电。(9)低功耗,高可靠性。(10)HD44780的引脚与时序(11)HD44780的外部接口信号一般有16条,与MCU的接口有8条数据线DB0DB7和3条控制线RS,RW,E,HD44780的引脚功能如表3-2所示。表3-2 HD47780的引脚功能表引脚符号状态功能1Vss电源地2VDD电源正,接+5V3VL液晶显示偏压4RS输入寄存器选择:为1时选择数据寄存器;为0时选择指令寄存器5RWR/W为读写选择线:为1时进行读操作,为0时进行写操作6E使能信号7DB0三态数据总线(LSB)8D
20、B1数据总线9DB210DB311DB412DB513DB614DB715A背光源正极16K背光源负极控制器HD44780的信号功能控制如表3-33-3控制器HD44780的信号功能R/W下降沿写指令代码高电平读忙标志和AC值写数据读数据图3-5 LCD显示电路3.6 测温电路3.6.1DS18B20单线数字温度传感器由DALLAS半导体公司生产的DS18B20型单线智能温度传感器,属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有体积小,接口方便,传输距离远等特点。产品的主要技术指标:(1)测量范围:-55+125;(2
21、)测量精度:0.5;(3)反应时间500ms。3.6.2DS18B20工作原理温度传感器DS18B20将被测环境温度转化成带符号的数字信号(以十六位补码形式,占两个字节)在通过单片机发出命令送给显示器。它的输出脚I/O直接与单片机相连,并接一个上拉电阻,传感器采用外部电源供电。传感器控制程序是按照DS18B20的通信协议编制。系统的工作是在程序控制下,完成对传感器的读写和对温度的显示。3.6.3 DS18B20的性能特点(1) 采用单总线专用技术,既可通过串行口线,也可通过其它I/O口线与微机接口,无须经过其它变换电路,直接输出被测温度值(9位二进制数,含符号位);(2) 测温范围为-55+1
22、25,测量分辨率为0.0625;(3) 内含64位经过激光修正的只读存储器ROM;(4) 适配各种单片机或系统机;(5) 用户可分别设定各路温度的上、下限;(6) 内含寄生电源。3.6.4DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,非挥发的温度报警触发器TH和TL,高速暂存器。DS18B20的管脚排列如图35所示。64位光刻ROM是出厂前被光刻好的,它可以看作是该DS18B20的地址序列号。不同的器件地址序列号不同。图3-6DS18B20引脚分布图表3-4 DS18B20引脚功能序号寄存器名称作 用序 号温度低字节以16位补码形式存放4、5保留字
23、节1、2温度高字节计数器余值TH/用户字节1存放温度上限计数器/HL/用户字节2存放温度下限CRC指 令约定代码操 作 说 明温度转换44H启动DS18B20进行温度转换读暂存器BEH读暂存器9个字节内容写暂存器4EH将数据写入暂存器的TH、TL字节复制暂存器48H把暂存器的TH、TL字节写到E2RAM中重新调E2RAMB8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU表3-5 DS18B20信号功能以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在DS18B20的两个高低两个8位
24、的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。3.6.5 DS18B20控制方法在硬件上,DS18B20与单片机的连接有两种方法,一种是VCC接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是用寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。此次设计选择的是前面一种控制。表32DS18B20有六条控制命令CPU对DS18B20的访问流程是:先对
25、DS18B20初始化,再进行ROM操作命令,最后才能对存储器操作,数据操作。DS18B20每一步操作都要遵循严格的工作时序和通信协议。如主机控制DS18B20完成温度转换这一过程,根据DS18B20的通讯协议,须经三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操做。图3-7测温电路3.7 整机工作原理当接通电源以后,温度传感器正常工作,温度传感器将根据被测温度的不同来采集不同的数据,然后将所采集到的数据传送到比较器到中,然后由比较器将采集到的数据转变成高低电平,在送入单片机,单片机通过控制各个引脚电平的
26、高低来来控制温度的显示输出,当温度显示TH为110C,TL为20C,通过矩阵键盘电路可以调节TH和TL的初始值,并且还可以调节当前的显示的温度值,按一次键盘TH和TL的值自加一或自减一,当减到低于20C或高于110时,将自动返回初始值。整机电路图如图3-8所示第4章 软件设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型的时候软件也基本定下拉了,从软件的功能不同,可以分为两的类:一是主程序,它是整个软件的核心,专门用来协调各个执行模块和操作者的联系。二是子程序,它是用来完成各种实质性的工作的,如测量、计算、显示、通讯等。每一个执行软件就是一个小的执行模块,这里将每一个模块一一列出来
27、,并为每个执行模块进行功能定义和接口定义。各执行模块规划好以后,就可以规划监控软件了。首先要根据系统的总体功能选择一种最合适的主程序结构,然后根据实时性的条件,合理安排监控软件和执行软件之间的调度关系。4.1主程序模块主程序主要完成硬件初始化,子程序调用等功能图4-1主程序流程图主程序函数如下:Void main() setds18b20(TH,TL,RS); /设置上下限报警温度和分辨率 delay(100); while(1) pt=ReadTemperature(); temper_LCD(); user_temper_LCD(user_temper); alarm_LCD(TH,TL)
28、; LCD_Initial();LCD_Print(0,0,TempBuffer0); LCD_Print(0,1,TempBuffer1); scan_full(); /看有无键按下 if(key_ok) /如有键按下则看到底哪个键按下 key_value=key_scan(); /调用键盘扫描程序 key_command(key_value); /键盘命令处理函数 图4-2 DS18B20初始化流程图DS18B20初始化函数void Init_DS18B20(void)unsigned char x=0;DQ = 0; /单片机将DQ拉低delay_18B20(80); /精确延时 大于 480usDQ = 1; /拉高总线delay_18B20(14);x=DQ;delay_18B20(20
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1