您的当前位置:首页正文

本科毕业设计——基于单片机的数字温度计设计

2020-02-29 来源:意榕旅游网


本科毕业设计(论文)

题目: 基于单片机的测温系统设计

教学单位: 专 业: 学 号: 姓 名: 指导教师:

2013年 4月

摘要

温度与人们的生活环境息息相关,所以温度测量常被关注,研究温度测量方法和装置显得尤为重要。采用单片机对温度进行控制,不仅电路简单,控制方便,更重要的是采集数据更为准确,很好的满足了生活中的许多要求。本设计以AT89S52单片机为核心部件,外加温度采集电路、显示电路和越限报警等电路。采用单总线型数字式的温度传感器DS18B20,使系统具有测温误差小、分辨率高、抗干扰能力强等特点。本设计既可以对当前温度进行检测又可以对温度进行数码显示,采用四位数码管显示方式具有高的显示精度,若超越极限温度则触发蜂鸣器报警。利用功能强大的Keil软件和DXP进行程序的编写和原理图绘制。 关键词:测温 AT89S52 DS18B20 报警

I

Abstract

Temperature is closely related to people's living environment, so the temperature measurement is often the attented, the temperature measurement method and the device is particularly important. temperature controlling by single chip microcomputer , not only the circuit is simple , but also can you control conveniently, collect data more accurately so that to meet the many demands in life. The core components of this design is AT89S52 , plus with the temperature acquisition circuit, display circuit and out-of-limit alarm circuit etc. With one main line digital temperature sensor DS18B20, the system has a temperature measurement error is small, high resolution, strong anti-interference ability, etc. This design can either to test the current temperature and the temperature digital display, using four digital tube display method has high precision, if beyond the limit temperature is triggered buzzer alarm. Using the powerful Keil software and DXP the preparation of the program and schematic drawing.

Keywords: temperature;measuring;AT89S52;DS18B20;alarm

II

目录

第1章 绪论 ............................................................................................................................................. 1

1.1 选题背景 .................................................................................................................................. 1 1.2 研究意义 .................................................................................................................................. 1 1.3 国内外相关研究情况 .............................................................................................................. 2 1.4 本文研究的主要内容 .............................................................................................................. 2 1.5 重点、难点及研究的方法 ...................................................................................................... 2

1.5.1 重点 ............................................................................................................................... 2 1.5.2 难点 ............................................................................................................................... 2 1.5.3 研究方法 ....................................................................................................................... 3

第2章 总体设计方案 ............................................................................................................................. 3

2.1 设计方案 .................................................................................................................................. 3

2.1.1 方案一 ........................................................................................................................... 3 2.1.2 方案二 ........................................................................................................................... 3 2.2 系统的组成与工作原理 .......................................................................................................... 4 第3章 系统硬件设计 ............................................................................................................................. 4

3.1 系统硬件电路的构成及测量原理 .......................................................................................... 4

3.1.1 系统硬件电路构成 ....................................................................................................... 4 3.1.2 系统工作原理 ............................................................................................................... 5 3.2 单片机AT89S52 ..................................................................................................................... 6

3.2.1 单片机功能特性概述 ................................................................................................... 6 3.2.2 AT89S52引脚功能介绍 ............................................................................................... 6 3.3 单片机的最小系统 .................................................................................................................. 8

3.3.1 晶振电路 ....................................................................................................................... 9 3.3.2 复位电路 ..................................................................................................................... 10 3.4 测温电路设计 ........................................................................................................................ 10 3.5 显示电路的设计 .................................................................................................................... 11

3.5.1 四位一体数码管简介 ................................................................................................. 11 3.5.2 四位一体数码管共阴阳极的区分方法 ..................................................................... 12

III

3.5.3 四位一体数码管的驱动方式 ..................................................................................... 12

3.5.3.1 静态驱动也称直流驱动 .................................................................................. 12 3.5.3.2 动态驱动方式 .................................................................................................. 13 3.5.4 应用74LS164驱动数码管 ........................................................................................ 13 3.6 闪光灯设计 ............................................................................................................................ 14 3.7 报警电路 ................................................................................................................................ 14 第4章 系统软件的设计 ....................................................................................................................... 15

4.1 系统的总体设计思路 ............................................................................................................ 15 4.2 系统的程序设计 .................................................................................................................... 15

4.2.1 主程序 ......................................................................................................................... 15 4.2.2 系统主流程图 ............................................................................................................. 16 4.3 系统开发环境 ........................................................................................................................ 18 结论......................................................................................................................................................... 19 参考文献 ................................................................................................................................................. 20 附录......................................................................................................................................................... 21

IV

西京学院本科毕业设计(论文)

第1章 绪论

1.1 选题背景

自动控制系统在各个领域尤其是工业领域中有着及其广泛的应用,温度控制是控制系统中最为常见的控制类型之一。随着单片机技术的飞速发展,通过单片机对被控对象进行控制日益成为今后自动控制领域的一个重要发展方向。温度的测量在储粮仓库、智能楼宇空调控制及其它的工农业生产和科学研究中应用广泛。而温度的测量需要温度传感器实现,至今温度传感器的发展经历了三个发展阶段:传统的分立式温度传感器、模拟集成温度传感器及目前的智能集成温度传感器。传统的温度检测是使用诸如热电偶、热电阻、半导体PN结之类的模拟传感器,经信号取样电路、放大电路和模数转换电路处理,获取表示温度值的数字信号,再交由微处理器或DSP处理。因为检测环境复杂,测量点多,信号传输距离远及各种干扰的影响,使得传统测量系统的稳定性和可靠性下降。智能温度传感器是在20世纪90 年代中期问世的,它是微电子技术、计算机技术和自动测试技术的结晶,特点是能输出温度数据及相关的温度控制量,适配各种各样的微控制器。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展。

1.2 研究意义

温度是一个非常重要的物理量,因为它直接影响燃烧、化学反应、发酵、烘烤、煅烧、蒸馏、浓度、挤压成形、结晶以及空气流动等物理和化学过程。温度控制失误可能引起生产安全、产品质量、产品产量等一系列问题,因此对温度检测的意义就越来越大。现代电子工业的飞速发展对自动测试的要求越来越高,采用单片机对温度进行控制,不仅具有控制方便和组态简单的优点,而且可以提高被控温度的技术指标。针对以上情况,在控制成本的前提下,通过本设计设计一款能够实时检测

1

西京学院本科毕业设计(论文) 温度,又具有对系统设定不同温度的温度测量系统功能。

1.3 国内外相关研究情况

现在工业上通用的温度检测范围为---200-3000C,而今后要求能测量超高温与超低温。尤其是液化气体的低温度检测更为迫切,如1OK以下的温度检测是当前重点研究课题。温度检测技术将会由点测温发展到线、面,甚至立体的测量。应用范围己经从工业领域延伸到环境保护、家用电器、汽车工业及航天工业领域。利用以前的检测技术生产出适应于不同场合、不同工况要求的新型产品,以满足用户需要。同时利用新的检测技术制造出新的产品。对许多场合中的温度检测器有特殊要求,如防硫、防爆、耐磨等性能要求;又如移动物体和高速旋转物体的测温、钢水的连续测温、火焰温度检测等。温度仪表向数字化方向发展。其最大优点是直观、无读数误差、分辨率高、测量误差小,因而有广阔的销售市场。

1.4 本文研究的主要内容

采用的新型智能化温度传感器DS18B20,能以数字形式直接输出被测温度值,具有测温误差小、分辨率高、抗干扰能力强、成本低,是研制和开发具有高性价比的新一代温度检测系统的核心器件。运用了单片机AT89S52,片内含8Kbytes的可反复擦写的。兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元等强大功能。采用4位共阳LED动态显示方式。主要采用了手动复位操作。

1.5 重点、难点及研究的方法

1.5.1 重点

本设计重在于对温度传感器(DS18B20)经单片机读写向led显示的结果。 1.5.2 难点

在DS1820测温程序设计中,向DS1820发出温度转换命令后,程序总要等待DS1820的返回信号,一旦DS1820接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。

2

西京学院本科毕业设计(论文) 1.5.3 研究方法

软件环境:单片机程序开发环境采用 Keil uVision3,开发语言是Keil C51。主要选择的硬件模块:单片机AT89S52,DS18B20温度采集模块,数码管显示模块,闪光灯模块,报警模块。

第2章 总体设计方案

2.1 设计方案

2.1.1 方案一

采用数字温度芯片DS18B20测量温度,输出信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。且该芯片的物理化学性很稳定,它能用做工业测温元件,此元件线形较好。在0到100摄氏度时,最大线形偏差小于1摄氏度。DS18B20的最大特点之一采用了单总线的数据传输,由数字温度计DS18B20和微控制器AT89S52构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多DS18B20控制工作,还可以与PC机通信上传数据,另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。该系统利用AT89S52芯片控制温度传感器DS18B20进行实时温度检测并显示,能够实现快速测量环境温度,并可以根据需要设定上限报警温度。 2.1.2 方案二

由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。

从以上两种方案,很容易看出,采用方案一,电路比较简单,软件设计也比较

3

西京学院本科毕业设计(论文) 简单,故采用了方案一。

2.2 系统的组成与工作原理

以单片机为控制核心,采用温度测量技术,以温度传感器作为测量元件,构成温度测量系统。该系统可分为温度测量电路以及显示电路,见图2.1。选用的主要器件有:单片机AT89S52,温度传感器DS18B20,共阳极数码管,蜂鸣器,显示灯等。

数据 采集 AT89S52 单片机 数据处 理实现

图2.1 硬件结构图

本系统以单片机AT89S52为核心,数据采集、显示都要通过单片机。数据采集通过单总线的温度传感器DS18B20完成;由共阳极数码管实时显示接收的数值;当温度超过设定最高时蜂鸣器发出报警,并且闪光灯一直闪直到温度低于设定值。

第3章 系统硬件设计

3.1 系统硬件电路的构成及测量原理

由于系统要对环境温度进行测量,因此采用单片机对单总线系统进行现场监控是非常经济实惠的方案,其硬件连接非常简单,可用单片机并口P1、P2、P3中的任一端口与单总线来实现双向数据传输。 3.1.1 系统硬件电路构成

本系统以单片机为核心,组成一个温度的采集、显示、存储为一身的闭环系统,其总原理框图如图3.1所示。温度传感器采集温度信号,温度传感器有模拟输出和数字输出传感器两种形式,这里选用具有数字输出的DS18B20;单片机是系统的核心,

4

西京学院本科毕业设计(论文) 选用AT89S52;系统采用共阳极数码管显示温度值;用74LS164来驱动数码管。

整个电路图的结构是比较简单的:直接使用AT89S52单片机、温度传器DS18B20、共阳极数码管、闪光灯、蜂鸣器、驱动74LS164构成。

由于AT89系列单片机与MCS-51系列单片机兼容。所以,本系统中的单片机选用AT89S52。整个电路图的关键是AT89S52的P0口接上一组排阻。AT89S52单片机的几个端口,P0作为地址数据总线时,T1和T2是一起工作的,构成推挽结构。高电平时,T1打开,T2截止;低电平时,T1截止,T2打开。这种情况下不用外接上拉电阻。当T1打开,T2截止,输出高电平的时候,因为内部电源直接通过T1输出到P0口线上,因此驱动能力(电流)可以很大,可以驱动8个TTL负载。

温度传感器的作用是采集环境温度。由于智能温度传感器DS18B20既能对温度进行测量,又能把温度的二进制值转换成十进制值,所以本设计选用智能温度传感器DS18B20。传感器和数字转换电路都被集成在一起,每个DS18B20都具有唯一的64位序列号,由于该温度计采用数字输出形式,故不需要A/D转换器。单片机主要是对温度传感器DS18B20进行编程,读取温度传感器的温度值,并把温度值通过显示器显示出来。

DS18B20传感器 LED显示电路 晶体振荡电路 AT89S52 报警电路

复位电路 图3.1 系统设计总框图

闪光灯电路 3.1.2 系统工作原理

采用单总线技术设计的温度测量系统,整个系统以AT89S52单片机为主机,其它设备为从设备。本系统通过单总线可以挂接很多个智能温度传感器DS18B20,用于不同地方的温度测量。

该温度测量系统的工作原理就是进行单片机编程,是智能温度传感器DS18B20正常工作,去测量外界环境的实际温度,使用74LS164来驱动,并由数字显示电路显示当时的温度值。

5

西京学院本科毕业设计(论文) 3.2 单片机AT89S52

3.2.1 单片机功能特性概述

本系统采用AT89S52单片机作为微处理器。AT89S52是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4kbytes的可编程的Flash只读程序存储器,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP),也可用传统方法进行编程,所以低价位AT89S52单片机可为提供许多高性价比的应用场合,可灵活应用于各种控制领域,对于简单的测温系统已经足够。单片机AT89S52具有低电压供电和体积小等特点。AT89S52提供以下标准功能:4k字节Flash闪速存储器、128字节内部RAM、32个I/O口线、两个16位定时/计数器、1个5向量两级中断结构、一个全双工串行通信口、片内振荡器及时钟电路,同时,AT89S52可降至0Hz的静态逻辑操作并支持两种软件可选的节电工作模式;空闲方式停止CPU的工作,但允许RAM、定时/计数器、串行通信口及中断系统继续工作;掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作一直到下个硬件复位。

3.2.2 AT89S52引脚功能介绍

AT89S52的引脚排列如图3.2所示。下面简要介绍本次设计需要用到的引脚的功能。

图3.2 AT89S52原理图

6

西京学院本科毕业设计(论文) AT89S52单片机为40引脚双列直插式封装。

●VCC:供电电压。 ●GND:接地。

●P0口:P0口为一个8位漏级开路双向I/O口,每个管脚可吸收8TTL门电流。当P1口的管脚写“1”时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FLASH编程时,P0口作为原码输入口,当FLASH进行校验时,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口也可作为AT89S52的一些特殊功能口: 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 (外部数据存储器读选通)

●RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时

7

西京学院本科毕业设计(论文) 间。

●ALE:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 ●PSEN:外部程序存储器的选通信号。在由外部程序存储器取址期间,每个机器周期PSEN两次有效。但在访问外部数据存储器时,这两次有效的PSEN信号将不出现。 ●EA/VPP:当EA保持低电平时,访问外部ROM;注意加密方式1时,EA将内部锁定为RESET;当EA端保持高电平时。

●XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 ●XTAL2:来自反向振荡器的输出。

3.3 单片机的最小系统

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路. 单片机最小系统如图3.4所示,其中有4个双向的8位并行I/O端口,分别记作P0、P1、P2、P3,都可用于数据的输入和输出,P3口具有第二功能为系统提供一些控制信号。时钟电路用于产生C51单片机工作所必须的时钟控制信号,内部电路在时钟信号的控制在下,严格地按照时序指令工作。C51内部有一个用于构成振荡器的高增益反向放大器,该高增益反向放大器的输入端为芯片的引脚XTAL1,输出端为XTAL2。这两个引脚跨接石英晶体振荡器和微调电容,就构成了一个稳定的自激振荡器。电路中的微调电容通常选择为30pF,该电容的大小会影响到振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体的振荡频率为12MHz。

把EA脚接高电平,单片机访问片内程序存储器,但在PC值超过0FFFH(8Kbyte地址范围)时,将自动转向执行外部程序存储器内的程序。

如图3.3是51系列单片机的最小系统电路图。

8

西京学院本科毕业设计(论文)

图3.3 最小系统原理图

3.3.1 晶振电路

单片机内由反相放大器所构成的时钟振荡电路,XATL1和XATL2分别为振荡电路的输入端和输出端。本系统采用内部方式,XATL1和XATL2引脚上外接定时元件。采用12MHz的石英晶体和两个30pF电容C1和C2组成的并联谐振回路,内部振荡电路就产生自激振荡,产生一定的时钟信号送到单片机内部的各个单元。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调如图3.4是晶振电路图。

图3.4 晶振电路原理图

9

西京学院本科毕业设计(论文) 3.3.2 复位电路

系统的复位电路如图3.5所示,在RET输入端出现高电平时实现复位和初始化。在振荡器运行的情况下,实现复位操作,必须使RET引脚至少保持两个机器周期的高电平。CPU在第二个周期内执行内部复位操作,以后每一个周期重复一次,直至RET端电平变低。复位器件不产生ALE及PSEN信号。当RET引脚返回低电平后,CPU从0地址开始执行程序。

本设计采用开关复位电路,使用方便,当开关S1按下时,温度复位。这样就不用再重启单片机电源就可以实现复位。

图3.5 复位电路原理图

3.4 测温电路设计

由于传统的热敏电阻等测温元件测出的一般都是电压,再转换成对应的温度,需要比较多的外部元件支持,且硬件电路复杂,制作成本相对较高。这里采用DALLAS公司的数字温度传感器DS18B20作为测温元件。DS18B20是一种改进型智能温度传感器,全部传感器件及转换电路集成在形如三极管的集成电路中,可以满足-55摄氏度到+125摄氏度范围的温度测量,且测量精确,可以在一秒内把温度转化成数字,测得的温度值储存在两个八位的RAM中,单片机可以直接从中读出数据并且转换成十进制温度值,大大提高了系统的抗干扰性,适合恶劣的环境的现场测温。其温度检测电路图如图原理中所示。

DS18B20管脚1 GND接地,管脚2 DQ为数字信号输入输出端,接到AT89S52的P3.6端,管脚3GND接电源。DSl8B20数字温度计提供9位(二进制)温度读数指示器件的温度信息经过单线接口送入DSl8B20或从DSl8B20送出因此从主机CPU到DSl8B20仅需一条线(和地线)DSl8B20的电源可以由数据线本身提供而不需要外部

10

西京学院本科毕业设计(论文) 电源因为每一个DSl8B20在出厂时已经给定了唯一的序号因此任意多个DSl8B20可以存放在同一条单线总线上这允许在许多不同的地方放置温度敏感器件DSl8B20的测量范围从-55到+125增量值为0.5可在1秒(典型值)内把温度变换成数字,每一个DSl8B20包括一个唯一的64位长的序号该序号值存放在DSl8B20内部的ROM(只读存贮器)中开始8位是产品类型编码(DSl8B20编码均为10H)接着的48位是每个器件唯一的序号最后8位是前面56位的CRC(循环冗余校验)码DSl8B20中还有用于贮存测得的温度值的两8位存贮器RAM编号为0号和1号,1号存贮器存放温度值的符号如果温度为负,则1号存贮器8位全为1否则全为00号存贮器用于存放温度值的补码LSB(最低位)的1表示0.52(-550125)DSl8B20的引脚如图3.6所示每只DS1820都可以设置成两种供电方式即数据总线供电方式和外部供电方式采取数据总线供电方式可以节省一根导线但完成温度测量的时间较长采取外部供电方式则多用一根导线但测量速度较快。

图3.6 DS18B20原理图

3.5 显示电路的设计

在本设计中我们采用动态显示方式驱动LED数码管工作,本设计应用四位一体数码管,电路结构简单,并且可以实现单片机I/O口的并用,显示效果直观,明亮,调试容易,成本较低。 3.5.1 四位一体数码管简介

四位数码管是一种半导体发光器件,其基本单元是发光二极管。能显示4个数码管叫四位数码管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按发光二极管单元连接方式

11

西京学院本科毕业设计(论文) 分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。如图3.7为四位一体数码管原理图,a、b、c、d、e、f、g、h为段引脚,com1、com2、com3、com4分别代表四个数码管的位。

图3.7 为四位一体数码管原理图

3.5.2 四位一体数码管共阴阳极的区分方法

首先数码管有共阴极和共阳极之分,区别他们的方法是若公共端接地,其它端接电源,若各段测试能亮,说明是共阴的,反之共阳的;若公共端接电源,其他端分别接的,测得各端亮,则说明是共阳的,反之为共阴的。本设计采用的是四位一体共阳数码管。

3.5.3 四位一体数码管的驱动方式 3.5.3.1 静态驱动也称直流驱动

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

12

西京学院本科毕业设计(论文) 3.5.3.2 动态驱动方式

数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“a、b、c、d、e、f、g、h”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。 3.5.4 应用74LS164驱动数码管

74LS164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端(A或B)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟 (CLK) 每次由低变高时,数据右移一位,输入到 Q0,Q0是两个数据输入端(A和B)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。主复位(CLR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。如图3.8为74LS164原理图。

图3.8 74LS164原理图

13

西京学院本科毕业设计(论文) 3.6 闪光灯设计

发光二极管正极与一个限流电阻串联,电阻另一端连接电源电压,发光二极管负极连接单片机P1.x口,当P1.x口为低电平时二极管导通发光,当P1.x口为高电平是不发光,通过程序控制P1.x为0或1来控制发光二极管的亮灭。如3.9闪光灯原理图。

图3.9 闪光灯原理图

3.7 报警电路

本设计采软件处理报警,利用有源蜂鸣器进行报警输出,采用直流供电。当所测温度超过所预设的温度时,数据口相应拉高电平,报警输出。(也可采用发光二级管报警电路,如过需要报警,则只需将相应位置1,当参数判断完毕后,再看报警模型单元ALARM 的内容是否与预设一样,如不一样,则报警)报警电路硬件连接如图3.10。

图3.10 报警原理图

14

西京学院本科毕业设计(论文)

第4章 系统软件的设计

4.1 系统的总体设计思路

整个系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。从软件的功能不同可分为两大类:一是监控软件(主程序),它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。二是执行软件(子程序),它是用来完成各种实质性的功能如测量、计算、显示、报警等。每一个执行软件也就是一个小的功能执行模块。在子程序设计中,要求系统结构清晰,尽可能地保证单入口单出口,减少与其他程序之间的耦合,但为了提高这类滞后对象的实时性指标,可以在个程序适当的部分进行揉合。在正常执行温度转换时,同样需要调用一段延时,而本系统利用CPU执行显示子程序占有的时间代替这段延时。总之,系统设计时要协调这种时间滞后,使系统满足实时性要求。

本系统采用AT89S52作为核心处理器件,把经过DS18B20现场温度数据存入AT89S52的内部数据存储器,判断是否为正温度。如果为负温度,数码管则直接显示当前温度,如果是正温度,那么读取温度值并进行温度值的转换,并与预先设定的温度值进行比较,比预先设定的温度值大就报警,数码管显示当前温度。进行温度控制程序的设计应考虑一下几个问题:实时采集温度,温度显示中采用4位LED显示当前温度,超过上限温度报警并闪光灯闪烁。

4.2 系统的程序设计

本系统主程序主要包括两个子程序,分别为读出温度子程序,温度数据处理子程序。 4.2.1 主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样可以在一秒之内测量一次被测温度,其程序流程见图4.1所示。

15

西京学院本科毕业设计(论文) 开始 初始化 4.2.2 系统主流程图

DS18B20感应温度 单片机读取 显示温度

图4.1 主程序流程图

16

西京学院本科毕业设计(论文) 开始 初始化 N 是否为正温度 Y 读取温度值 读取温度值 数码管显示 温度值转换 Y 是否大于报警温度值 N Y 蜂鸣器 报警 闪光灯 闪烁 蜂鸣器不报警 数码管显示 返回 图4.2 系统主流程图

17

西京学院本科毕业设计(论文) 4.3 系统开发环境

本系统开发环境使用的是KeilSoftware公司推出的uVision3是一款可用于多种8051MCU的集成开发环境(IDE),该IDE同时也是PK51及其它开发套件的一个重要组件。除增加了源代码、功能导航器、模板编辑以及改进的搜索功能外,uVision3还提供了一个配置向导功能,加速了启动代码和配置文件的生成。此外其内置的仿真器可模拟目标MCU,包括指令集、片上外围设备及外部信号等。uVision3提供逻辑分析器,可监控基于MCUI/O引脚和外设状态变化下的程序变量。如图4.3是keil 开发界面图。

图4.3 keil开发界面图

18

西京学院本科毕业设计(论文)

结论

经过了四年的学习,我终于完成基于单片机的测温系统设计的论文。从开始接触到论文题目到系统的实现,再到论文文章的完成,每走一步对我来说都是新的尝试与挑战,这也是我在大学期间独立完成的最大的项目。在这段时间里,我学到了很多知识也有很多感受,由于自己本来就运用过DXP等相关软件进行过课程设计,所以只要搞清楚了测温的需求和构成,画出电路图便轻车熟路。于是我便开始了独立的学习和试验,查看相关的资料和书籍,找到一些书中单片机测温度的实例进行参考,使自己非常稚嫩作品一步一步完善起来,每一次改进都是我学习的收获,每一次试验的成功都会让我兴奋好一段时间。从中我也充分认识到了电子产品给我们生活带来的乐趣。

我很珍惜这次的机会,用心的去完成每个步骤,努力去达到所要得到的理想效果,作品完成了,我感觉到自己从课本上学到的理论知识和实践仍有很大的差别,很多元器件根本不知道有什么功效。有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了。我遇到了不少问题,花费了很多的时间。这让我重新反思我们的学习,深刻领悟到我们这个专业动手,实践的重要性。我们各方面的能力都上了一层,包括焊接、编程、画图等等。这些课程能促进我的进步,能够使我对学习本专业增加信心,锻炼了我们各方面的能力。这次的课程设计,让我学到了很多书本上学不到的东西,学到了实际应用时,是取用成本的最小化,做设计不仅要考虑大的方面,小的方面也必须做到。

19

西京学院本科毕业设计(论文)

参考文献

[1] 丁元杰.单片微机原理及应用[M].北京:机械工业出版社,2003.

[2] 沈德金,陈粤初.单片机接口电路与应用程序实例[M]. 北京:北京航天航空大学出版社,1990.

[3] 马忠梅.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2003. [4] 高峰.单片微型计算机与接口技术[M].北京:科学出版社,2003. [5] 李广弟.单片机基础[M].北京:北京航空航天大学出版社,1994. [6] 阎石.数字电子技术基础(第三版)[M]. 北京:高等教育出版社,1989. [7] 陈丽芳.单片机原理与控制技术[M].江苏:东南大学出版社,2003.

[8] 黄宇飞,吴江.单片机单总线技术[J].单片机与嵌入式系统应用,2001,12(1):32-36. [9] 胡振宇,刘鲁源,杜振辉.DS18B20接口的C语言程序设计[J].单片机与嵌入式系统应用,2002,51(3):43-47.

[10] 赵娜,赵刚,于珍珠.基于51单片机的温度测量系统[J].微计算机信息,2007,1(2):146-148.

[11] Katsuhiko Ogata.Moden Control Engineering[M].Publishing house of electronics industry,2000.

[12] G Jiang M Zhang, X Xie, S Li.Application on temperature control of DS18B20[J].Control Engineering of China, 2003.

20

西京学院本科毕业设计(论文)

附录

设计原理图

21

西京学院本科毕业设计(论文)

设计编程

#include #include \"intrins.h\" #define uchar unsigned char #define uint unsigned int

unsigned char SZ[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar data temp_data[2]={0x00,0x00};

uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; uchar aa,bb,i,j;

sbit D1=P1^0;sbit D2=P1^1; sbit D3=P1^2;sbit D4=P1^3; sbit D5=P1^4;sbit D6=P1^5; sbit D7=P1^6;sbit D8=P1^7; sbit CLK=P2^0;sbit AB=P2^1;

sbit COM1=P2^2;sbit COM2=P2^3; sbit COM3=P2^4;sbit COM4=P2^5;

sbit sound=P3^1; sbit DQ=P3^6; void delay1() {

unsigned char i,j,k; for(i=1;i>0;i--) for(j=10;j>0;j--) for(k=240;k>0;k--); }

void delayms(uint xms) {

uint i,j;

for(i=xms;i>0;i--){ for(j=110;j>0;j--) {

} } }

void senddata(unsigned char num) {

unsigned char c; for(c=0;c<8;c++) { CLK=0;

22

西京学院本科毕业设计(论文) AB=num&0x01; num>>=1; CLK=1; } }

void delay(uint t) {

for (;t>0;t--); }

void ow_reset(void) {

char presence=1; while(presence) {

while(presence) {

DQ=1;_nop_();_nop_();//从高拉倒低

DQ=0; delay(55); //550 us

DQ=1; delay(7); //66 us

presence=DQ; //presence=0 复位成功,继续下一步 }

delay(50); //延时500 us presence=~DQ; } DQ=1; //拉高电平 } // //

/****************DS18B20写命令函数************************/ //向1-WIRE 总线上写1个字节 void write_byte(uchar val) {

uchar i;

for(i=8;i>0;i--) {

DQ=1;_nop_();_nop_(); //从高拉倒低 DQ=0;_nop_();_nop_();_nop_();_nop_(); //5 us

DQ=val&0x01; //最低位移出 delay(7); //66 us val=val/2; //右移1位

23

西京学院本科毕业设计(论文) }

DQ=1; delay(1); } //

/****************DS18B20读1字节函数************************/ //从总线上取1个字节 uchar read_byte(void) {

uchar i;

uchar value=0; for(i=8;i>0;i--) {

DQ=1;_nop_();_nop_(); value>>=1;

DQ=0;_nop_();_nop_();_nop_();_nop_(); //4 us DQ=1;_nop_();_nop_();_nop_();_nop_(); //4 us if(DQ)value|=0x80;

delay(7); //66 us } DQ=1; return(value); } //

/****************读出温度函数************************/ //

void read_temp() { int x,y;

unsigned char g,s,first,second;

ow_reset(); //总线复位 delay(20);

write_byte(0xcc); //发命令

write_byte(0x44); //发转换命令 ow_reset(); delay(1);

write_byte(0xcc); //发命令 write_byte(0xbe);

temp_data[0]=read_byte(); //读温度值的第字节 temp_data[1]=read_byte(); //读温度值的高字节 /*if(temp_data[0]>5&&temp_data[1]>2){ sound=0; }*/

display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4) ; g=display[4]%10;

24

西京学院本科毕业设计(论文) s=display[4]/10; first=SZ[g]; second=SZ[s]; x=s*10+g; if(x>=30){ aa=0xfe;

for(i=0;i<8;i++) { P1=aa; aa=_crol_(aa,1); delayms(8); sound =0; delayms(8); sound=1; for(y=0;y<5;y++) { COM1=0; COM2=1; senddata(first); delay1(); COM1=1; COM2=0; senddata(second); delay1(); } }

} else if(x<35){ /* bb=0xef; for(j=0;j<8;j++) { P1=bb; bb=_cror_(bb,1); delayms(8); //sound =0; delayms(8); sound=1; */ P1=0Xff; for(y=0;y<5;y++) { COM1=0; COM2=1; senddata(first); delay1(); COM1=1;

25

西京学院本科毕业设计(论文) COM2=0; senddata(second); delay1(); } } } //

/****************温度数据处理函数************************/

//二进制高字节的低半字节和低字节的高半字节组成一字节,这个 //字节的二进制转换为十进制后,就是温度值的百、十、个位值 /********************************************************/

void main() {

ow_reset(); //开机先转换一次 write_byte(0xcc); //Skip ROM write_byte(0x44); while(1) { read_temp(); aa=0xfe; /* for(i=0;i<7;i++) {

P1=aa;

aa=_crol_(aa,1); delayms(5); sound =0; delayms(5); sound=1; } */

} }

26

因篇幅问题不能全部显示,请点此查看更多更全内容