多点温度巡检系统毕业设计 下载本文

SHANDONGUNIVERSITY OF TECHNOLOGY

毕业设计说明书

多点温度巡检系统设计

学 院: 电气与电子工程学院 专 业: 电子信息工程 学生姓名: 刘晓阳 学 号: 0911043049

指导教师: 王雅静

2013 年 5 月

摘要

摘 要

随着社会的进步和工业技术的发展,人们越来越重视温度因素,许多产品对温度范围要求严格,而目前市场上普遍存在的温度检测仪器大都是单点测量,同时有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。在这样的形式下,开发一种能够同时测量多点,并且实时性高、精度高,能够综合处理多点温度信息的测量系统就很有必要。

本课题以AT89C51单片机系统为核心,能对多点的温度进行实时巡检。DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。本文结合实际使用经验,分别介绍了DS18B20数字温度传感器温度检测电路、键盘输入控制电路、蜂鸣器报警电路和串口通信电路与单片机的硬件连接。通过软件编程实现将检测电路检测到的信号传到数码管电路显示以及可以实现对温度的实时报警,而且通过串口通信电路可以传至上位机实现通信。

关键词: 温度检测 单片机 多点温度巡检

I

Abstract

Abstract

As the industry and the society developing, the temperature becomes more and more important and a lot of products are sensitive to temperature. However, temperature measuring apparatus in the market now only can check and measure the temperature of one point, at the same time, the temperature information is not real time and the precision is low. It takes a great of troubles for the industry-controllers to make decision .In this situation, design and implement one applicable system which can watch measure and control the temperature and the measuring results is real time and the precision is great is more essential. In order to meeting this application, this paper talk about The Multiple-Point’s temperature Measuring System.

This system based on single chip computer, can inspect and control multiple temperatures in real time. As a kind of high-accuracy digital net temperature sensor,DS18 B20 can be used building a sensor net easily. It can also make the net simple and reliable with it's special 1-wire interface .This paper introduces the application of DS18B20 with single chip processor.

Keywords: temperature detection Single chip microcomputer Multipoint temperature checking

II

目录

目 录

摘 要 ............................................................................................................................. I Abstract ........................................................................................................................ II 目 录 ........................................................................................................................... III 第一章 引言 ................................................................................................................. 1

1.1 课题背景......................................................................................................... 1

1.1.1 国外研究背景...................................................................................... 1 1.1.2 国内研究背景...................................................................................... 1 1.1.3 发展方向.............................................................................................. 1 1.2 本课题任务..................................................................................................... 2 1.3 方案选择......................................................................................................... 2

1.3.1 方案一.................................................................................................. 2 1.3.2 方案二.................................................................................................. 3 1.3.3 方案三.................................................................................................. 3 1.4 方案比较......................................................................................................... 4 第二章 硬件电路设计 ................................................................................................. 4

2.1 电源电路......................................................................................................... 5 2.2 单片机电路..................................................................................................... 5 2.2.1 硬件特性..................................................................................................... 6

2.2.2 单片机引脚功能介绍.......................................................................... 6 2.2.3 时钟电路.............................................................................................. 8 2.2.4 复位电路.............................................................................................. 9 2.3 温度采集电路............................................................................................... 10 2.4 显示电路....................................................................................................... 13

2.4.1 数码管................................................................................................ 13 2.4.2 MAX7219串行驱动显示器................................................................. 14 2.5 键盘电路....................................................................................................... 15 2.6 报警电路....................................................................................................... 17 2.7 串行口通信模块........................................................................................... 18

2.7.1 RS232接口简介................................................................................. 18 2.7.2 MAX232简介..................................................................................... 19 2.7.3 串行口通信电路................................................................................ 20

第三章 软件部分 ....................................................................................................... 21

3.1 软件语言和编译工具的选择....................................................................... 21 3.2 软件设计的原则........................................................................................... 22 3.3 软件的实现................................................................................................... 22

3.3.1 传感器程序........................................................................................ 23 3.3.2 显示电路编程.................................................................................... 28 3.3.3 键盘程序设计.................................................................................... 30 3.3.4 报警电路程序.................................................................................... 32 3.3.5 串口通讯程序.................................................................................... 33

第四章 调试与总结 ................................................................................................... 35

III

目录

参考文献 ..................................................................................................................... 36 致谢及声明 ................................................................................................................. 37 附录:整机电路 ......................................................................................................... 38

IV

第一章 引言

第一章 引言

1.1 课题背景

21世纪,科学技术的发展日新月异,科技的进步带动了测量技术的发展。温度时国际单位制七个基本量之一,也是在生产、科研、生活中必不可少的重要的测量和控制的物理量。自18世纪工业革命以来,工业发展对是否能掌握温度有着绝对的联系。在冶金、钢铁、石化、水泥、玻璃、医药等等行业,可以说几乎80%的工业部门都不得不考虑着温度的因素。在我们的日常生活、生产中带来重大影响,因此,对于温度的检测就十分重要。

随着科学技术的发展,对于温度的测量,一般使用各式各样的温度传感器对温度进行采集。因此,温度传感器也成为自动检测、总动控制系统和计量检测系统等不可或缺的器具,且应用遍及各个领域。

1.1.1 国外研究背景

国外对温度检测技术研究较早,始于20世纪70年代。先是采用模拟式的组合仪表,采集现场信息并进行指示、记录和控制,80年代末出现了分布式控制系统,目前正开发和研制计算机数据采集控制系统的多因子综合控制系统。现在世界各国的温度检测技术发展很快,一些国家在实现自动化的基础上正向着完全自动化、无人化的方向发展。

1.1.2 国内研究背景

我国对于温度检测技术的研究较晚,始于20世纪80年代。近年来,我国引进了多达16个国家和地区的工厂环境控制系统,在总体上,正从消化吸收、简单应用阶段向实用化、综合性应用阶段过渡和发展,对推动工厂温度自动检测产生了积极的作用。与此同时,我国的温度测控设施计算机应用以单片机控制的单参数单回路系统居多,尚无真正意义上的多参数综合控制系统。在生产实际中仍然有许多问题困扰着我们,比如环境控制水平落后,软硬件资源不能共享和可靠性差等缺点。与发达国家相比,还存在较大的差距。

1.1.3 发展方向

随着电子技术、计算机技术的飞速发展,对现场温度的测量也由过去的刻度

1 页 第

第一章 引言

温度计、指针温度计向数字显示的智能温度计发展,而且,对测量的精度要求也越来越高。下面来简单介绍一下温度检测的发展趋势。第一,检测范围扩大。现在工业上通用的温度检测范围为-200—3000℃,而今后要求能测超高温与超低温。尤其是液化气体的极低温度检测更为迫切,如10K以下的温度检测是当前重点研究课题。第二,测温对象扩大。温度检测技术将会由点测温发展到线、面,甚至立体的测量。应用范围己经从工业领域延伸到环境保护、家用电器、汽车工业及航天工业领域。第三,新材料及工艺的开发。近来已经开发的炭化硅薄膜热敏电阻温度检测器,厚膜、薄膜铂电阻温度检测器,硅单晶热敏电阻温度检测器等都是新型的温度检测产品。第四,向智能化方向的发展。新型产品不仅要具有检测功能,又要具有判断和指令等多功能,采用微机向智能化方向发展,向机电一体化方向发展。

1.2 本课题任务

本课题灵感来自于日常生产实际中对温度巡检的需要,整个系统由单片机控制,要能够接收传感器的数据并显示出来,可以从键盘输入命令,系统根据命令,选择对应的传感器,并由驱动电路驱动温度显示。设计具有多个测温点检测的温度巡检电路,能够循环数字显示不同的测温点的温度值,对不同的测温点的一定时间内的温度值可以查询并数字显示出来,当温度越限时,能够实现自动报警。温度测量范围为0~100℃,温度测量精度为0.5℃,各测量点温度值显示到0.5℃,时间显示到分钟。

1.3 方案选择

温度测量的方案多种多样,在温度采集方面,大致有传统的分立式传感器、模拟集成传感器以及新兴的智能型传感器。对于控制系统可以采用单片机、ARM、PC等等。

1.3.1 方案一

方案一采用模拟分立元件,如电容、电感或晶体管等非线形元件,实现多点温度的测量及显示,该方案设计电路简单易懂,操作简单,且价格便宜,但采用分立元件分散性大,不便于集成数字化,而且测量误差大。同时也不便于建立通讯机制,不便于同其他主机进行信息交流。

2 页 第

第一章 引言

1.3.2 方案二

方案二采用AT89C51单片机,以其为核心,通过AD590温度传感器采集温度信号,硬件设计成本低,但需多个A/D转换电路,采集的信号为模拟信号,经放大电路放大后,送到A/D转换器转换成数字信号,然后传送到单片机进行处理,如下图。此技术虽已成熟,但A/D转换电路的设计比较繁琐,而且对A/D转换的要求高,处理速度慢,而且使用AD590温度传感器进行温度检测必须对冷端进行温度补偿,以减少误差。总之,此技术相当成熟,但硬件电路设计相对复杂。方案二系统框图如图1-1:

图1-1 方案二系统框图

1.3.3 方案三

此方案采用分布式的思想,由一台上位机(PC计算机),下位机(AT89C51单片机)组成,下位机采用多个DS18B20温度传感器实现对多点温度的多点检测,组成两级分布式的多点温度巡回检测系统。DS18B20检测到的信号直接就是数字信号,无需进行处理,抗干扰性好、设计灵活、方便,而且适合在恶劣的环境下进行现场温度测量。

该系统采用 RS-232串行通讯标准,通过上位机(PC)控制下位机(单片机)进行现场温度采集。温度值既可以送回主控PC进行数据处理,由显示器显示。也可以由下位机单独工作,实时显示当前各点的温度值,对各点进行控制。

本系统可以应用在大型工业及民用常温多点监测场合。如粮食仓储系统、楼

3 页 第

第一章 引言

宇自动化系统、温控制程生产线之温度影像检测、医疗与健诊的温度测试、空调系统的温度检测、石化、机械?等。系统框图如图1-2:

图1-2 方案三系统框图

1.4 方案比较

通过上方几个方案的介绍。基于数字式温度计DS18B20的温度测量仪的硬软件开发过程,DS18B20将温度信号直接转换为数字信号,实现了与单片机的直接接口,从而省去了信号调理电路。该仪器电路简单、功能可靠、测量效率高,很好地弥补了传统温度测量方法的不足。与方案一相比,在功能、性能、可操作性等方面都有较大的提升。而且方案一不便于通信。与方案二相比,硬件电路简单,易于操作,而且直接侧得数字信号,无需再处理,测量较精确,适于在恶劣情况下工作,具有更高的性价比,更大的市场。所以本设计采用第三种方案。

第二章 硬件电路设计

4 页 第

第二章 硬件电路设计

本课题研究的多点测温系统是以单片机和单总线数字温度传感器DS18B20为核心,充分利用单片机优越的内部和外部资源及数字温度传感器DS18B20的优越性能构成一个完备的测温系统,实现对温度的多点测量。整个系统由单片机控制,能够接收传感器的温度数据并显示出来,可以从键盘输入命令,系统根据命令,选择对应的温度传感器,并由驱动电路驱动温度显示。本课题设计了一种合理、可行的单片机监控软件,完成测量和显示的任务。由于单片机具有强大的运算和控制功能,使得整个系统具有模块化、硬件电路简单以及操作方便等优点。

2.1 电源电路

要使单片机工作首先要有电源电路给单片机提供合适的电源。如图2-1:

图2-1 单片机电源电路

先将220V 50Hz的交流电源经变压器降压变为9V的交流电源,然后经过由四个二极管组成的全桥整流电路变为直流电源,经过全桥整流的电源不稳定,需要进行稳压。所以采取集成电路元件三端稳压器LM7805稳压,得到符合要求的5V直流电源。

2.2 单片机电路

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域的广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的32位300M的高速单片机。首先,先系统介绍一下单片机的硬件特性、引脚功能。

5 页 第

第二章 硬件电路设计

2.2.1 硬件特性

1、主流单片机包括CPU、4KB容量的ROM、128 B容量的RAM、 2个16位定时/计数器、4个8位并行口、全双工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。

2、系统结构简单,使用方便,实现模块化;

3、单片机可靠性高,可工作到10^6 ~10^7小时无故障; 4、处理功能强,速度快。

5、低电压,低功耗,便于生产便携式产品 6、控制功能强 7、环境适应能力强。

2.2.2 单片机引脚功能介绍

STC89C51单片机的40个引脚中有2个专用于主电源引脚,2个外接晶振的引脚,4个控制或与其它电源复用的引脚,以及32条输入输出I/O引脚,如图2-2。

下面按引脚功能分为4个部分叙述个引脚的功能。

(1)电源引脚Vcc和Vss Vcc(40脚):接+5V电源正端; Vss(20脚):接+5V电源正端。 (2)外接晶振引脚XTAL1和XTAL2

XTAL1(19脚):接外部石英晶体的一端。在单片机内部,它是一个反相

图2-2 单片机引脚图

放大器的输入端,这个放大器构成采用外部时钟时,对于HMOS单片机,该引脚接地;对于CHOMS单片机,该引脚作为外部振荡信号的输入端。

6 页 第

第二章 硬件电路设计

XTAL2(18脚):接外部晶体的另一端。在单片机内部,接至片内振荡器的反相放大器的输出端。当采用外部时钟时,对于HMOS单片机,该引脚作为外部振荡信号的输入端。对于CHMOS芯片,该引脚悬空不接。

(3)控制信号或与其它电源复用引脚

控制信号或与其它电源复用引脚有RST/VPD、ALE/P、PSEN和EA/VPP等4种形式。

(A)RST/VPD(9脚):RST即为RESET,VPD为备用电源,所以该引脚为单片机的上电复位或掉电保护端。当单片机振荡器工作时,该引脚上出现持续两个机器周期的高电平,就可实现复位操作,使单片机复位到初始状态。

当VCC发生故障,降低到低电平规定值或掉电时,该引脚可接上备用电源VPD(+5V)为内部RAM供电,以保证RAM中的数据不丢失。

(B)ALE/ PROG(30脚):当访问外部存储器时,ALE(允许地址锁存信号)以每机器周期两次的信号输出,用于锁存出现在P0口的低

(C)PSEN(29脚):片外程序存储器读选通输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期PESN两次有效,以通过数据总线口读回指令或常数。当访问外部数据存储器期间,PESN信号将不出现。

(D)EA/Vpp(31脚):EA为访问外部程序储器控制信号,低电平有效。当EA端保持高电平时,单片机访问片内程序存储器4KB(MS—52子系列为8KB)。若超出该范围时,自动转去执行外部程序存储器的程序。当EA端保持低电平时,无论片内有无程序存储器,均只访问外部程序存储器。对于片内含有EPROM的单片机,在EPROM编程期间,该引脚用于接21V的编程电源Vpp。

(4)输入/输出(I/O)引脚P0口、P1口、P2口及P3口

(A).P0口(39脚~22脚):P0.0~P0.7统称为P0口。当不接外部存储器与不扩展I/O接口时,它可作为准双向8位输入/输出接口。当接有外部程序存储器或扩展I/O口时,P0口为地址/数据分时复用口。它分时提供8位双向数据总线。

对于片内含有EPROM的单片机,当EPROM编程时,从P0口输入指令字节,而当检验程序时,则输出指令字节。

(B).P1口(1脚~8脚):P1.0~P1.7统称为P1口,可作为准双向I/O接口使用。对于MCS—52子系列单片机,P1.0和P1.1还有第2功能:P1.0口用作定

7 页 第

第二章 硬件电路设计

时器/计数器2的计数脉冲输入端T2;P1.1用作定时器/计数器2的外部控制端T2EX。对于EPROM编程和进行程序校验时,P0口接收输入的低8位地址。

(C).P2口(21脚~28脚):P2.0~P2.7统称为P2口,一般可作为准双向I/O接口。当接有外部程序存储器或扩展I/O接口且寻址范围超过256个字节时,P2口用于高8位地址总线送出高8位地址。对于EPROM编程和进行程序校验时,P2口接收输入的8位地址。

(D).P3口(10脚~17脚):P3.0~P3.7统称为P3口。它为双功能口,可以作为一般的准双向I/O接口,也可以将每1位用于第2功能,而且P3口的每一条引脚均可独立定义为第1功能的输入输出或第2功能。P3口的第2功能见下表1: 引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第2功能 RXD(串行口输入端0) TXD(串行口输出端) INT0(部中断0请求输入端,低电平有效) INT1(中断1请求输入端,低电平有效) T0(时器/计数器0计数脉冲端) T1(时器/计数器1数脉冲端) WR(部数据存储器写选通信号输出端,低电平有效) RD(部数据存储器读选通信号输出端,低电平有效) 表1 单片机P3.0-P3.7管脚含义 2.2.3 时钟电路

单片机在工作时通常用内部振荡和外部振荡方式对电路提供稳定的时钟信号。在引脚XTAL1和XTAX2外接晶体振荡器,就够成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器并产生振荡时钟脉冲。晶振通常选用6MHZ、12MHZ或24MHZ。内部振荡器方式如下。电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为5-30PF。内部振荡方式所得的时钟信号比较稳定。外部振荡方式是把已有的时钟信号引入单片机内,这种方式适于用于用来使单片机的时钟与外部信号保持一致。本次设计采用了内部震荡的方式。时钟电路如图2-3:

8 页 第

第二章 硬件电路设计 图2-3 时钟电路

2.2.4 复位电路

单片机在工作的时候,总会有自身因素、外界条件或者是编程漏洞和失误造成单片机“死机”或者是“程序飞走”等现象,这就需要对单片机进行复位重启。复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。当89c51单片机的复位引脚RST出现5ms以上的高电平时,单片机就完成了复位操作,如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序,因此要求单片机复位后能脱离复位状态。复位操作通常有上电和开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。单片机的复位操作使单片机进入初始化过程,其中包括是程序计数器PC=0000H,P0-P3=FFH,SP=07H,其他寄存器处于零,程序从0000H地址单元开始执行,单片机复位后不改变片内RAM区中的内容。单片机复位电路如下页图2-4:

9 页 第

第二章 硬件电路设计

2.3 温度采集电路

图2-4 复位电路

DS18B20独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。测温范围 -55℃~+125℃,固有测温误差0.5℃。支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。在使用中不需要任何外围元件,测量结果以9~12位数字量方式串行传送。

DS18B20的三种测温电路: 寄生电源供电方式 在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:在信号线DQ处于高电平期间把能量储存在内部 电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。独特的寄生电源方式有三个好处:进行远

图2-5 寄生电源供电方式 距离测温时,无需本地电源;可以在没有常规电源的条件下读取ROM;电路更加简洁,仅用一根I/O口实现测温。要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由 于每个DS18B20在温度转换期

第 10 页

第二章 硬件电路设计

间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的 能量,会造成无法转换温度或温度误差极大。寄生电源供电方式如图2-5。

因此,寄生电源供电方式只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并 且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。

寄生电源强上拉供电方式 改进的寄生电源供电方式如图2-6。为了使DS18B20在动态转换周期中获得足够的电流供应,当进行温度转换或拷贝到 E2存储器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够的电流,在发出任何涉及到拷贝到E2存储器

图2-6 寄生电源强拉供电方式 或启动温度转换的指令后,必须在最 多10μS内把I/O线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。

DS18B20的外部电源供电方式 在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证 转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空 ,否则不能转换温度,

图2-7 外部电源供电方式 读取的温度总是85℃。外部电源供电方式如图2-7。

第 11 页

第二章 硬件电路设计

外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。站长推荐大家在开发中使用外部电源供电方式,毕竟比寄生电源方式只多接一根VCC引线。在外接电源方式下, 可以充分发挥DS18B20宽电源电压范围的优点,即使电源电压VCC降到3V时,依然能够保证温度量精度。外部供电方式的多点温度电路图如图2-8.

图2-8 外部供电方式的多点测温电路图

本设计采用一线制数字温度传感器DS18B20来作为本课题的温度传感器。主要考虑到以下几个方面:

系统的特性:测温范围为-55℃~+125℃ ,测温精度为士0.5℃;温度转换精度9~12位可变,能够直接将温度转换值以16位二进制数码的方式串行输出;12位精度转换的最大时间为750ms;可以通过数据线供电,具有超低功耗工作方式。

系统成本:由于计算机技术和微电子技术的发展,新型大规模集成电路功能越来越强大,体积越来越小,而价格也越来越低。一支DS18B20的体积与普通三极管相差无几,价格只有十元人民币左右。

系统复杂度:由于DS18B20是单总线器件,微处理器与其接口时仅需占用1个I/O端口且一条总线上可以挂接几十个DS18B20,测温时无需任何外部元件,因此,与模拟传感器相比,可以大大减少接线的数量,降低系统的复杂度,减少电路的复杂程度。

系统的调试和维护:由于引线的减少,使得系统接口大为简化,给系统的调

第 12 页

第二章 硬件电路设计

试带来方便。同时因为DS18B20是全数字元器件,故障率很低,抗干扰性强,因此,减少了系统的日常维护工作。

2.4 显示电路

本设计采用MAX7219驱动6个数码管显示器,组成显示电路。

2.4.1 数码管

按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的

图2-9 数码管

数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。数码管图示如图2-9。

数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。

静态显示驱动

静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。

动态显示驱动

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码

第 13 页

第二章 硬件电路设计

管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。

2.4.2 MAX7219串行驱动显示器

本设计采用MAX7219串行LED驱动显示器,此显示器具有接口简单.占用资源少、控制灵活方便、LED级联扩展便利的优点。MAX7219是串行输出共阴极显示驱动芯片,每片可驱动8个LED,具有级联功能可控制更多的LED 。MAX7219为24引脚芯片,除与LED显示相连的线外,与微控制器只需3根连线相接:芯片端管脚分别为CLK.DIN.LOAD,其中CLK为时钟输入端,DIN为数据输入端,LOAD为锁存信号。MAX7219的工作时序为:时钟的上升沿MAX7219把DIN引脚数据移入内部移位寄存器, 在时钟下降沿MAX7219把数据移向DOUT端, 而LOAD的上升沿则锁存最后移入的16位串行数据。对MAX7219的控制操作很方便,其片内具有8个位寄存器和6个控制寄存器.位寄存器对应LED的具体内容,控制寄存器决定LED的工作方式。控制寄存器分别为:不工作方式寄存器、译码方式寄存器、亮度控制寄存器、

扫描个数寄存器、关闭寄存器.显示测试寄存器.寄存器的操作格式为2字节的串行数据,第一个字节为寄存器地址,第二个字节为控制命令或待显示数据。

寄存器的地址分配及功能如下所示:

不工作寄存器(0x00):用于MAX7219级联控制。 位寄存器(0x01-0x08):8位LED待显示内容。

译码方式寄存器(0x0g):决定译码方式,分B码和不译码两种。 亮度控制寄存器(0x0A):LED段电流控制。 扫描个数寄存器(0x0B):决定显示多少个LED 。

第 14 页

第二章 硬件电路设计

关闭寄存器(0x0C):决定正常工作方式或关闭LED显示。 显示测试寄存器(0x0D):决定正常工作方式或显示测试。

MAX7219是在脉冲控制下工作的,因此其抗干扰就更为重要。一般在其电源和地之间接一十几?f 的电容。另外,当MAX72l9和其他串行芯片共用I/O引脚时,最好在其外边加一上拉电阻。P1口内部有上拉电阻,如不在其外部接上拉电阻,有时出现驱动能力不足的现象。

要用MAX7219控制多于8个的LED时,可以将多个MAX7219级联使用。各芯片的CLK和LOAD端并接在一起。上一级MAX7219的DOUT端接下一级的D 端。级联显示时,如欲控制次级的MAX7219,只需向前几级的MAX7219的不工作方式寄存器送空操作数:本级则送欲显示的数据。另外,需注意,LOAD信号只需执行一次清O和置位,分别在整个过程的始末。即:级联调用WrTwoByte()程序时,应将程序里的LOAD清O和置位语句屏蔽掉。只在级联显示的开始和最后分别将LOAD置O和1。显示电路电路图如图2-10所示:

图2-10 显示电路电路图

2.5 键盘电路

键盘是电子设备常见的输入装置,作为人们与电子设备交流的重要途径,一旦出错,将影响到电子设备的整体使用,所以键盘电路虽然简单,但键盘的稳定性、可靠性,应引起足够的重视。键盘是计算机系统中不可缺少的输入设备。单片机的键盘电路主要有矩阵扫描和单键电路两种,其中以使用Ⅳ +Ⅳ 条l/0 线实现Ⅳ×Ⅳ 的矩阵扫描式键盘电路最为常用,4×4的矩阵扫描式键盘如图所

第 15 页

第二章 硬件电路设计

示。当按键少时可接成线性键盘;当按键较多时,可以将键盘接成矩阵形式,这种形式节省口线。矩阵键盘按键的状态同样需要变成数字量1和0。开关的一端通过电阻接VCC,开关另一段的接地是通过程序输出数字0实现的。矩阵键盘每个按键都有它的行值和列值,行值和列值的组合就是这个这个按键的编码。矩阵行线和列线分别通过两个并行接口和CPU通信,其中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态。由行扫描值和列回馈信号共同形成键编码。

键盘一般采用行列扫描方式来设计。行列扫描是指:把键盘按键排列成n行×m列的n×m行列点阵,使用软件或硬件的方法对其行、列分别进行扫描,从而判断是否有键按下,并获得扫描码。当无键按下时,行线与列线断开,所有列线均为高电平。当有一个键按下时,则与此键对应的行线与列线接通。如此行线为低电平,则此列线也为低电平。为确定是否有键按下,CPU先通过并行输出口使所有的行线为低电平,然后通过并行输入口读入列信号,若为全“1”,则没有键按下,若有一个为“0”,则表示有一个键已按下。若有一个为“0”,则表示有一个键已按下。为消去按下时的抖动现象,程序延迟20ms后再判断具体是哪一个键按下先将第一行置为低电平,然后读入列信号,若有一个为“0”,则按下的键在此行;若为全“1”,则按下的键不在此行,再将下一行置为低电平,并测试列信号。

如果在最后一行也为低电平时仍未找到按下的键,则认为刚才有键按下的情况为误动作。对找到的键,进行分析并处理。当按键时间较为短促时,系统判断不到有键按下。经测试,按键在按下或释放时,通常伴随着几ms到十几ms的触点抖动,然后才能稳定下来。在触点抖动期间检测按键的通断状态,会导致一次按键或释放被错误地认为是多次操作。所以,当检测到有键按下或释放时,应通过软件延时20 ms左右,避开触点抖动的影响。去抖时间既不能太短也不能太长:如果时间太短,无法起到去抖作用;如果时间太长,超过了键按下的持续时间,则会判不到按键。软件去抖时间不宜太短也不宜太长,定为20ms 。本设计使用行列扫描方式,其电路原理图如图2-11所示:

第 16 页

第二章 硬件电路设计

图2-11 键盘电路

本课题使用行列扫描方式,在单片机的P1口上连接上4*4的键盘,单片机扫描键盘,如果有键按下,单片机会根据键码执行相应的程序,使整个系统的功能更加完善。

2.6 报警电路

为了实现多点温度检测报警系统,本课题

AT89C51单片机作为主控制器,采用扫描的方式对多点DS18B20温度传感器获取对应该位置的温度值,经处理后通过串口可以立即发送到上位机,如温度不

在设定的范围内,给出报警信号。如图2-12所示:

第 17 页

图2-12 报警电路 第二章 硬件电路设计

2.7 串行口通信模块

2.7.1 RS232接口简介

RS232是目前异步串行通信中应用最广泛的标准总线,适用于数据中断设备(DTE和数据通信设备(DEC)ELA RS232是目前最常用的串行接口标准,用于计算机与计算机之间,计算机与单片机的数据通信。此标准的目的是定义数据终端设备(DTE)之间的电气特性。RS232提供了单片机与单片机、单片机与PC机之间串行数据通信的标准接口。但RS232规定的逻辑电平与单片机的逻辑电平是不一致的。因此在应用中,必须把微处理器的信号电平(TTL电平)转换为RS232电平,或者对二者进行逆转换。选用电平转换芯片MAX232来实现的。

(1)RS-232通讯协议特性

由于MCS51单片机的串口采用TTL电平,信号幅值低易受干扰,只能在很近的距离内实现通讯.鉴于MCS51单片机串行接口的弱点,在单片机系统串行通讯中广泛采用标准接口.许多仪器仪表出厂时配有串行接口或附件模块销售.在标准串行接口中RS-232由于使用方便、线少而得到广泛地应用,多年来不但没有被淘汰,相反使用更加广泛.RS-232C接口引脚信号定义如表2。

引脚号引脚号(9针) (25针) 1 2 3 4 5 6 7 8 9 8 3 2 20 7 6 4 5 22 信号 DCD RXD TXD DTR GND DSR RTS CTS RI 方向 IN IN OUT OUT IN OUT IN IN 功能 数据载波检测 接收数据 发送数据 数据终端装置(DTE)就绪 信号公共参考地 数据通讯装置(DCE)就绪 请求发送 清除发送 振铃指示 表2 RS-232C接口引脚信号定义

由于PC机串行口使用的是RS- 232C逻辑电平,而AT89C51单片机串行口的输入输出均为TTL电平,因此,当PC机与单片机通信时必须进行电平转换。常见的电平转换方法有以下3种:

第 18 页

第二章 硬件电路设计

①使用MC1488和MC1489电平转换器。由于MC1488和MC1489需要15V或12V供电,所以使用不方便,而且工作稳定性和可靠性也不高。

②使用2个三极管构成准RS- 232C电平转换器。采用此方法串行通信只能工作于半双工状态,而且程序设计复杂。

③使用双向电平转换集成芯片。此方法优点是只需单一个+5V 电源供电,可靠性高,无需增加程序设计的复杂性,常用的芯片有ICL232,MAX232,TSC232等。

本文采用最后一种方法,芯片选用MAX232。

2.7.2 MAX232简介

MAX232芯片是MAXIM 公司生产的,包含两路接收器和驱动器的IC片.MAX232芯片内部有一个电源电压转换器,可以把输入的+5V 电压变换为RS-232输出电平所需的一1O~+ 10V 电压.所以采用此芯片接口串行通信系统只需单一的+5V电源就可以了.对于没有一12~+12V 的场合,其适应性更强.加之其价格适中,硬件接口简单,所以被广泛采用.MAX232芯片的引脚结构如图2-13-1和图2-13-2所示.

图2-13-1 MAX232 组成框图 图2-13-2 MAX232引脚图

图中上半部分电容C1,C2,C3,C4及V+,V-是电源变换电路部分.在实际应用中,器件对电源噪声很敏感,因此VCC必须对地加去耦电容,其值为0.1?F。电容C1,C2,C3,C4取同样数值的胆电解电容取1.0?F/16V。用于提高抗干扰能力,在连接时必须尽量靠近器件.图中下半部分为发送和接收部分.实际应用中,T1IN,T2IN 可直接连接TTL/CMOS电平的MCS51的单片机的串行发送端TXD;R1OUT,R2OUT 可直接连接

第 19 页

第二章 硬件电路设计

TTL/CMOS电平的MCS51的单片机的串行接收端RXD/TXD;T1OUT,T2OUT可直接连接PC机的RS-232串口的接收端RXD/TXD;RIIN,R2IN可直接连接PC机的R 232串口的发送端TXD.

2.7.3 串行口通信电路

在设计硬件接口电路时,应充分考虑到电路的电气特性、逻辑电平以及驱动能力的匹配问题,若匹配得不好,将会导致通信失败。

如前所述,本文采用MAX232作为PC机与单片机的串行通信接口芯片。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图2-14所示。

图2-14 串行口通信电路

第 20 页

第三章 软件部分

第三章 软件部分

3.1 软件语言和编译工具的选择

程序设计语言是实现人机交换信息的最基本工具,可分为机器语言、汇编语言和高级语言。

机器语言用二进制编码表示每一条指令,是计算机能直接识别和执行的语言。用机器语言编写的程序成为机器语言程序或者指令程序(机器码程序)。因为机器只能识别和执行这种机器码程序,所以又称它为目标程序。用机器语言编写程序不易记忆、不易查错、不易修改。

为了克服机器语言的上述缺点,可采用有一定含义的符号,即指令助记符来表示,一般都采用某些有关的英文单词的缩写。这样就出现了另一种程序语言—汇编语言。

汇编语言是用助记符、符号和数字等来表示指令的程序语言,容易理解和记忆,它与机器语言指令是一一对应的。汇编语言不像高级语言(如BASIC)那样通用型强,而是属于某种计算机所独有,与计算机的内部硬件结构密切相关。用汇编语言编写的程序称为汇编语言程序。

以上两种语言都是低级语言。尽管汇编语言有不少优点,但它仍存在着机器语言的某些缺陷:与CPU的硬件结构密切相关,不同的CPU其汇编语言是不同的。这使得汇编语言程序不能移植,使用不便;其次,要使用汇编语言进行程序设计必须了解所使用CPU硬件的结构与性能,对程序设计人员有较高的要求。为此,又出现了对单片机进行编程的高级语言,如PL\\M,C等。

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。

Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。

经分析综合得知,本课题采用C语言进行编程。

第 21 页

第三章 软件部分

3.2 软件设计的原则

在单片机应用开发中代码使用效率、单片机的抗干扰性以及软件可靠性是实际工程设计的重点。

单片机应用软件系统设计包括功能模块划分、程序流程确立、模块接口设计以及程序代码编写。我们依据系统的功能要求,将整体软件系统分割成若干个独立的程序模块。这些程序模块可以是几条语句的集合、功能函数或程序文件。随后,根据个程序模块的实现功能写出流程,一般需要写出具体的实现功能描述。程序代码通常采用汇编语言或高级语言(C语言)编写。

本课题采用C语言编程,在此必须注意以下问题: (1)提高程序代码效率

必须熟悉当前使用的C语言编译器,试验每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道代码效率。

(2)减少程序错误

我们在编写程序时,要注重考虑如下方面。 [1]物理参数 [2]资源参数 [3]应用参数 [4]过程参数 (3)单片机的抗干扰性

防止干扰最有效的方法是去除干扰源、隔离干扰路径。单片机干扰最常见的现象就是复位,导致程序运行异常。设计系统是一般需要添加一个“看门狗”监控模块,在系统出现不可逆转的干扰时,监控模块将重启系统,并从断点处继续执行。

(4)系统的可靠性

[1]要测试单片机软件功能的完善性。 [2]上电、掉电测试。 [3]系统耗损测试。

3.3 软件的实现

系统软件设计主要包括系统程序和流程图,根据整个系统的要求,完成温度的测量与控制必须经过以下几个步骤:单片机接受传感器的温度信号,并通过

第 22 页

第三章 软件部分

MAX7219驱动显示出来,单片机扫描键盘,接受控制信号,并将温度显示出来,若温度不在范围内则发出报警。系统主程序框图如图3-1.

图3-1 系统主程序流程图

3.3.1 传感器程序

(1)DSl8b20编程简介

每一片单总线芯片内部都有一个全球惟一的64 位编码,在多路测温时就是通过匹配每个芯片的ROM编码(ID),来搜寻该路的温度。DS18b20有9个可擦写的内部寄存器,称为便笺式RAM。所有的串行通讯,读写每一个bit位数据都必须严格遵守器件的时序逻辑来编程,同时还必须遵守总线命令序列,对单总线的DS18b20芯片来说,访问每个器件都要遵守下列命令序列:

首先是初始化;其次执行ROM 命令;最后就是执行功能命令(R0M命令和功能命令后面以表格形式给出)。

如果出现序列混乱,则单总线器件不会响应主机。当然,搜索ROM 命令和报警搜索命令,在执行两者中任何一条命令之后,要返回初始化。

基于单总线上的所有传输过程都是以初始化开始的,初始化过程由主机发出的复位脉冲和从机响应的应答脉冲组成。应答脉冲使主机知道,总线上有从机设备,且准备就绪。

第 23 页

第三章 软件部分

每次访问任何单总线器件,必须严格遵守这个命令序列;如果出现序列混乱,则单总线器件不会响应主机。但是这个准则对于搜索ROM命令和报警搜索命令例外,在执行两者中任何一条命令之后,主机不能执行其后的功能命令,必须返回至第一步。在 主 机 发出ROM命令,以访问某个指定的DS18B20,接着就可以发出DS18 B20支持的某个功能命令。这些命令允许主机写人或读出DS18 B20暂存器,启动温度转换以及判断从机的供电方式。

(2)软件实现

前面提及单总线器件的ROM命令,在主机检测到应答脉冲后,就可以发出ROM命令。这些命令与各个从机设备的唯一64位ROM代码相关。允许主机在单总线上连接多个从机设备时,指定操作某个从机设备。这些命令还允许主机能够检测到总线上有多少个从机设备,以及其设备类型或者有没有设备处于报警状态。从机设备可能支持5种ROM命令(实际情况与具体型号有关),每种命令长度为8位。主机在发出功能命令之前,必须发送合适的ROM命令。

搜索ROM[F0h]

当系统初始上电时,主机必须找出总线上所有从机设备的ROM代码,这样主机就能够判断出从机的数目和类型。主机通过重复执行搜索ROM循环(搜索ROM命令跟随着位数据交换)以找出总线上所有的从机设备。如果总线只有一个从机设备,则可以采用读ROM命令来替代搜索ROM命令。在每次执行完搜索ROM循环后,主机必须返回至命令序列的第一步(初始化)。

② 读ROM[33h](仅适合于单节点)

该命令仅适用于总线上只有一个从机设备。它允许主机直接读出从机的64位ROM代码,而无须执行搜索ROM过程。如果该命令用于多节点,系统则必然发生数据冲突,因为每个从机设备都会响应该命令。

③ 匹配ROM[ 55h]

匹配ROM命令跟随64位ROM代码,从而允许主机访问多节点系统中某个指定的从机设备。仅当从机完全匹配64位ROM代码时,才会响应主机随后发出的功能命令。其它设备将处于等待复位脉冲状态。

④ 跳越ROM[CCh](仅适合于单节点)

主机能够采用该命令同时访问总线上的所有从机设备,而无须发出任何ROM代码信息。例如,主机通过在发出跳越ROM命令后跟随转换温度命令[44h],

第 24 页

第三章 软件部分

就可以同时命令总线上所有的DS18B20开始转换温度,这样大大节省了主机的时间。值得注意的是,如果跳越ROM命令跟随的是读暂存器〔BEh]的命令(包括其它读操作命令),则该命令只能应用于单节点系统,否则将由于多个节点都响应该命令而引起数据冲突。

⑤ 报警搜索「ECh](仅少数1一Wire器件支持)

除那些设置了报警标志的从机响应外,该命令的工作方式完全等同于搜索ROM命令。该命令允许主机设备判断那些从机设备发生了报警(如最近的测量温度过高或过低等)。同搜索ROM命令一样,在完成报警搜索循环后,主机必须返回至命令序列的第一步。

DS18B20在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求,只有严格遵守通讯协议才能保证数据传输的正确性和完整性。所有时序均以主机为Master,单总线器件为Slave,每次数据的传输均从主机启动写时序开始,如果要求单总线器件回送数据,则在写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

① DS18B20的复位时序 unsigned char ow_reset(void) { unsigned char presence; }

② DS18B20的读时序

DS18B20的读时序分读0时序和读1时序两个过程。读时序是主机先把单总线拉低,在之后的l5?s内必须释放单总线,以便将数据传输到单总线上。

第 25 页

DQ = 0; delay(36); DQ = 1;

// 将 DQ 线拉低 // 保持

// DQ返回高电平 // 等待存在脉冲 // 获得存在信号 // 等待时间隙结束

// 返回存在信号,0 = 器件存在, 1 = 无器件

delay(5);

presence = DQ; delay(30);

return(presence);

第三章 软件部分

DS18B20完成一个读时序至少需要60?s。

unsigned char read_bit(void) { unsigned char i; }

unsigned char read_byte(void) { }

③ DS18B20的写时序。

DS18B20的写时序也分为写0时序和写1时序两个过程。写0时序和写1

第 26 页

DQ = 0; _nop_(); _nop_(); DQ = 1;

//将DQ 拉低开始读时间隙

// then return high

for (i=0; i<3; i++); // 延时15μs return(DQ);

// 返回 DQ 线上的电平值

unsigned char i; unsigned char value = 0; for (i=0;i<8;i++) { }

return(value);

// 读取字节,每次读取一个字节

if(read_bit()) {

value |= 0x01<

delay(8);

// 然后将其左移

第三章 软件部分

时序的要求不同,写0时,单总线要被拉低至少60?s,保证DS18B20能够在15-45?s之间正确采样I/O总线上的“0”电平。写1时,单总线被拉低,在之后的15?s内必须释放单总线。

void write_bit(char bitval) { μs

}

void write_byte(char val) { }

DS18B20复位后,就可以编程控制读到其内部RAM所采集到的温度值(通

unsigned char i; unsigned char temp; for (i=0; i<8; i++) { } delay(5);

// 写入字节, 每次写入一位 temp = val>>i; temp &= 0x01; write_bit(temp);

DQ = 0; _nop_(); _nop_();

if(bitval==1) DQ =1; delay(8); DQ = 1;

// 如果写1,DQ 返回高电平 // 在时间隙内保持电平值,

// 将DQ 拉低开始写时间隙

// Delay函数每次循环延时13μs,因此delay(8) = 105

第 27 页

第三章 软件部分

过P0.7),并且读取数据时低位在前,高位在后。读出数据后,需判断对应的温度是正值还是负值,当温度值为正值时,直接将二进制数转换为十进制温度值;当温度值为负值时先将二进制补码变为原码,再转换为十进制温度值。DS18B20程序流程图如图3-2。

图3-2 DS18B20程序流程图

3.3.2 显示电路编程

根据系统的要求,单片机不仅要能接收到温度信号,还要将温度信号显示出来,使系统一目了然。对于输入的温度信号的显示是利用MAX7219驱动进行显示的,MAX7219是串行输出共阴极显示驱动芯片,每片可驱动8个LED,此显示器具有接口简单.占用资源少、控制灵活方便等,因此利用MAX7219驱动显示方便,快捷。

首先初始化5个控制寄存器,然后送1~8个显示数据 一旦送完控制字后,下一步按实际需要可以改变1~8个数据显示寄存器的内容,MX7219则按显示亮度等初始化规定与待显示的数据自动扫描显示。

(1)译码寄存器 译码寄存器(

D7~

D0)中数据可初始化为00H、01H、0FH

第 28 页

第三章 软件部分

以及FFH共四种情况,分别表示:对数据显示寄存器中的内容不译码{只对 DIG0译码而对DIG7~DIG1不译码;对DIG3~DIG0译码而对DIG7~DIG4不译码;对DIG7~DIG0均译码。在译码方式时,只对数据显示寄存器中的D3~D0位译码,D6 ~D4位为任意值,D7位控制小数点。当D7 =l时,小数点亮;D7=O时,小数点熄灭。

(2)显示亮度寄存器 其中,DIG7~DIG4位可任意,DIG3~DIG0可选择的范围是0000~l111。DIG3~DIG0的值越大,LED显示器越亮。

(3)扫描范围寄存器 其中,DIG7~DIG3位可任意,而D2D1D0这三位二进制数排列从000到I11,其中000表示只接有DIG0控制的一个LED 显示器,001表示接有由DIG0和DIG1控制的两个LED显示器,由此类推;111则表示DIG0~DIG7均接有一个LED显示器。

(4)关闭寄存器 其中, D7~D1位可以任意; D0=0,关闭所有显示器,D0=0,允许显示。

(5)显示测试寄存器 其中D7~D1位可以任意;D0=0,LED处于正常工作状态,D0=1,LED处于显示测试状态,即LED所有的段全亮。

初始化MAX7219的程序流程如图。按照图送完所有控制寄存器的地址和相应的控制命令之后,再按同样的方法送待显示的数据,每次先送某个LED的地址字节,后送待显示的数据字节。由于控制寄存器和数据显示寄存器全部单独编址,所以在送控制字或送显示数据时,均没有规定其先后顺序。初始化MAX7219的程序流程圈如图3-3.

开始选择码方式的地址字节送扫描范围控制字节选择码方式控制字节送关闭寄存器的地址字节送显示亮度寄存器地址送关闭寄存器的控制字节送显示亮度控制字节送显示测试寄存器的地址字节送扫描范围寄存器的地址字节送显示测试寄存器的控制字节

图3-3 初始化MAX7219的程序流程圈

第 29 页 第三章 软件部分

初始化程序主要部分如下: void InitialMax7219(void) {

unsigned char i; CS0=1; CLK0=0;

WriteToMax7219(0x0F,0x00);

WriteToMax7219(0x0C,0x01);

WriteToMax7219(0x0A ,0x06);

WriteToMax7219(0x09,0xFF) ;

WriteToMax7219(0x0B,0x07) ;

for(i=2;i<9;i++) {

WriteToMax7219(i,ascii[8]); }

WriteToMax7219(0x01,0x0E); }

3.3.3 键盘程序设计

单片机将传感器的温度信号显示以后,要开始扫描键盘,单片机根据键码将键盘输入的控制位移信号显示出来或者是执行其他相应的功能。键盘电路虽然简单,但键盘的稳定性、可靠性,应引起足够的重视。所以,当检测到有键按下或

第 30 页

第三章 软件部分

释放时,应通过软件延时20 ms左右,避开触点抖动的影响。去抖时间既不能太短也不能太长:如果时间太短,无法起到去抖作用;如果时间太长,超过了键按下的持续时间,则会判不到按键。软件去抖时间不宜太短也不宜太长,定为20ms 。

为确定是否有键按下,CPU先通过并行输出口使所有的行线为低电平,然后通过并行输入口读入列信号,若为全“1”,则没有键按下,若有一个为“0”,则表示有一个键已按下。若有一个为“0”,则表示有一个键已按下。为消去按下时的抖动现象,程序延迟20ms后再判断具体是哪一个键按下先将第一行置为低电平,然后读入列信号,若有一个为“0”,则按下的键在此行;若为全“1”,则按下的键不在此行,再将下一行置为低电平,并测试列信号。

根据本课题的系统要求,采用4*4的键盘电路结构,P1.0-P1.3接四条行线,P1.4-P1.7接四条列线,整个系统的功能可以利用16个按键将系统完善化、系统化,对于键盘各键的功能如表3所示:

1 5 9 13 2 6 10 14 3 7 11 循环 4 8 12 查询

表3 键盘按键功能图

如果按下数字0-数字14,表示输入控制温度的信号;本课题设计时只用了四个温度传感器,所以数字键用1~4即可。按下“查询”键开始输入数据按键是告诉单片机系统要开始输入该传感器的温度信号,接着按下显示传感器输入的序号按键,单片机会将保存的传感器序号数据和对应的传感器温度值通过数码管显示出来;按下“循环显示”键盘输入的数据按键,单片机也会将保存的键盘控制循环信号显示出来,即各个传感器的温度值循环显示; 根据键盘电路连接情况,P1.0-P1.3接四条行线,P1.4-P1.7接四条列线,确定按键的键码值。 按键的主要程序段如下:

第 31 页

第三章 软件部分

while(1)

{

temp_key = FindKey(); if (temp_key != 0) {

key = temp_key;

if (key==15) show = 1; if (key==16) show = 0;

}

再定义一个键盘扫描的函数,接受键盘的键码值,根据扫描的键码值单片机转入执行相应的按键功能,显示温度数值。键盘控制流程图如图3-5所示:

确定扫描键码值定义键盘扫描函数 获得键码值执行相应的按 键功能显示键盘输入的数据 图3-5 键盘控制流程图

3.3.4 报警电路程序

本课题采用高温和低温报警,当按下“循环”键后,如果某个传感器的温度

第 32 页

第三章 软件部分

超过或者低于了设定温度,数码管将停止循环,将只显示发出报警的传感器的温度值和该传感器的序列号;当按下“查询”时,在数码管上显示同样的信息。

warning() {int i,j;

for(j=0;j<400;j++) { {sound=1; for(i=0;i<100;i++) sound=0; } } }

3.3.5 串口通讯程序

系统通过串口与上位及通信,可以实时向上位机传送温度值.实物中通过RS232总线与计算机连接。当运行PROTEUS软件时,可以从虚拟终端看到上位机接收到的4个通道的温度值循环.

void SendStr(char *str) { TI = 0; }

串口通讯程序框图如图3-6。

第 33 页

while(*str != 0x00) { SBUF = *str++; }

while(TI == 0); TI = 0;

第三章 软件部分

开始初始化温度上下限初始化串口和采样周期连接下位机,发请求发送命令开始接受N接受到数据否?Y显示出错信息N协议正确?Y数据为温度值?Y数据处理,显示各点温度值N显示传感器出错信息温度超限否?Y显示温度超限信息N返回图3-6 通信程序流程图

第 34 页

第三章 软件部分

第四章 调试与总结

本文利用Proteus与KEIL C51对单片机多点温度测量系统进行了仿真设计.从本文结果可以看出,利用Proteus进行单片机系统的仿真设计可以极大地简化单片机程序在目标硬件上的调试工作,大幅度节省制作电路板的时间,对于提高产品的开发效率、降低开发成本等有重要作用.

硬件电路的简单是以软件的复杂为代价的,所以在程序编写和调试的过程中稍一粗心就会出现错误,包括时间延时不够,设置参数的类型有误,按键子程序放置位置不妥等错误。本程序经过反复的调试修改,虽然能达到预期的基本目标,但是还有很多地方需要完善,如开始仿真时机器会扫描错误代码而使电路报警,报警的同时可以使数码管闪烁,还可以利用剩余的I/O口挂接更多的DS18B20等。

本课题通过分析对比各种不同的温度传感器,选定DS18B20,这种单总线数字温度传感器的通信方式比较独特,软件编写要求的比较新颖,特点突出。用其构建的系统有很多优点:硬件连线简单,省去了使用模拟传感器要进行放大、A/D转换等工作,由于它的级联功能,一条总线可挂接多个传感器测量不同位置的温度,根据DS18B20唯一的序号识别不同传感器在各自位置的温度。

需要注意的是, 在系统安装及工作之前应将主机逐个与DS1820 挂接,以读出其序列号。另外,由于DS1820 单线通信功能是分时完成的,遵循严格的时隙概念,因此, 系统对DS1820 和各种操作必须按协议进行,即:初始化DS1820 (发复位脉冲)—发ROM功能命令—发存储器操作命令—处理数据。现场温度直接以“一线总线”的数字方式传输,每一个自带地址,大大减少了系统的电缆数,提高了系统的稳定性和抗干扰性。

通过调试成型系统发现了DS18B20除了上述优点外,还有一些缺点,如:简单的硬件连接的代价是复杂的软件时序,DS18B20在测量温度的时候,灵敏度不够高,温度快速变化时无法迅速显示出其变化。通过一系列的实验发现:由DS18B20构建的测温小系统适用于环境温度监控,对温度小变化较敏感;不适合应用于要求实时性强、温度跨度大的测温方式。

第 35 页

参考文献

参考文献

1. 王福瑞等编,单片机微机测控系统设计大全,北京航空航天大学出版社,1998、4. 2. 房小翠等编,单片机实用系统设计技术,国防工业出版社,1999、6.

3. 刘培义等编,单片机原理、接口技术应用,中国广播电视出版社,1999、1. 4. 张友德等编,单片微型机原理、应用与实验,复旦大学出版社,1997、12. 5. 李华等,MCS-51系列单片机实用接口技术, 北京航空航天大学出版社. 6. 胡汉才编,单片机原理及接口技术, 清华大学出版社.

7. 王修才等编,单片机接口技术,复旦大学出版社,1995、4.

8. 马家辰.MCS-51单片机原理及接口技术.哈尔滨: 哈尔滨工业大学出版社, 1997 9. 万文略. 单片机原理及应用.重庆: 重庆大学出版社, 2004

10. 郁有文、常健、程继红.传感器原理及工程应用.第二版.西安:西安电子科技大学出版社,2003

11. 余成波,胡新宇,赵勇主编.传感器与自动检测技术.北京:高等教育出版社,2004.2 12. 付家才.单片机测控工程实践技术.北京: 化学工业出版社, 2001 13. 李广弟.单片机基础(修订本).北京:北京航空航天大学出版社, 2001

14. 诸昌铃.LED显示屏系统原理及工程技术.西安:西安电子科技大学出版社,2000.9 15. Astrom, Karl J. (Karl Johan).Computer-controlled systems: theory and design. Beijing: Tsinghua University Press, 2002.2

16. 沈红卫.单片机应用系统设计实例与分析.北京:北京航空航天大学出版社,2003 17. PHILIPS:80C51-Based 8-bit Microcontrollers,1998

第 36 页

致谢及声明

致谢及声明

这次毕业设计的顺利完成,首先我要感谢王雅静老师对我的辅导及帮助,是她的耐心、细心的帮助给予我很大的动力,使我的毕业设计得以顺利完成。王老师对学生既严格要求,又可耐心指导、循循善诱,在繁忙的工作之余还经常关心我的论文进行情况,并且对我在设计中遇到的问题耐心指导,巧妙地激发我的求知欲来促使我对问题进行更深入的研究,使我的独立探索解决问题的能力有了很大的提高。其次,感谢各位舍友在日常生活中对我各方面的照顾,包括学习,生活等等。再次,感谢培养了我大学生活的电气与电子工程学院和我的母校山东理工大学,在这四年中,感谢各位老师对我们的培养,助我们快乐、健康的完成大学生活,我们会将自己的热血奉献给社会需要的每一个地方。

第 37 页

附录:整机电路及程序

附录:整机电路

第 38 页