毕业设计(论文)基于AT89C51单片机的数字温度计设计.doc
-
资源ID:3978700
资源大小:319KB
全文页数:30页
- 资源格式: DOC
下载积分:8金币
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
毕业设计(论文)基于AT89C51单片机的数字温度计设计.doc
烟台汽车工程职业学院学生毕业论文数字温度计设计学生姓名: 入学时间: 2008年9月 专业名称: 电子信息工程技术 班 级: 08电子信息一班 指导教师: 职 称: 讲 师 烟台汽车工程职业学院二一一年五月摘 要随着现代信息技术的飞速发展和传统工业改造的逐步实现,能够独立工作的温度检测与显示系统应用于诸多领域。传统的温度检测以热敏电阻为温度敏感元件。热敏电阻的成本低,需要外加信号处理电路,而且可靠性相对较差,测温准确度低,检测系统也有一定的误差。与传统的温度计相比,这次设计的是基于DS18B20的数字温度计,它具有读数方便,测温范围广,测温精确,数字显示,适用范围宽等特点。在本设计中选用AT89C51型单片机作为主控制器件,采用DS18B20数字温度传感器作为测温元件,通过4位共阳极LED数码显示管并行传送数据,实现温度显示。本设计的内容主要分为两部分,一是对系统硬件部分的设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现温度的采集与显示。通过DS18B20直接读取被测温度值,送入单片机进行数据处理,之后进行输出显示,最终完成了数字温度计的总体设计。其系统构成简单,信号采集效果好,数据处理速度快,便于实际检测使用。关键词:单片机AT89C51;温度传感器DS18B20;LED数码管;数字温度计目 录0 前言11 数字温度计设计的可行性分析21.1数字温度计设计方案论证21.1.1方案一21.1.2方案二21.2单线技术22 系统的硬件设计42.1核心处理器的设计42.1.1 AT89C51简介42.1.2复位电路的设计72.1.3晶振电路的设计82.2温度采集电路设计82.2.1 DS18B20简介92.2.2 DS18B20的内部结构102.2.2 DS18B20的测温原理132.3显示电路的设计162.3.1 LED数码管162.3.2显示电路173 系统的软件设计183.1 DS18B20的单线协议和命令183.1.1初始化183.1.2 ROM操作命令183.1.3 内存操作命令193.1.4 数据处理203.2温度采集程序设计213.3温度显示程序设计234 结束语24参考文献25致 谢260 前言在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持1。我们用一种相对比较简单的方式来测量。随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。本设计主要介绍了用单片机和数字温度传感器DS18B20相结合的方法来实现温度的采集,以单片机AT89C51芯片为核心,辅以温度传感器DS18B20和LED数码管及必要的外围电路,构成了一个多功能单片机数字温度计。该装置适用于人民的日常生活和工、农业生产的温度测量与报警,实现对温度的监测。其主要研究内容包括两方面,一是对系统硬件部分的设计,包括温度采集电路和显示电路;二是对系统软件部分的设计,应用C语言实现温度的采集与显示。通过利用数字温度传感器DS18B20进行设计,能够满足实时检测温度的要求,同时通过LED数码管的显示功能,可以实现不间断的温度显示,并带有复位功能。本次设计的主要思路是利用51系列单片机,数字温度传感器DS18B20和LED数码显示器,构成实现温度检测与显示的单片机控制系统,即数字温度计。通过对单片机编写相应的程序,达到能够实时检测周围温度的目的。1 数字温度计设计的可行性分析1.1数字温度计设计方案论证1.1.1方案一由于本设计实现的是测温电路,首先我们可以使用热敏电阻之类的器件,利用其感温效应,将其随被测温度变化的电压或电流值采集过来,进行A/D转换后,就可以用单片机进行数据的处理,通过显示电路就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。因此,我们引出第二种方案。1.1.2方案二我们可以采用技术成熟、操作简单、精确度高的温度传感器,在此,可以选用数字温度传感器DS18B20,根据它的特点和测温原理,很容易就能直接读取被测温度值并进行转换,这样就可以满足设计要求。从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故在本设计中采用了方案二。通过方案二设计的温度计总体电路图如附录图C所示,控制器采用单片机AT89C51,温度传感器采用DS18B20,用4位LED数码管以串口并行输出方式传送数据实现温度显示。1.2单线技术目前,常用的微机和外设之间数据传输的串行总线3有I2C总线、SPI总线等,其中I2C总线采用同步串行双线(一根时钟线,一根数据线)方式,而SPI总线采用同步串行三线(时钟线,输入线,数据输入线)方式。这两种总线需要至少两根或两根以上的信号线。美国达拉斯半导体公司推出了一项特有的单线技术。该技术于上述总线不同,它采用单根信号线,即可传输时钟,又能传输数据,而且数据传输时是双向的,因而这种单线技术具有线路简单,硬件开销少,成本低廉。便于扩展的优点。单线技术适用以单主机系统,单主机能够控制一个或多个从机设备。主机可以是微控制器,从机可以是单线器件,它们之间的数据交换,控制都由这根线完成。主机或从机通过一个漏极开路或三态端口连至该数据线,以允许设备在不发送数据时能够释放线,而让其它设备使用。单线通常要求外接一个约5k的上拉电阻,这样,当该线闲置时,器件状态为高电平。主机和从机之间的通信主要分为3个步骤:初始化单线器件,识别单线器件和单线数据传输。由于只有一根线通信,所以它们必须是严格的主从结构,只有主机呼叫从机时,从机才能应答,主机访问每个单线器件都必须严格遵循单线命令序列,从机遵守上述三个步骤的顺序。如果命令序列混乱,单线器件将不会响应主机。所有的单线器件都有遵循严格的协议,以保证数据的完整性。单线协议有复位脉冲,其他均由主机发起,并且所有命令和数据都是字节的地位在前。2 系统的硬件设计2.1核心处理器的设计2.1.1 AT89C51简介对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。所以,我们选用51系列单片机AT89C51。AT89C51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚,并集成了 Flash 程序存储器,既可在线编程(ISP),也可用传统方法进行编程,因此,低价位AT89C51单片机可应用于许多高性价比的场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89C51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电2。AT89C51的主要特性如下: (1)与MSC-51兼容;(2)4K字节可编程闪烁存储器;(3)寿命:1000写、檫循环;(4)数据保留时间:10年;(5)全静态工作时间:0Hz-24Hz(6)三级程序存储器锁定;(7)128*8为内存RAM;(8)32根可编程I/O线;(9)两个16位定时器/计数器;(10)5个中断源;(11)可编程串行通道;(12)低功耗的闲置和掉电模式;(13)片内振荡器和时钟电路;1、AT89C51引脚图芯片AT89C51的引脚排列和逻辑符号如图2.1所示。图 2.1 AT89C51单片机引脚图2、AT89C51引脚功能介绍单片机芯片AT89C51为40引脚双列直插式封装。其各个引脚功能4介绍如下:(1) VCC:供电电压;(2) GND:接地;(3) P0口P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写”1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。(4) P1口P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入”1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。(5) P2口P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写”1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址”1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。(6) P3口P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入”1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,同时P3口同时为闪烁编程和编程校验接收一些控制信号。其具体功能如表2.1所示。表2.1 P3口特殊功能介绍端口定义符号表示功能描述P3.0RXD串行输入口P3.1TXD串行输出口P3.2INT0外部中断0P3.3INT1外部中断1P3.4T0定时器0外部输入P3.5T1定时器1外部输入P3.6WR外部数据存储器写选通P3.7RD外部数据存储器读选通(7) RST:复位输入端。当振荡器复位时,要保持RST脚两个机器周期的高电平时间。(8) ALE / PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。(9) PSEN外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。(10) EA/VPP当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。(11) XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。(12) XTAL2:来自反向振荡器的输出。2.1.2复位电路的设计单片机复位电路的设计如图2.2所示。该复位电路采用手动复位与上电复位相结合的方式。当按下按键S1时,VCC通过R1电阻给复位输入端口一个高电平,实现复位功能,即手动复位。上电复位就是VCC通过电阻R2和电容C构成回路,该回路是一个对电容C充电和放电的电路,所以复位端口得到一个周期性变化的电压值,并且有一定时间的电压值高于CPU复位电压,实现上电复位功能5。图2.2 单片机复位电路2.1.3晶振电路的设计单片机晶振电路的设计如图2.3所示。XTAL1(X1)为反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2(X2)是来自反向振荡器的输出。按照理论上AT89C51使用的是12MHz的晶振,但实测使用11.0592MHz。所以设计者通常用的是11.0592MHz。2.2温度采集电路设计由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。图2.3 单片机晶振电路2.2.1 DS18B20简介DALLAS 最新单线数字温度传感器DS18B20是一种新型的”一线器件”,其体积更小、更适用于多种场合、且适用电压更宽、更经济。DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持”一线总线”接口的温度传感器。温度测量范围为-55+125 摄氏度,可编程为9位12 位转换精度,测温分辨率可达0.0625摄氏度,分辨率设定参数以及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。被测温度用符号扩展的16位数字量方式串行输出;其工作电源既可以在远端引入,也可以采用寄生电源方式产生;多个DS18B20可以并联到3 根或2 根线上,CPU只需一根端口线就能与诸多DS18B20 通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便6。DS18B20 的性能特点如下: (1)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条总线即可实现微处理器与DS18B20的双向通讯;(2)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;(4)适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电;(5)测温范围-55125,在-10+85时精度为±0.5;(6)零待机功耗;(7)可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;(8)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;(9)用户可定义报警设置;(10)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;(11)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;(12)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。以上特点使DS18B20非常适用与多点、远距离温度检测系统。DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。DS18B20的管脚排列、各种封装形式如图 3.4 所示。其中,DQ 为数据输入/输出引脚,也可用作开漏单总线接口引脚,当被用在寄生电源工作方式下,可以向器件提供电源;GND为地信号;VDD为可选择的电源引脚,当工作于寄生电源时,此引脚必须接地。其电路图2.4所示。2.2.2 DS18B20的内部结构图2.4为DS1820的内部结构框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。DS18B20采用3脚PR35封装或8脚SOIC封装。其中,64 bit闪速ROM的结构如下:8bit 校验CRC48bit 序列号8bit 工厂代码(10H)MSB LSBMSB LSBMSB LSB开始的8位是产品类型的编号,接着是每个器件的惟一的序号,共有48 位,最后8位是前面56 位的CRC 检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。图2.4 DS18B20内部结构框图温度传感器DS18B20的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图2.5所示。图2.5高速暂存RAM结构图其中,前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。暂存存储器的第5个字节是配置寄存器,可以通过相应的写命令进行配置,其内容如下:0R1R0111111MSB LSB其中R0和R1是温度值分辨率位,可按表2.2进行配置。表2.2温度值分辨率配置表R1R0分辨率最大转换时间(ms)009位93.75ms(tconv/8)0110位183.50ms(tconv /4)1011位375ms(tconv /2)1112位750ms(tconv)当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可通过单线接口读到该数据,读取时低位在前、高位在后,数据格式以0.0625/LSB形式表示。温度值格式如下:低232221202-12-22-32-4高SSSSS262524MSB LSB这是12位转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。格式中,S表示位。对应的温度计算:当符号位S=0时,表示测得的温度植为正值,直接将二进制位转换为十进制;当S=1时,表示测得的温度植为负值,先将补码变换为原码,再计算十进制值。例如+125的数字输出为07D0H,+25.0625的数字输出为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。DS18B20温度传感器主要用于对温度进行测量,数据可用16位符号扩展的二进制补码读数形式提供,并以0.0625/LSB形式表示。表2.3是部分温度值对应的二进制温度表示数据。表2.3部分温度的二进制表示温度数字输出(二进制)数字输出(16进制)+12500000111 1101000007D0H+8500000101 010100000550H+25.062500000001 100100010191H+10.12500000000 1010001000A2H+0.500000000 000010000008H000000000 000000000000H-0.511111111 11111000FFF8H-10.12511111111 01011110FFE5H-25.062511111110 01101111FF6FH-5511111100 10010000FC90HDS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若T>TH或T<TL,则将该器件内的告警标志置位,并对主机发出的告警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行告警搜索。在64位ROM的最高有效字节中存储有循环冗余校验码(CRC)。主机根据ROM的前56位来计算CRC值,并和存入DS18B20中的CRC值做比较,以判断主机收到的ROM数据是否正确。2.2.2 DS18B20的测温原理DS18B20的测温原理如图2.8所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一个基数值。图2.6 外部封装形式 图2.7 传感器电路图图2.8 DS18B20测温原理图减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图2.6中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。另外,由于DS18B20单线通信功能是分时完成的,它有严格的时间概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。在正常测温情况下,DS18B20的测温分辨力为0.5,可采用下述方法获得高分辨率的温度测量结果:首先用DS18B20提供的读暂存器指令(BEH)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度的整数部分Tz,然后再用BEH指令取计数器1的计数剩余值Cs和每度计数值CD。实际温度Ts可用式(2.1)计算:Ts=(Tz-0.25)+(CD-Cs)/CD (2.1)设计的温度采集电路如图2.9所示。图2.9 温度采集电路图2.3显示电路的设计2.3.1 LED数码管LED数码管,也叫LED数码显示器,由于它具有很高的性能价格比、显示清晰、亮度高、使用方便、电路简单、寿命长等诸多优点,长期以来一直在各类电子产品和工程控制中得到非常广泛的应用。在单片机控制系统中,因为单片机的硬件简单、灵活等特点,非常适合使用LED数码管作为其输出设备,这样既满足了控制系统硬件简单,又能如实地显示被控系统的温度、压力、流量、高度等一些单片机的处理结果。LED数码管的基本组成是半导体发光二极管,它是将若干个发光二极管,按照一定的笔段组合起来构成的一个整体。LED数码管能显示09十个数字及部份英文字母。常见的八段LED数码管结构如图2.10所示。图2.10 数码管的内部结构它由8个发光二极管组成,其中7个长条形的发光二极管排列成”日”字形,另一个发光二极管在整个数码管的右下角,用来显示小数点。根据8个发光二极管的不同连接形式,可以将LED数码管分成共阳极和共阴极两种。将8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管;将8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管。共阴极和共阳极结构的LED数码管各笔段名和安排位置是相同的。当发光二极管导通时,相应的笔段发亮,由发亮的笔段组合成09十个数字及部分英文字母。这里我们以共阴极LED数码管为例,当让其显示数字”3”时,只要a、b、c、d、g段的发光二极管点亮,e、f、dp段的发光二极管不亮,即a、b、c、d、g段发光二极管的阳极加上高电平”1”, e、f、dp段发光二极管的阳极加上低电平”0”,同时使LED数码管的公共阴极接低电平”0”,则LED数码管此时就能显示数字”3”。如果加到各笔段对应发光二极管阳极上的代码不同,则就能控制LED数码管显示不同的字符和数字,这个代码称为段码。通常将这个段码用单片机系统中的一个字节进行存储,正好这个字节中的8个二进制位(D7、D6、D5、D4、D3、D2、D1、D0),依次对应LED数码管的8个笔段dp、g、f、e、d、c、b、a。2.3.2显示电路显示电路采用4个共阴极LED数码管,从P1口并行输出温度段码,用P3.0P3.3四个端口输出选择脉冲,控制数码管的点亮。其具体电路图如图2.11所示。图2.11 显示电路其工作过程如下:(1)并行数据由P1口送至4个数码管。(2)这时P3.0、P3.1、P3.2、P3.3轮流输出低电平,LED数码管依次被点亮,显示P1传送来的数据。由于数码管余辉效应和人眼的视觉延迟,当数码管每秒点亮50次时,就会出现静止显示的温度值。3 系统的软件设计软件设计关键在于DS18B20的使用。DS18B20属于单线式器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议,来对读写数据提出严格的时序要求,而AT89C51单片机并不支持单线传输,因此必须采用软件的方法来模拟单线的协议时序。3.1 DS18B20的单线协议和命令DS18B20有严格的通信协议来保证各为数据传输的正确性和完整性。主机操作单线器件DS18B20必须遵循下面的顺序。3.1.1初始化单线总线上的所有操作都是从初始化开始的。过程如下:1、请求主机通过拉低单线480us以上,产生复位脉冲,然后释放该线,进入Rx接收模式。主机释放总线时,会产生一个上升沿脉冲。2、响应DS18B20检测到该上升沿后,延时1560us,通过拉低总线60240us来产生应答脉冲。3、接收响应主机接收到从机的应答脉冲后,说明有单线器件在线。至此,初始化完成。3.1.2 ROM操作命令当主机检测到应答脉冲,便可发起ROM操作命令。共有5类ROM操作命令,如表3.1所示。表3.1 ROM操作命令指令类型命令字节功能说明Read Rom读ROM33H读取激光ROM中的64位,只能用于总线上单个DS18B20器件情况,多挂时会发生数据冲突;Match Rom匹配ROM55H此命令后跟64位ROM序列号,寻址多挂总线上的对应DS18B20,只有序列号完全匹配的DS18B20才能响应后面的内存操作命令,其他不匹配的将等待复位脉冲,可用于单挂或多挂两种情况;Skip Rom跳过ROMCCH可无须提供64位ROM序列号即可运行内存操作命令,只能用于单挂;Search Rom搜索ROMF0H通过一个排除法过程,识别出总线上所有器件的ROM序列号;AlarmSearch报警搜索ECH命令流程与Search Rom相同,但DS18B20只有最近的一次温度测量时满足了报警触发条件的,才会响应此命令。3.1.3 内存操作命令在成功执行ROM操作命令后,才可使用内存操作命令。共有6种内存操作命令,如表3.2所示。表3.2内存操作命令指令类型命令字节功能说明Write Scratchpad写暂存器4EH写暂存器中地址2地址4的3个字节(TH,TL和配置寄存器)在发起复位脉冲之前,3个字节都必须要写;Read Scratchpad读暂存器BEH读取暂存器内容,从字节0一直到字节8,共9个字节,主机可随时发起复位脉冲,停止此操作,通常我们只需读前5个字节;Copy Scratchpad复制暂存器48H将暂存器中的内容复制进EERAM,以便将温度告警触发字节存入非易失内存,如果此命令后主机产生读时隙,那么只要器件还在进行复制都会输出0,复制完成后输出1;Convert T 温度转换44H开始温度转换操作,若在此命令后主机产生时隙,那么只要器件还在进行温度转换就会输出0,转换完成后输出1;Recall E2 重调E2暂存器B8H将存储在EERAM中的温度告警触发值和配置寄存器值重新拷贝到暂存器中,此操作在DS18B20加电时自动产生;Read Power Supply读供电方式B4H主机发起此命令后每个读数时隙内,DS18B20会发信号通知它的供电方式:0寄生电源,1外部供电。3.1.4 数据处理DS18B20要求有严格的时序来保证数据的完整性。在单线DQ上存在复位脉冲、应答、写”0”、写”1”读”0”和读”1”几种型号类型,其中除了应答脉冲以外,均有主机产生7。1、DS18B20的复位时序图3.1 DS18B20的复位时序数据位的读和写则是通过使用读、写是时序实现的。首先来看写时序,时序图如图3.2所示。当主机将数据线从高电平拉至低电平时产生写时序。有两种类型的写时序:写”1”和写”0”。所有写时序必须在60us以上(即有高拉低后持续60us以上),各个写时序之间必须保证最短1us的恢复时间。DS18B20在DQ线变低后的15us至60us的窗口时间内对DQ线进行采样,如果为高电平就写为”1”,如果为低电平就写为”0”。对于主机产生写”1”时隙的情况,数据线必须先被拉低,然后释放,在写时序开始后的15us内允许DQ线拉至高电平。对于主机产生写”0”时隙的情况,DQ线必须被拉至低电平且至少保持低电平60us的时间。图3.2写时序再来看读时序,时序图如图3.3所示。当主机从DS18B20读数据时,把数据线从高电平拉至低电平,产生读时序数据线DQ必须保持低电平至少1us,来自DS18B20的输出数据在读时序下降沿之后15us内有效,因此在此15us内,主机必须停止将DQ引脚置低。在读时序结束时,DQ引脚将通过外部上拉电阻拉回至高电平。所有的读时序最短必须持续60us,各个读时序之间必须保证最短1us的回复时间8。图3.3 读时序所有的读写时序至少需要60us,且每两个对立的时序之间至少需要1us的回复时间。在写时序中,主机将在拉低总线15us内释放总线,并向DS18B20写”1”;若主机拉低总线后能保持至少60us的低电平,则向单总线器件写”0”。DS18B20仅在主机发出读时序时才向主机传送数据,所以当主机向DS18B20发出读数据命令后,必须马上产生读时序,以便DS18B20能传输数据。3.2温度采集程序设计温度采集程序流程图如图3.4所示。开始初始化应答脉NO发起发起延时1s初始化DS18B20应答脉NO发起读取第1、2字节图3.4温度采集流程图3.3温度显示程序设计温度显示程序流程图如图3.5所示。开始点亮所有数码管选中LED1显符号选中LED2显十位选LED3显个位选LED4显小数位结束3.5 温度显示流程图4 结束语本设计介绍了基于DS18B20的数字温度计的工作原理及实现过程,本人在这几个月的时间内阅读大量有关数字温度计原理及设计的相关资料,设计了系统所需的电路原理图及实现采集与显示功能的软件程序,完成了基于DS18B20的数字温度计的设计。设计中采用最常用的单片机AT89C51作为主控模块,单总线数字温度传感器DS18B20用来测量温度,温度数据采用数码管LED显示。本设计的特点是构成系统的硬件器件少,操作简单,数据处理功能强。通过这次毕业设计使我学习到了很多的东西,不仅加深了对专业知识的理解,而且更好地把理论知识与实践相结合,提高了自身的动手能力和实践水平,增强了学习单片机系统开发与设计的兴趣。由于本人的知识有限,在本设计中不可避免存在一些不足之处,我会在以后的学习生活中不断加以完善。相信本次毕业设计的经历一定会在我今后的学习生活中产生巨大的推动作用。参考文献1于永.51单片机C语言常用模块与综合系统设计实例精讲M.北京:电子工业出版社,20082戴永成等.基于DS18B20的数字温度测量仪J.北华航天工业学院学报,20083廖常初.现场总线概述J.电工技术,19994张越等.基于DS18B20温度传感器的数字温度计J.微电子学,20075李朝青.单片机原理及接口技术(简明修订版).杭州:北京航空航天大学出版社,19986黄河.基于DS18B20的单总线数字温度计J.湘潭师范学院学报,20087李广弟.单片机基础.北京:北京航空航天大学出版社,19948王建强等.基于DSP控制器与DS18B20的温度测量方法J. 仪器仪表与检测技术,2009致 谢在这篇毕业论文完成之际,借此机会我想向在我毕业设计的过程中给我帮助和支持的焦安霞老师以及同学们表示衷心的感谢! 通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。在设计中也发现了自己的不少缺陷也为我在以后的学习中有方向有目的猕补自己的不足。最后,衷心感谢在百忙之中抽出时间审阅本论文的各位领导和老师,祝各位领导和老师工作顺利,身体健康!