《基于89C51和DS18B20的数字温度计设计》由会员分享,可在线阅读,更多相关《基于89C51和DS18B20的数字温度计设计(19页珍藏版)》请在金锄头文库上搜索。
1、题目:基于 89C51 和 DS18B20 的数字温度计设计一 、设计要求数字式温度计要求测温范围为55125C,精度误差在 0.1C 以内,LED数码管直读显示。二 、方案论证根据系统的设计要求,选择 DS18B20 作为本系统的温度传感器,选择单片机 AT89C51 为测控系统的核心来完成数据采集、处理、显示、报警等功能。选用数字温度传感器 DS18B20,省却了采样/保持电路、运放、数 /模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。该系统的总体设计思路如下:温度传感器 DS18B20 把所测得的温度发送到AT89C51 单片机上
2、,经过 51 单片机处理,将把温度在显示电路上显示,本系统显示器用 4 位共阳 LED 数码管以动态扫描法实现。检测范围-55 摄氏度到125 摄氏度。按照系统设计功能的要求,确定系统由 3 个模块组成:主控制器、测温电路和显示电路。数字温度计总体电路结构框图如图 1 所示。图 1 数字温度计总体电路结构框图三 、系统硬件电路的设计温度计电路设计原理图如图 2 所示,控制器使用单片机 AT89C51,温度传感器使用 DS18B20,用 4 位共阳 LED 数码管实现温度显示。 AT89C51主控制器显示电路温度传感器DS18B20扫描驱动2图 2 数字温度计设计电路原理图1、主控制器AT89C
3、51 是一种带 4K 字节闪烁可编程可擦除只读存储器的低电压,高性能 CMOS8 位微处理器。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2、显示电路显示电路采用 4 位共阳 LED 数码管,从 P0 口输出段码,列扫描用P3.0P3.3 口来实现,列驱动用 8550 三极管。3、温度传感器工作原理DS18B20 温度传感器是美国 DALLAS 半导体公司最新推出的一种改
4、进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现 912 位的数字值读数方式。DS18B20 的性能特点如下:独特的单线接口方式仅需要一个端口引脚进行通信;多个 DS18B20 可以并联在唯一的三线上,实现多点组网功能;无需外部器件;可通过数据线供电,电压范围:3.05.5V;测温范围55125,在-10+85时精度为0.5零待机功耗温度以 9 或 12 位数字量读出;用户可定义的非易失性温度报警设置3报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作DS1
5、8B20 采用 3 脚 PR35 封装或脚 SOIC 封装,其内部结构框图如图3 所示图 3 DS18B20 内部结构框图64 b 闪速 ROM 的结构如下:开始 8 位是产品类型的编号,接着是每个器件的惟一的序号,共有 48 位,最后 8 位是前面 56 位的 CRC 检验码,这也是多个 DS18B20 可以采用一线进行通信的原因。温度报警触发器 TH 和 TL,可通过软件写入户报警上下限。主机操作 ROM 的命令有五种,如表 1 所列4指 令 说 明读ROM (33H) 读DS1820的序列号匹配ROM (55H) 继读完64位序列号的一个命令,用于多个DS1820 时定位跳过ROM (C
6、CH) 此命令执行后的存储器操作将针对在线的所有DS1820搜ROM (F0H) 识别总线上各器件的编码,为操作各器件作好准备报警搜索(ECH ) 仅温度越限的器件对此命令做出响应表 1 主机操作 ROM 的命令 DS18B20 温度传感器的内部存储器还包括一个高速暂存 RAM 和一个非易失性的可电擦除的 EERAM。高速暂存 RAM 的结构为 8 字节的存储器,结构如图 4 所示。 图 4 高速暂存 RAM 结构图前 2 个字节包含测得的温度信息,第 3 和第 4 字节 TH 和 TL 的拷贝,是易失的,每次上电复位时被刷新。第 5 个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨
7、率。DS18B20 工作时寄存器中的分辨率转换为相应精度的温度数值。温度低位LSB温度高位 MSBTH TL 配置 保留 保留 保留 8 位 CRC5当 DS18B20 接收到温度转换命令后,开始启动转换。转换完成后的温度值就以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2 字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以 0.062 5 /LSB 形式表示。温度值格式如下:这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到
8、的数值乘于 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.06
9、25LSB 形式表示。表 2 是部分温度值对应的二进制温度表示数据。表 2 部分温度值DS18B20 完成温度转换后,就把测得的温度值与 RAM 中的 TH、TL字节内容作比较,若 TTH 或 TBCDDIV AB ;B=A%100MOV R7,A ;R7=百位数MOV A,#0AHXCH A,BDIV AB ;B=A%BSWAP AORL A,BRET;=;Calculate CRC-8Values. Uses The CCITT-8Polynomial,Expressed As;X8+X5+X4+1;=CRC8CAL: PUSH ACCMOV R7,#08H ;Number Bits In
10、 ByteCRC8LOOP1: XRL A,B ;Calculte CRC17RRC A ;Move To CarryMOV A,B ;Get The Last CRC ValueJNC CRC8LOOP2 ;Skip If Data=0XRL A,#18H ;Updata The New CRCCRC8LOOP2: RRC A ;Position The New CRCMOV B,A ;Store The New CRCPOP ACC ;Get The Remaining BitsRR A ;Position The Next BitPUSH ACC ;Save The Remaining
11、BitsDJNZ R7,CRC8LOOP1 ;Repeat For 8 BitsPOP ACCRETEND六 、程序清单HEX 输出文件:03000000020100FA:03000B0002012BC4:1001000075816078207960760008D9FB7589217542:100110008CE0758AB18005000201000000D2A9D2EE:100120008CD2AF75D000C202020141C0D075D01090:10013000758CB1758AE00FBF32047F00D201D0D038:10014000321202AA3001FAC20
12、130020C1201D51299:1001500002081202761202AA1201BFD20202014163:10016000D2B70000C2B77EA0DEFE7EA0DEFED2B710:100170007E32DEFE7E3CA2B74009DEFA7E64DEFE01:1001800080DE22D2B7227F08D2B70000C2B70000BB:1001900000D2B77E07DEFEA2B77E3CDEFE13D2B7EA:1001A000DFEA7E3CDEFE227F08D2B70000C2B77EC7:1001B00007DEFE1392B77E34
13、DEFED2B7DFEF2212E7:1001C000016074CC1201A77E34DEFE74441201A7D4:1001D0007E34DEFE2212016074CC1201A77E34DE72:1001E000FE74BE1201A77E34DEFE7D09783675F0FE:1001F00000120186F6081202F7DDF6E5F07008E558:1002000036F526E537F52722E52754806014C3E547:1002100026F42401F526E527F43400F52775280B8C:0C022000800375280AE528C
14、4F528E526AF:10022C00540F90026693F529E52654F0C4F526E5A3:10023C0027540FC445261202E9F52654F0C445286C:10024C00F528E526540FC44529F529EF600B540F0A:10025C00C4FFE528540F4FF52822000101020303C7:10026C0004040506060708080909E529540FF5706A:10027C00E529C4540FF571E528540FF572E528C42F:10028C00540FF573E52854F0B41002
15、8010E528548F18:10029C000F700AE528C4540F75730AF57222797031:1002AC007DFE7580FFEDF5B0E79002D493F580EDFF:1002BC0020E102C2871202E009ED30E30423FD4184:1002CC00AE7580FF75B0FF22C0F9A4B0999282F888:1002DC008090FFBF7E147F19DFFEDEFA2275F0647A:1002EC0084FF740AC5F084C445F022C0E07F086521:1002FC00F013E5F05002641813F5F0D0E003C0E001:05030C00DFEDD0E0224E:00000001FF六 调试及仿真经软件调试-仿真器 MedWin 调试通过,并烧录芯片,得到所要求的设计结果。试验成功。七 总结和体会这次为期三周的电子工程训练已经结束,但是带给我的影响是很大的。从查资料找合适的方案和电路开始,找元件焊接,调试程序,仿真,烧录元件都是由我们自己完成。途中遇到了很多问题。电子元件不全所以要改方案,焊接中检查是否焊错,修改程序使之符合自己的电路并调试成功,烧录芯片并调试成功。每一步都有可能