基于89C52单片机的温度测量系统设计_第1页
基于89C52单片机的温度测量系统设计_第2页
基于89C52单片机的温度测量系统设计_第3页
基于89C52单片机的温度测量系统设计_第4页
基于89C52单片机的温度测量系统设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目 录摘要 .1关键词 .1ABSTRACT .1KEY WORDS .11温度测量系统器件简介 .211 MCS-52 单片机简介.212温度传感器(DS18B20).213 三端集成稳压芯片 H7805.314 74HC138 芯片.315 数码管 7SEG-MPX8-CC-BLUE.316 其他 .4系统的硬件设计 .421 温度测量系统硬件电路连接图 .422 各电路模块分析 .5221 电源电路.5222 单片机电路.5223 温度传感器 DS18B20 电路.6224 数码管显示电路.7225 译码电路部分.7系统的软件设计 .731 温度测量系统软件流程图 .732温度测量系统各

2、子模块.8321 定时器设置部分.8322 中断部分.8323 读取 DS18B20 温度部分.8324 温度译码输出.10结论与设计体会 .1041 结论 .1042展望.11致谢.12参考文献:.12附录 A 温度测量系统单片机 C 程序.120基于 89C52 单片机的温度测量系统设计湖北师范学院 机电与控制工程学院 李春波 指导教师 摘要:对温度测量进行讨论,并对温度传感器 DS18B20 的结构和使用方法进行说明,温度测量系统的设计分为硬件电路设计和软件设计两部分,其中硬件部分使用 Proteus 进行搭建,在构成单片机最小系统的基础上进行功能扩展,并在其上进行电路的连接和仿真,实现

3、系统的温度测量功能,软件部分则是用 Proteus 和 Keil 联调的方式最终完成软硬件的设计过程,在仿真的过程中,可以控制温度传感器DS18B20 的温度值,模拟真实条件下,温度的测取工作。系统所显示的结果最终使用数码管进行显示,从而完成整个系统的设计过程。关键词:温度 传感器 数码管 The Design Of Temperature Measuring System Based On MCU 89C52Student majoring in Electrical & Information Engineering Tutor Li XiujuanAbstract:Discuss

4、 about the measuring system of the temperature,and explain the structure of the temperature sensor DS18B20 together with its using.The temperature measuring system is divided into two parts,one hardware,the other software.Hardware design is built with Proteus,in the form of the basis MCU system plus

5、 extra extensions.The circuit and the temperature simulation are realized on Proteus to accomplish the temperature measurement of the system.Software design can finalize the system with the method of debugging on Proteus and Keil.In the procedure of the virtual system you can control the temperature

6、 of DS18B20 to read the result of the true condition.In the end the result of the temperature appears on the numerical code tubes,and you can see the final result on it.Key words: Temperature ; Sensor ; Numerical code tubes引言随着社会经济的发展,尤其是工业控制方面,有许多场合要求无人值守并且环境条件恶劣,为此对于环境的监控就要求其能够自动完成并且有一定的抗干扰能力,传统的模

7、拟信号远距离温度测量系统中,需要很好的解决引线误差补偿、多点测量切换误差和放大电路零点漂移误差等技术问题,才能达到较高的测量精度,而以单片机为核心的数字测量系统则能克服这些问题,以简单电路的连接方式,实现温度的高精度测量,并且最终的测量结果可以使用 PC 机进行处理,下面将进入温度测量系统的设计。11温度测量系统器件简介11 MCS-52 单片机按照功能划分,它由微处理器(CPU) 、数据存储器(RAM) 、程序存储器(ROM/EPROM) 、并行 I/O 口(P0 口、P1 口、P2 口、P3 口) 、串行口、定时器/计数器、中断系统及特殊功能寄存器(SFR)组成。它们都是通过片内单一总线连

8、接而成,其基本结构依旧是 CPU 加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器(SFR-Special Function Register)的集中控制方式。XTAL1XTAL288微处理器(运算器)(控制器)B数据存储器 RAMP0P2P1定时器/计数器P3程序存储器串行口中断系统特殊功能寄存器(SFR)ROM/EPROM88ALEPSENEARST图 1.1 单片机的片内结构12温度传感器(DS18B20)美国 DALLAS 半导体公司数字温度传感器的 DS1820 是世界上第一片支持“一线总线”的温度传感器, “一线总线”的数字方式传输,大大提高了系统的抗干扰能力

9、,适合于恶劣条件下温度的测量,其内部使用了 on-board 专利技术。新一代的 DS18B20 体积更小、更经济、更灵活,充分发挥了“一线总线”的优点。其测温范围为-55+125,在-10+85范围内,精度为0.5,最差为2,支持 3V5.5V 的电压范围,分辨率(912 位)可由用户设置。引脚如图 1.2 所示。GND:接地DQ:总线数据传输端Vcc:电源输入图 1.2 DS18B20 引脚图2图 1. H7805 引脚图低温度系数晶振高温度系数晶振=0比较计数器 1预置计数器 2温度寄存器斜率累加器预置=0LSB 置位/清除加 1停止图 1.3 DS18B20 的基本测温原理低温度系数晶

10、振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送计数器 1,高温度系数晶振随温度变换其振荡频率明显改变,产生的信号作为计数器 2 的脉冲输入,计数器 1 和温度寄存器被预置在-55所对应的一个基数值,计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1 的预置值减到 0 时,温度寄存器的值加 1 计数器 1 的预置被重新装入,计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器 2 计数到 0 时,停止温度寄存器累加,此时温度寄存器中的数值即为所测温度值。只要将温度寄存器的值写入 EEPROM,读取 EEPROM 的数值即完成温度测量。13

11、三端集成稳压芯片 H7805H7805 为三端正稳压芯片,能提供固定 5V 电压输出,内含过流、过热和过载保护电路。带散热片时,输出电流可达 1A,虽然是固定稳压芯片,但使用外接元件,可以获得不同的电压和电流。外观图和引脚如图 1.4 所示1 脚:电压输入端2 脚:接地端3 脚:稳定电压输出端14 74HC138 芯片74HC138 为一款高速 CMOS 器件,引脚兼容低功耗肖特基 TTL(LSTTL)系列,由其真值表可以看出其逻辑为反相输出,可以将 BCD 码转换成单引脚的低电平输出。74HC138 引脚如图 1.5,A、B、C:BCD 码输入端E1:使能端,高电平有效E2、E3:使能端,低

12、电平有效Y0Y7:输出端15 数码管 7SEG-MPX8-CC-BLUE从电路上,数码管又分为共阴和共阳两种,8 个发光二极管的阳极都连接在一起的,称之为共阳极 LED 数码管,8 个发光二极管的阴极都连接在一起的,称之为共阴极 LED图 1. 74HC138 引脚图3数码管。图 1.5 数码管 7SEG-MPX8-CC-BLUEA、B、C、D、E、F、G、DP 分别接数码管的八段,1、2、3、4、5、6、7、8 分别控制八个数码管的点亮。16 其他 电路中的电容,分陶片电容和电解电容,其中陶片电容不分极性,电解电容有正负极之分。电阻、二极管根据具体要求选择相应的型号和大小。变压线圈可以选定相

13、应的匝数比。晶振根据工程上的应用,较多选用 12M 和 11.0592M,不妨选 12M。系统的硬件设计21 温度测量系统硬件电路连接图图 2.1 为电源电路的设计和各个器件的连接图,图 2.2 为系统电路设计连接图,由电源电路和系统电路搭建起温度测量系统的硬件部分。图 2.1 电源电路的硬件设计4图 2.2 温度测量系统硬件连接图22 各电路模块分析221 电源电路单片机、温度传感器、数码管都支持 5V 电源工作,因此电源只需要单一 5V 供电即可,然后用芯片 7805 将直流电压降到稳定到 5V,特别的芯片 7805 的输入电压应比输出电压高 4-7V,所以最好选用输出电压 912V 的变

14、压器。 如图 1,220V 的交流电通过变压器变压,在通过整流桥和滤波电容,可以变为特定数值的直流电(大于 5V) ,通过 7805 芯片、C2(低频滤波电容)和 C2(高频滤波电容) ,得到稳定的 5V 直流电,满足单片机、温度传感器和数码管的使用。222 单片机电路要使单片机工作起来,需要给单片机接入复位电路和外接晶振。图 2.3 上电复位电路当 AT89C52 上电时,需要对其进行一次复位操作。复位操作可以将 AT89C52 置成初始一个瞬时高电平来完成的,电路如图 2.3 所示。上电瞬间,电流产生一个突发的向上尖峰脉冲,电流通过 C1 电容到达 AT89C52 的5复位端口 RST 对

15、其进行复位。尖峰过后,电流平稳,电容 C1 阻止电流通过,避免反复复位。电阻 R1 用于给 C1 放电,将 9 脚的电位拉低,防止 RST 端口上持续高电平。图 2.4 晶振电路给 AT89C52 提供一定的时钟频率,它才能正常工作,如图 2.4。223 温度传感器 DS18B20 电路DS18B20 数字传感器是一个 3 脚的芯片,1 脚接地,2 脚为数据输入输出,3 脚为可选的 VCC 电源。通过一个单线接口发送或接收数据,因此单片机与 DS18B20 仅需一条数据连接线(除了地线) 。DS18B20 应用电路有下面几种:(1)寄生电源工作方式。优点:1)进行远距离测温时,无需本地电源2)

16、可以在没有常规电源的条件下读取 ROM3)电路简洁,仅用一个 I/O 口缺点:多个温度传感器挂在一个 I/O 口上进行多点测温时,4.7K 上拉电阻无法提供足够的能量,造成无法转换温度或误差较大。因此这种电路只适合于单一温度传感器测温下使用,不适用采用电池供电的系统中,且电源 VCC 必须保证在 5V,电源电压下降时,寄生电源汲取的能量降低,使误差变大。(2)寄生电源强上拉供电方式。改进的寄生电源工作方式,为使 DS18B20 在动态转换周期中获得足够的电流供应,进行温度转换或拷贝到 E2 存储器时,用 MOSFET 把 I/O 线直接拉到 VCC 就可满足电流的供应,在发出任何涉及到拷贝到

17、E2 存储器或启动温度转换的指令后,必须在最多 10us内把 I/O 线转换到强上拉状态,强上拉方式可以解决电流供应不足的问题,因此适用于多点测温,缺点是多占用一个 I/O 口进行强上拉切换。(3)外部电源供电方式。这种方式是 DS18B20 的最佳工作方式,工作温度可靠,抗干扰能力强,电路也简单,并且可以开发出稳定可靠的多点温度监控系统。6图 2.5 外部电源供电方式综合比较,采用图 2.5 所示的外部电源供电方式应用电路进行设计。224 数码管显示电路单片机驱动 LED 数码管的方法很多,按照显示方法分为静态显示和动态显示。静态显示是指显示驱动电路具有输出锁存功能,要显示的数据送出后不再控

18、制 LED,直到下次直到下次显示时再传送一次新的显示数据。静态显示的数据稳定,占用的 CPU时间少。动态显示要 CPU 时刻对显示器件进行数据刷新,显示数据有闪烁感,占用 CPU时间多。两种方式各有利弊:静态显示虽然数据稳定,占用很少的 CPU 时间,但是每个显示单元都需要单独的锁存驱动电路,使用的电路硬件较多,动态显示虽然有闪烁感,占用CPU 时间多,但使用的硬件少,能节省线路板空间。动态扫描显示接口是单片机中应用最广泛的一种显示方式,其接口电路是把所有的LED 数码管的 8 个笔画段 ag、dp 的同名端连在一起,而每一个数码管接收到相同的字型码,但究竟是哪个数码管亮,则取决于 COM 端

19、,而这一端是由 IO 控制的,可以自行决定显示哪一位。所谓动态扫描,就是指我们采用分时的方法,轮流控制各个数码管的 COM 端,使各个数码管轮流点亮,在轮流点亮的扫描过程中,每位数码管的点亮时间是极为短暂的,约 1ms 左右,但由于人的视觉暂留现象及发光二极管的余晖效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。从上述论述中可以看出动态显示方案具备较强的实用性,也是目前单片机应用中数码管显示较为常用的一种方式,所以在本设计中采用动态显示方案。225 译码电路部分通过控制单片机的 I/O 口实现数码管部分的数码显示,根据A、B、C、

20、D、E、F、G、DP 在数码管上的位置,不妨选用共阴极的数码管来显示,分别将八段数码管编码为 hgfedcba,由此可得 09 的编码分别为0 x3f、0 x06、0 x5b、0 x4f、0 x66、0 x6d、0 x7d、0 x07、0 x7f、0 x6f,通过 74HC138 进行译码,从而控制每一个数码管的输出。7系统的软件设计31 温度测量系统软件流程图温度测量系统的软件主流程图可以划分成各子模块,分别为定时器设置、中断部分、读取 DS18B20 温度和温度译码输出,如图 3.1 所示,图 3.1 软件主流程图32温度测量系统各子模块 321 定时器设置部分数码管的扫描采用定时器中断的

21、方式,定时器/计数器 T0 由特殊功能寄存器TH0、TL0 构成,定时器/计数器 T1 由特殊功能寄存器 TH1、TL1 构成。特殊功能寄存器TMOD 用于选择定时器/计数器 T0、T1 的工作模式和工作方式。特殊功能寄存器 TCON用于控制 T0、T1 的启动和停止计数,同时包含了 T0、T1 的状态。TMOD、TCON 这两个寄存器的内容由软件设置。单片机复位时,两个寄存器的所有位都被清 0。D7 D6 D5 D4 D3 D2 D1 D0GATEC/TM1M0GATEC/TM1M0表 3.1 工作方式寄存器 TMOD 格式定时器/计数器有 4 种工作方式,本次设计采用工作方式 1,选择 T

22、0 定时,所以TMOD 中 T1 方式半段没有用到,高 4 位全为 0,选择工作方式 1,所以 M1M0 为 01,选择定时模式,所以 C/T 为 0。GATE 为 0,仅由运行控制位 TR0 来启动定时器运行,代码部分见附录 A 中定时器设置部分。322 中断部分当定时器/计数器 T0 溢出时产生中断,为此可以设置中断允许寄存器 IE,使 ET0 置1 同时开放 CPU 的中断源,使 EA 置 1。中断允许寄存器 IE 对中断的开放和关闭实现两级控制。即有一个总的开关中断控制位 EA(IE.7 位) ,当 EA=0 时,所有中断源请求被屏蔽,CPU 对任何中断请求拒绝,当 EA=1 时,CP

23、U 开中断,但 5 个中断源的中断请求是否允许,还要 IE 中的低 5 位所对应的 5 个中断请求允许控制位的状态决定。D7 D6 D5 D4 D3 D2 D1 D0IEEAESET1EX1ET0EX0位地址AFHACHABHAAHA9HA8H表 3.2 中断允许寄存器 IE 的结构所以,IE 值设置为 82H。T1 方式字段T0 方式字段A8H定时器设置中断部分读取 DS18B20 温度温度译码输出8323 读取 DS18B20 温度部分由于温度测量系统所选用的温度传感器为 DS18B20,且查阅 DS18B20 温度传感器的使用手册,可以将温度传感器的使用分为温度传感器的初始化、温度传感器

24、写一个字节、读一个字节。图 3.2 DS18B20 配置寄存器的结构图 3.3 DS18B20 的分辨率设置表DS18B20 加电启动时,默认值 R1=1,R2=1,所以默认分辨率为 12 位,为实验的方便,可以不改动 R1、R0 的值。图 3.3 DS18B20 的温度值格式表由上表可见,在 DS18B20 的 12 位温度转换过程中,转换后的 12 位数据,存在两个8 位的 RAM 中,其中前 5 位为符号位,即如果温度大于 0,S 全为 0,否则 S 全为 1,且负数值以二进制补码的形式存储在 RAM 中,温度转换时只要取反后加 1,即得到所测温度的原码。图 3.4 DS18B20 初始

25、化示意图初始化时,需要将 DQ 数据总线拉低至少 480us,数据总线就进入接收模式,DS18B20 收到信号后等待 1560us,然后 DQ 发出 60240us 的存在低脉冲,CPU 收到此信号表明复位成功。指令代码说明9读 ROM33H读 ROM 的 64 位地址符合 ROM55H指令发出后,发出 64 位地址,访问该地址对应的 DS18B20,为下一步的读写准备搜索 ROM0F0H确定连在一条总线上的 DS18B20 个数和识别 64 位 ROM 地址跳过 ROM0CCH忽略 64 位 ROM 地址,直接温度变换告警搜索命令0ECH只有超过温度上下限才做出反应表 3.3 DS18B20

26、 的 ROM 指令表指令代码说明温度变换44H启动温度转换,结果存入内部 9 字节 RAM 中读暂存器0BEH读内部 RAM 中 9 字节内容写暂存器4EH发出向内部 RAM 的 3、4 字节写上下限温度命令复制暂存器48H将 RAM 中第 3、4 字节的内容复制到 EEPROM重调 EEPROM0B8H将 EEPROM 中的内容恢复到 RAM 的第 3、4 字节读供电方式0B4H读 DS18B20 的供电模式表 3.4 DS18B20 的 RAM 指令表因此,可以控制单片机,向 DS18B20 的 ROM 写入 0CCH,向 RAM 写入44H,0BEH,让 DS18B20 进行温度转换。图

27、 3.5 DS18B20 暂存寄存器分布读取温度时,只需读取 byte0 和 byte1 中的内容,用数码管显示出来,就得到要测量的温度值。324 温度译码输出因为显示部分最多要用 6 个数码管,即负号的显示、百位显示、十位显示、个位和小数点显示、一位小数显示。考虑到成本、器件使用的方便和尽量减少连线等因素,温度显示部分可以选用连在一起的 8 个数码管 7SEG-MPX8-CC 型号。温度显示部分采用定时器/计数器 T0 中断控制数码管进行动态显示,由 P2 口送出动态扫描信号,且 P2 口的送出值为 BCD 码,因此需要 74HC138 进行译码,送入数码管的18 口,控制数码管的选通,扫描

28、由左向右依次进行,将所要显示的各位数码管值存入数组 str中,str0存放符号位,str1存放百位数据,str2存放十位数据,str3存放个位数据和小数点,str4存放一位小数,str5存放温度单位 C。扫描到相应数码管时,对应位的值经过查表,所对应的断码值就被送到 P0 口,从而完成温度的译码显示。结论与设计展望41 结论温度测量系统采用 Proteus 进行仿真,分别将 DS18B20 放不同的温度条件下,看数码管是否显示正确的温度值,以下为 DS18B20 正常工作温度下,系统的仿真图。10(1)设置温度为 21.2时的仿真图图 4.1 仿真图 1(2)设置温度为-21.2时的仿真图图

29、4.242展望随着现代数字电路和可编程器件的发展,使用数字器件代替传统的模拟器件进行测量是很好的发展方向,但这对设计人员提高了软件方面的要求,设计人员进行设计时,必须仔细阅读器件的使用手册,才能在此基础上,完成符合设计要求的一个系统。通过控制温度传感器的读和写,将得到的温度转换成数字,并最终用数码管成功显示,验证了所学的理论,成功完成了温度测量系统设计。本次设计只是在仿真的水平上,成功完成了设计,但到了具体的硬件平台,或许还有微小的差别,在硬件电路焊接和调试方面的能力,也是一个设计人员所必备的能力,在未来的工作岗位,或科研等有条件的情况下,亲身参与软硬件的调试和设计,尤其是硬件方面就非常有必要

30、了。电子信息领域的变化日新月异,新的技术层出不穷,但扎实的知识理论基础和基本电路分析方法给我们指明了所要努力的方向和实现方式,毕业设11计是四年本科学习的知识、理论、方法等综合知识运用的一次检验,是对知识体系的一个回顾,是迈向未来走向工作岗位的第一步,要学习的还有很多。致谢在这四年的时间里,我在学习上和思想上都受益非浅。这除了自身努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。论文的写作是枯燥艰辛而又富有挑战的。温度测量在生产、生活中很重要,老师的谆谆诱导、同学的出谋划策及家长的支持鼓励,是我坚持完成论文的动力源泉。在此,要感谢我的指导老师李秀娟。从论文的选题、文献的采集、框架的设

31、计、结构的布局到最终的论文定稿,从内容到格式,从标题到标点,给予了精心的指导,才最终顺利完成论文。感谢电子信息工程专业的各位同学,与他们的交流使我受益颇多。最后要感谢我的家人以及我的朋友们对我的理解、支持、鼓励和帮助,正是因为有了他们,我所做的一切才更有意义;也正是因为有了他们,我才有了追求进步的勇气和信心。时间的仓促及自身专业水平的不足,整篇论文肯定存在尚未发现的缺点和错误。恳请阅读此篇论文的老师、同学,多予指正,不胜感激!参考文献:1 李学礼.基于 Proteus 的 8051 单片机实例教程M.1 版.北京:电子工业出版社.2008 年 6 月2 那彦.电子及通信专业毕业设计宝典M.1

32、版.西安:西安电子科技大学出版社.2008 年 3 月3 张毅刚.彭喜元.姜守达.乔立岩.新编 MCS-51 单片机应用设计M.3 版.哈尔滨:哈尔滨工业大学出版社,2008 年 4 月 4 罗强.基于单片机的嵌入式工程开发详解M.1 版.北京:电子工业出版社.2009 年 1 月5 赵佩华. DS1820 在单片机温度测控中的应用N.上海电机学院学报,2008 年 12 月附录 A 温度测量系统单片机 C 程序#include #include#includesbit seg1=P20;sbit seg2=P21;sbit seg3=P22;sbit DQ=P13;sfr dataled=0

33、 x80;/P0 口数据送数码管unsigned int temp;unsigned char flag,count,num;unsigned char code tab=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/数码管段码表unsigned char str6;unsigned int ReadTemperature(void);void Init_DS18B20(void);unsigned char ReadOneChar(void);void WriteOneChar(unsigned char dat);void delay(unsigned int i);main()12unsigned char TempH,TempL;num=0;TMOD=0 x01;/定时器设置TH0=0 xef;TL0=0 x00;IE=0 x82;TR0=1;P2=0 x00; while(1)if(flag=1) temp=ReadTemperature();if(temp&0 xf800)str0=0 x40;/负号标志temp=temp; temp+=1; / 取反加 1else str0=0;Temp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论