您的当前位置:首页正文

多路温度检测系统的设计

来源:九壹网


密级:

公开

科学技术学院

NANCHANG UNIVERSITY COLLEGE OF

SCIENCE AND TECHNOLOGY

学 士 学 位 论 文

THESIS OF BACHELOR

(2008—2012年)

题 目 多路温度检测系统的设计

学 科 部: 信息学科部 专 业: 自动化 班 级: 081班 学 号: 学生姓名: 指导教师: 起讫日期: 2011.11—2012.6

多路温度检测系统的设计

专业:自动化 学号: 学生姓名: 指导教师:

摘要:本论文主要介绍多路温度的自动巡检、报警等,包括单片机AT89C51、A/D转换ADC0831、温度传感器、放大器OP07E以及硬、软件的设计。

本课题以高性能微处理器AT89C51单片机为核心,通过温度传感器Pa-t传感器,将检测到的数据输入0P07E放大器放大100倍,再将放大后的信号输入到ADC0831,经过A/D转换之后,其值由AT89C51处理,最后将其显示在D4,D3,D2,D1共四个七段数码管上。本系统能够根据主控机的指令对温度进行实时巡检采集数据,并对数据进行存储和显示,本系统还包含了报警电路,当温度高于或者低于某一个设定值时,启动温度异常报警等。而在软件上,本系统采用C语言编程,并且利用proteus进行仿真完成。

关键词:温度自动巡检; AT89C51;ADC0831;温度传感器;

I

Multiple temperature sensing system design

Abstract:This paper introduces the multi-channel temperature of the automatic data logging,

alarm, etc., including the microcontroller AT89C51, A / D converter ADC0831, temperature sensor, amplifier OP07E and hardware and software design.

The topics to low voltage, high-performance microprocessor AT89C51 microcontroller is the core temperature sensor Pa-t sensor the detected data input 0P07E amplified 100 times, and then amplified the data input to the ADC0831, after A / D conversion, the value of the AT89C51, at last, to appear in the D4, D3, D2, D1 of four seven-segment digital tube. The system is capable of instruction on the temperature of the host computer for real-time inspection data collection, and data storage and display, the system also includes an alarm circuit, when the temperature is above or falls below a set value, the start temperature abnormal alarm. In software, the system uses the C programming language, and use proteus simulation to complete.

Keywords: temperature automatic inspection; AT89C51;ADC0831;temperature sensor;

II

目 录

摘要 .................................................................................................................................................. I Abstract. ........................................................................................................................................... II 第一章 绪论 ..................................................................................................................................... 1

1.1引言 .................................................................................................................................... 1 1.2主要研究的内容 ................................................................................................................ 1 1.3基本要求 ............................................................................................................................ 1 第二章 多路温度检测系统硬件结构和模块化设计 ..................................................................... 2

2.1温度检测系统的总体结构 ................................................................................................ 2 2.2 AT89C51 ............................................................................................................................. 2 2.3模数转换器ADC0831 ......................................................................................................... 4 2.4数码显示器 ........................................................................................................................ 6 2.5放大器OP07 ....................................................................................................................... 6 2.6键盘 .................................................................................................................................... 7 第三章 多路温度检测系统软件设计 ............................................................................................. 8

3.1编程语言的选择 ................................................................................................................ 8 3.2系统软件总体设计 ............................................................................................................ 8 3.3系统软件主流程 ................................................................................................................ 8 3.4系统按键程序流程 ............................................................................................................ 8 第四章 多路温度检测系统仿真 ................................................................................................... 10

4.1 Proteus简介 .................................................................................................................. 10 4.2 Proteus的工作过程 ...................................................................................................... 10 4.3系统仿真设计 .................................................................................................................. 11 4.4系统调试 .......................................................................................................................... 14 结论 ................................................................................................................................................ 18 参考文献......................................................................................................................................... 19 致谢 ................................................................................................................................................ 20 附录1:温度检测系统总硬件原理图 .......................................................................................... 21 附录2:元器件清单 ...................................................................................................................... 21 附录3:温度检测系统源程序代码 .............................................................................................. 22

第一章 绪论

1.1引言

温度在现实生活中是一个很重要的物理参数,也是在实际应用中使用最多的参数,而随着社会的进步和工业技术的发展,人们也越来越重视温度因素。因为它涉及到人们的日常生活、科学研究、工业生产、农业生产等领域,如家禽家畜等养殖业在温室环境下,可以保证家禽家畜的合适生长环境,使其健康生长和预防瘟疫的发生;当今大型仓库、大型粮库的监测与控制现状等。可以说几乎80%的部门都不得不考虑着温度的因素。围绕温度检测、控制等,市面上从而出现了温度检测仪表等,因为温度在现实生活中的重要性,使得这些测量工具得到了广泛应用。随着科学技术的发展,这类仪表的发展也日新月异。特别是随着计算机技术的迅猛发展,以单片机为主的嵌入式系统已广泛应用于工业控制领域,形成了智能化的测量控制仪器,其实时性高、精度高,能够综合处理多点温度等,从而引起了仪器仪表结构的根本性变革,也使得其有了更广泛的应用前景。

目前市场上普遍存在的温度检测仪器大都是单点测量,同时还有温度信息传递不及时、精度不够的缺点,不利于工业控制者根据温度变化及时做出决定。在这样的形式下,开发一种能够同时测量多点,并且实时性高,能够综合处理多点温度信息的测量系统就很有必要。 1.2主要研究的内容

以AT89C51单片机为核心,完成4路温度的巡回检测,温度传感器采用Pa-t传感器,测量范围为0……120℃,放大器采用OP07E,温度信号输入采用差动放大形式,A/D转换器采用串行ADC0831,用4位LED显示器巡回显示各路温度,其中第1位为序号,第2至4位为该路的温度值。每路温度信号对应2个报警指示灯(1红1黄),当温度高于上限时红灯亮,低于下限时黄灯亮。各路温度的上、下限值可在线设置。 1.3基本要求

1)以AT89C51单片机为核心(晶振11.0592MHZ),设计温度巡回检测系统。 2)完成4路温度检测、放大及A/D转换的设计。

3)完成4路温度的巡回显示,当按下[检测]键时,只显示本路温度,不巡回显示,再次按下[检测]键,进入报警温度设置,当按下[恢复]键时,恢复巡回显示。

4)完成4路温度的报警。

5)完成4路温度报警上、下限的设置。 6)键盘采用中断方式。 7)程序设计语言采用C语言。 8)在Proteus中进行仿真。

1

第二章 多路温度检测系统硬件结构和模块化设计

2.1温度检测系统的总体结构

温度检测系统硬件结构主要包括:传感器、放大器、A/D转换、单片机、显示、报警以及按键等。其系统硬件结构图如下:

传感器 放大器 A/D转换 传感器 放大器 图1 系统硬件设计框图

单 片 机 显示 报警 按键

2.2 AT89C51

目前国内市场上可供选择的单片机的类型有很多种,以MCS-51 、MCS-96为主流系列。其中MCS-51 系列性能高价格便宜,开发用的仿真机研究较早并日趋完善,生产厂家较多,支持芯片种类繁多,适合不同应用场合的新机种不断涌现,使得MCS- 51 系列单片机在国内成为开发中小型嵌入式系统的首选。

AT89C51是带4K字节闪烁可编程可擦除只读存储器的低电压、高性能8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供。

1)主要特性:①与MCS-51 兼容;②4K字节可编程闪烁存储器;③32可编程I/O线④128×8位内部RAM;⑤全静态工作:0Hz-24MHz;⑥5个中断源;⑦数据保留时间:10年;⑧寿命:1000写/擦循环;⑨两个16位定时器/计数器;⑩三级程序存储器锁定,可编程串行UART通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。 2)管脚说明

图2 AT89C51引脚图

2

P0:P0为一个8位漏极开路型双向I/O端口,P0口可作通用I/O口使用,但在端口进行输入操作前,应先向端口的输出锁存器写“1”。在CPU访问片外存储器时,P0口自动作为地址/数据复用总线使用,分时向外部存储器提供低8位地址和传送8位双向数据信号。在对EPROM编程时,由P0口输入指令字节,而在验证程序时,P0输出指令字节(验证时应外接上拉电阻)。P0口能以吸收电流的方式驱动8个LS型TTL负载。

P1:P1是一个内部带上拉电阻的8位准双向I/0端口,当P1输出高电平时,能向外部提供拉电流负载,因此,不需要外接上拉电阻。当端口用作输入时,也应该先向端口的输出锁存器写入“1”,然后再读取端口数据。在对EPROM编程和验证程序时,它用来输入低8为地址,P1口能驱动4个LS型TTL负载。

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也可作为AT89C51的第二功能口,如表2-1所示。

表1 P3口第二功能

端口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 第二功能 RXD(串行输入端) TXD(串行输出端) /INT0(外部中断0输入端) /INT1(外部中断1输入端) T0(定时器0外部输入) T1(定时器1外部输入) /WR(外部数据存储器“写”控制输出信号) /RD(外部数据存储器“读”控制输出信号) P3口的第二功能是作为控制端口使用的。由于单片机没有专设的控制信号引脚,单片机在进行外部存储器和I/O端口扩展时所需要的控制信号必须由P3口提供,P3口第二功能相当于PC机中CPU的控制线引脚。

RST:复位功能,单片机上电后,在该引脚上出现两个机器周期宽度以上的高电平,就会使单片机复位。备用功能,在主电源掉电期间,该引脚Vpd可接+5v电源,当Vcc下降到低于规定的电平,而Vpd在其规定的电压范围内时,Vpd就向片内RAM提供备用电源,以保持片内RAM中信息不丢失,以便电压恢复正常后单片机能正常运行。

3

ALE/PROG:为低8位地址锁存使能输出编程脉冲输入端,当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号,即读选信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

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

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

VCC:供电电压。 GND:接地。 2.3模数转换器ADC0831

ADC0831 是美国国家半导体公司生产的一种 8 位分辨率、双通道带有串行接口的A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。

ADC0831的工作过程:首先将ADC0831的时钟拉低,再将片选端CS置低,启动A/D转换。接下来在第一个时钟的下降沿到来时,ADC0831的数据输出端被拉低,准备输出转换数据。从时钟的第二个下降沿到来开始,ADC0831开始输出转换数据,直到第九个下降沿为止,共8位,输出的顺序从最高位到最低位。 ADC0831启动程序:

/***0831初始化和数据读取***/ uchar readad0831() {

uchar i=0,tmp=0; DO1=1; CS1=1; delayUs();

4

CLK1=0; CS1=0; delayUs(); CLK1=1; delayUs(); CLK1=0; delayUs(); CLK1=1; delayUs(); CLK1=0; delayUs(); for(i=0;i<=7;i++) {

tmp<<=1; //左移一位 if(DO1) tmp++; CLK1=1; delayUs(); CLK1=0; delayUs(); } CS1=1; return tmp; }

芯片接口说明

图3 ADC0831引脚图

CS: 片选使能,低电平芯片使能。 VREF: 参考电压输入端,接+5V。 GND: 芯片参考0电位。 CLK: 芯片时钟输入(复用)。

INV

(+): 接电源正极。

5

INV(-): 接电源负极。

D0: A/D转换数据输出端。

技术指标:①8位分辨率;②一般功耗为15mW;③转换时间为32us;④5V电源供电时输入电压为0~5V之间。 2.4数码显示器

发光二极管简称为LED,由镓(Ga)与砷(AS)、磷(P)的化合物制成的二极管,当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管,在电路及仪器中作为指示灯,或者组成文字或数字显示。磷砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光。

它是半导体二极管的一种,可以把电能转化成光能;常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。

发光二极管的核心部分是由P型半导体和由N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。 当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。

本次设计选用的是四位一体共阳极数码管。这类数码管可以分为共阳极和共阴极,共阳极就是把所有LED的阳极连接到共同节点com,而每个LED的阴极非别为a、b、c、d、e、f、g及dp;共阴极则是把所有LED的阴极连接到共同接点com,而每个LED的阳极分别为a、b、c、d、e、f、g及dp。

数码管使用条件:①段及小数点上加限流电阻;②使用电压:段、小数点,根据发光颜色决定;③使用电压: 静态:80mA,动态:平均电流4—5mA,峰值电流:100Ma。 2.5放大器OP07

OP07是一种高精度单片运算放大器,具有极低的输入失调电压,极低的失调电压温漂,非常低的输入噪声电压幅度及长期稳定等特点。可广泛应用于稳定积分、精密绝对值电路、比较器及微弱信号的精确放大,尤其适应于宇航、军工及要求微型化、高可靠的精密仪器仪表中。OP07作为一种低噪声高精度运算放大器,特别适合做前级放大器。 具有以下特点:

1) 低的输入噪声电压幅度—0.35 μVP-P (0.1Hz ~ 10Hz)。 2) 极低的输入失调电压—10 μV。

3) 极低的输入失调电压温漂—0.2 μV/ ℃。

6

4) 具有长期的稳定性—0.2 μV/MO。 5) 低的输入偏置电流—± 1nA。 6) 高的共模抑制比—126dB。 7) 宽的共模输入电压范围—±14V。 8) 宽的电源电压范围—± 3V ~± 22V。

9) 可替代725、108A、741、AD510、1875 等电路。 2.6键盘

键盘选用四个不锁存式按键,一端与地相接另一端与单片机直接相连,当第一个按键按下时产生一个低电平,系统进入单路温度检测,当再次按下第一个按键时,系统进入此路最高温度报警值的设定,第二个和第三个按键分别是温度加一键和减一键,当按下第四个按键时,系统恢复四路温度检测。按键的作用只是简单的实现接点的接通或断开,按键的去抖动、按键的编码的形成和按键的识别等均由软件来完成。

7

第三章 多路温度检测系统软件设计

3.1编程语言的选择

软件开发的过程中,对编程语言的选择有着重要的意义。目前一般有汇编语言、C语言、C++等。C语言是国际上广泛流行的、很有发展前途的计算机高级语言。它既可以用来编写系统软件,也可以用来编写应用软件。C语言有高级语言的先进思想又能直接对存储器进行操作,能进行位运算,生成目标代码质量高,程序执行效率高。C语言用函数作为程序模块,以实现程序的模块化,语言简洁、紧凑,具有结构化特点。C语言不包含依赖硬件的输入输出机制,使C语言本身不依赖于硬件系统,可移植性好等。基于以上考虑,决定采用C语言作为此系统的编程语言。 3.2系统软件总体设计

整个温度检测系统是在程序控制下工作的,该系统的软件全部采用C语言编写,以提高系统的可移植性和实用性。其设计方法与硬件设计相对应,同样采用模块化的设计思想,将该部分设计划分为相应的程序模块,分别进行设计、编译和调试,最后通过主程序和中断处理程序将各程序模块连接起来。这样有利于程序修改和调试,增强了程序的可移植性。整个软件系统主要有以下几部分:主程序:主要完成系统初始化、中断优先级设定以及判断调用各模块程序,即主要实现各程序模块的连接。数据采集:主要完成对ADC0831的初始化以及对温度的采集等。温度显示:主要完成将单片机处理后的数据通过数码管显示。键盘:实现单路温度检测和上限温度值的设定等。 3.3系统软件主流程

开始 初始化 温度数据采集 数据处理 显示 报警

图4 软件主流程图

3.4系统按键程序流程

系统按键程序主要分为以下几部分:系统初始化程序、显示程序、键盘处理程序。初始

8

化程序主要送入各种命令字以及开中断,放在主程序中;显示程序编为显示子程序;键盘处理程序放在中断服务程序中。相应的程序流程如图3-2所示,其中键盘处理程序采用中断方式,通过定时器1中断实现。

开始 N 检测功能键 功能键是否按下 Y 延时20ms去抖 功能处理程序 结束

图5 按键程序流程图

9

第四章 多路温度检测系统仿真

4.1 Proteus简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、AVR、ARM、8086 PIC10/12/16/18/24/30/DsPIC33和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

Proteus与其他单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。因此在仿真和程序调用时,关心的不再是某些语句执行时单片机寄存器和储存器内容的改变,而是从工程的角度直接看程序运行和电路工作过程和结果。

Proteus主要由ISIS和ARES两部分组成,ISIS的主要功能是原理图设计及与电路原理图的交互仿真,ARES主要用于印制电路板的设计。

本次课题设计主要用的是ISIS部分。Proteus ISIS是一种操作简便而又功能强大的原理图编译工具,它运行于Windows操作系统上,可以仿真、分析各种模拟器件和集成电路,该软件的特点有:

1)实现了单片机仿真和SPICE电路仿真结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统仿真、RS232动态仿真、IC调试器、SPI调试器、键盘和LCD系统仿真等功能;有各种虚拟仪器。如示波器、逻辑分析仪、信号发生器等。

2)支持主流单片机系统的仿真。目前支持的单片机类型有68000系列、8051系列、ARM系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、PIC24系列、BSTAMP系列、Z80系列、HC11系列以及各种外围芯片。

3)提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各种变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境。如KeiluVision3等软件。

4)具有强大的原理图绘制功能。 4.2 Proteus的工作过程

运行Proteus的ISIS程序后,进入该仿真软件的主界面。在工作前,要设置VIEW菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工作栏中的P(从库中选择元件命令)命令。在pick devices窗口中选择电路所需的元件,放置元件并调整其相对位

10

2置,元件参数设置,元器件间连线,编写程序;在source菜单的Define code generation tools 菜单命令下,选择程序编译的工具、路径、扩展名的项目:在source菜单的Add/remove source files命令下,加入单片机硬件电路的对应程序:通过debug菜单的相应命令仿真程序和电路的运行情况。

Proteus提供了比较丰富的测试信号用于电路的测试。对于单片机硬件电路和软件的调试,Proteus提供了两种方法:一种是系统总执行效果;一种是对软件的分部调试以看具体的执行情况。

对于总体执行效果的调试方法,只需要执行debug菜单下的execute菜单项或F12快捷键启动执行,用debug菜单下的pause animation 菜单项或pause键暂停系统的运行。

对于软件的分部调试,应先执行debug菜单下的start/restart debugging菜单项命令,此时可以选择step over、step into和step out命令执行程序,执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了start/restart debugging命令后,在debug菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调剂时分析和查看。

4.3系统仿真设计 1) 仿真元器件的选择:

图6 仿真元器件的选择

11

2) 单片机最小系统:

图7 单片机最小系统

3)温度显示模块:

图8 温度显示模块

12

4)温度数据采集模块:

图9 温度数据采集模块

5)温度报警和按键模块:

图10 温度报警和按键模块

13

6)温度系统总图:

图11 温度系统总图

4.4系统调试

1)第一路温度时输入为92度时,输出为94度,存在一定误差:

图12 调试前温度误差

14

2)第三路温度输入高于120度时红灯亮,实现上限报警功能:

图13 温度上限报警

3) 当输入温度低于0度时黄灯亮,实现下限报警功能:

图14 温度下限报警

15

4) 对比下面三幅连续图,第一幅图中当温度输入70度时红灯不亮,无报警。在第二幅图中设置报警温度为65度,在第三幅图中当输入温度为70度时红灯亮,有报警,从而实现按键设置报警温度上限值:

图15 按键设置报警温度上限值

通过按键设置上限报警温度为65度:

图16 按键设置报警温度上限值

16

当输入温度为70度时红灯亮报警:

图17 按键设置报警温度上限值

从以上调试来看除温度测量值存在误差外,基本实现预设功能,比预期效果更佳理想。针对温度测量值误差,首先检查了仿真电路是否有错,电阻值是否设定错误。经过反复查看基本确定仿真电路正确。其次查看了仿真程序,经过查看初步确定是在A/D转换公式即tmp=TV*(120.0/255.0)+0.05中0.05值过小,应该改为tmp=TV*(120.0/255.0)+0.5,经过改正后温度在10度到120度范围内准确,0度到9度有一度的误差。 调试后输入温度为75度输出也为75度:

图18 系统调试完成后温度

17

结论

在工业生产和日常生活中,对温度控制系统的要求,主要是保证温度在一定温度范围内变化,稳定性好,不振荡,对系统的快速性要求不是很高。在论文中简单分析了单片机温度控制系统设计过程及实现方法。本系统的测温范围为0℃~120℃,温度检测系统根据用户设定的温度范围完成一定范围的温度控制和报警。

本次设计的测温系统主要有AT89C51和A/D转换器及温度传感器来实现功能的并通过proteus软件进行仿真。因此需要通过查阅资料来了解这些器件的基本结构,主要功能和注意事项等等。通过了解器件,能够知道与所选器件相似的器件,比较彼此之间的优缺点,来确定设计选择的器件是否合适,如何更好的利用器件的特点成为了本次设计重要的一方面。在确定了器材之后,如何利用使之最大限度的体现设计的功能,完成设计目标,这又是需要花大量时间去思考的。

在设计完成之后,设计合理的程序和通过仿真软件模拟仿真,又再一次检验了设计的成果。整个设计从确定题目,到寻找相关资料,再到选择合适的器件,接着对电路图的绘制,程序的编写,仿真的进行,最终调试。一步步走过来,一点点的进步,花了大量的时间和精力,而成果也是喜人的。

经过一段时间的方案论证、系统的硬件和软件的设计、系统的调试。查阅了大量的关于传感器、单片机及其接口电路、以及控制方面的理论。经过了一番特殊的体验后,经历了失败的痛苦,也尝到了成功的喜悦。靠用所学的专业知识来解决问题,检查了自己的知识水平,使我对自己有一个全新的认识。通过这次毕业设计,不仅锻炼自己分析问题、处理问题的能力,还提高了自己的动手能力。

但由于时间有限,本次设计未能实现其他功能,如语音报警、湿度检测等。

18

参考文献

[1] 张建波,韩崧. 浅谈温度测量发展史[J].测量技术, 2001,14-15.

[2] 陈慕君,唐慧刚,刘其,袁富娟. 基于AT89C51单片机控制的数字温度计设计[J]. 科技信息 009(14).

[3] 张靖武,周灵彬. 单片机系统PROTEUS设计与仿真[M].北京:电子工业出版社,2007. [4] 周润景,张丽娜. 基于proteus的电路及单片机系统设计与仿真[M]. 北京:北京航空航天大学出版社,2006.

[5] 李广弟. 单片机基础[M]. 北京:北京航空航天大学出版社, 2008. [6] 田鑫. OP07功率放大器[J]. 武汉理工大学,2009,5-6.

[7] 吉武庆,耿凡娜. 基于单片机温度测温系统仿真设计[J]. 科技信2008, (16):395-396. [8] 朱清慧, 张凤蕊, 崔天嵩,王志奎 . Proteus教程[M]. 北京:清华大学出版社, 2010. [9] 基于单片机的温度测量系统. www.ppedn.com ,2009.

[10] 江世民. 基于Proteus的单片机应用技术[M]. 北京:电子工业出版社,2009. [11]张建民、杨旭. 利用单片机实现温度监测系统[J]. 微计算机信息,2007年05期. [12]陈洪财. 单片机C语言和汇编语言实用开发技术[M]. 哈尔滨工业出版社,2008.5. [13]王东峰等. 单片机C语言应用100例[M]. 电子工业出版社,2009. [14]陈海宴. 51单片机原理及应用[M]. 北京航空航天大学出版社,2010. [15]钟富昭等. 8051单片机典型模块设计与应用[M]. 人民邮电出版社,2007. [16] 王迎旭. 单片机原理与应用[J]. 北京. 机械工业出版社,2004. [18] 松井邦彦. 传感器实用电路设计与制作[J]. 科学出版社,1999. [19] 吴金戌. 8051单片机实践与应用[M]. 清华大学出版社,2001. [20] 何立民. 单片机应用系统设计[M]. 北航出版社,1999. [21] 张洪润. 单片机应用技术教程[M]. 清华大学出版社,2000.

[22] 赵全利,肖兴达. 单片机原理及应用教程[M]. 机械工业出版社,2007.

19

致 谢

在这几个月的毕业设计过程中,本课题和论文是在指导老师曾副教授的细心指导以及同学的帮助下完成的。在此我要真诚的感谢我的指导老师曾副教授,在我与曾老师的接触过程中,我充分认识到曾老师严谨求实的治学态度,为人师表的风范,诲人不倦的精神,这些都在我的脑海里留下了深刻的印象,这些都使我受益匪浅。曾老师在选题、课题设计及论文成文的整个过程中给予了我大力的支持和鼓励,并且曾老师还在百忙中抽出宝贵的时间来指导我的课题设计、认真审阅我的论文等,给予我宝贵的意见,在此我再次向曾老师表示深深地敬意和诚挚地感谢!

其次,我还要感谢大学四年所有指导过我的老师,所有帮助过我的同学、朋友。尽管我们人生历程迥异,也将天各一方,但是我不会忘记你们给予我的鼓励和帮助,在以后的人生中,祝愿大家都有美好的未来!

最后感谢我的母校南昌大学科学技术学院,是你为我们提供如此好的学习环境,是你培养了我们,是你给我们留下了许多美好回忆。同时感谢学院领导对我们的支持、关怀和帮助。

20

附录1:温度检测系统总硬件原理图

附录2:元器件清单

1、AT89C51芯片一块; 2、ADC0831芯片一块;

3、四位一体共阳极数码管一个; 4、CD4066芯片一块;

5、红色LED灯和黄色LED灯各一个; 6、12×12不带锁存按键5个;

7、20千欧电阻4个,10千欧电阻1个,10千欧排阻一个,5.1千欧电阻1个,560欧电阻一个,510欧电阻1个,200欧电阻8个,100欧电阻2个; 8、12MHz晶振一个;

9、10uF电容一个,30pF电容两个; 10、100mm×150mm单面附铜板一块; 11、OP07芯片5块;

12、TO-46金属封装的LM35温度传感器4个。

21

附录3:温度检测系统源程序代码

#include #include #define uchar unsigned char #define uint unsigned int

Uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88, 0x83,0xc6,0xa1,0x86,0x8e}; /***定义0831引脚***/ sbit CS1=P1^0; sbit CLK1=P1^1; sbit DO1=P1^2;

/***定义温度报警引脚***/ sbit P24=P2^4; sbit P25=P2^5; /***定义按键引脚***/ sbit Key0=P1^3; sbit Key1=P1^4; sbit Key2=P1^5; sbit Key3=P1^6; uchar i_flag=0; uchar len=0; uchar key_flag=0; uchar key_operate=0; uchar counter; uchar flag=0; uint Tl=0; uchar TV;

uint Th[]={100,110,120,120}; uchar tempH[3]; uchar tempL[3];

uchar tmpdata[]={0,0,0}; uchar i=0,i1=0,n=0; int tmp=0; /***延时程序1***/ void delayUs() {

_nop_();

22

_nop_(); _nop_(); _nop_(); _nop_(); }

/***延时程序2***/ void delayms(uint i) { }

/***数码管显示程序***/ void display(uchar *lp) {

P2=P2&0xf0; //关闭所有数码管 P2=P2|0x02; //打开第二个数码管 P0=table[lp[0]]; //第二个数码管显示数据 delayms(1); P2=P2&0xf0;

P2=P2|0x04; //打开第三个数码管 P0=table[lp[1]]; //第三个数码管显示数据 delayms(1); P2=P2&0xf0;

P2=P2|0x08; //打开第四个数码管 P0=table[lp[2]]; //第四个数码管显示数据 delayms(1); }

/***0831初始化和数据读取***/ uchar readad0831() {

uchar i=0,tmp=0; DO1=1; CS1=1; delayUs(); CLK1=0; CS1=0;

23

uint j; for(;i>0;i--)

for(j=55;j>0;j--);

delayUs(); CLK1=1; delayUs(); CLK1=0; delayUs(); CLK1=1; delayUs(); CLK1=0; delayUs(); for(i=0;i<=7;i++) {

tmp<<=1; //左移一位 if(DO1) tmp++; CLK1=1; delayUs(); CLK1=0; delayUs(); } CS1=1; return tmp; }

/***主函数***/ void main() {

TMOD=0x01;

TH0=(65535-50000)/256; //定时器0赋初值 TL0=(65535-50000)%256;

TH1=(65535-30000)/256; //定时器1赋初值 TL1=(65535-30000)%256;

ET1=1; //允许定时器1中断 ET0=1; //允许定时器0中断 TR0=1; //定时器0开始工作 TR1=1; //定时器1开始工作 EA=1; //开放总中断 while(1) {

24

P2=P2&0xf0; //关闭所有数码管

P2=P2|0x01; //打开第一个数码管 P0=table[i]; //第一个数码管显示数据

delayms(1); if(flag==0)

{

tmpdata[0]=tmp/100; //百位

tmpdata[1]=tmp%100/10; //十位 tmpdata[2]=tmp%100%10; //个位

if(tmp>=Th[i-1]) //温度上限报警

P24=0; //红灯亮

else

P24=1;

if(tmp<=Tl) //温度下限报警

P25=0; //黄灯亮

else

P25=1;

display(tmpdata); //显示温度值 }

if(flag==1) //报警温度上限值的显示

{

tempH[0]=Th[i-1]/100; //百位 tempH[1]=Th[i-1]%100/10; //十位 tempH[2]=Th[i-1]%100%10; //个位 display(tempH);

}

} }

/***定时器0开中断***/ void timer0() interrupt 1 {

TH0=(65535-50000)/256; //定时器0重新赋初值 TL0=(65535-50000)%256; /***温度循环检测***/ n++; P3=0x00; if(n==50)

25

{

/***单路温度检测***/

if(i_flag==0) { i++;

if(i==5)

i=1; i1=i;

} else { i=i1;

}

/***四路温度循环检测***/ if(i==1) //第一路 { P3=0x01;

}

else if(i==2) //第二路 { P3=0x02;

}

else if(i==3) //第三路 { P3=0x04; }

else //第四路 {

P3=0x08;

} n=0;

delayUs();

TV=readad0831(); //

tmp=TV*(120.0/255.0)+0.5; //A/D } }

/***定时器1开中断***/

读取温度值 转换

26

void Timer_1(void) interrupt 3 using 2 {

TH1=(65536-30000)/256; //定时器1重新赋初值

TL1=(65536-30000)%256;

if(((!Key0)|(!Key1)|(!Key2)|(!Key3))&(key_flag==0)) //进入按键设置 {

key_flag=20;

while(--key_flag); //延时去抖动

key_flag=1;

if(!Key0) //进入单路温度检测模式 {

if(key_operate==0)

{

key_flag=0; //允许按键长按

if(counter++>30) //Modle键要长按2S生效

{

i_flag=1; i1=i;

key_operate++;

flag=0;

key_flag=1; //不允许按键长按

} }

else

{ flag=1; }

}

if(key_flag==1) //进入单路温度上限值的设定

{

if(!Key1) //加1键 {

Th[i-1]++;

}

if(!Key2) //减1键 {

Th[i-1]--;

27

}

}

if(!Key3) //恢复四路温度检测 { key_operate=0; counter=0; flag=0;

i_flag=0;

} }

if((Key0)&(Key1)&(Key2)&(Key3)) key_flag=0; }

28

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

Top