ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:474.43KB ,
资源ID:6328982      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6328982.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于数字温度传感器DS18B20的测温设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于数字温度传感器DS18B20的测温设计.docx

1、基于数字温度传感器DS18B20的测温设计基于数字温度传感器DS18B20的测温设计一功能要求1 三位数码管显示温度值,保留小数点后一位。2 温度超过50摄氏度,红灯亮,低于50摄氏度,绿灯亮。二方案论证在日常生活及农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。而热电偶和热电阻测出的一般都是电压,在转化成对应的温度,需要比较多的外部硬件电路支持,硬件电路复杂,软件调试复杂,制作成本高。本数字温度计设计采用美国DALLAS半导体公司继DS1820后推出的一种改进型智能温度传感器DS18B20作为检测元件,测温范围为-55C125C,最大分辨率可达0.0625C。DS18B

2、20可以直接读出被测温度值,而且采用3线制与单片机相连,减少了外部电路,具有低成本和易使用的特点。按照系统设计功能的要求,确定系统由3个模块组成:主控制器(P89C51)、测温电路(DS18B20)、显示电路(四数码管及其驱动电路)和温度值高低报警电路(两红绿二极管)。三系统硬件电路的设计3.1 PHILIPS P89C51RD2HBP 3.1.1 P89C51概述: P89C51采用高性能的静态80C51采用了静态设计可提供很宽的操作频率范围频率可降至0,可实现两个由软件选择的节电模式空闲模式和掉电模式空闲模式冻结CPU,但RAM 定时器串口和中断系统仍然工作掉电模式保存RAM 的内容但是冻

3、结振荡器导致所有其它的片内功能停止工作由于设计是静态的,时钟可停止而不会丢失用户数据运行可从时钟停止处恢复,分别包含128 字节和256 字节RAM 32 条I/O 口线3 个16 位定时/计数器6 输入4 优先级嵌套中断结构1 个串行I/O 口可用于多机通信I/O 扩展或全双工UART以及片内振荡器和时钟电路,设计由先进CMOS 工艺制造并带有非易失性Flash 程序存储器全部支持12 时钟和6 时钟操作. 3.1.2 P89C51特性:采用80C51 核心处理单元,含4k 字节FLASH,128字节RAM,布尔处理器,全静态操作,12 时钟操作可选6 个时钟通过软件或并行编程器,存储器寻址

4、范围64K 字节ROM 和64K 字节RAM,电源控制模式:时钟可停止和恢复,空闲模式,掉电模式两个工作频率范围:6时钟模式时为020MHz,12时钟模式时为033MHz其他:扩展温度范围,双数据指针,3 个加密位,4 个中断优先级,6 个中断源,4 个8 位I/O 口,全双工增强型UART,帧数据错误检测,自动地址识别,3 个16 位定时/计数器T0 T1 标准80C51 和增加的T2 捕获和比较,可编程时钟输出,异步端口复位,低EMI (禁止ALE 以及6 时钟模式),掉电模式可通过外部中断唤醒3.1.3 P89C51管脚图(见图3-1)图3-13.2 数字温度传感器DS18B203.2.

5、1 DS18B20的主要特性:1、适应电压范围更宽,电压范围:3.05.5V,在寄生电源方式下可由数据线供电;2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;5、温范围55125,在-10+85时精度为0.5;6、可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温;7、在9位分

6、辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;8、测量结果直接输出数字温度信号,以一线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 3.2.2 DS18B20工作原理:DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s减为750ms。 DS18B20测温原理如图3-2所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数

7、晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3-2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。图3-23.2.3 DS18B20的外形和内部结构:1、外形及引脚(见图3-3)图3-3(1)GND为电源地;(2

8、)DQ为数字信号输入/输出端; (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。2、DS18B20内部结构: 图3-4由图3-4可知,内部结构主要由四部分组成:64位激光ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。 3.2.4 DS18B20主要的数据部件:1、64bit激光ROM激光ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位激光ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1),如图3-5。光刻RO

9、M的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 图3-52、DS18B20中的温度传感器DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。具体见图3-6: 图3-6:DS18B20温度值格式表这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.06

10、25即可得到实际温度。 例:+125的数字输出为07D0H,+25.0625为0191H,-25.0625的数字输出为FF6FH,-55的数字输出为FC90H。常见温度数据见图3-7。 图3-7 DS18B20温度数据表3、DS18B20温度传感器的高速RAM存储器高速暂存存储器由9个字节组成,其分配如图3-8所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。第九个字节是冗余检验

11、字节。寄存器内容字节地址温度值低位 (LS Byte)0温度值高位 (MS Byte)1高温限值(TH)2低温限值(TL)3配置寄存器4保留5保留6保留7CRC校验值8 图3-8 DS18B20暂存寄存器分布4、DS18B20配置寄存器 该字节各位的意义如图3-9:TMR1R011111图3-9: 配置寄存器结构 低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如图3-10:(DS18B20出厂时分辨率被设置为12位)R1R0分辨率温度最大转换时间009位93.75ms0110位

12、187.5ms1011位375ms1112位750ms 图3-10 根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。表6: ROM指令表指 令约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合 ROM55H发出此命令之

13、后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。搜索 ROM0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。跳过 ROM0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。告警搜索命令0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。表6: RAM指令表指 令约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。

14、读暂存器0BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器48H将RAM中第3 、4字节的内容复制到EEPROM中。重调 EEPROM0B8H将EEPROM中内容恢复到RAM中的第3 、4字节。读供电方式0B4H读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。3.2.5 DS18B20初始化及读写时序:1初始化序列:复位和应答脉冲单总线上的所有通信都是以初始化序列开始,包括主机发出复位脉冲及从机的应答脉冲。如图3-11所示当从机发出响应主机的

15、应答脉冲时,即向主机表明它处于总线上且工作准备就绪,在主机初始化过程主机通过拉低单总线至少480 s 以产生Tx 复位脉冲,接着主机释放总线并进入接收模式Rx ,当总线被释放后,5k 上拉电阻将单总线拉高在单总线器件检测到上升沿后延时15-60 s ,接着通过拉低总线60-240 s 以产生应答脉冲脉冲。图 3-112.读/写时隙在写时隙期间主机向单总线器件写入数据而在读时隙期间主机读入来自从机的数据,在每一个时隙总线只能传输一位数据。2.1写时隙存在两种写时隙写1 和写0 ,主机采用写1 时隙向从机写入1 ,而采用写0 时隙向从机写入0 ,所有写时隙至少需要60 s ,且在两次独立的写时隙之

16、间至少需要1 s 的恢复时间,两种写时隙均起始于主机拉低总线,如图3-12所示,产生写1 时隙的方式:主机在拉低总线后接着必须在15 s 之内释放总线,由5k 上拉电阻将总线拉至高电平而产生。写0 时隙的方式:在主机拉低总线后只需在整个时隙期间保持低电平即可,至少60 s,在写时隙起始后15-60 s 期间单总线器件采样总线电平状态。如果在此期间采样为高电平则逻辑1 被写入该器件;如果为0 则写入逻辑0。2.2读时隙单总线器件仅在主机发出读时隙时才向主机传输数据,所以在主机发出读数据命令后必须马上产生读时隙以便从机能够传输数据。所有读时隙至少需要60 s ,且在两次独立的读时隙之间至少需要1

17、s 的恢复时间,每个读时隙都由主机发起至少拉低总线1s,如图3-13所示,在主机发起读时隙之后,单总线器件才开始在总线上发送0 或1 ,若从机发送1 则保持总线为高电平;若发送0, 则拉低总线。当发送0 时,从机在该时隙结束后释放总线,由上拉电阻将总线拉回至空闲高电平状态,从机发出的数据在起始时隙之后保持有效时间15 s。 因而主机在读时隙期间必须释放总线,并且在时隙起始后的15 s 之内采样总线状态。图 3-13 图 3-143.3设计电路图及功能说明见下页图3-14功能说明: (1)DS18B20 接在P3.7口上,采集温度数据,输入单片机 (2)数码管动态显示部分:8位数据线接在P1口;

18、 4位控制线接在P2.0P2.3,并使用与非门驱动。 (3)发光二极管:单片机判断温度高于50C时红灯亮,否则绿灯亮图3-14四系统程序的设计4.1 主程序 通过主程序调用各个子程序,实现温度实时显示,读出并处理温度值,利用中断计时,每隔1s测量一次温度。程序框图如图4-14.2 读出温度子程序读出温度子程序就是读出RAM中LSM和MSB两个字节,框图入图4-2所示。4.3 温度转换命令子程序温度转换子程序就是向传感器发温度转换命令,由于本程序中使用的分辨率位12位,转换时间为750ms,因此程序采用中断计时,每过1s才去转化一次温度。具体过程见图4-34.4计算温度子程序计算温度子程序将RA

19、M中读取的温度值进行BCD码转换,并标记正负号,如图4.4所示4.5 显示数据刷新子程序显示子程序是从RAM对应单元中读出处理好的小数位,十位,个位,符号位,查对应的表可得对应数码管所要显示的字型码。发DS18B20复位命令发跳过ROM命令发读取温度命令读取操作9字节完?移入温度暂存器结束NY图4-2 读取温度子程序流程图4.6 程序源代码FLAG BIT 24HSIGN BIT FLAG.1ABOVE100 BIT FLAG.2REDLIGHT EQU P3.0GREENLIGHT EQU P3.1BITST DATA 20HTIMEH EQU 0D8H ;T0中断计时,方式一,1s初值TI

20、MEL EQU 0F0HTEMPHEAD EQU 36HTIME1SOK BIT BITST.1INTFIRST BIT BITST.2PORT EQU P3.7TEMPL DATA 26HTEMPH DATA 27HTEMPHC DATA 28HTEMPLC DATA 29HORG 0000H LJMP STARTORG 000BH LJMP INT_STARTORG 100H;-主函数开始处-START: MOV SP,#60H ;堆栈指针初始化CLRRAM: ;清空RAM数据子程序:数据较多需使用RAM中单元作为标志位 MOV R0,#20HCLRRAM_LOOP: MOV R0,#00

21、H INC R0 CJNE R0,#80H,CLRRAM_LOOPINT_CONFIG: ;中断配置:开启内部定时中断T0,每过1s刷新一次数据 MOV TMOD,#21H MOV TH0,#TIMEH MOV TL0,#TIMEL SETB ET0 SETB TR0 SETB EA MOV PSW,#00H CLR INTFIRST SJMP MAININT_START: PUSH PSW MOV PSW,#10H MOV TH0,#TIMEH MOV TL0,#TIMEL INC R7 CJNE R7,#64H,INT MOV R7,#00H SETB TIME1SOKINT: POP P

22、SW RETIMAIN: LCALL DISP JNB TIME1SOK,MAIN ; TIME1SOK =0,表示中断开启,计时进 CLR TIME1SOK ; 行中,将循环刷新LED JNB INTFIRST,MAIN2 LCALL READ_TEMP LCALL CONVTEMP ;单片机内部进行温度转换 LCALL DISPBCD LCALL DISPMAIN2: LCALL CONVER_TEMP SETB INTFIRST LJMP MAIN;*;DS18B20底层功能子函数定义:; INIT_DS: 初始化DB0832; READ_BYTE: 读取DS18B20一字节数据; WR

23、ITE_BYTE: 写入DS18B20一字节数据,即写入ROM命令 ;*;-; 初始化DB0832;-INIT_DS: SETB PORT ; 1 NOP NOP CLR PORT ; 1-0 MOV R6,#0A0H ; 主机拉低单总线480us DJNZ R6,$ ; MOV R6,#0A0H DJNZ R6,$ SETB PORT MOV R6,#32H ; 上拉电阻拉高70us DJNZ R6,$ MOV R6,#3CHLOOP_INIT_DS: MOV C,PORT JC INIT_OUT DJNZ R6,LOOP_INIT_DS MOV R6,#64H DJNZ R6,$ SJMP

24、 INIT_DS RETINIT_OUT: SETB PORT RET;-; 读取DS18B20一字节数据;-READ_BYTE: MOV R6,#8RD11: CLR PORT MOV R4,#4 NOP SETB PORTRD12: DJNZ R4,RD12 MOV C,PORT RRC A MOV R3,#30RD13: DJNZ R3,RD13 DJNZ R6,RD11 SETB PORT RET;-; 写入DS18B20一字节数据;- WRITE_BYTE: MOV R3,#8 ;写入一个字节WR11: SETB PORT MOV R4,#8 RRC A CLR PORTWR12:

25、DJNZ R4,WR12 MOV PORT,C MOV R4,#20 ;延时3*20us=60us,保证有足够时间写入WR13: DJNZ R4,WR13 DJNZ R3,WR11 SETB PORT RET;*; 高层函数; (1) CONVER_TEMP函数:DS18B20温度转换函数 ;(2) READ_TEMP函数:DS18B20温度读取函数;(3)CONVTEMP函数: 单片机内部进行温度处理函数;(4)DISPBCD函数:二进制的温度转换为BCD码函数;(5)DISP函数:查表显示温度函数;*;-; 温度 转换;-CONVER_TEMP: LCALL INIT_DS MOV A,#

26、0CCH LCALL WRITE_BYTE MOV R6,#34H DJNZ R6,$ MOV A,#44H LCALL WRITE_BYTE MOV R6,#34H DJNZ R6,$ RET;-; 读取DS18B20中温度数据;-READ_TEMP: LCALL INIT_DS MOV A,#0CCH LCALL WRITE_BYTE MOV R6,#34H DJNZ R6,$ MOV A,#0BEH LCALL WRITE_BYTE MOV R6,#34H DJNZ R6,$ MOV R5,#09H MOV R0,#TEMPHEAD MOV B,#00HREADTEMP2: LCALL

27、READ_BYTE MOV R0,A INC R0READTEMP21: ;LCALL CRC8CAL DJNZ R5,READTEMP2 ;MOV A,B ;JNZ READTEMPOUT MOV A,TEMPHEAD+0 MOV TEMPL,A MOV A,TEMPHEAD+1 MOV TEMPH,AREADTEMPOUT: RET;-; 单片机内部进行初步数据处理; 输入:读入的温度 输出:二进制温度;-CONVTEMP: MOV A,TEMPH ANL A,#80H JZ TEMPC1 SETB SIGN CLR C MOV A,TEMPL CPL A ADD A,#01 MOV TEMPL,A MOV A,TEMPH CPL A ADDC

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1