基于单片机下的数字温度计(DS18B20)10.doc
《基于单片机下的数字温度计(DS18B20)10.doc》由会员分享,可在线阅读,更多相关《基于单片机下的数字温度计(DS18B20)10.doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于单片机的数字温度计设计1、概论:温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要意义。在单片机的应用中,一个很重要的应用就是对温度进行检测。测量温度的关键是温度传感器,采用智能温度传感器以实现温度数字化,既能以数字形式直接输出被测温度值,具有测量误差小,分辨力高,抗干扰能力强,能够远程传输数据,带串行总线接口等优点。温度的数字输出显示在7段LDE数码管显示器上。单片机、温度传感器与7段LED数码管显示器等电子元器件的互联,可以研制和开发出具有高性价比的新一代测温系统基于单片机的数
2、字温度计。基于单片机的数字温度计设计,即对温度进行实时测量,使用单线数字温度传感器DS18B20把温度信号直接转换成数字信号输入单片机。经单片机处理后,将实时温度显示在两个7段LED数码管显示器上。完成本设计需要软件编程和硬件电路设计,需要用到两种软件。1.1、软件编程Keil51的简介软件编程用Keil Software公司提供的产品软件uVision2 IDE,它集项目管理、编译工具、代码编写工具、代码调试以及安全仿真于一体,适合个人开发或人数少、多开发过程的管理还不成熟的开发团体,这一软件简单易用。1.2、硬件电路设计Proteus的简介硬件电路设计使用英国Lab Center Elec
3、tronics公司推出的Proteus用于仿真单片机及其外围设备的EDA工具软件。Proteus具有高级原理布图(isis)、混合模式仿真(Prospice)、PCB设计以及自动布线(ARES)等功能。Proteus的虚拟仿真技术(USM)第一次真正实现了在物理原型出来之前对单片机应用系统进行设计开发和测试。Keil51与Proteus配合使用可以在不需要硬件投入的情况下,完成单片机汇编语言、C语言等应用系统的仿真开发,从而缩短实际系统的研发周期,降低开发成本。1.3、设计中用到的所有电子元器件单片机(AT89S51)、温度传感器(DS18B20)、7段LED数码管、晶振、电阻排、电容、电阻、
4、PNP型三极管、74HC245芯片等2、系统器件选择2.1、 单片机的选择对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89S51 是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4kbytes 的可编程的 Flash 只读程序存储器,兼容标准 8051 指令系统及引脚。它集 Flash 程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位 AT89S51单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89S51 具有
5、低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用二节电池供电。主要特性如下图-1所示:与MCS-51 兼容4K字节可编程闪烁存储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 AT89S51单片机引脚如图-1所示可编程串行通道 低功耗的闲置和掉电模式片内振荡器和时钟电路 2.2 89S51 引脚功能介绍: AT89S51 单片机为40 引脚双列直插式封装,其引脚排列和逻辑符号如图-1 所示:各引脚功能简单介绍如下
6、:VCC:供电电压 GND:接地 P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口
7、:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被
8、内部上拉为高电平,并用作输入。作为输入时,由于外部下拉为低电平,P3口将输出电流(ILL),也是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 INT0(外部中断0)P3.3 INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 WR (外部数据存储器写选通)P3.7 RD (外部数据存储器读选通)同时P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高平时间。ALE / PROG :当访问外部存储器时
9、,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问内部部数据存储器时,这两次有效的PS
10、EN信号将不出现。EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。2.3、温度传感器的选择 DS18B20 简单介绍美国Dallas公司生产的单线数字温度传感器DS18B20,可以把温度模拟信号直接转换成串行数字信号供微机处理,是模/数转换器件,而且读DS18B20信息或写信息仅需单线接口,使用非常方便,新型的单线数字温度传感器体积小,精度高,使用更灵活。
11、DS18B20有三个引脚,GND接地;DQ为数字信号输入输出端;Udd为外接电源输入端。64位ROM和单线接口存储器和控制器高速缓存存储器8位CRC生成器电源检测高温触发器TH温度灵敏元件低温触发器TL配制寄存器DS18B20的内部结构如图-2所示:DS18B20内结构主要由4部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH、TL和配置寄存器。64位光刻ROM:光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码,即ID。它的作用是使每一个DS18B20的地址都各不相,可以实现在相同的总线上挂接多个DS18B20的目的。64位光刻ROM的排列
12、是开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。/LSB的形式表达,其中S为符号位,二进制的数存储在DS18B20的2个8位的RAM中,这是9位转化后得到的16位数据,其中前面5位是符号位,如果测得温度大于0,这5位为0,只要将测到的数值乘以0.5即可得到实际温度;如果温度小于0,这5位为1,测得到的数值需要取反加1再乘以0.5即可得到实际温度。非发挥的温度报警触发器TH、TL:DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的电可擦除的EEPRAM,后者存放高温度和低温
13、度触发器TH、TL和结构寄存器。当温度达到低温或高温的时候,温度报警触发器会发出警报。高速暂存RAM:高速暂存存储器包含了9个连续字节,如表-1,当温度转换命令发出后,经转换所得的温度值存放在高速暂存存储器的第0和第1个字节内,第0个字节存放的是温度的低8位信息,第1个字节存放的是温度的高8位信息,单片机可通过单线接口读到该数据,读取时低位在前,高位在后;第2、3字节是TH、TL的易失性拷贝,第4个字节是结构寄存器的易失行拷贝,这三个字节的内容每一次上电复位时被刷新;第5、6、7字节用于内部计算;第8个字节是冗余检验字节。Ds18B20的设置位有一个字节,该字节的各位定义为TMR1R01111
14、1,每一次进行针对DS18B20的读写前,都需要对DS18B20进行设置,从上面的定义可以看出,该字节的低5位一直都是1,TM位是测试模式位,用于设置DS18B20在工作模式及测试模式。在DS18B20出厂时该位被置为0,用户不要进行改动,R1、R0用来设置分辨率。高速暂存存储器的内容及字节地址 表-1寄存器内容字节地址温度值低位(LS)0温度值高位(MS)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8DS18B20的通信协议:在对DS18B20进行读写编程时,必须严格保证读写时序,否则将无法读取所测温度结果。根据DS18B20的通信协议,主机控制DS18B
15、20完成温度转换必须经过3个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送第一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。DS18B20的ROM指令如下表-2所示,DS18B20的RAM指令如下表-3所示复位要求主CPU将数据线下拉50us,然后释放,DS18B20收到信号后等待16240us的存在低脉冲,主CPU收到此信号表示复位成功。DS18B20的ROM指令 表-2指令约定代码功能温度变化44H启动DS18B20进行温度转换,12位转换时最长为750ms(9位为93.75ms),结果存入内部9字节RAM中读暂存器0BEH读内部RAM中9字节
16、的内容写暂存器4EH发出向内部RAM的3、4字节上、下限温度数据命令,紧跟该命令之后是传送两字节的数据复制暂存器48H将RAM中第3、4字节内容复制到EEPROM中重调EEPROM0B8H将EEPROM中内容恢复到RAM中第3、4字节读供电方式0B4H读DS18B20的供电模式,寄生供电时DS18B20发送0,外接电源供电DS18B20发送1DS18B20的RAM指令 表-3指令约定代码功能读ROM33H读取DS18B20温度传感器ROM中的编码(即64位地址)符合ROM55H发出命令后,接着发出64位Rom编码,访问单总线上与该编码对应的DS18B20,使之作出响应,为下一次该DS18B20
17、读写准备搜索ROM0F0H用于确定挂接在同一个总线上DS18B20的个数和识别64位的Rom地址,为操作各器件做好准备跳过ROM0CCR跳过ROM工作报警搜索命令CECH执行后只有温度超过设定值上限或下限的芯片才能作出响应 DS18B20使用中的注意事项DS18B20 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:DS18B20 从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。在实际使用中发现,应使电源电压保持在5V 左右,若电源电压过低,会使所测得的温度精度降低。较小
18、的硬件开销需要相对复杂的软件进行补偿,由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。在DS18B20的有关资料中均未提及单总线上所挂DS18B20 数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,当单总线上所挂DS18B20 超过8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。在DS18B20测温程序设计中,向DS18B20 发出温度转换命令后,程序总要
19、等待DS18B20的返回信号,一旦某个DS18B20 接触不好或断线,当程序读该DS18B20 时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。 DS18B20测温原理DS18B20的测温原理如图-3所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,
20、首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55 所对应的一个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器 1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度值。图中的斜率累加器用于补偿和修正测温过程中的非线性其输出,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理
21、。 DS18B20测温原理图 图-3 LED数码管显示器:LED数码管显示器按用途可分为通用7段LED数码管显示器和专用LED数码管显示器,试验中用通用7段LED数码管显示器。数码管由8个LED(发光二极管)a、b、c、d、e、f、g构成,按结构可分为共阴极和共阳极两种。本设计中使用共阳极数码管,共阳极数码管的8个LED的阳极连接在一起,通常,公共阳极接高电平(一般接电源),其它引脚接LED驱动电路输出端。当某个LED驱动电路的输出端为低电平时,则该端所连接的LED导通并点亮。根据发光字段的不同组合可以显示出各种数字或字符。要使LED数码管显示出相应的数字或字符,必须向其数据口输入相应的字型码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 温度计 DS18B20 10
限制150内