资源描述
I基于基于 AT89S52AT89S52 单片机的温度检测系统设计单片机的温度检测系统设计摘要:当今时代,单片机技术已经普及到我们的生活、工作等方方面面,已经成为了一种比较成熟的技术。温度是生产过程和日常生活中普遍而且很重要的影响因素,经常要进行温度的检测和控制,而利用单片机去进行温度检测与控制则给我们提供了方便。温度测量是温度控制系统中的基础。本文介绍了一个基于 AT89S52 单片机的温度检测系统,该系统是以 AT89S52 单片机为核心元件,外加温度采集电路、显示电路和报警电路等。温度采集电路采用单总线型数字式的温度传感器 DS18B20,DS18B20 与AT89S52 单片机结合实现最简单的温度检测与报警系统。该系统可以方便的实现温度采集、温度显示、报警,并可根据需要任意设定上下限报警温度。该系统使用起来相当方便,尤其是它的抗干扰能力强,适合于恶劣环境下进行现场温度测量,有着广泛的应用前景。关键词:AT89S52 单片机;温度采集;DS18B20;报警IIDesign of Temperature Detection System Based on MicrocontrollerAbstract:Nowadays,microcontroller technology has be popular in our lives,works and so on,which has become a relatively mature technology.Temperature is a very common and important element during the production process and peoples daily lives,so we often need to check temperature and control it,but it is more convenient for us that using microcontroller to check and control temperature. Temperature measurement is the basis of temperature-controlling. This paper describes a microcontroller AT89S52 which based on temperature detection system.The system is based on AT89S52 microcontroller which is a core component,and including temperature collect circuit,display circuit and alarm circuit.The temperature collect circuit uses a single-bus digital temperature sensor DS18B20.DS18B20 and AT89S52 combined to achieve the most simple temperature detection and alarm system.The system can easily achieve to collect temperature ,disply temperature,alarm,and also can arbitrarily set upper and lower alarm temperature. The system is very convenient to use,especially its anti-interference ability is very strong so that it suit to measure temperature in very hard environments,which has a wide range of applications. Key words:AT89S52 microcontroller; Temperature collect; DS18B20; AlarmIII目 录第 1 章 绪论 .11.1 课题背景及意义.11.2 国内外研究的现状.11.3 研究设计的主要内容.2第 2 章 系统方案论证与比较.42.1 温度传感器的选择.42.2 显示器的选择.42.3 单片机的选择.52.3.1 凌阳单片机.52.3.2 AT89S52 单片机.5第 3 章 温度测量的基本原理.63.1 温度测量的几种方法.63.2 数字温度传感器 DS18B20 的测温原理.6第 4 章 主要芯片及技术介绍.94.1 AT89S52 单片机介绍.94.1.1 主要功能特性.94.1.2 各引脚功能及管脚电压.94.2 1-WIRE 总线技术.134.2.1 单总线技术概述.134.2.2 单总线接口的硬件结构.134.2.3 单总线芯片序列号.144.3 DS18B20 介绍.144.3.1 DS18B20 的特性.144.3.2 DS18B20 的外形和内部结构.154.3.3 DS18B20 的使用方法.16第 5 章 温度检测系统的硬件设计.195.1 系统总体构成.19IV5.2 单片机复位电路.195.2.1 常用的两种复位电路.195.2.2 单片机复位后的状态.205.3 时钟电路.205.4 温度采集电路.215.5 LED 显示电路.215.6 报警电路.225.7 键盘电路.235.7.1 键盘接口电路.235.7.2 键盘使用说明.235.8 电源接口电路.24第 6 章 温度检测系统的软件设计.256.1 系统软件的整体设计.256.2 系统的主程序.266.3 温度采集程序.276.4 LED 显示程序.29第 7 章 系统软件的汇编与调试.317.1 PROTEUS7.1.317.2 KEIL UVISION2.327.3 仿真结果分析.337.4 硬件焊接及系统调试.36第 8 章 结束语.38致 谢.40参考文献.41附录 1 系统硬件电路图.43附录 2 实物图.44附录 3 PCB 图.45附录 4 程序清单.461第 1 章 绪论1.1 课题背景及意义在科学技术突飞猛进的今天,温度检测与控制起到不可忽视的作用。温度控制不论是在医疗领域还是在工业控制领域应用都非常广泛。例如在电力工程、食品加工、冶金工业、化工生产造纸行业和机械制造等诸多领域中,需要对各类反应炉、加热炉和热处理炉的温度进行测量并进行控制,尤其是在工业生产过程中,很多时候都需要对温度进行严格的监控,以保证生产能够顺利进行,从而产品的质量才能得到有效的保证1。自动控制系统在各个领域尤其是工业领域中有着广泛的应用,而温度控制是控制系统中最为常见的控制之一,其中温度采集及其报警是整个控制系统的基础。随着单片机技术的日益成熟,通过单片机对温度检测日益成为自动控制领域的一个重要发展方向。采用单片机来对温度进行检测,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的精确性,从而能够大大提高产品的质量和数量1。1.2 国内外研究的现状在当今时代,温度检测技术日新月异,许多新的温度检测的技术不断得到开发,并且取得了很大的进展。在工业上这些新的测温技术开始投入应用,主要有以下几种:(1)采用集成电路温度检测元件。该元件是利用硅晶体管的基极与发射极之间电压与温度的关系(即半导体 PN 结的温度特性)进行温度检测。该元件是把用于温度测量、信号处理以及放大电路等电路模块集成在一块芯片上,并将其封装在小型管壳内,从而制造出的集成电路温度检测元件。目前,国内在这方面也开始了生产。(2)采用半导温度检体测元件,该元件在众多的温度检测元件中很具有代表性。半导体的电阻温度系数比金属大 l2 个数量级,二极管和三极管的 PN 结电压、电容对温度灵敏度很高。目前很多测温元件都是基于上述测温原理。(3)石英晶体温度检测器。该系列元件采用 LC 或 Y 型切割的石英晶片的共振频率随温度变化的特性而制作。它可以自动补偿石英晶片的非线性,测量精度较高,一般可检测到 0.001。(4)采用热噪声温度检测器,它是利用热电阻元件产生的噪声电压与温度具有的相关性来设计的。其特点如下:感温元件的阻值几乎不影响测量精确度;2输出噪声电压大小与温度是比例关系;不受压力影响;因此,它是可以直接读出绝对温度值而不受材料和环境条件限制的温度检测器。(5)采用核磁共振温度检测器,这种检测温度的方法是利用共振吸收频率随温度上升而减少的原理研制成的,它的原理是将具有核自旋的物质置于静磁场中,当在与静磁场垂直方向上加上电磁波时,就会发生对某频率电磁的吸收现象。这种检测器精度极高,是一种性能十分良好的温度检测器。在常温下,可作理想的标准温度计之用。(6)采用光纤温度检测器,这种是目前光纤传感器中发展较快的一种,它是利用双折射光纤的传输光信号滞后量随温度变化的原理而制成的双折射光纤温度检测器,检测精度在1以内,测温范围可以从绝对 0到 2000。(7)微波温度检测器是采用微波测温可以达到快速测量高温的目的。它是利用在不同温度下,温度与控制电压成线性关系的原理制成的。这种检测器的灵敏度为 250kHZ/,精度为 1%左右,检测范围为 201400。通过对以上温度检测新技术的概述可以看出,未来温度检测技术的发展趋势主要表现在下面几个方面:(1)加强新原理、新材料、新加工工艺的开发。如近来已经开发的炭化硅薄膜热敏电阻温度检测器,厚膜、薄膜铂电阻温度检测器,硅单晶热敏电阻温度检测器等。(2)扩大测温对象。温度检测技术将会由点测温发展到线、面,甚至立体的测量,它的应用范围也不断的在扩大,像如今在家用电器、汽车工业等领域方面也有了应用。(3)新产品的开发。为了适应越来越多的需求,许多新的产品正在不断的被研制出来,同时新的检测技术也逐渐在开发新产品时不断的得到应用。(4)扩展检测范围。随着现代工业不断的发展,产品的质量的要求也不段的在提高,尤其是那些对温度要求较高的产品。所以在未来测量温度的范围会有所扩大,比如在超高温的测量。(5)向智能化、集成化、适用化方向发展。新产品不仅要具有检测功能,又要具有判断和指令等多功能,采用微机向智能化方向发展。向机电一体化方向发展2。1.3 研究设计的主要内容本文主要讲述了一个基于 AT89S52 单片机的温度检测系统。该系统充分利用了数字温度传感器DS18B20 的特点,设计了一个集温度采集与转换、显示以及报警一系列任务的系统。该系统的温度信号由数字温度传感器 DS18B20 采集,并以数字信号的方式传送给单片机。单片机将获得的温度值在数码管上显示出来。数码管的显示采用动态扫描的方式,为了增强数码管的显示效果并对单片机3的 P0 口进行上拉,并用 PNP 型的三极管来驱动数码管。数码管采用 4 位共阳极的 LED。同时单片机还需要进行温度值的判断,看是否超越所设置的温度上下限,若低于或高于所设定的温度,单片机将发出信号使蜂鸣器报警并有相应的指示灯亮。该系统设计包括硬件及软件设计,现对本文整体结构安排进行如下介绍。在第一章中主要介绍当前温度检测技术的背景及其意义,讨论下该技术未来的发展趋势。在第二章中则对该系统设计的方案进行下论证,主要包括各关键部分元器件的选择。在第三章则对温度检测的基本原理进行下简单的介绍,并针对本设计所采用的 DS18B20 的工作原理进行下介绍。第四章则是对该系统所采用的单片机及芯片进行介绍,为后面的工作打下理论基础。第五章则是温度检测系统的硬件设计,主要包括各关键部位的电路设计。第六章则是本系统的软件设计,给出了软件设计的流程图。第七章是系统的仿真及硬件电路焊接与调试,介绍了仿真结果及调试所遇到的问题。在最后一章中则对该系统的不足之处进行了说明,并对后续工作的开展进行了展望。4第 2 章 系统方案论证与比较2.1 温度传感器的选择温度检测系统有其共同的特点:测量点多、环境复杂、布线分散、现场离监控室远等。若采用一般温度传感器采集温度信号,则需要设计信号调理电路、A/D 转换及相应的接口电路,才能把传感器输出的模拟信号转换成数字信号送到计算机去处理。这样,由于各种因素会造成检测系统较大的偏差,因此温度检测系统设计的关键在于温度传感器的选择。方案一:本方案采用模拟温度传感器 AD590 作为测温元件,传感器将测量的温度变换转换成电流的变化,再通过电路转换成电压的变化,使用运算放大器将信号进行适当的放大,最后通过模数转换器将模拟信号转换成数字信号,传送给单片机。此方案的硬件电路过于繁琐,不可取。方案二:采用热敏电阻,可满足 4090测量范围,但热敏电阻精度、重复性、可靠性较差,对于检测 1 摄氏度的信号是不适用的。而且在温度测量系统中,采用单片温度传感器,比如AD590,LM35 等。但这些芯片输出的都是模拟信号,必须经过 A/D 转换后才能送给计算机,这样就使得测温装置的结构较复杂。另外,这种测温装置的一根线上只能挂一个传感器,不能进行多点测量,即使能实现,也要用到复杂的算法,一定程度上也增加了软件实现的难度。方案三:该方案采用单总线的温度传感器,例如 DS18B20。该系列温度精度高,只需要一个I/O 口就能驱动,不需要将温度传感器的输出信号接到 A/D 转换器上,可以直接读出被测温度值,这样可以省去很多传统的外围电路。另外该芯片的物理性质与化学性质很稳定,元件线形较好,在 0100时,最大线形偏差小于 1。这样,使用 DS18B20 来进行温度的测量就大大简化了测温电路的难度并且体积也不大,总体电路显得更加简洁,在搭建电路和焊接电路也更快,而且集成块的使用,能有效地避免外界的干扰,提高测量电路的精确度,所以集成芯片的使用将成为电路发展的一种趋势3,4。综上所述,本系统温度传感器采用方案三。2.2 显示器的选择方案一:采用传统的七段数码 LED 显示器。LED 具有价格便宜,亮度高,显示大,编程简易,易操作等优点。方案二:采用 LCD 液晶显示器进行显示。LCD 液晶显示器是一种低压、微功耗的显示器件。它的显示效果相比数码管来讲就优越的多,但是液晶显示常用于精密仪器仪表,而且编程复杂,价格5上也贵了许多。本设计系统对显示效果要求不是很高,刷新温度的频率也不需要太高,能够准确的显示出温度,并且当温度变化时能够准确的反应出温度的变化就行了,故本设计显示器采用方案一。2.3 单片机的选择2.3.1 凌阳单片机随着单片机功能集成化的发展, 单片机的应用范围也逐渐地由传统简单功能的控制,扩展成过程控制 、数字信号处 理(DSP,Digital Signal Processing)以及数据分析等领域。凌阳单片机在这种背景下而被开发出来的。这一系列的单片机有以下特点:体积小,集成度高,可靠性好易于扩展。该类单片机内部采用总线结构, 减少了各功能部件之间的连接, 从而提高了它的可靠性和抗干扰 的能力。它的中断系统支持 10 个中断向量及 10 余个中断源,片内具有静态RAM 和多功能的 I/O 口,并且其 ROM 的寻址能力较强 ,同时它所具有的独特的 乘法运算指令和内积运算指令 为其应用添加 了不少色彩 ,使得该类型单片机在一些复杂的数字信号处理 中很有优势。凌阳单片机其优势主要体现在硬件方面,抗干扰能力强,但是凌阳单片机我没有接触过,这对于我来说不是很容易上手,其次它的 价格也要比 AT89S52 昂贵的多,因此我并没有选择凌阳单片机5。2.3.2 AT89S52 单片机ATMEL 公司的 AT89 系列 8 位 5 单片机,它广泛应用于工业测控系统之中。其指令是采用的被称为“ CISC ”的复杂指令集,共具有 111 条指令。89S52 单片机本身的电源电压是 5V,有两种低功耗方式:待机方式和掉电方式。正常情况下消耗的电流为 24mA,在掉电状态下,其耗电电流仍为 3mA ;即使在掉电方式下,电源电压可以下降到 2V,但是为了保存内部 RAM 中的数据,还需要提供约 50uA 的电流。AT 系列的单片机是最早进入中国的单片机,人们对它在熟悉不过了,再加上我国各方人士的努力,创造了不少适合我们使用的开发工具。而 S52 单片机不仅完全兼容 51 系列的单片机,而且在 51 的基础上做了许多优化,功能更加全面,它的 价格低廉, 却方便实用。同时,以 MCS-51 技术核心为主导的单片机已成为许多厂家、电气公司竞相选用的对象,并以此为基准,推出许多与 MCS-51 有极好兼容性的 CHMOS 单片机,同时增加了一些新的功能,而且AT89S52 单片机有其独特的特点,可以支持在线编程,考虑到成本及自己熟悉程度的问题,本设计采用 AT89S52 单片机6。 6第 3 章 温度测量的基本原理3.1 温度测量的几种方法温度是表征物体冷热程度的物理量。温度只能通过物体随温度变化的某些特性来间接测量,温度测量仪表按测温方式可分为非接触式和接触式。一般来讲由于需要与被测物体进行接触,接触式测温仪表测得的温度一般比较可靠且测量的精度较高;但因测温元件需要与被测物体进行充分的热交换,这就需要一定的时间才能达到热平衡,所以存在测温的延迟现象,同时受耐高温材料的限制,不能应用于很高的温度测量。非接触式仪表测温是通过热辐射原理来测量温度的,测温元件不需与被测物体接触,测温范围广,不受测温上限的限制,也不会破坏被测物体的温度场,反应速度一般也比较快;但受到物体的发射率、测量距离、烟尘和水气等外界因素的影响,其测量误差较大。目前在广泛采用的测温方法有以下几种:(1)热电偶温度检测方法。热电偶测温基本原理是将两种不同材料的导体或半导体 A 和 B 焊接起来,构成一个闭合回路,当导体 A 和 B 的两个执着点 1 和 2 之间存在温差时,两者之间便产生电动势,因而在回路中形成一个大小的电流,这种现象称为热电效应。热电偶就是利用这一效应来工作的。(2)热电阻是中低温区最常用的一种温度检测器。热电阻测温原理是基于金属导体的电阻值随温度的增加而增加这一特性来进行温度测量的。热电阻大都由纯金属材料制成。热电阻测温系统一般由热电阻、连接导线和显示仪表等组成。(3)IC 集成温度传感器,全数字化读取,必须配合单片机使用,可以连接成网络使用,三线即可读取温度,电源、地、数据7。3.2 数字温度传感器 DS18B20 的测温原理DS18B20 测温原理如图 3-1 所示。图中低温度系数晶振用于产生脉冲信号送给计数器 1,它的振荡频率受温度的影响很小,可以近似认为产生的是固定频率的脉冲。而图中的高温度系数晶振产生的振荡频率随温度变化而变化则比较明显,它所产生的信号作为计数器 2 的输入脉冲。温度寄存器与计数器 1 被预置在-55所对应的一个基数值。当温度传感器开始工作时,计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1 中预先设定的基数值减为 0 时,温度寄存器的值将加 1,计数器 1 的基数值将重新被装入。计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环,直到计数器 2 计数为 0 时,停止温度寄存器值的累加,此时温度寄存器中的7数值即为所测目标的温度。 1 0 2 0 加1停止图 3-1 DS18B20 测温原理框图DS18B20 的核心是一个数字化的传感器,可以把-55+125的温度值转换成数字量。DS18B20 上电后默认的分辨率是 12 位,当 DS18B20 接收到总线上单片机发来的温度转换命令(44H)后,DS18B20 就开始进行温度的转换。以 12 位转化为例:用 16 位符号扩展的二进制补码读数形式提供,以 0.0625/LSB 形式表达,其中 S 为符号位8。如下图 3-2 所示。M SbLSbLSbM Sb(uni t = )SSSSS262524232221202-12-22-32-4图 3-2 12 位分辨率温度值存储格式图 3-2 是转化后得到的数据,存储在 RAM 的两个字节中,这 16 位中的前面 5 位是符号位,如果测得的温度是正值,则这 5 位为 0,此时只要将内存中的数值乘于 0.0625 即可得到实际温度;如果温度为负,那么这 5 位为 1,那么此时只需要将内存中的数值取反加 1 再乘于 0.0625 即可得8到实际温度。如+85的数字输出 0550H,+10.125的数字输出为 00A2H,-0.5的数字输出为FF5EH。最后 CPU 向 DS18B20 读取温度并进行分析处理。表 3-1 给出了部分温度与数字输出对应关系9。表 3-1 部分温度与数字输出对应关系温度数字输出(二进制)数字输出(十六进制)+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00010191H+10.1250000 0000 1010 001000A2H00000 0000 0000 00000000H-0.51111 1111 1111 1000FF5EH-25.06251111 1110 0110 1111FE6FH9第 4 章 主要芯片及技术介绍4.1 AT89S52 单片机介绍AT89S52 单片机是美国 ATMEL 公司生产的一个低功耗,高性能 CMOS 8 位微控制器。该器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统,功能强大的 AT89S52单片机可为用户提供许多较复杂的应用控制场合解决方案。4.1.1 主要功能特性(1)与 MCS-51 单片机产品兼容 (2)1000 次擦写周期(3)8K 字节在系统可编程 Flash 存储器(4)全静态操作:0Hz33Hz (5)三个 16 位定时/计数器(6)掉电标识符(7)三级加密程序存储器(8)8 个中断源 (9)掉电话中断可唤醒(10)低功耗空闲和掉电模式 (11)全双工 UART 串行通道 (12)看门狗定时器 (13)双数据指针(14)32 个可编程 I/O 口线4.1.2 各引脚功能及管脚电压AT89S52 芯片有 40 条引脚,双列直插式封装引脚图如图 4-1 所示。主要管脚有:VCC(40): 电源GND(20):接地XTAL1(19 脚)和 XTAL2(18 脚)为振荡器输入输出端口,外接 12MHz 晶振。RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。10(T2EX) P1. 1P1. 2P1. 3P1. 4(M O SI ) P1. 5(M I SO ) P1. 6(SC K) P1. 7R ST(R XD ) P3. 0(TXD ) P3. 1(I N T0) P3. 2(I N T1) P3. 3(T0) P3. 4(T1) P3. 5(W R ) P3. 6(R D ) P3. 7XTAL2XTAL1G N DP2. 0 (A8)P2. 1 (A9)P2. 2 (A10)P2. 3 (A11)P2. 4 (A12)P2. 5 (A13)P2. 6 (A14)P2. 7 (A15)PSENALE/ PR O GEA/ VPPP0. 7 (AD 8)P0. 6 (AD 7)P0. 5 (AD 5)P0. 4 (AD 4)P0. 3 (AD 3)P0. 2 (AD 2)P0. 1 (AD 1)P0. 0 (AD 0)VC C(T2) P1. 0PD I P图 4-1 AT89S52 引脚图P0 口:P0 口是一组 8 位漏极开路型双向 I/O 口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路,对端口 P0 写“1”时,可作为高阻抗输入端用。P0 口具有内部上拉电阻。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1 口:P1 口是一个带内部上拉电阻的 8 位双向 I/O 口,P1 的输出缓冲级可驱动 4 个 TTL 逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流 (IIL)。此外,P1.0 和 P1.2 还可分别作为定时/计数器 2 的外部计数输入(P1.0/T2)和定时/计数器2 的触发输入(P1.1/T2EX),具体如表 4-1 所示。在 Flash 编程和程序校验时,P1 口接收低 8 位地址。P2 口:P2 口是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动 4 个 TTL 逻辑电平。11表 4-1 P1.0 和 P1.1 的第二功能引脚号第二功能P1.0T2(定时/计数器 T2 外部计数输入),时钟输出P1.1T2EX(定时/计数器 T2 捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)对端口 P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVX DPTR)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 MOVX RI 指令)时,P2 口输出 P2锁存器的内容。在 Flash 编程或校验时,P2 也接收高位地址和一些控制信号。P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓冲级可驱动 4 个 TTL 逻辑电平。对 P3 口写入“1”时,内部上拉电阻拉高,此时可以作为输入端口。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3 口亦作为 AT89S52 特殊功能(第二功能)使用,如表 4-2 所示。表 4-2 P3 口第二功能端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断 0)P3.3INT1(外中断 1)P3.4T0(定时/计数器 0 外部输入)P3.5T1(定时/计数器 1 外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)在 falsh 编程和校验时,P3 口也接收一些控制信号。12RST:复位输入。在晶振工作时,RST 脚持续 2 个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出 96 个晶振周期的高电平。特殊寄存器 AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。在 flash 编程时,此引脚(PROG)也用作编程输入脉冲。一般情况下,ALE 以时钟振荡频率的 1/6 输出固定的脉冲信号,可用来作为外部定时器或始终使用,然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将跳过。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的第 0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。否则,该引脚会被微弱拉高,这个 ALE使能标志位(地址为 8EH 的 SFR 的第 0 位)的设置对微控制器处于外部执行模式下无效。PSEN:外部程序存储器选通信号是外部程序存储器选通信号,当 AT89S52 从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。EA/VPP:访问外部程序存储器控制信号。为使能从 0000H 到 FFFFH 的外部程序存储器读取指令,EA 必须接 GND。为了执行内部程序指令,EA 应该接 Vcc。在 flash 编程期间,EA 也接收 12V 的 Vpp电压。XTAL1:振荡器反相放大器的及内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。在 AT89S52 中,定时器 0 和定时器 1 的操作与 AT89S51 和 AT89C52 一样。定时器 2 是一个 16位的定时/计数器。它既可当定时器使用,又可以做外部事件计数器,其工作方式由特殊功能寄存器 T2CON 的 C/T2 位选择。定时器 2 有三种工作方式:捕获方式,自动重装载(向上或向下计数)和波特率发生器,工作模式由 T2CON 的相关位选择。定时器 2 有两个 8 位寄存器 TH2 和 TL2 组成,在定时工作方式中,每个机器周期,TL2 寄存器都会加 1,由于一个机器周期由 12 个晶振周期构成,因此,计数速率为振荡频率的 1/12。在计数工作方式时,当 T2 引脚上外部输入信号产生由 1 至 0 的下降沿时,寄存器的值加 1,在这种工作方式下,每个机器周期的 5SP2 期间,对外部输入进行采样。若在第一个机器周期中采到的值为 1,而在下一个机器周期中采到的值为 0,则在紧跟着的下一个周期的 S3P1 期间寄存器加 1。由于识别 1 至 0 的跳变需要 2 个机器周期(24 个振荡周期),因此,最高计数速率为振荡频率的 1/24。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。13捕捉方式:在捕捉方式下,通过 T2CON 控制位 EXEN2 来选择两种方式。如果 EXEN2=0,定时器2 是一个 16 位定时器或计数器,计数溢出时,对 T2CON 的溢出标志 TF2 置位,同时激活中断。如果 EXEN2=1,定时器 2 完成相同的操作,而当 T2EX 引脚外部输入信号发生 1 至 0 负跳变时,也出现 TH2 和 TL2 中的值分别被捕获到 RCAP2H 和 RCAP2L 中。另外,T2EX 引脚信号的跳变使得 T2CON中的 EXF2 置位,与 TF2 相仿,EXF2 也会激活中断。定时器 0 和定时器 1 的标志位 TF0 和 TF1 在定时器溢出那个机器周期的 S5P2 状态置位,而会在下一个机器周期才查询到该中断标志。然而,定时器 2 的标志位 TF2 在定时器溢出的那个机器周期的 S2P2 状态置位,并在同一个机器周期内查询到该标志。数据查询:AT89S52 单片机用 Data Palling 表示一个写周期结束为特征,在一个写周期中,如需读取最后写入的一个字节,则出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,所输出的数据是有效的数据,即可进入下一个字节的写周期,写周期开始后,Data Palling 可能随时有效10-14。4.2 1-WIRE 总线技术4.2.1 单总线技术概述目前常用的微机与外设串行总线主要有我们熟悉的 I2C 总线,SPI 总线,SCI 总线。其中 I2C 总线是两线方式通信的(一条数据线,一条时钟线),SPI 总线则是三线方式进行通信的(一条数据输入线,一条数据输出线,一条时钟线),以上两种都是以同步串行的方式。而 SCI 总线则是以异步方式。这些总线至少需要有两条或两条以上的信号线。近年来 DALLAS 半导体公司推出了单总线(1-Wire Bus)技术,与目前多数标准串行数据通信方式不同,它采用单根信号线,且数据传输是双向的。具有节省 I/O 口线资源,结构简单,成本低廉,便于总线扩展和维护等优点15。4.2.2 单总线接口的硬件结构单总线只有一根数据线。系统中的数据交换、控制都在这根线上完成。任何单总线系统都包括一台主机和一个或多个从机。个别器件可以通过总线获得工作电源,当数据线为高电平时,电荷存储在器件内部;当数据为低电平时,器件通过这些电荷来提供能量。设备(主机或从机)通过一个漏极开路或三态端口连至该数据线,这样允许设备不发送数据时释放总线,以便其他设备使用总线,其内部等效电路,如图 4-2 所示。14 R XTX 4. 7KVPUVPU1-W I R E D QPI N1-W i re R XTX100M O SFET5uATpyR X= TX= 图 4-2 单总线的硬件接口示意图4.2.3 单总线芯片序列号单总线一个基本的特色就是每一个芯片都有一个唯一的序列号,任何两个单总线设备的序列号都不会重复。当一条总线上有多个单总线设备时,系统主机可以通过不同的序列号来识别总线上挂着的不同设备。单总线设备的序列号共有 64 位 8 个字节,其中第一个字节表示器件的家族码,如数字温度传感器 DS18B20 的家族码是 28H;中间六个字节表示的是器件的序列号;序列号最后 8 位表示的是前面 56 位的 CRC 检验码,通过检验读出的这 64 位数字的 CRC 检验结果,即可保证数据通信的正确性16。4.3 DS18B20 介绍温度传感器 DS18B20 是美国 DALLAS 半导体公司推出的一种改进型智能温度传感器。它在测温精度、转换时间、传输距离、分辨率等方面也有很大的改进。下面将分别介绍其功能特点,内部结构和使用方法。4.3.1 DS18B20 的特性(1)在寄生电源方式下可从数据线上汲取能量,且能够适应 3.05.5V 的电压。(2)在与微处理器连接时仅需要一根 I/O 线。(3)在单总线上可以挂多个 DS18B20。(4)全部传感元件及转换电路集成在形如一只三极管的集成电路内,没有外围电路。(5)测温范围为-55125,在-10+85时精度为0.5。(6)温度分辨率可设置 912 位。最高精度可达到 0.0625。15(7)将温度转换为数字的速度更快。(8)测量结果直接输出数字温度信号,以“一线总线”串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力。(9)电源极性接反时,芯片不会因发热而烧毁,但不能正常工作17。4.3.2 DS18B20 的外形和内部结构DS18B20 的引脚排列如图 4-3 所示,它具有 3 脚 PR35 封装和 8 脚 SOIC 封装两种封装模式。采用 3 脚封装时,DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供电电源输入端;采用 8脚 SOIC 封装时,1、2、6、7、8 脚悬空,3 脚接外部电源,4 脚为数字信号输入输出端,5 脚接地18,19。D ALLASD S18B201 2 3G N D D Q VC C1N CN CVD DD QN CN CN CG N DD S18B20Z8-PI N SO I C (150m i l )12348765图 4-3 DS18B20 外形结构图DS18B20 内部结构如图 4-4 所示。其主要由 4 部分组成:温度传感器、64 位光刻 ROM、非易失性的温度报警触发器 TH 和 TL、配置寄存器。64 位 ROM 用于数据校验,温度传感器是 DS18B20 的内部测温设备,温度报警触发器用来设置温度报警的上下值,配置寄存器用来设置使用 DS18B20 时的工作方式及温度的分辨率。 8 C R C 64 R O M TL TH 图 4-4 DS18B20 内部结构图16ROM 中的 64 位序列码是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码,每个DS18B20 的 64 位序列码均不相同,开始 8 位是单线产品系列编码(DS18B20 的编码是 28H,DS1820的编码是 10H),同一型号的单总线器件的编码相同。接着的 48 位是该 DS18B20 唯一的序列号,最后 8 位是前面 56 位的循环冗余检验码。DS18B20 的内部存储器包括一个高速暂存(RAM)和一个非易失性的可电擦除的 EEPROM,后者存放高温触发器 TH、低温触发器 TL 和结构寄存器18,20,21。其中配置寄存器的格式如下表 4-3 所示。表 4-3 配置寄存器格式0R1R111111在配置寄存器中首位为 TM(测试模式位),用来设置 DS18B2O 是处于工作模式还是测试模式。R1 与 R0 用来设置分辨率,如下表 4-4 示。表 4-4 温度分辨率设置表R0R1温度计分辨率/bit最大转换时间/ms00993.750110187.5101137511127504.3.3 DS18B20 的使用方法由于单片机与 DS18B20 只需要一根 I/O 线即可通讯,那么对数据的读写操作必然会有严格的要求。DS18B20 严格的通信协议确保了数据的正常传输,该协议规定了以下几种操作时序:初始化时序、读时序、写时序。每一次对 DS18B20 的操作都需要主机重新对其复位,例如在初始化 DS18B20后执行了写操作,此时若想从 DS18B20 中读取出数据,那么主机需要再次对芯片进行初始化操作。DS18B20 的数据与命令的传输都是低位在前22。(1)初始化时序基于单总线的所有传输过程都是以初始化开始的,故对单总线器件的初始化操作尤其重要。初始化时序如图 3-7 所示,脉冲使单片机知道,总线上有 1-wire 设备,且准备就绪。初始化过程如下:主机通过拉低总线 480us 以上,产生复位脉冲,然后释放总线。主机释放总线时,会产生一个上升沿。单总线器件检测到上升沿后,延时 15-60us,通过拉低总线 60-240us 来产生应答脉冲。主机接收到从机的应答脉冲,说明单总线器件在线。17VC CM ast er TX “ reset pul se”480 us m i ni m um960 us m axi m umM ast er R x480 us m i ni m umD S18B20 W ai t s15-60 usD S18B20 Tx “ Presence pul se”60-240 usG N D1-W I R EBU SBus m ast er act i ve l owBot h bus m ast er and D S18B20 act i ve l owD S18B20 act i ve l owR esi st or pul l -up图 4-5 初始化命令时序图(2)DS18B20 的读时序DS18B20 的读时序分为读 0 时序和读 1 时序两个过程,其读时序如图 4-6 所示。当微处理器开始读 DS18B20 中的数据时,微处理器就把总线拉低,在将总线拉低至少 15us 后开始释放总线,以便让微处理器在随后至少 45us 的时间内对总线上的数据进行采样,若总线上为高电平读出DS18B20 中的数据为“0”,若为高电平则读出的数据为“1”。由此可见每一位的读时序至少需要60us 才能完成17。M ASTER R EAD “ 0” SLO T1usTrec1us1-W I R E BU SM ASTER SAM PLESM ASTER SAM PLESVCCG N D图 4-6 DS18B20 的读时序3、DS18B20 的写时序DS18B20 的写时序分为写 1 时序和写 0 时序,其写时序如图 4-7 所示23,24。18MASTER WRITE “0” SLOT60usTX”0120us1us1usDS18B20 SAMPLESMIN TYP MAXDS18B20 SAMPLESMIN TYP MAX1-WIRE BUS图 4-7 DS18B20 的写时序从图中可以看出 DS18B20 的写时序至少为 60us,而且在写 0 与写 1 时序上有些不同。当写周期开始时,主机把总线拉低 1us 表示写周期开始。当要写 0 时,总线则继续被拉低到至写周期结束;当要写 1 时序时,单总线被拉低 1us 之后便可释放总线,主机将在随后的时间内对总线进行采样,若总线维持高电平,则向 DS18B20 写入 1。19第 5 章 温度检测系统的硬件设计5.1 系统总体构成本系统通过温度传感器将现场温度传至单片机,并将采集到的温度与用户设定的目标温度,进行比较是否超越极限以此控制蜂鸣器自动报警,从而达到检测温度的目的,其主要由温度采集模块、LED 显示模块、键盘输入模块以及报警模块等组成。系统硬件结构框图如图 5-1 所示。 LED 图 5-1 系统硬件框图5.2 单片机复位电路5.2.1 常用的两种复位电路单片机在启动时都需要复位,复位的目的以使单片机从初态开始工作。并且这个初始状态是可预知的状态,AT89S52 单片机的复位信号是从 RST 引脚输入的,当单片机在正常工作状态时,如果RST 引脚上出现一个高电平并维持至少 2 个机器周期,那么单片机将响应复位信号并将系统复位。单片机系统的复位方式有两种:按键复位和上电复位。按钮复位需要人为在复位输入端 RST 加上高电平。本设计采用的是是在 RST 端和正电源 Vcc 之间接一个按钮,并接一个 10K 的电阻来分压。当按下按键后,Vcc 的+5V 电压就会直接加到 RST 端。按钮复位的电路如图 5-2 所示。由于人按键时的动作比较缓慢,可以满足两个机器周期的要求,所以,完全能够实现单片机的复位。S2R210K+C310UFVCCRESET图 5-2 按键复位电路205.2.2 单片机复位后的状态系统复位是任何微机系统执行的第一步,使单片机回到默认的初始状态。S52 单片机的复位也是由 RESET 引脚来控制的,此引脚与高电平相接达到 2 个机器周期以上,S52 单片机自动进入复位状态,而且一直在此状态下等待,直到 RESET 引脚的电平变为低电平后,再开始检查 EA 管脚的电平信号,若为高电平则执行单片机内部的程序代码,若为低电平则取执行外部扩展的程序。S52 单片机复位后进入初始化状态,其复位后寄存器的状态见表 5-1 所示。表 5-1 复位后特殊功能寄存器状态特殊功能寄存器初始状态特殊功能寄存器初始状态A00HTMOD00HB00HTCON00HPSW00HTH000HSP007HTL000HOPL00HTH100HOPH00HTL100HP0P3FFHSBUF不定IP*00000BSCON00HIE0*00000EPCON0*B上表说明:表中符号*为随机状态。上表中 A 为 00H,表明已被清零;PSW 为 00H,表明工作寄存器组为 0 组;SP 为 07H,表明堆栈指针指向片内 RAM 地址为 07 单元的内存,根据堆栈操作先入后出法则,第一个被推入到堆栈的数据存储在地址单元为 08H 中。P0 至 P3 中的数据为 FFH,表明已向各端口置位,此时各端口既可用于输入又可用于输出;IP*00000B,表明各个中断源处于低优先级;IE0*00000B,表明各个中断均被关断。另外复位后的 21 个特殊功能寄存器状态为确定值。期中程序计数器 PC 为0000H,单片机复位后将从地址为 0000H 单元开始执行。单片机初次启动后,片内 RAM 为随机值。5.3 时钟电路时钟电路跟复位电路一样是单片机必须具备的电路,两者构成了单片机的最小系统。单片机内部是由许多的逻辑器件组成的,这些逻辑器件彼此之间默契的配合需要按照严格的节拍来操作,这种节拍就是时序,单片机的时序可以由内部时钟提供或者由外部的晶振提供。而本设计的时钟电路就可以为单片机的正常工作提供时序,若没有时钟电路,单片机就无法工作。在本设计中采用由外21部方式产生时钟的方法形成时钟电路,如图 5-3 所示。C 130pC 230pY112M HZX1X2图 5-3 时钟电路5.4 温度采集电路本次设计所采用的温度传感器为 dallas 半导体公司的数字化温度传感器 ds18b20,它是世界上第一片支持“一线总线”接口的温度传感器。“一线总线”体积更小,使用电压更宽、更经济、全部传感器元件及转换电路集成在形如一只三极管的集成电路里。DS18B20 可以程序设定 912 位的分辨率,可选更小的封装方式,更宽的电压适用范围。分辨率设定及用户设定的报警温度存储在EEPROM 中,掉电后依然保存。在硬件上,DS18B20 与单片机有两种接法。一种是 VCC 接外部电源,GND 接地,I/O 口与单片机;另一种则是用寄生电源供电。I/O 口线要接 5K 左右的上拉电阻。本设计采用的是后一种方法。如图 5-4 所示,把 DS18B20 的数据线与单片机的 P2.7 管脚相连,再加上上拉电阻25。图 5-4 温度测量电路5.5 LED 显示电路单片机 I/O 的应用最典型的就是通过 I/O 口与 LED 数码管构成显示电路,本设计 LED 显示模块电路如下图 5-5 所示。P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8REST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119GND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1AT89S52123U3DS18B20VCCR122P1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8REST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119GND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1AT89S52dp1g2f3e4d5c6b7a89dp1g2f3e4d5c6b7a89dp1g2f3e4d5c6b7a89dp1g2f3e4d5c6b7a89PNPPNPPNPPNPP10P11P12P13R1R2R3R4R5R6R7R8VCC图 5-5 LED 显示电路5.6 报警电路 此设计选择了蜂鸣器,因为比起扬声器来使用起来更简单,只要按照极性要求加上合适的直流电压,就可以使蜂鸣器发出声音。当温度高于或者低于用户设定的温度上下限时。蜂鸣器就发出声音来形式提醒用户温度不在正常范围内。在本系统中我们为用户设计了越限报警,当温度低于用户设置温度下限或高于温度上限时,蜂鸣器发出连续不断的滴滴答答的叫声。当单片机 P2.3 输出高电平时,三极管导通,蜂鸣器工作发出报警声。报警及指示灯电路如下图 5-6 所示。A1B2U2BUZZERR3100Q5PNPP1.01P1.12P1.23P1.34P1.45P1.5/MOSI6P1.6/MISO7P1.7/SCK8REST9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119GND20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA/VPP31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC40U1AT89S52D1D2D3R1R2R3VCCVCCVCCVCC图 5-6 报警及指示灯电路图当温度在设定的范围内,绿灯亮;当温度低于下限温度时,黄灯亮,同时,蜂鸣器报警;当温23度高于上限温度时,红灯亮,同时,蜂鸣器报警。5.7 键盘电路5.7.1 键盘接口电路本系统有重新设定温度上下限的功能,故会用到键盘来输入。我设计了三个按键的键盘。通过按下不同的键可实现修改
展开阅读全文