本论文介绍了一种以单片机为主要控制器件,以DS18B20为温度传感器的温度测量报警系统。主要包括硬件电路的设计和系统程序的设计。硬件电路主要包括主控制器,测温电路和温度显示电路等,主控制器采用单片机AT89C51,温度传感器采用美国DALLAS半导体公司生产的DS18B20,显示电路采用3位数码管显示。本设计中系统程序主要包括DS18B20工作程序、LED显示子程序、键盘输人程序和温度检测报警程序等。此外,还介绍了系统的调试和性能分析。由于采用了改进型智能温度传感器DS18B20作为检测元件,与传统的温度报警系统相比,本设计具有低成本和易使用的特点。DS18B20温度传感器还可以在远距离多点测温控制等方面进行应用开发,具有很好的发展前景。
关键词:89C51,单片机,DS18B20,传感器
Abstract
This paper presents a microcontroller to the main control device to DS18B20 temperature sensor for measuring the temperature alarm system. Hardware including main circuit design and system design process. Hardware including main controller circuit, the circuit temperature and temperature display circuit, the main controller using MCU AT89C51, temperature sensors using U.S. DALLAS Semiconductor production DS18B20, showed that three digital circuits used in a dynamic scanning of the Direct Reading Show. The design of the system procedures include DS18B20 procedures, LED display routines, keyboard input process and temperature detection alarm procedures.In addition, it introduced a system of debugging and performance analysis. As a result of the improved intelligence DS18B20 as a temperature sensor detection devices, with the traditional temperature alarm system compared with the established low-cost and easy to use features. DS18B20 temperature sensor can also long-range multi-point temperature control, and other aspects of application development, has good prospects for development.
Key words: 89C51MCU DS18B20 Sensor
目 录
第一章 绪论 ............................................................................................................ - 1 - 1.1本课题研究的意义 ......................................................................................... - 1 - 1.2目前发展状况 ................................................................................................. - 1 - 第二章 系统总体设计 ............................................................................................ - 3 - 2.1课题要求简述 ................................................................................................. - 3 - 2.2工作原理 ......................................................................................................... - 3 - 2.3 课题总体设计思路 ........................................................................................ - 3 - 第三章 系统硬件设计 ............................................................................................ - 5 - 3.1温度测量模块设计 ......................................................................................... - 5 - 3.2控制模块设计 ............................................................................................... - 12 - 3.3显示输出设计 ............................................................................................... - 15 - 3.4报警电路设计 ............................................................................................... - 17 - 3.5键盘控制器设计 ........................................................................................... - 18 - 3.6电源设计 ....................................................................................................... - 18 - 3.7系统硬件连接设计 ....................................................................................... - 19 - 第四章 系统软件设计 .......................................................................................... - 21 - 4.1 系统软件总体工作过程 .............................................................................. - 21 - 4.2软件程序 ....................................................................................................... - 21 - 4.3 LED数码显示器显示程序 .......................................................................... - 24 - 第五章 结论 .......................................................................................................... - 25 - 参考文献 ................................................................................................................ - 26 - 致 谢 ................................................................................................................ - 27 -
第一章 绪论
1.1本课题研究的意义
在当今科学研究和生产生活中,温度是一个十分重要的物理量,对它的测量与控制有十分重要的意义。随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度:如大气及空调房中温度的高低,直接影响着人们的身体健康;在大规模集成电路生产线上,环境温度不适当,会严重影响产品的质量。
采用单片机控制温度,无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,人们对它的要求越来越高。在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。
近年来随着计算机在社会领域的渗透,单片机的应用正在各个领域不断地深入,同时带动传统控制检测日新月益更新。在实施检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,所以我们仅单片机方面知识是不够的,还应根据具体硬件结构,设计单片机外围设备。
数字温度传感器因适用于各种微处理器接口组成的自动温度控制系统具有可以克服模拟传感器与微处理器接口时需要信号调理电路和A/D转换器的弊端等优点,现在被广泛应用于各种温度控制系统中。DS18B20就是单总线数字式温度传感器。
本论文的立足点是,运用比较常规的温度传感器和单片机芯片以及价格低廉的电子元件构成低成本、高性能的智能系统,努力学习传感器和单片机的相关知识,熟练掌握,灵活运用,最终实现将智能数字式温度测量报警系统应用到更广泛的领域中去。
1.2目前发展状况
电子仪器是对物质世界的信息进行测量与控制的基本手段。传感器能将各种物理量、化学量和生物量等信号转变为电信号,使得人们可以利用计算机实现自动测量、信息处理和自动控制,但是它们都不同程度地存在温漂和非线性等影响
- 1 -
因素。传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。因此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信和信息处理结合起来,适应传感器的生产、研制、开发和应用。另一方面,传感器的被测信号来自于各个应用领域,每个领域都为了改革生产力、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感器系统不断涌现。温度传感器是其中重要的一类传感器。其发展速度之快,以及其应用之广,并且还有很大潜力。
数字时代的到来,温度控制系统越发显得重要。习惯上,人们大多仍继续使用着传统的模拟传感器对温度进行测量,用机械元件进行温度控制。一个传统意义上的温度控制系统在控制时,首先要经过感温元件,测量电路,放大电路,模数转换电路后才能得到相应的数字量信息,然后通过机械元件控制加热或者冷却或者报警才能达到对温度的控制,系统比较繁琐。这样在应用实例中许许多多的缺点就暴露了出来。例如,系统的元件比较多,所以必须要考虑的线路环节较多,而且器件之间又难免存在着干扰,传统温度控制系统对恶劣工作条件适应能力差,不能在极限工作条件下正常工作。
利用传统的模拟信号传感器实现温度测量,需要解决引线误差补偿,切换误差,放大电路零点漂移误差等问题,传统的机械元件控制加热冷却或者报警存在着控制精度不高,时间控制不准确等问题,并且需要模数转换等复杂的接口,在实际应用中很是不方便,因此传统的温度控制元件正逐步被新型温度控制器所代替。
最近几年,由于半导体技术的迅猛发展,数字化技术推动了信息化的革命,在传感器和控制器的器件结构上采用数字化技术,使信息的采集变的更加方便.功能强大,精确,价格低廉的数字式温度传感器和控制器不断的出现。随着传感器和控制器这两个温度控制器主要元件技术的不断更新,温度控制系统也有了长足进步。温度控制系统正在日趋的集成化和微型化,适应能力也不断提高。但随着集成化和微型化的加剧,也出现了若干问题。
例如程序设计要求精密无误,内部损坏很难修理等问题。虽然存在一些不足,但是充分利用微处理技术发展数字化和集成化的温度控制系统仍是温度控制发展的方向之一。而且在未来的生产生活中,温度控制系统将被更广泛的应用。
- 2 -
第二章 系统总体设计
2.1课题要求简述
本课题为温度测量报警系统设计,该系统设计的要求为:
(1)设计制作一个具有0—100度的数字温度表,测量值数据用3位数码管显示,其中有一位小数,小数点能自动移动,小数点左边1位以上的零自动熄灭。 (2)测量温度误差小于0.5度。
(3)具有被测温度上,下限设置功能,当检测温度超过上,下限值时,用“嘀——嘟”音响发出报警信号。
为达到上述要求,该系统采用了温度传感器(内置A/D转换器)、单片机控制器、3位数码管显示器及报警设置与控制电路等组成。
2.2工作原理
图2-1 系统总体组成框图
键盘控制电路 数码管显示器 单片机 控制器 温度传感器 (A/D转换器) 超温报警电路 上图所示智能数字式温度测量报警系统的工作原理为:由温度传感器采集温度信号并转换成模拟信号,然后经过A/D转换器把模拟信号转换成数字信号后送入单片机输入端。单片机根据输入端接收到的数字信号,通过软件编程,将数字信号由数码管显示器显示出来。由键盘设置温度上下限,当温度超过设置的上下限温度值时超温报警器报警。
2.3 课题总体设计思路
(1)依照课题设计要求,选取AT89C51单片机为核心器件。 (2)温度传感器采用 DSl8B20 数字式温度传感器。 (3)按键采用独立式按键,分别为:
设置键:当该键按下时,进入上下限温度设置状态。
加一键:在输入上下限温度时,该键按下一次,被调整位加一。
- 3 -
减一键:在输入上下限温度时,该键按下一次,被调整位减一。 确认键:当该键第一次按下时,确认所调上限温度,当该键第二次按下时,确认所调下限温度,同时退出设置状态。
设置键(SET)通过P1.0口引脚接入,加一键(UP)通过P1.1口引脚接入,减一键(DOWN)通过P1.2口引脚接入,确认键 (RET) 通过P1.3口引脚接入。
(4)LED数码显示管采用动态扫描显示法,P0.0—P0.7控制LED数码显示管的段选信号,P2.0—P2.2控制LED数码显示管的位选信号。
(5)当温度T在(99.9°C>=T>9.9°C)范围时,使第二位数码管的dp为低电平,使第一、第三位数码管的dp为高电平,第二位数码管显示小数点亮。
(6)当温度等于100°C时,使第三位数码管的dp为低电平,使第一、第二位数码管的dp为高电平,第三位数码管显示小数点亮,显示数字右移一位。
(7)当温度T在(9.9°C>=T>=0.0°C)范围时,使第一位数码管驱动三极管截止,第一位数码管整体不亮。
上述操作就可满足设计要求的第一条(0—100度的数字温度表,测量值数据用3位数码管显示,其中有一位小数,小数点能自动移动,小数点左边1位以上的零自动熄灭。),具体操作由系统软硬件结合来完成.
- 4 -
第三章 系统硬件设计
3.1温度测量模块设计
1.传感器的选择
温度是一种最基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实施测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段:
①传统的分立式温度传感器。 ②模拟集成温度传感器。 ③智能集成温度传感器。
目前,国际上新型温度传感器正从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展。在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。为了克服上面提到的三个问题,采用了新型数字温度传感器DS18B20,在对其测温原理进行详细分析的基础上,既提出了提高DS18B20测量精度的方法,又取得了良好的测温效果。 2. DS18B20的相关概述
1:GND为电源地。
2:DQ为数字信号输入/输出端。 3:VDD为外接供电电源输入端。
图3-1 DS18B20管脚图
如今,随着数字信息技术的飞速发展和传统工业改造的逐步实现,温度自动控制系统在很多领域得到广泛应用。传统的温度控制使用热敏电阻作为温度敏感元件。没有温度检测元件和控制元件,虽然成本低,但是因其处理电路简单,可靠性相对较差,控制准确度和精度都比较低。因此正逐步的被新型温度传感器组成的温度控制系统所代替。本系统采用了美国DALLAS公司最新推出的DS18B20单总线数字式温度传感器,DS18B20是DALLAS公司继DS1820之后
- 5 -
推出的增强型单线数字温度传感器。它在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果。属于新一代适配微处理器的智能温度传感器,可广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。它具有微型化、低功耗、高性能、抗干扰能力强、易于与微处理器接口等优点,适合于各种温度测控系统,如图 3-1 。与传统的热敏电阻温度传感器不同,它能够把温度信号直接转换成串行数字信号供给微处理机。
DS18B20读出或写入数据仅需要一根I/O口线即总线,总线本身可以向所有挂接的DS18B20芯片提供电源而不需要额外电源,并且它体积小,电压适用范围宽(3V—5V),用户还可以通过编程实现9—12位的温度分辨率。因此,它的实用性和可靠性比同类产品更高。
该器件将半导体温敏器件、A/D转换器、存储器等做在一个很小的集成电路芯片上,传感器直接输出的就是温度信号数字值。信号传输采用两芯(或三芯)电缆构成多单总线结构。一条单总线电缆上还可以挂接若干个数字温度传感器,每一个传感器有唯一的地址编码,微控制器通过对器件的寻址,就可以读取某一个传感器的温度值,从而简化了信号采集系统的电路结构,采集端口的连接线减少了50倍,既节省了造价,又给现场施工带来了极大的方便。 3.传感器特点
DS18B20的性能特点:
①采用单总线专用技术,既可通过串行口线,也可通过其它i/o口线与微机接口,无须经过其它变换电路,直接输出被测温度值。
②测温范围为-55℃~+125℃,测量分辨率为0.0625℃;在-10~+85℃时精度为±0.5℃。
③可用数据线供电,电压范围:3.0~5.5V。
④负压特性:电源极性接反时,温度计不会因发热而烧毁,但不能正常工作。 ⑤可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃。
⑥内含64位经过激光修正的只读存储器ROM。 ⑦适配各种单片机或系统机。
⑧用户可分别设定各路温度的上、下限。 ⑨内含寄生电源。
⑩每个芯片唯一编码,支持联网寻址,零功耗等待。 4.内部结构
DS18B20是实现单总线测控网络的关键器件,它的内部结构如图3-2所示。 DS18B20有4个主要的数据部件:
- 6 -
① 64位激光ROM。64位激光ROM从高位到低位依次为8位循环冗余校验码(CRC)发生器、48位序列号和8位家族代码(28H)组成。[11] ② 温度灵敏元件。
③ 非易失性温度报警触发器TH和TL。可通过软件写入用户报警上下限值。 ④ 配置寄存器。配置寄存器为高速暂存存储器中的第五个字节。DS18B20在工作时按此寄存器中的分辨率将温度转换成相应精度的数值,其各位定义如图3-3所示。其中,TM:测试模式标志位,出厂时被写入0,不能改变;R0、R1:温度计分辨率设置位,其对应四种分辨率如表1所列,出厂时R0、R1置为缺省值:R0=1,R1=1(即12位分辨率),用户可根据需要改写配置寄存器以获得合适的分辨率。
DQ VDD 电 源 检测 64位 ROM 和 单线 接口 存储器和控制器 温度灵敏原件 高速 暂存存 储器 低温触发器TL 高温触发器TH 配置寄存器 8位CRC生成器
图3-2 DS18B20内部结构简图
图3-3 DS18B20配置寄存器结构图
DS18B20内部存储器由ROM、RAM和E2ROM组成,如表3.1所示。其中,ROM 由64位二进制数字组成,共分为8个字节,字节0的内容是该产品的厂家代号28H,字节1~字节6的内容是48位器件序列号,字节7是ROM前56位的CRC校验码。由于64位ROM 码具有唯一性,在使用时作为该器件的地址,通过读ROM命令可以将它读出来。[12]
表 3.1DS18B20内部存储器结构
字节 0 ROM 产品代号(28H) RAM 温度低8位 - 7 -
1 2 3 4 5-6 7 8
48位 器件序列号 CRC 温度高8位 TH TL 配置寄存器 保留 保留 CRC E2ROM TH TL 配置寄存器 RAM是由9个字节的高速暂存器和非易失性电擦写E2ROM组成。其中字节0、1存储当前温度,字节2、3存储上、下限报警温度TH和TL,字节4是配置寄存器,字节8是RAM前64位的CRC校验码。RAM 中E2ROM用于存储TH、TL和配置寄存器的值。数据先写人RAM,经校验后再传给E2ROM。通过DS18B20功能命令对RAM进行操作。
DS18B20可完成对温度的测量,用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H,如表3.2所列。
表 3.2温度测量值与数字量输出对照
温度 +125℃ +25.0625℃ +10.125℃ +0.5℃ 0℃ -0.5℃ -10.125℃ -25.0625℃ -55℃ 数字量输出 (二进制) 0000 0111 1101 0000 0000 0001 1001 0001 0000 0000 1010 0010 0000 0000 0000 1000 0000 0000 0000 0000 1111 1111 1111 1000 1111 1111 0101 1110 1111 1111 0110 1111 1111 1100 1001 0000 数字量输出 (十六进制) 07D0H 0191H 00A2H 0008H 0000H FFF8H FF5EH FF6FH FC90H DS18B20的温度测量范围是-55℃ ~+125℃ ,分辨率的默认值12位。表3.3是温度存储格式与配置寄存器控制字的格式。由表3.3中可知,检测温度由两个字节组成,字节1的高5位s代表符号位,字节0的低四位是小数部分,中间7位是整数部分;字节2是配置寄存器控制字的格式,当R1R0的值为00B、01B、10B、11B时,对应的分辨率为9、10、11、12位,转换时间为93ms、187ms、375ms、750ms。R1,R0的设定值与位数,分辨率和最大转换时间的关系具体如表
- 8 -
3.4所示,可见位数每减少一位,分辨率同比减少而转换时间则加快一倍。器件上电默认分辨率为12位。
表3.3温度存储格式与配置寄存器控制字格式
字节0 字节1 字节2
Bit7 23 S 0 Bit6 22 S R1 Bit5 21 S R0 Bit4 20 S 1 Bit3 2-1 S 1 Bit2 2-2 26 1 Bit1 2-3 25 1 Bit0 2-4 24 1 表 3.4 分辨率和最大转换时间的关系
R1 0 0 1 1 R0 0 1 0 1 分辨力/℃ 0.5 0.25 0.125 0.0625 最大转换时间/ms 93.75 187.50 375.00 750.00 有效位数 9位(bit11-bit3) 10位(bit11-bit2) 11位(bit11-bit1) 12位(bit11-bit0) 当主机发出温度转换命令(44H)时,便启动了温度转换过程,转换时间最长750mS。主机通过读暂存器功能命令(BEH),将温度值读出。通过写暂存器功能命令,改变分辨率的设置。 5. DS18B20的通讯协议
数字式温度传感器和模拟传感器最大的区别,是将温度信号直接转化成数字信号,然后通过串行通信的方式输出。因此掌握 DS18B20 的通信协议是使用该器件的关键。所有的 DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲、应答脉冲时隙;写“0”写“1”时隙;读“0” 读“1”时隙。与DS18B20 的通信,是通过操作时隙完成单总线上的数据传输,发送所有的命令和数据时,都是字节的低位在前,高位在后。 (1)工作序列
由DS18B20的通讯协议可知,主机控制DS18B20完成温度转换必须经过三个步骤:
⑴每一次读写之前都必须要对DS18B20进行复位; ⑵复位成功后发送一条ROM指令;
- 9 -
⑶最后发送RAM指令,这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。
主机接收应答脉冲480us 主机 发送 复位 脉冲 DS1820 480us 发应答脉冲 VP 60-240us GND DS18B20等待112-60us 图3-4 复位和应答时隙
(2)复位和应答脉冲时隙
每个通信周期起始于微控制器发出的复位脉冲,其后紧跟 DS18B20 发出的应答脉冲,如图3-4所示。在写时隙期间,主机向 DS18B20 器件写入数据,而在读时隙期间,主机读入来自DS18B20的数据。在每一个时隙,总线只能传输一位数据。
图3-5写“0”和写“1” 时隙
(3)写时隙
当主机将单总线DQ从逻辑高(空闲状态)拉为逻辑低时,即启动一个写时隙。所有的写时隙必须在 60~120us完成,且在每个循环之间至少需要1us的恢
- 10 -
复时间。写0和写1时隙如图3-5所示。
在写0时隙期间,微控制器在整个时隙中将总线拉低;而写1时隙期间,微控制器将总线拉低,然后在时隙起始后15us之内释放总线。 (4)读时隙
DS18B20器件仅在主机发出读时隙时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时隙,以便DS18B20能够传输数据。所有读时隙至少需要60 us。且在两次独立的读时隙之间,至少需要 1us的恢复时间。每个读时隙都由主机发起,至少拉低总线1us。读时隙如图3-6所示。
图3-6 读“0”和读“1” 时隙
在主机发起读时隙之后,DS18B20器件才开始在总线上发送“0”或“1”。若DS18B20发送“1”,则保持总线为高电平。若发送“0”,则拉低总线,当发送0时,DS18B20在该时隙结束后,释放总线,由上拉电阻将总线拉回至空闲高电平状态。DS18B20发出的数据,在起始时隙之后保持有效时间15us。因而主机在读时隙期间,必须释放总线。并且在时隙起始后的15us之内采样总线状态。 6. DS18B20测温精度的提高
DS18B20有两种供电方式:3.0V~5.5V的电源供电方式和寄生电源供电方式(直接从数据线获取电源)。电源检测电路用于判定供电方式。
DS18B20正常使用时的测温分辨率为0.5℃,在对DS18B20测温原理详细分析的基础上,我们采取直接读取DS18B20内部暂存寄存器的方法,将DS18B20的测温分辨率提高到0.1℃~0.01℃.
DS18B20内部暂存寄存器的分布如表3-1所示,其中第7字节存放的是当温度寄存器停止增值时计数器1的计数剩余值,第8字节存放的是每度所对应的计数值,这样,我们就可以通过下面的方法获得高分辨率的温度测量结果。首先用DS18B20提供的读暂存寄存器指令(BEH)读出以0.5℃为分辨率的温度测量结果,然后切去测量结果中的最低有效位(LSB),得到所测实际温度整数部分T整数,然后再用BEH指令读取计数器1的计数剩余值M剩余和每度计数值M每度。 7.DS18B20使用中的注意事项
- 11 -
DS18B20虽然具有测温系统简单、测温精度高、连接方便占用口线少等优点,但在实际应用中也应注意以下几方面的问题:
(1)较小的硬件开销需要相对复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS18B20操作部分最好采用汇编语言实现。
(2)在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。
(3)连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过50m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS18B20进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。
(4)在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。
3.2控制模块设计
1.单片机控制器
系统电路的主芯片采用ATMEL公司的AT89C51单片机。AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机AT89C51提供了高性价比的解决方案。
AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
- 12 -
图3-7 AT89C51引脚图
2.主要功能特性:
(1)与MCS-51 兼容
(2)4K字节可编程闪烁存储器 (3)寿命:1000写/擦循环 (4)数据保留时间:10年 (5)全静态工作:0Hz-24Hz (6)三级程序存储器锁定 (7)128×8位内部RAM (8)32可编程I/O线 (9)两个16位定时器/计数器 (10)5个中断源 (11)可编程串行通道 (12)低功耗的闲置和掉电模式 (13)片内振荡器和时钟电路 3.管脚说明:
VCC:供电电压。 GND:接地。
- 13 -
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,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:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此
- 14 -
时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个
机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。
当EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),EA/VPP:
不管是否有内部程序存储器。注意加密方式1时,EA将内部锁定为RESET;当
EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用
于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。[4]
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。[5]
3.3显示输出设计
LED数码显示器是一种由LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为7段(也有称作8段)发光二极管数码显示器。其内部结构如图3-8所示。
- 15 -
图3-8数码管示意图
1.LED数码显示器有两种连接方法: (1)共阳极接法。
把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接+5V,每个发光二极管的阴极通过电阻与输入端相连。 (2)共阴极接法。
把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地。每个发光二极管的阳极通过电阻与输入端相连。 2.LED显示器驱动方式
LED显示器驱动方式可以分为静态显示驱动和动态显示驱动两种。静态显示驱动一般是通过数字集成电路对所需要显示的字符笔段连续施加电压;而动态显示驱动则是利用矩阵扫描方式间断向所需要显示的字符笔段轮流施加电压。 (1)静态显示驱动
当LED显示器工作于静态显示驱动方式时,不同数位的LED数码管的公共极(共阴极或共阳极)将被连接在一起并接地或+5V,而每个数位的8根笔段线分别和一个8位锁存器相连。不同数位的数码管相互独立,分别用不同的驱动器件进行驱动,它们的显示字符一旦确定,只要不改变显示字符,相应的锁存器的输出就一直不变。
这种驱动方式的优点是编程容易、管理简单、显示亮度高、稳定性好,占用CPU时间较少;其缺点是占用硬件电路和微处理器系统接口资源较多、引线多、印刷版布线复杂、硬件投入成本高。 (2)动态显示驱动
当LED显示器工作于动态显示驱动方式时,通常把不同位数的同名笔段互连起来,共用一个显示驱动器。每一个位数的字符显示都需要靠笔段字型驱动和位数驱动相配合,如果需要在不同数位上显示不同字符,可以依次传送需要显示字符笔段的字型码,接着选通相应数位显示该字符,持续施加一段时间的电压,
- 16 -
然后再显示下一个数位的字符。
动态显示驱动方式的优点是引线少、线路简单、硬件成本相对较低。其缺点是需要不断刷新,当采用软件扫描时,占用CPU的时间较多;当采用硬件扫描时,又会增加硬件成本,LED显示数位越多,显示亮度越低,若处理不好或位太多,将会引起显示闪烁。 3.数据输入接口方式 (1)并行输入
数据并行输入方式是以并行方式传送数据,其优点是传送数据速度快,其缺点是需要占用较多的I/O接口线。 (2)串行输入
数据串行输入方式是以串行方式传送数据,其优点是占用I/O接口资源少,其缺点是传送数据速度相对慢。 4. 七段LED显示器结构与原理
七段显示器由七条发光二极管组成显示字段,这七段发光管分别称为a、b、c、d、e、f、g,有的还带有一个小数点dp。将七段发光管阴极都连在一起,成为共阴极接法,当某个字段的阳极为高电平时,对应的字段就点亮。共阳极接法就是将LED显示器所有阳极并接后连到+5V电源上,当某一字段的阴极为0时,对应的字段就点亮。
通过七段的不同组合控制,可以显示0~9和A~F共16个数字、字母、实现十六进制显示。加在7段阳极上的电压可以用数字量表示,对于共阳极,如果某位为1,则对应段发光;如为零,则不发光。数字量与段的对应关系如下:
D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a 本系统输出显示采用并行输入、共阳极接法的LED数码显示器,并采用了具有一定驱动能力的74LS273集成电路芯片做LED数码管的驱动器。为了节省硬件资源,LED数码管采用动态扫描显示,且字型码由软件产生。
3.4报警电路设计
报警电路采用普通的蜂鸣器,蜂鸣器通常工作电流较大,电路上的TTL电平基本上驱动不了蜂鸣器,需要增加一个三极管来增加通过蜂鸣器的电流,见下面硬件原理图。当温度达到设定的上下限时,通过程序控制使P1.7管脚置低电平,从而使三极管导通,蜂鸣器发出嘀嘟报警音。
- 17 -
3.5键盘控制器设计
为了达到设定温度上下限超温报警值,本系统采用了键盘输入电路。它可以完成温度上下限报警值的设定,它具有设置(SET)、加1(UP)、减1(DOWN)、确定(RET)等功能。硬件原理图中,四个按键开关的设置操作如下: (1)按K1 → 进入温度报警值设置(SET)状态,此时数码管显示温度上限超温报警值(例如:当时是+80°C)。
(2)若想将当前设定值提高,按K2 →进行温度设定值加1(UP)调整(例如:按5次K2报警值变为+85°C)。
(3)若想将当前设定值减少,按K3 →进行温度设定值减1(DOWN)调整(例如:按5次K3报警值变为+75°C)。
(4)按K4→将当前的设定值确认为温度上限报警值,并同时进入温度下限报警设置状态(例如:当时是+10°C)。
(5)若想将当前设定值提高,按K2 →进行温度设定值加1(UP)调整(例如:按3次K2报警值变为+13°C)。
(6)若想将当前设定值减少,按K3 →进行温度设定值减1(DOWN)调整(例如:按3次K3报警值变为+7°C)。
(7)再按K4→将当前的设定值确认为温度下限报警值,并同时退出设定温度报警值状态。
3.6电源设计
本设计用到电源为+5V电源。
图3-9中电路提供+5V的电源;主要用于单片机(AT89C51)、数码管显示与驱动电路(包括74LS273)、传感器与报警器的供电。
图3-9 +5V电源
- 18 -
78XX/79XX系列是常用三端固定电压集成线性稳压器,78XX系列为正电压输出稳压器,79XX为负电压输出稳压器。它们简单易用、价格低廉,广泛应用于各种电子设备。
在降压电路中应注意以下事项:
(1)输入输出压差不能太大,太大则转换效率急速降低,而且容易击穿损坏; (2)输出电流不能太大,1.5A是其极限值。大电流的输出,散热片的尺寸要足够大,否则会导致高温保护或热击穿;
(3)输入输出压差也不能太小,否则效率会很差。
3.7系统硬件连接设计
系统主要硬件设计如图3-11所示,除了以上介绍的AT89C51、DS18B20、数码显示器、报警电路之外还包括晶振、键盘按钮、三极管、电容、电阻等器件。
整个硬件系统主要以DS18B20和AT89C51为主,如图3-10所示,DS18B20把测量的温度转化为数字信号传送给AT89C51,由AT89C51对信号进行判断,并给出相应的信号发送各个元件,各个元件得到AT89C51发送来的不同信号信号后执行各自功能。
DS18B20 温度传感器 把温度转化成数字信号 AT89C51 单片机 判断后传递给其他元件 其他 元件
图3-10 信号传递流程图
- 19 -
D
5V10K111CLRCLKP1.0P1.1P1.2P1.3 2569121516191K1K1K1KK1K2CK3K45V123 P1.689c5174LS273P1.7XTAL274F04XTAL1VSSP2.2P2.1P2.0ALE12DS18B20 vccP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.73478131417181D2D3D4D5D6D7D8D1Q2Q3Q4Q5Q6Q7Q8QBATitle图3-11 硬件设计电路图 - 20 -
12345678DPYaabcfbgdeecdfdpgdp10KBZ12MHZ15P15P12345678DPYaabcfbgdeecdfdpgdp12345678DPYaabcfbgdeecdfdpgdp999QPNP4.7K4.7KQPNP4.7KQPNP5V
第四章 系统软件设计
智能数字式温度测量报警系统软件的应用程序主要包括:DS18B20工作程序、LED显示子程序、键盘输人程序和温度检测报警程序等。
4.1 系统软件总体工作过程
开机后主机首先发一复位脉冲,使信号线上的DS18B20芯片复位,接着发送跳过ROM 操作命令(因为本系统只采用了单只DS18B20温度传感器),准备接收下面的内存访问命令。内存访问命令控制DS18B20的工作状态,完成整个温度转换、读取等工作(单总线在ROM命令发送之前存储命令和控制命令不起作用)。其测温工作的流程图如图4-1所示,在对DS18B20进行操作的整个过程中,主要包括:启动在线DS18B20作温度转换、读取在线DS18B20温度值、将读出的温度值存入寄存器。然后通过寄存器的温度与报警值比较(当温度等于事先设定的上下限温度报警值时,蜂鸣器启动报警)后,调用数码显示器子程序,将温度值显示在数码管上,此时完成一个循环程序后,接着进入到下一个循环程序。
开始 系统初始化 发送跳过ROM指令 更新数码管显示 发送温度转换指令 调用数码显示器子程序 再次初始化DS18B20 N 温度>报警值 报警 发送跳过ROM指令 Y
读出温度值存入寄存器 图4-1 DS18B20测温工作流程图
4.2软件程序
DS18B20的命令集
- 21 -
ROM操作命令
Read ROM Match ROM Skip ROM Search ROM Alarm search 存储器操作命令
Write Scratchpad Read Scratchpad Copy Scratchpad Convert Temperature Recall EPROM Read Power supply
[33H] [55H] [CCH] [F0H] [ECH] [4EH] [BEH] [48H] [44H] [B8H] [B4H]
(读ROM) (匹配ROM) (跳过ROM) (搜索ROM) (告警搜索)
(写暂存存储器) (读暂存存储器) (复制暂存存储器) (温度变换) (重新调出) (读电源)
获取单个ds18B20转化的温度值的应用程序,P1.6接ds18B20
ORG 0000H AJMP MAIN ORG 0020H
MAIN:
MOV SP,#60H
LCALL GET_TEMP SJMP $
GET_TEMP:
CLR PSW.4
SETB PSW.3 ;设置工作寄存器当前所在的区域 CLR EA ;使用DS18B20一定要禁止任何中断产生 LCALL INT ;调用初使化子程序 MOV A,#0CCH LCALL WRITE ;送入跳过ROM命令 MOV A, #44H
LCALL WRITE ;送入温度转换命令 LCALL INT ;温度转换完全,再次初使化ds18B20 MOV A,#0CCH LCALL WRITE ;送入跳过ROM命令 MOV A,#0BEH LCALL WRITE ;送入读温度暂存器命令 LCALL READ MOV R7,A ;读出温度值低字节存入R7 LCALL READ MOV R6,A ;读出温度值高字节存入R6 MOV R7 #0FFH SETB EA
LL: LACALL DISP ;调用动态显示子程序
- 22 -
DJNZ R7,LL
RET
INT:
CLR EA
L0: CLR P1.6
MOV R2,#200 L1: CLR P1.6
DJNZ R2,L1 SETB P1.6 MOV R2,#30 L4: DJNZ R2,L4
CLR C ORL C,P1.6 JC L0 MOV R6,#80 L5: ORL C,P1.6
JC L3
DJNZ R6,L5 SJMP L0
L3: MOV R2,#240 L2: DJNZ R2,L2
RET
WRITE:
CLR EA
MOV R3,#8 WR1: SETB P1.6
MOV R4,#8 RRC A CLR P1.6 WR2: DJNZ R4,WR2
MOV P1.6,C MOV R4,#20 WR3: DJNZ R4,WR3
DJNZ R3,WR1 SETB P1.6 RET
READ:
CLR EA
MOV R6,#8 RE1: CLR P1.6
MOV R4,#4 NOP
SETB P1.6 RE2: DJNZ R4,RE2
;初始化ds18B20子程序
;ds18B20总线为低复位电平
;总线复位电平保持400us ;释放ds18b20总线
;释放ds18B20总线保持60us ;清存在信号
;存在吗?不存在则重新来
;向ds18B20写操作命令子程序
;写入ds18B20的bit数,一个字节8个bit
;把一个字节data(A)分成8个bit环移给 C ;开始写入ds18B20总线要处于复位(低)状态 ;ds18B20总线复位保持16us ;写入一个bit
;等待40us
;写入下一个bit
;重新释放ds18B20总线
;连续读8个bit ;读前总线保持为低
;开始读总线释放 ;持续8us
- 23 -
MOV C,P1.6 RRC A MOV R5,#30 RE3: DJNZ R5,RE3
DJNZ R6,RE1 SETB P1.6 RET END
;从ds18B20总线读得一个bit ;把读得的位值环移给 A
;持续60us ;读下一个bit ;重新释放ds18B20总线
4.3 LED数码显示器显示程序
显示数据在70H-72A单元内。三位LED共阳极数码管显示子程序,P0口
段码数据,P2口作位扫描控制,每个LED数码管亮1ms时间再逐位循环。
DISP: MOV R1,#78 ;取显示数据首址
MOV R5,#0FEH ;位扫描控制字初值
PLAY: MOV A, R5 ;位扫描控制字放入A
ANL P2,A ;从P2口输出 MOV A,@R1 ;取显示数据到A MOV DPTR,#TAB ;取段码表地址 MOVC A,@A+ DPTR ;查显示数据对应码段 MOV P0,A ;段码数据放入P0口 LCALL DL1MS ;显示1ms INC R1 ;显示数据地址加1 MOV A,P2 ;读入P2端口值至A JNB ACC.2,ENDOUT ;P2.2为0时一次显示结束 RL A, ;P2.2不为0,A中数值左移一位 MOV R5,A ;放回R5内暂存 AJMP PLAY ;跳回PLAY循环
ENDOUT: MOV P2,#0FFH ;P2口置一,关显示 MOV P0,#0FFH ;P0口置一,关显示 RET ;子程序返回
TAB: DB C0H,F9H,A4H,B0H,99H,92H,82H,F8H,80H,90H, 共阳代码表 显示数 “0”“1”“2”“3”“4”“5”“6”“7”“8”“9”
- 24 -
第五章 结论
整个系统的设计以单片机为核心,实现对温度的采样、处理及控制。本系统运行稳定、工作精度高,且通过键盘可以方便地进行参数修改,真正达到对温度的智能控制。本设计系统具有投资省,制作方便,修理简便,测温精度高,运行稳定可靠等性能,优于传统的温度控制系统。在设计的过程中,系统加上了功能键的设定,这样就更方便了测量温度的准确性以及使用性。AT89C51单片机体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好。并且本系统因为使用了集成的测温器和控制器受外界的干扰较小,在恶劣的环境下仍然可以准确测量温度,并且根据测量的数字信号对温度进行自动控制。DS18B20虽然具有测温系统简单、测温精度高、连接方便、扩展方便等优点,但在实际应用中应注意较小的硬件开销需要相对复杂的软件进行补偿。由于DS18B20与微处理器采用串行数据传送,因此,在对DS18820进行读写编程时,必须严格地保证读写时序,否则将无法读取测温结果。 在此次设计过程中总结以下经验:
(1)传感器和单片机的结合,可以进行多点测量,多参数测量,有选择性测量,实现自动校正,测量数据自动分析,测量结果自动传输,自动控制,使自动化生产水平得到不断的提高。
(2)有利于新产品的开发,在新产品的开发中,将传感器和单片机结合有利于开发出前所未有的高性能产品。
(3)提高企业的管理水平,传感器和单片机结合使得数据的检测、处理和统计的过程控制更为准确、迅速、合理,使企业的生产技术、产品质量、安全生产、节省人力和降低成本等上一个新的水平。
(4)为技术改造开辟新的领域。随着国民经济的发展,企业除增添新的设备外,还需要将大量的旧设备进行改造。如果把传感器和单片机结合起来在技术改造中得以应用,就会为各种旧设备的更新和智能化开拓出极其广阔的领域。
- 25 -
参考文献
[1] Burton T A.Volterra integral and differential equations [M].New York:Academic Press.1983
[2] Robert W. Sebesta. Concepts of Programming Languages[M]. Pearson Education,2003
[3] Burton T A.Stability and periodic solutions of ordinary and functional differential equations[M].New York:Academic press.1985
[4] 秦永左,冯涛.单片机原理及应用[M].长春:长春理工大学,2003. [5] 孙和平.单片机原理与接口技术[M].北京:冶金工业出版社,2003. [6] 胡汉才.单片机原理及系统设计[M].北京:清华大学出版社,2003.
[7] 张毅刚.MCS-51单片机应用设计[M]. 哈尔滨:哈尔滨工业大学出版社,1997. [8] 张洪润,易涛.单片机应用技术教程[M].第二版. 北京:清华大学出版社,2006. [9] 何立民,余永权,李小青.单片机应用系统的功率接口技术 [M] . 北京:北京
航空航天大学出版社,2000.
[10] 孙传友,孙晓斌.感测技术基础[M].北京:电子工业出版社,2001. [11] 徐文金,张阿卜.智能温度传感器DS18B20在多路测温中的应用[J].现代电子技术,2004.
[12] 江太辉,邓展威.DS18B20数字式温度传感器的特性与应用[J].电子技术,2003.
[13] 于克龙,毕小龙,邱立峻.数字温度传感器DS18B20的应用[J].电子技术与自动化,2004.
[14] 陈跃东.DS18B20集成温度传感器原理与其应用[J].安徽机电学院学报,2002. [15] 杨忠煌,黄博俊主编。单片机8051实务与应用。中国水利水电出版社,2001. [16] 林伸茂.8051单片机彻底研究基础篇 北京:人民邮电出版社 2004.
[17] 张友德.单片微型机原理、应用与实验[M]上海:复旦大学出版社,2006.
- 26 -
致 谢
本课题全部设计都是在代燕老师的实验室完成的。从设计课题的开题报告到最终论文的完成,代老师都给予我极大的帮助,她严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。不仅仅在理论上给予我很多支持,同时还在思想、生活上给我以无微不至的关怀,在此谨向代老师致以诚挚的谢意和崇高的敬意。同时我还要向在我毕业设计期间帮助过我的人表示深深的谢意。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!
- 27 -
因篇幅问题不能全部显示,请点此查看更多更全内容