《基于单片机的数字温度计设计(31页).docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计设计(31页).docx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-基于单片机的数字温度计设计-第 27 页上传说明:1.此论文题目为基于单片机的数字温度计设计;2.以AT89S51芯片为核心,DS18B20为感温元件设计而成;3.功能:四位数码管显示温度、智能报警、可设置报警温度范围;4.此论文为本人参考多方面资料整理完善而成,其中或许有许多不足,需要亲自己参考其他资料加以确认;5.仅供参考,严禁抄袭;6.如出现抄袭而被查重,一切责任与本人无关!2013年6月15日基于单片机的数字温度计设计作者姓名:* 专业班级:* 指导教师:*摘要随着时代的进步和发展,人们对生活环境要求的不断提高,人们在生活的许多方面都有着对温度进行感知和控制的需要。传统温度计由于精度
2、等各种原因,已经不能满足我们的需要。然而单片机技术发展迅速,已经普及到我们生活、工作、科研、各个领域,已经成为一种比较较成熟的技术。本文描述的是一种基于AT89S51单片机的数字温度计及报警系统,该系统采用DS18B20作为温度采集、监测元件,将采集到的信号送到单片机进行处理,判断是否报警,再将数据送到数码管显示出来,该设计可以设置温度计的报警上下限。文中介绍了集成温度传感器DS18B20的原理,AT89S51单片机的功能和应用,着重给出了软硬件系统的各部分电路。该系统具有功能强大、结构简单和体积小等优点。关键词:单片机、温度计、AT89S51、DS18B20The design of Mic
3、rocontroller-based digital thermometerAbstract:With the era of progress and development, peoples living environment requires continuous improvement in many aspects of life that people have a right temperature sensing and control needs. Traditional thermometer to various reasons such as accuracy, can
4、 not meet our needs. However, the rapid development of chip technology, has spread to the way we live, work and research in various fields, has become a relatively mature technology. This paper describes a AT89S51 microcontroller-based digital thermometer and alarm system, the system uses as the DS1
5、8B20 temperature acquisition, monitoring components, the collected signal to the microcontroller for processing, to determine whether the alarm, then the data sent to the digital display out that the design can set the thermometer alarm limit. This paper introduces the principle of integrated temper
6、ature sensor DS18B20, AT89S51 microcontroller features and applications, with emphasis given to each part of the circuit hardware and software systems. The system has a powerful, simple structure and small size, etc.Keywords: microcontroller, thermometer, AT89S51, DS18B20目录第1章 前言11.1 研究意义及背景11.2 研究目
7、的11.3 主要研究工作2第2章 系统概述32.1 系统方案32.2 系统组成32.3 系统性能指标4第3章 系统硬件设计53.1 AT89S51单片机的介绍53.1.1 单片机的选择53.1.2 AT89S51单片机的功能结构63.2 数码管显示电路93.2.1 4位共阳数码管93.2.2 显示电路93.3 DS18B20温度传感器103.3.1 DS18B20简介103.3.2 DS18B20的结构及工作原理113.3.3 测温电路133.3.4 提高DS18B20测温精度的途径143.3.5 DS18B20的使用注意事项153.4 报警电路163.5 晶振及复位电路173.5.1 复位电
8、路173.5.2 晶振电路183.6 系统工作原理19第4章 系统软件设计204.1 主程序设计204.2 DS18B20初始化214.3 报警模块流程22第五章 仿真及调试235.1 仿真235.2 实物调试24结论25致谢26参考文献27附录28第1章 前言1.1 研究意义及背景随着新技术的不断开发与应用,近年来单片机发展十分迅速,一个以微机应用为主的新技术革命浪潮正在蓬勃兴起,单片机的应用已经渗透到电力、冶金、化工、建材、机械、食品、石油等各个行业。传统的温度采集方法不仅费时费力,而且精度差,单片机的出现使得温度的采集和数据处理问题能够得到很好的解决。目前的智能温度传感器(亦称数字温度传
9、感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,89S51单片机为控制器构成的数字温度测量装置的工作原理及程序设计作了详细的介绍。与传统的温度计相
10、比,其具有读数方便,测温范围广,测温准确,输出温度采用数字显示,主要用于对测温要求比较准确的场所,或科研实验室使用。该设计控制器使用AT89S51单片机,测温传感器使用DS18B20,用数码管来实现温度显示,通过蜂鸣器和发光二极管实现报警。1.2 研究目的温度是科学技术中最基本的物理量之一,物理、化学、生物等学科都离不开温度。在工业生产和实验研究中,像电力、化工、石油、冶金、航空航天、机械制造、食物储存等领域内,温度常常是表征对象和过程状态的重要参数之一。如发电厂锅炉的温度必须控制在一定范围内;许多化学反应的工艺过程必须在适当温度下才能正常进行;原油的提炼必须在一定温度和压力条件下才能得到汽油
11、、柴油、煤油等不同产品。没有适当的温度环境,许多电子设备就不能正常工作,食物储备对温度、湿度很是敏感。由此可见,温度的测量和控制具有多么重要的意义。虽然数字式温度计的应用已非常广泛,但随着科技的发展,温度传感器元件的不断更新换代,温度检测系统的结构、器件选择等方面任需要不断研究和创新。不同领域对温度测量精度、灵敏度等有着特殊的要求。本文主要目的为介绍一种使用方便、精度高、体积小、成本低廉的数字温度计系统设计。1.3 主要研究工作此次主要以AT89S51单片机为核心、以DS18B20为感温元件,设计制作一种使用方便、精度高、体积小、成本低廉的数字温度计系统设计。首先是对AT89S51单片机、DS
12、18B20、数码管等元件结构、工作原理及使用方法进行分析和掌握;在此基础上对温度计的是硬件电路的进行可行性研究并提出自己的设计思路完成硬件部分的设计;最后对为软部分进行设计与调试,由此对工作电路进行仿真、测试、修改完善整个系统,实现数字温度计的基本功能。第2章 系统概述2.1 系统方案数字温度传感器DS18B20输出信号全数字化,便于单片机处理及控制,省去传统测温方法的很多外围电路。且该芯片的物理性、化学性很稳定,能用做工业测温元件。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,硬件实现简单,体积小,安装方便。所以该系统利用AT89S51芯片控制温度传感器
13、DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可根据需要设定上下限报警温度。2.2 系统组成本设计是以AT89S51单片机为核心的一种数字温度显示控制系统,系统整体硬件电路包括:采集模块、显示模块、设置模块和单片机最小系统模块四大模块组成。系统框图如:图2-1AT89S51单片机最小系统设置模块显示模块报警模块采集模块图2-1 系统框图下面简单介绍各模块的组成及主要功能:设置模块:因为不同环境对不同温度的需求,为使数字温度计能够针对不同温度环境,此次设计的数字温度计主要通过编写的程序和相应电路,对报警温度的上下限可进行人性化调整。采集模块:采集模块主要由DS18B20温度传
14、感器构成。主要功能为对所处环境温度进行采集,并把温度转换为数字信号传递交由单片机处理。显示模块:由一个4位共阳数码管、4个三极管、电阻等元件组成的显示电路。能实时显示温度数值,精确到小数点后2位数字。报警模块:主要由2只颜色不同的发光二极管及蜂鸣器组成。正常情况下,只亮绿灯,以示环境温度在需求范围内;当环境温度低于所设置的报警温度下限或高于上限时,绿灯熄灭、红灯亮起、蜂鸣器报警。单片机最小系统:为一块AT89S51芯片,对接收到的温度信号进行处理,此模块为整个系统组成的核心。2.3 系统性能指标1.数码管温度显示基本范围:0.0099.99。2.温度显示精度为:0.01。3.温度测量精度为:0
15、.5(主要由DS18B20确定)。4.默认报警温度上限为:35,下限为:5。5.可以设定报警温度的上、下限。第3章 系统硬件设计3.1 AT89S51单片机的介绍3.1.1 单片机的选择对于单片机的选择,可以考虑使用8031与8051系列,由于8031没有内部RAM,系统又需要大量内存存储数据,因而不适用。AT89S51是美国 ATMEL 公司生产的低功耗,高性能CMOS8位单片机,片内含 4kbytes 的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚。它集 Flash 程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位AT89S51单片机可为提供许多高性
16、价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89S51具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用三节干电池供电。其主要特征如下:与MCS-51兼容。4K字节可编程闪烁存储器。寿命:1000写/擦循环。数据保留时间:10年。全静态工作:0Hz24Hz。三级程序存储器锁定。128*8位内部RAM。32可编程I/O线。两个16位定时器/计数器。5个中断源。可编程串行通道。低功耗的闲置和掉电模式。片内振荡器和时钟电路。3.1.2 AT89S51单片机的功能结构AT89S51有40个引脚,4个8
17、位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。AT89S51的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。XTAL2XTAL1P0 P1 P2 P3PSENRSTEAALE总线控制CPURAM128BSFR 21个定时器/计数器时钟电路中断系统5个中断源2个优先级串行口4个并行口ROM/EPROM/Flash 4KB其基本组成结构框图如:图3-1。图3-1 AT89S51组成结构框图AT89S51单片机为40引脚双列直插式封装。其引脚排列和逻辑符号如图3-2 所示。各引脚功能简单介绍如下:VCC:供电电压。G
18、ND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,P0输出原码,此时P0外部电位必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入“1”后,电位被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个
19、TTL门电流,当P2口被写“1”时,其管脚电位被内部上拉电阻拉高,且作为输入。作为输入时,P2口的管脚电位被外部拉低,将输出电流,这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉的优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。图3-2 AT89S51引脚图P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入时,由
20、于外部下拉为低电平,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:当访问外部存储器时,地
21、址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令时ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问外部数据存储器时,这两次有效的PSEN信
22、号将不出现。EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时,访问内部ROM。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。3.2 数码管显示电路3.2.1 4位共阳数码管七段LED数码管有共阴极和共阳极两种结构形式。显示电路一般分为静态显示和动态显示两类。(1)共阳极接法:把发光二极管的阳极连接在一起构成公共阳极。使用时公共阳极接Vcc,当某阴极端为低电平时,该发光二极管就导通发光。(2)共阴极接法:把发光二极管的阴
23、极连在一起构成公共阴极。使用时公共阴极接GND,当某阳极端为高电平时,该段发光二极管就导通发光。本文中使用的是4位共阳LED数码管,可以同时显示4位数字,温度显示可精确到0.01。其引脚图如:图3-3。图3-3 数码管引脚图3.2.2 显示电路从P0口输出经限流电阻后接段码,P2.1、P2.3、P2.5、P2.7经C945三极管放大后接4个位码。数码管显示局部电路图如:图3-4。图3-4 显示电路3.3 DS18B20温度传感器3.3.1 DS18B20简介DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。与传统的热敏电阻相比,他能够直接读出被测温
24、度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。DS18B20的主要特征: 全数字温度转换及输出,可通过编程可实现912位的数字读数方式。 独特的单线接口方式:DS
25、18B20与微处理器连接时仅需要一条口线即可现微处理器与DS18B20的双向通讯。 不需要外围元件。最高12位分辨率,精度可达0.5摄氏度。温度传感器分别率由用户从9-12位中选择。12位分辨率时的最大工作周期为750毫秒。可选择寄生工作方式。能用数据线供电,供电的范围3.0V5.5V 检测温度范围为55C+125C(67F+257F) l内置EEPROM,限温报警功能。多样封装形式,适应不同硬件系统。支持多点测温,多个DS18B20可以并联在惟一的三线上,实现多点测温。负压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。应用范围包括:恒温控制、工业系统、消费类产品、温度计等。3
26、.3.2 DS18B20的结构及工作原理DS18B20引脚图如图3-5所示,引脚功能说明如表3-1:表3-1 DS18B20引脚功能引脚符号说明1GND接地2DQ单线运用的数据输入/输出引脚漏极开路3VDD可选VDD引脚的两种供电方式图3-5 DS18B20引脚图DS18B20 GNDDQVDD213 1 2 3图3-6为DS18B20的内部结构框图,它主要包括寄生电源、温度传感器、64位激光ROM单线接口、存放中间数据的高速暂存器(内含便笺式RAM),用于存储用户设定的温度上下限值的TH和TL触发器存储与控制逻辑、8位循环冗余校验码(CRC)发生器等七部分。图3-6 DS18B20内部结构图
27、64位ROM和单线接口存储器与控制逻辑高速缓存温度传感器高温触发器TH低温触发器DL配置寄存器8位CRC发生器DS18B20的测温原理如图3-7所示,图中低温度系数晶振的振荡频率受温度的影响很小用于产生固定频率的脉冲信号送给减法计数器1,高温度系数晶振随温度变化其震荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入,图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲后进行计数,进而完成温度测量.计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55 所对应的基数分别置入减法计数器1和温度寄存器中,减法计数器1和温度寄存器被预置在-55所对应的一
28、个基数值。减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性其输出用,于修正减法计数器的预置值,只要计数门仍未关闭就重复上述过程,直至温度寄存器值达到被测温度值,这就是DS18B20的测温原理。图3-7 DS18B20测温原理图T1T2预置低温系数振荡器高温系数振荡器计数器1计数器2=0Tx斜率累加器比较
29、预置温度寄存器=0另外,由于DS18B20单线通信功能是分时完成的,他有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。3.3.3 测温电路DS18B20最大的特点是单总线数据传输方式,DS18B20的数据I/O均由同一条线来完成。DS18B20的电源供电方式有2种:外部供电方式和寄生电源方式。工作于寄生电源方式时,VDD和GND均接地,他在需要远程温度探测和空间受限的场合特别有用,原理是当1Wire总线的信号线DQ为高电平时,窃取信号能量给DS18B20供电,同时一部分能
30、量给内部电容充电,当DQ为低电平时释放能量为DS18B20供电。但寄生电源方式需要强上拉电路,软件控制变得复杂(特别是在完成温度转换和拷贝数据到E2PROM时),同时芯片的性能也有所降低。因此,在条件允许的场合,尽量采用外供电方式。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电。在这里采用前者方式供电。DS18B20与芯片连接电路如图3-8所示:图3-8 DS18B20与芯片的连接VCCAT89S51DS18B20GND VQ VDD VCC外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。站长
31、推荐大家在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。在外接电源方式下,可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。3.3.4 提高DS18B20测温精度的途径DS1820正常使用时的测温分辨率为0.5,这对于水轮发电机组轴瓦温度监测来讲略显不足,在对DS1820测温原理详细分析的基础上,我们采取直接读取DS18B20内部暂存寄存器的方法,将DS1820的测温分辨率提高到0.10.01。首先用DS1820提供的读暂存寄存器指令(BEH)读出以0.5为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),
32、得到所测实际温度整数部分T整数,然后再用BEH指令读取计数器1的计数剩余值M剩余和每度计数值M每度,考虑到DS18B20测量温度的整数部分以0.25、0.75为进位界限的关系。实际温度T实际可用下式计算得到:T实际=(T整数0.25)+(M每度M剩余)/M每度 (3-1)低5位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动,R1和R0决定温度转换的精度位数,即是来设置分辨率,如表3-2所示(DS18B20出厂时被设置为12位)。表3-2 RO、R1转换模式R1R0分辨率温度最大转换时/mm009位93.7501
33、10位187.751011位275.001112位750.00由表3-2可见,设定的分辨率越高,所需要的温度数据转换时间就越长。因此,在实际应用中要在分辨率和转换时间权衡考虑。高速暂存存储器除了配置寄存器外,还有其他8个字节组成,其分配如下所示。其中温度信息(第1,2字节)、TH和TL值第3,4字节、第68字节未用,表现为全逻辑1;第9字节读出的是前面所有8个字节的CRC码,可用来保证通信正确。根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进
34、行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号表示复位成功。3.3.5 DS18B20的使用注意事项DS18B20 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题:DS18B20 从测温结束到将温度值转换成数字量需要一定的转换时间,这是必须保证的,不然会出现转换错误的现象,使温度输出总是显示85。在实际使用中发现,应使电源电压保持在5V 左右,若电源电压过低,会使所测得的温度精度降低。较小的硬件开销需要相对复杂的软件进行补偿,
35、由于DS1820与微处理器间采用串行数据传送,因此,在对DS1820进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS1820操作部分最好采用汇编语言实现。在DS18B20的有关资料中均未提及单总线上所挂DS18B20 数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此,当单总线上所挂DS18B20 超过8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。在DS18B20测温程序设计中,向DS18B20 发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个
36、DS18B20 接触不好或断线,当程序读该DS18B20 时,将没有返回信号,程序进入死循环,这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。3.4 报警电路本设计报警电路主要由蜂鸣器和发光二级管组成,蜂鸣器由一只S8550三极管驱动,二极管串联一只限流电阻以作保护。如图3-9所示。图3-9 报警电路通过单片机对温度信息的处理,与设置的温度上下限进行比较,判别是否报警。报警电路模块在AT89S51芯片P1.0、P1.1、P1.2这3个端口的控制下做出相应的响应,响应方式如:表3-3。表3-3 报警电路响应表温度P1.0P1.1P1.2红灯绿灯蜂鸣器超过温度上限101亮起熄灭报
37、警低于温度下限101亮起熄灭报警在设定范围内010熄灭亮起不工作由表3-3可知,超过报警温度设置上限或低于下限时,红灯亮起,蜂鸣器报警;在设定温度范围内时,红灯熄灭,蜂鸣器不工作,绿灯亮起。例:如图3-9所示,此时仿真设置温度为38,超过默认设置温度上限(35),红灯亮起,蜂鸣器报警。3.5 晶振及复位电路3.5.1 复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。在本系统中,上电复位采用电平方式开关复位,上电复位采用RC电路,其中电容为10F,电阻为10K。具体电路如图3-10所示。图3-10 复位电路3.5.2 晶振电路单片机系统里晶振的作用非常大,
38、它结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振提供的时钟频率越高,单片机运行的速度也就越快。单片机的晶振频率应低于40MHZ,本设计中采用的晶振频率为12MHZ,在晶振上并联两个30F电容。具体电路如图3-11所示。图3-11 晶振电路3.6 系统工作原理图3-12 系统原理图如图3-12,为系统原理图。系统采用5V电源,温度传感器DS18B20将模拟温度值经过DS18B20处理后转换为数字值,然后送到单片机中进行数据处理,单片机将处理后的数据通过数码管显示出来。同时判断测得的温度和设置报警的温度限值进行比较,超过限度时,通过红色发光二极
39、管及蜂鸣器响应报警;在限度范围内时,绿色发光二级管亮起,表示温度在设定范围内。第4章 系统软件设计4.1 主程序设计整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、通讯等。这里主程序需要调用4 个子程序,分别为数码管显示子程序,温度检测及处理子程序,报警子程序,中断设定子程序。主程序流程如图4-1。在设定范围内在设定范围外开始结束AT89S51初始化DS18B20初始
40、化读取温度温度显示温度比较报警图4-1 主程序流程图各模块程序功能如下:数码管显示程序:向数码管的显示送数,控制系统的显示部分。温度测试及处理程序:对温度芯片送过来的数据进行处理,进行判断和显示。报警子程序:进行温度上下限判断及报警输出。中断设定程序:实现设定上下限报警功能。4.2 DS18B20初始化DS18B20在单片机控制下分三个阶段:18B20初始化;读18B20时序;写18B20时序。18B20初始化流程图如图4-2所示图4-2 DS18B20初始化流程图在设定范围内温度数据处理开始S51寄存器初始化18B20是否存在温度转换命令读取温度温度显示温度比较报警在设定范围外4.3 报警模
41、块流程报警流程图如图4-3所示。图4-3 报警流程图YY报警子程序读取温度值C清除报警标志位CMAX?CMIN?置上限报警标志置上限报警标志报警装置运行返回第五章 仿真及调试5.1 仿真在Protel 7 Profesional软件上进行仿真,设定DS18B20温度为40,此时仿真如图5-1所示:图5-1 仿真图此时绿灯熄灭。红灯亮起,蜂鸣器报警,数码管显示40.00。当温度低于设定温度下限(5)时,除数码管显示温度不一样,其他与图5-1一模一样。当设定温度在535范围内时,红灯熄灭,绿灯亮起,但仿真图中蜂鸣器任然处于报警状态。此时看似存在问题,其实不然,其主要原因还是软件自身的问题,软件开发
42、的不完善等各种原因导致仿真时不可能达到全真的效果。5.2 实物调试实物电路焊接完成后,发现未能实现需要的功能,二极管、蜂鸣器、数码管都不能正常工作。通过检测,发现不存在芯片等元器件损坏问题,进而对整个电路做出了详细检查,结果为芯片未接电源和地,修改后所有功能均能完全实现。默认报警温度上限设定为35,默认报警温度下限设定为5,此时不对报警温度上、下限进行设置,通过对DS18B20升温和降温处理(用打火机略微烧烤带不锈钢探头的DS18B20温度传感器和将探头插入冰水中),调试结果如表5-1。表5-1 调试结果对应表数码管显示温度绿色发光二极管红色发光二级管蜂鸣器工作状态0.75熄灭亮起报警3.76
43、熄灭亮起报警4.89亮起熄灭不工作5.86亮起熄灭不工作20.38亮起熄灭不工作35.69亮起熄灭不工作36.23熄灭亮起报警46.54熄灭亮起报警调试发现,默认报警温度条件下,温度为4.0036.00(不包括4及36)时,不进行报警,绿灯亮起表示在环境温度在设定温度范围内;温度小于等于4或大于等于36时,报警电路正常工作。结论本次设计为基于单片机的数字温度计设计。是以AT89S51芯片为核心、DS18B20温度传感器为感温元件,辅之以部分外围电路,设计的一种使用方便、精度高、体积小、成本低廉的数字温度计,可实现4位数码温度显示及报警功能。本次课程设计的难点在于软件设计和DS18B20的使用。
44、软件设计中所需要考虑的问题比较多,把程序按功能分模块的话能提高编程效率,同时画流程图能帮助理清思路,使问题简单化。定义变量时,尽量定义局部变量,在字符型变量能达到要求的情况下就不用定义成整形变量。另一方面,取变量名时也要讲究技巧,应尽量使其见名知意,同样地,写程序时加注释确是非常必要的,否则隔一段时间后,想再改进或做扩展的话就比较困难了,因为即使是自己写的程序也变得难读难懂了。对DS18B20的时序控制、初始化以及字节读写方法,任何一个环节出错或是时序控制不到位的话就不能得到正确的数据。通过调试发现,延时的时间的设定也比较重要,太短会使按键按一下跳多下,太长按键会无反应,通过对实物电路的调试,
45、最终发现延时时间设置为20ms比较合适。通过此次课程设计,学了了不少新知识,获得了不少经验。平时的积累还远远还不够,书到用时方很少,书本上的知识也需要实践才能成为自己所得。致谢在本毕业设计的设计和制作过程中,感谢老师给了我很大的帮助,同时也离不开很多的同学热心帮助,是他们在我遇到难题的时候给了我启发。特别感谢杨斯涵老师,不但给我提供的大量文献资料,还时时悉心指导设计过程中遇到的各种问题,并对实践中出现的问题给予了耐心的解答,完稿之后在百忙中仔细阅读,给出修改意见。还有曹波老师,虽然不是我名义上的导师,但是也给我提供了不少的帮助,也感谢我的同学们,没有你们随时的在细节上的帮助,此次毕业设计不会这么快地成功。通过本次毕业设计,我在专业知识、专业技能和解决问题方法方面得到很大的提高。更深入了解并掌握了传感器的基本理论知识,并在单片机实际电路开发和常用编程设计思路掌握方面有了一定程度的掌握,尽管本次设计还不是很完善,但这为我以后的设计之路积累了宝贵的经验,打下了一定的基础。参考文献1何立民.单片机高级教程M.北京:航空航天大学出版社,2000.2杨路明.C语言
限制150内