基于单片机的红外测温系统

更新时间:2024-05-31 07:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要

本设计设计了单片机红外测温系统。本文设计是以MCS-51单片机系统为基础,通过红外温度传感器对温度的模拟信号进行采集,再通过A/D转换器对采集到的模拟信号进行数模转换,把转换得到的数字信号按照顺送入单片机,最后通过单片机的控制处理把采集到的信号送到LED电路当中进行显示。红外测温除了具有传统测温特点外还具有非接触式测量、反应速度快、测量精度高、测量范围广等优点,所以红外测温得到了广泛应用。

关键字:红外温度传感器,A/D转换器,单片机,LED

I

ABSTRACT

The design of the infrared measuring temperature system. This design is 51 single-chip microcomputer system - MCS, through integration based on infrared sensor temperature analog signals are collected, again through the A/D converter for the collected analog signals, analog-to-digital conversion in accordance with the digital signal by converting the single-chip microcontroller, finally through to the process control in the gathering to signal to LED circuit of display. In addition to its traditional infrared measuring temperature measurement temperature characteristics outside also has non-contact measurement and reaction speed, high precision measurement and wide measurement range, so infrared measuring temperature advantages can be widely used.

Key word: Integrated infrared sensor;A/D converter,microcontroller, LED

II

目录

摘要 ......................................................................I ABSTRACT .................................................................II 第1章 前言 ..........................................................- 1 -

1.1红外测温的由来 .................................................- 1 - 1.2 单片机的发展 ..................................................- 1 - 第2章 系统的设计方案 .................................................- 3 -

2.1系统总体方案设计 ...............................................- 3 -

2.1.1系统总体设计框图 .........................................- 3 - 2.2器件调研选型 ...................................................- 3 -

2.2.1 控制器AT89C52简介 .......................................- 3 - 2.2.2 MLX90601EZA-CAA简介 .....................................- 7 - 2.2.3 A/D转换芯片ADC0809简介 .................................- 9 - 2.2.4 LED数码显示器 ..........................................- 11 -

第3章 系统硬件设计 .................................................- 14 -

3.1系统电路原理图 ................................................- 14 - 3.2系统各单元电路设计 ............................................- 14 -

3.2.1 MLX90601-CAA模块接口电路 ..............................- 14 - 3.2.2 放大滤波和稳压电路部分 ..................................- 15 - 3.2.3 A/D转换部分 ...........................................- 15 - 3.2.4温度显示部分 ............................................- 16 - 3.2.5电源部分 ................................................- 17 - 3.2.6 AT89C52单片机主控模块部分 ..............................- 18 -

第4章系统软件设计 ...................................................- 21 -

4.1 主程序总流程设计 .............................................- 21 - 4.2主要模块单元的程序流程设计 ....................................- 22 -

4.2.1初始化流程设计 ..........................................- 22 - 4.2.2 A/D转换程序流程设计 ....................................- 23 - 4.2.3 数据处理流程设计 ........................................- 24 - 4.2.4 LED数码显示流程 ........................................- 25 -

结束语 ...............................................................- 27 - 致谢 .................................................................- 28 - 参考文献 .............................................................- 29 - 附录一(总设计框图和软件流程图) .....................................- 30 - 附录二(总电路图) ...................................................- 31 - 附录三(程序清单) ...................................................- 32 -

第1章 前言

1.1红外测温的由来

红外检测技术就是以红外辐射的原理为基础[1],运用红外辐射测量分析方法和技术对设备、材料及其他物体进行测量和检验,进而发展成为红外诊断技术,因此红外检测是红外诊断技术的基础。检测与诊断技术就是了解和掌握被测对象在运行过程中的状态,确定其工作是否正常,以便及早发现故障并针对具体情况采取相应对策,具体分为检测和治理、预防三个基本环节,其中,检测是手段,身诊断是目的,检测是诊断的基础和前提,诊断是检测的最终结果。

现代化生产中,发展故障的后果往往非常严重[2],所以如何及时发现故障并进行及时处理显得尤为重要。人们在总结过去经验教训的基础上,提出在运行中或基本不停机的情况下,掌握其运行状况,判定产生故障的部位和原因,从而尽早发现及时处理,保障生产的持续进行,使得传统的预防检修向预知方向维修发展。红外技术能够以非接触、实时[3]、快速、在线方式获得被测对象的运行状态信息,在生产过程中的产品质量控制,设备在线故障诊断、安全保护以及节约能源的方面发挥着越来越重要的作用,在电力、冶金、石油化工、交通、机械等多工业部门受到广泛的重视,受到了显著的经济效益和社会效益。红外检测技术已不再局限于最初的无损检测范围,红外检测的诊断的应用也越来越广泛,其应用领域之多是其他检测方法锁无法比拟的,这是因为温度是设备及运行过程中非常重要的物理量,而红外检测的对象就是与温度密切相连的红外辐射,红外检测的实质红外测温。

1.2 单片机的发展

近几十年来[4],单片机在生产过程控制、自动检测、数据采集与处理、科技计算、商

业管理和办公室自动化等方面获得了广泛的应用。单片机具有体积小、重量轻、耗能省、价格低、可靠性高和通用灵活等优点,因此也广泛应用于卫星定向、汽车火花控制、交通自动管理和微波炉等专用控制上。近几年来,单片机的发展更为迅速,它已渗透到诸多学科的领域,以及人们生活的各个方面。

单片机并没有脱离冯?诺依曼原理下的计算机结构框架和工作原则,而是着眼于应用

- 1 -

到更广阔的范围:工业控制、数字显示、功能仪表、电子设备、汽车电控、农机、家电以及儿童玩具等。它不求规模大,只求小而全。厂家在一个芯片上制成了CPU和一定容量的程序存储器和数据存储器以及一定数据的输入输出接口。在一个大规模集成芯片上构造完整的计算机结构,故称之为单片机。

单片机在各个领域的迅猛发展,与单片机所构成的计算机应用系统的特点有关:

(1) 单片机构成的应用系统有较大的可靠性。

(2) 系统扩展和系统配置比价典型和规范,容易构成各种规模的应用系统。 (3) 由于构成的应用系统是一个计算机系统,相当多的控制功能由软件实现,故具有柔性特点。

(4)有优异的性价比。

对广大的应用型技术人员而言,目前所应用的单片机技术是使用单片机和可编程逻辑器件相结合的新一代电子技术。这是工程应用技术发展的新趋势。

- 2 -

第2章 系统的设计方案

2.1系统总体方案设计

2.1.1系统总体设计框图

红外测 温模块 (MLX 90601EZA-CA A )

放 大滤波电 路 A/D 转换电路 (ADC0809) AT89C52 单片机 LED 数码显 示

电源 图2-1系统总设计方框图

系统总设计框图如图2-1所示。本设计采用热释电红外测温模块对温度信号进行采集,采集的信号经放大再通过滤波电路,送至A/D转换器。A/D转换器将采集到的模拟信号转换成数字信号,最后将转换后的信号通过单片机AT08C52接收,单片机对接收信号进行处理。最后经数码管显示输出。这样,整个系统的功能完成,就由这个工作流程完成。

2.2器件调研选型

根据设计的要求,下面对设计所用到的主要器件进行介绍说明。

2.2.1 控制器AT89C52简介

2.2.1.1 总述[5]

AT89C52是由美国ATMEL公司所生产的低电压、高性能CMOS 8位单片机,片内含

- 3 -

有8K bytes的可以反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术所生产,与标准的MCS-51指令系统以及8052的产品引脚兼容,片内置有通用8位中央处理器和flash存储单元,该存储单元允许进行重复1000次以上的编程烧写。功能强大的AT89C52单片机适合于许多较为复杂的控制场合。 2.2.1.2主要性能参数介绍

·与MCS—51产品的指令和引脚完全兼容 ·8k字节可重擦写Flash闪速存储器 ·1000次擦写周期 ·全静态操作:0Hz-24MHz ·三级加密程序存储器 ·256 X 8字节内部RAM ·32个可编程I/O口 ·3个16位定时/计数器 ·8个中断源

·可编程的串行UART通道 ·低功耗的空闲和掉电模式

2.2.1.3引脚功能的说明介绍[6] VCC:电源电压 GND:地

P0口:P0口是一组8位漏极开关型的双向I/O口,即地址/数据总线复用口。 P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,在通过内部的上拉电阻把端口拉到高电平,此时可以做输入端口。作为输入端口使用时,因为内部存在有上拉电阻,某个引脚被外部信

- 4 -

号拉低时就会输出一个电流(IIL)。与AT89C51不同的是,P1.0和P1.1还可以分别作为定时/计数器2的外部技术输入(P1.0/T2)和输入(P1.1/T2EX),参见表2-1。Flash编程和程序效验期间,P1接收低8位地址。

表2-1 P1.0和P1.1的第二功能

引脚号 P1.0 P1.1 功能特性 T2(定时计数器2外部计数脉冲输入),时钟输出 T2EX(定时/计数2捕获/重装载触发和方向控制) P2口:P2口是一个带有内部上拉电阻的8位双向I/O口,P2口的输出缓冲级可以驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时就可以做输入口。作为输入口使用时,因为内部存在有上拉电阻,某个引脚被外部信号拉低时就会输出一个电流(IIL)。在访问外部程序存储器或者16位地址的外部数据存储器(例如执行MOVX @DPTR指令)的时候,P2口送出高8位的地址数据。在访问8位地址的外部数据存储器(如执行MOVX @RI指令)的时候,P2口输出P2锁存器内容。

P3口:P3口就是一组带有内部上拉电阻的8位双向I/O端口,P2口的输出缓冲级可以驱动4个TTL逻辑门电路。对端口写“1”,它们就被内部上拉电阻拉高并且可以做为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作一般的I/O口线以外,更重要的用途就是它的第二功能,如表2-2所示:

表2-2 P3口的第二功能

端口引用 P3.1 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 - 5 -

第二功能 RXD(串行输入口) TXD(串行输出口) 外部中断0 外部中断1 T0(定时/计数器0) T1(定时/计数器1) 外部数据存储器写选通 外部数据存储器读选通

此外,P3口还可以接收一些用于Flash闪速存储器编程和程序效验的控制信号。 RST:复位输入。当振荡器工作的时候,RST引脚就出现两个机器周期以上的高电平将会使单片机复位。

ALE/PROG:当访问外部程序存储器或数据存储器的时候,ALE(地址锁存允许)输出脉冲用以锁存地址的低8位字节。一般情况下,ALE仍然以时钟震荡频率的1/6输出固定脉冲信号,因此它可以对外输出时钟或者用于定时目的。

PSEN:该引脚是外部程序存储器选通信号。当AT89C52由外部程序存储器取指令(或数据)的时候,每个机器周期两次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器的时候,将会跳过两次PSEN信号。

EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000—FFFFH)的时候,EA端就必须保持低电平(或接地)。需要注意的是:如果加密位LB1被编程,复位时内部就会锁存EA端的状态。如果EA端为高电平(接VCC端)时,CPU就执行内部程序存储器指令。

XTAL1:振荡器反相放大器及内部时钟发生器的输入端口。 XTAL2:振荡器反相放大器的输出端口。 振荡器的特性:

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

芯片擦除:

整个PEROM的阵列和三个锁定位的电擦除都可以通过正确的控制信号来组合,并且保持了ALE管脚处于低电平10ms来完成。在芯片的擦除中,代码的阵列就全被写为“1”且在任何非空存储字节被重复编程前,该操作都必须被执行。

此外,AT89C52内设有稳态逻辑,可在低到零频率的条件下的静态逻辑,支持两种软件可以选用的掉电模式。在闲置的模式下,CPU就停止工作。但是RAM,定时器,计

- 6 -

数器,串口和中断系统仍在工作。在掉的电模式下,保存RAM的内容并冻结振荡器,禁止所用其他芯片的功能,直到下一个硬件的复位为止。

AT89C52单片机管脚图如图2-2所示:

图2-2AT89C52管脚图

2.2.2 MLX90601EZA-CAA简介

2.2.2.1 模块介绍

MLX90601EZA-CAA是由Melexis公司生产的红外测温模块[7],该模块在出厂前进行了校验,可以直接输出线性信号,有很好的互换性,免去了复杂的校验过程,是一个非常方便的红外测温模块。

该模块精度可以达到±0.2℃,体积小巧。模块以MLX90247热电元件作为红外的感应部分,输出是被测物体(T1)和传感器自身温度(T2)共同作用下的结果,理想情况下MLX90247的输出电压值为如式[8](2-1)所示:

- 7 -

Vir??(T24?T14) (2-1) 其中?是仪器常数。

传感器自身的温度由MLX90247内的热敏电阻测定,由MLX90247中输出的两路信号分别由内部MLX90313器件输出,在由斩波稳态放大器放大,经A/D转换后由单片机来处理相应的信号。

2.2.2.2 模块主要芯片引脚的说明介绍

MLX90601EZA-CAA模块图如图2-3所示。

图2-3 MLX90601EZA-CAA模块图

主要芯片MLX90247的引脚: .REL1(1脚):继电器输出; .VSS(2脚):地; .VDD(3脚):电源;

.SDIN(4脚):SPI数据入口; .SDOUT(5脚):SPI数据出口; .CSB(6脚):片选; .SCLK(7脚):时钟;

.IROUT(8脚):PWM输出被测物体温度; .VREF(9脚):参考电压;

- 8 -

.TEMPOUT(10脚):PWM环境温度输出。 其引脚图如图2-4所示。

图2-4 MLX90247引脚图

2.2.3 A/D转换芯片ADC0809简介

ADC0809有8位A/D转换器[9]、8路多路开关以及微处理机兼容的控制逻辑的CMOS

组件。它是逐次逼近式的A/D转换器,可以和微机直接接口。 2.2.3.1 A/D0809芯片管脚图如图2-5所示。

图2-5 A/D0809芯片管脚

- 9 -

2.2.3.2 0809芯片的引脚功能说明 (1)IN0~IN7:8条模拟量通道

ADC 0809对输入模拟量的要求:信号单极性,电压范围0~5v,若信号太小,必须要经过放大;输入的模拟量在转换的过程中应该保持不变,如果模拟量的变化太快,则需要在输入前增加采样保持电路。 (2)地址输入和控制线:4条

ALE 为地址锁存允许输入线,高电平有效。当ALE为高电平的时候,地止锁存器与译码器将ADDA、ADDB和ADDC三条地址的输入线,用于选通IN0~IN7上的一路模拟信号量输入。通道选择如表2-3所示。

表2-3被选通道和地址的关系

ADDC 0 0 0 0 1 1 1 1 ADDB 0 0 1 1 0 0 1 1 ADDA 0 1 0 1 0 1 0 1 选择的通道 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 (3)数字量输出及控制线:11条

START 为转换启动信号。当START是上跳沿时,所有的内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,START应该保持低电平。EOC位转换结束信号。当EOC为高电平的时候,表明转换已经结束;否则,就表明正在进行A/D转换。OE为输出允许信号,用于控制三态输出锁存器向单片机输出转换得到的数据。OE=1时,输出转换得到的数据;OE=0时,输出数据线呈高阻状态。D7~D0位数字数出线。 (4)电源线及其他线:5条

CLOCK为时钟输入的信号线。因ADC0809的内部没有时钟电路,所需要的时钟信号必须由外界提供,通常是使用频率为500KHz的时钟信号。Vcc为+5V电源线。GND为地

- 10 -

线。Vref(+)和Vref(-)为参考电压输入,参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。其典型去值:Vref(+)=+5v,Vref(-)=0v。

2.2.4 LED数码显示器

LED是一种电流发光器件[10]。它既可以工作在恒定的电流状态,又可以工作在脉冲电流状态。在平均电流相同的情况下,脉冲工作状态可产生比直流工作状态较强的亮度,一般每秒钟可导通100—500次,每次为几个毫秒。LED有单个发光二极管、七段(或八段)LED显示器和LED点阵显示器等类型。发光的颜色有红、绿、黄等。LED显示器每段正常发光需要直流电流10~20mA,发光二极管发光的时候,其正向导通压降为1.7v左右。

七段LED的数码管显示器是由7个LED按一定的图形排列组成,七段LED显示器的各个二极管分别为a、b、c、d、e、f、g段,有些七段显示器增加了一个dp段表示小数点,也称为八段LED显示器。其管脚配置如图2-6所示

图2-6 LED数码管管脚配置

七段LED显示器有两种结构:共阴极七段LED显示器和共阳极七段LED显示器,如图2-7(a)、(b)所示。所有二极管的阴极接在一起的称为共阴极七段LED显示器;所有二极管的阳极接在一起的称为共阳极七段LED显示器。共阳极七段LED显示器工作时,二极管的公共阳极接向电平“1”,各个段的阴极接与共阳七段码相对应的电平。共阴极的七段LED显示器工作时,其公共极接到低电平,各段的阳级接与共阴七段码相对应的电平。在实际应用中,除公共极外,其他各极应串接一个电阻后再接到相应电平。电阻的作用是限制流过LED中的电流来保证在发光时二极管不因电流过大而被烧坏。

- 11 -

图2-7 两类LED数码管

将数码管的引脚和单片机的数据输出口相连,控制输出的数据可以使数码管显示不同的数字和字符,通常称控制发光二极管的8位字节数据为段选码。7段LED段选码如表2-4所示。可以看出,共阳极和共阴极的段选码互为补数。

表2-4 7段LED选码 显示字符 0 1 2 3 4 5 6 7 8 9 A 共阴极段选码 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 共阳极段选码 C0H F9H A4H B0H 99H 92H 82H F8H 80H 90H 88H 显示字符 B C D E F H L N 8. “灭” | 共阴极段选码 7CH 39H 5EH 79H 71H 76H 38H 37H FFH 00H | 共阳极段选码 83H C6H A1H 86H 8EH 89H C7H C8H 00H FFH | 下面以8位共阳数码管为例,简要说明共阳数码管动态显示的原理。为了介绍方便,假定单片机的P0口接数码管的8段显示管,P1口用来控制每个数码管的阳极端。单片机采用扫描方式进行工作,首先将要在最高位显示的数字写到P0口,然后控制P1.7,使D7和电源接通,同时控制P1.6~P1.0,使D6~D0和电源断开。此时最高位亮,其余

- 12 -

不亮。保持一小段时间后,将要在次高位显示的数字写到P0口,然后控制P1.6,使D6和电源接通,同时控制P1.7和P1.5~P1.0,使D7和D5~D0和电源断开。此时次高位亮,其余不亮??不断进行循环扫描。如果扫描速度足够快,人眼感觉到的就是一排亮着的数码管。共阴数码管的动态显示原理基本相同。

- 13 -

第3章 系统硬件设计

3.1系统电路原理图

该设计,是经过MLX90601EZA-CAA红外测温模块对温度信号进行采集,然后经过IROUT管脚输出所采集到的模拟信号。由于所采集到的信号是模拟信号且很微弱,所以该模拟信号通过放大滤波电路后传输到ADC进行转换。把转换后得到的数字信号送到单片机进行数字处理,最后通过单片机的控制传送到LED数码显示管中进行显示。就完成整个红外测温的主要过程。 其系统硬件总图见附录一所示。

3.2系统各单元电路设计

3.2.1 MLX90601-CAA模块接口电路

连接的模块外围电路如图3-1所示[11]。MLX90601EZA-CAA供电电压是+5V,GND管脚为接地脚。由于 MLX90601EZA-CAA红外接收模块所接收到的信号是模拟信号,所以IROUT管脚接放大滤波电路[1],经放大滤波后,由A/D转换器转换成相应的数字子信号,在送到单片机进行处理。

图3-1 红外接收模块外围接口

- 14 -

3.2.2 放大滤波和稳压电路部分

温度变化反映在红外模块的传感上[12],是将温度信号以电压的方式输出。由于热红外传感温度系数很小,其上的电压变化就很小。因此还需要对此输出的电压信号进行放大,再送入A/D转换中进行转换,再输出给单片机。图3-2所示显示了放大滤波电路的连接图。

图3-2滤波放大电路

3.2.3 A/D转换部分

ADC0809和单片机之间的连接如图3-3所示。其中A/D的参考电压采用默认的5V,使用单片机输出时钟分频。A/D的数据口和AT89C52的P1口相连接[12],A/D的控制和反馈端口和单片机的P3功能口相连接。图中的74LS74触发器,一个74LS74中包含两个D触发器。这里把它连接成分频器,用来对单片机ALE输出的时钟信号进行分频。以提供给AD0809,用作AD0809的时钟信号。因为单片ALE输出的时钟频率是12M/6=2M,太大不能直接送给AD0809,所以要用74LS74进行分频。

- 15 -

图3-3 ADC0809与单片机连接图

3.2.4温度显示部分

显示系统是单片机控制系统的重要组成部分,主要用于显示各种参数的值,以便使现场工作人员能够及时掌握生产过程。

如图3-4所示,本文采用三位共阳数码管的动态显示方式。三个数码管的8段分别连接电阻,再通过电阻和单片机的P0口相连。控制端分别由P2.0,P2.1和P2.2控制。当控制端为高,数码管阳极和电源断开,该数码管不亮;当控制端为低,数码管阳极和电源接通,该数码管亮。由共阳数码管的结构,可以得出P0.0~P0.7输出低电平时,相应管段亮,输出高电平时,相应管段灭。相应管段亮,输出高电平时,相应管段灭。

- 16 -

图3-4 数码显示电路

3.2.5电源部分

稳压电源是单片机测控系统的重要组成部分,它不仅为测控系统提供多路电源电压,还直接影响到系统的技术指标和抗干扰性能。近年来,传统的线性稳压电源正逐步被高效率的开关电源所取代。特别是单片开关电源的迅速推广应用,为设计新型、高效、节能电源创造了良好的条件。

线性集成稳压器分固定式输出、可调式输出两种类型,又以三端固定或可调式集成稳压器的应用范围为最广。

此设计中选用的三端固定集成稳压器为78L05,其电路图如图3-5所示。

- 17 -

J1DC7~15VD1 IN4007D2 IN4007D3 IN4007D4 IN4007IC178051+C1470uFIG2O3+VCCC210uF1T1AC 220V3TRANS1D524BRIDGE1

图3-5 系统电源的电路图

该电源电路采用两种供电方式:机内变压器供电和机外外接电源供电,两种供电方式可以任选一种,在机内自动切换。机外外接供电采用傻瓜式接口,不需要辨认直流电正负极,可任意接入8~15V的交流或在直流电压。

机内变压器输入220V交流电压,输出7V交流电压。经过桥式整流输出大约9V的脉动电压,经过470uF的滤波电容可得到平稳的直流电压,此电压再经过三端稳压器78L05稳压,输出稳定的+5V电压。

外接供电口输入的电源也经过机内另一组桥式整流桥,再经过滤波、稳压、然后输出。输入口的整流桥堆实现了傻瓜式接口。当输入直流电源时,由D1、D4或者D2、D3中的一组完成极性转换。如果输入的是交流电源,则由D1~D4组成的桥完成整流。

3.2.6 AT89C52单片机主控模块部分

AT89C52单片机的电源、复位、晶振振荡电路如图3-6所示

[13]

- 18 -

图3-6AT89C52单片机的电源、复位、晶振振荡电路图

3.2.6.1 复位电路

复位操作完成单片机片内电路的初始化,使单片机从一种确定的状态开始运行。 当AT89C52单片机的复位引脚RESET出现5ms以上的高电平时,单片机就完成了复位操作。如果RESET持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态。

根据应用的要求,复位操作通常有两种基本形式:上电复位、开关复位。上电复位要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,如果发生死机,用按钮开关操作使单片机复位。

本设计使用的复位电路是常用的上电且开关复位电路如图3-7所示。上电后,由于电容充电,使RESET持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RESET持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=10~30uF,R=10KΩ

- 19 -

图3-7复位路

3.2.6.2 晶振振荡电路

XTAL1脚和XTAL2脚分别构成片内振荡器的反相放大器的输入和输出端,外接石英振荡器或陶瓷振荡器以及补偿电容C1、C2构成并联谐振电路。当外接石英晶体时,电容C1、C2选30pF±10pF;当外接陶瓷振荡器时,电容C1、C2选47pF±10pF。AT89C52系统中晶振可在0~24MHz选择。外接电容C1、C2的大小会影响振荡器频率的高低、振荡频率的稳定度、起振时间及稳定性。如图3-8所示。

图3-8 单片机晶振振荡电路

- 20 -

第4章系统软件设计

本次软件设计借助Keil来完成[10]。Keil采用C语言编程,是51系列单片机的通用编程软件。随着单片机开发技术的不断发展,从普遍使用的汇编语言到逐渐使用的高级语言开发,单片机的开发软件也在不断发展,Keil是目前最流行的51单片机开发软件。该开发平台内嵌多种符合当前工业标准的开发工具,可以完成从工程建立和管理、编译连接、目标代码的生成、软件仿真、硬件仿真等完整的开发流程。其C编译工具在产生代码的准确性和效率方面达到了较高的水平,而且可以附加灵活的控制选项,这些特点在开发大型项目时非常理想。由于此软件应用方便,功能强大,所以本设计所选用此软件来实现相应的功能。

4.1 主程序总流程设计

在程序设计中,首先进行初始化编程,对系统进行初始化。当初始化完成后,在启

动A/D转换,对红外模块接收到的温度数据信号进行A/D转换,使得把读入的模拟信号转换为相应的单片机能识别的数字信号,等待单片机的处理。如果数据没有读完,继续返回上级进行数据的读入。当数据读完后,然后对数据进行处理。数据处理完后,最后送到LED进行显示。使得把测得的数据由数码管显示出来。这就是整个软件流程所需要完成的工作。如图4-1所示。 在此设计中主要有以下主控模块:

1. A/D转换

实现模拟量到数字量的转换。 2. 数据处理

对整数部分和小数部分的进行处理。

3. LED数码显示

完成对温度信号的显示。

- 21 -

开始

程序初始化

启动A/D转换, 读入温度数据

N 是否温度数据读完 Y 对数据进行处理 数码显示 图4-1设计主程序框图

4.2主要模块单元的程序流程设计

对于每个主控模块所需完成的功能不一样,所以下面对每个模块所需设计的流程,进行介绍。

4.2.1初始化流程设计

初始化程序功能:设置定时器0、外部中断0、和外部中断1的中断程序入口;设

置定时器0的工作方式为1;定时时间为500ms;设置计数单元(30H)初值。初始化程序流程图如图4-2所示。

- 22 -

开始 设置中断向量 定时器初始化 中断初始化 开中断 启动定时器 等待中断 图4-2初始化程序流程图

4.2.2 A/D转换程序流程设计

数据采样程序功能:巡回检测ADC0809通道,巡回检测的方式是先对8个通道各采样一次,然后再采集第二次??共采集五次。采样程序采用中i断方式。A/D转换完成中断功能:将标志位清零,读取转换后的温度数据。A/D转换完成中断程序流程图如图4-3所示。

- 23 -

开始 启动A/D转换

Y

4-3 A/D转换流程图

读取转换 数据 N 是否转换完成? 4.2.3 数据处理流程设计

该设计设置了两位整数显示和一位小数显示。因此在数据的处理上是对整个信号进

行整数部分和小数部分的处理,然后在对整数部分进行个位和十位的划分。所以在对数据进行处理的流程设计图,如图4-4所示。

- 24 -

开始 整个数据处理

整数部分处理

小数部分处理 十位/个位处理 十位 个位 图4-4数据处理流程图

4.2.4 LED数码显示流程

LED显示程序的设计: 动态显示程序流程图如图4-5所示

- 25 -

开始 设置位选字 输出位选字 读显示数据 查段选码 输出段选码 延时1ms

显示完3位数 据否? Y 返回 N 图4-5 LED动态显示流程图

- 26 -

附录三(程序清单)

ORG 0000H ; 0-125度的温度计

[3]

TEMPER_L EQU 41H ;用于保存读出温度的低8位 TEMPER_H EQU 40H ;用于保存读出温度的高8位 FLAG1 EQU 38H ;是否检测到标志位

A_BIT1 EQU 30H ;数码管小数点位数存放内存位置 B_BIT1 EQU 31H ;数码管个位数存放内存位置 C_BIT1 EQU 32H ;数码管十位数存放内存位置

DQ EQU P3.7 ;30H,31H,32H: 小数点位 个位 十位 ORG 0013H AJMP INT1

MOD7: MOV SP,#60H

LCALL A/D ;调用读A/D程序 LCALL TEMPCOV

LCALL DISPLAY ;调用数码管显示子程序 AJMP MOD7 TEMP0: INC A A/D转换子程序[4]

;==========================================================================

A/D:

START: MOV 40H,#00H

MOV R0,#40H

SETB EA ;CUP开中断

SETB EX1 ;外部中断1开中断 SETB DPTR,#0000H ;选通ADC0809 MOV A,#00H

MOVX @DPTR,A AJMP $ 中断服务子程序

;==========================================================================

INT1: PUSH ACC ;保留现场

MOVX A,@DPTR ;产生读信号来读取结果 MOV @R0,A

MOV DPTR,#0000H MOV A,#00H

MOV @DPTR,A ;在此启动A/D转换 POP , ACC

RETI ;中断返回

- 32 -

END

数据处理

;========================================================================== AJMP TEMP1

TEMPCOV: MOV A,TEMPER_L ;A /D转换后数据处理 MOV B,#10H DIV AB

JB B.3,TEMP0

TEMP1: MOV 34H,A ;将TEMPER_L的高四位右移四位,存入34H中(温度值)

MOV A,B ;将TEMPER_L的低四位X10/16得小数后一位数 MOV B,#0AH MUL AB MOV B,#10H DIV AB

MOV 30H,A ;将小数后一位数.存入30H中

MOV A,TEMPER_H ;TEMPER_H中存放高8位数,权重16 MOV B,#10H MUL AB

ADD A,34H ;34H中存入温度值的整数部分 MOV B,#0AH DIV AB

MOV 31H,B ;个位存入31H中 MOV B,#0AH DIV AB

MOV 32H,B ;十位存入32H中 MOV A,TEMPER_H MOV 34H,#10H JB ACC.7,EXIT7 MOV 34H,#00H EXIT7: RET

复位初始化子程序

;========================================================================== INIT_1820:SETB P3.2 NOP

CLR P3.2 ;主机发出延时500微秒的复位低脉冲 MOV R1,#03H TSR1: MOV R0,#6BH DJNZ R0,$ DJNZ R1,TSR1

SETB P3.2 ;然后拉高数据线 NOP

- 33 -

NOP NOP

MOV R0,#25H

TSR2: JNB P3.2,TSR3 ;等待回应 DJNZ R0,TSR2 LJMP TSR4 ;延时

;========================================================================== 显示子程序

;========================================================================== DISPLAY: MOV DPTR,#TAB ;指定查表启始地址 MOV R0,#04H

DPL1: MOV R1,#0FAH ;显示1000次 DPLOP: MOV A,A_BIT1 ;取小数点后位数

MOVC A,@A+DPTR ;查小数点后位数的7段代码 MOV P0,A ;送出小数点后位的7段代码 CLR P2.2 ;开小数点后位显示 ACALL D1MS ;显示1MS SETB P2.2

MOV DPTR,#TAB2 ;个位需要小数点点亮 MOV A,B_BIT1 ;取个位数

MOVC A,@A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.3 ;开个位显示 ACALL D1MS ;显示1MS SETB P2.3

MOV DPTR,#TAB ;重新为DPTR赋TAB值 MOV A,C_BIT1 ;取十位数

MOVC A,@A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.4 ;开十位显示 ACALL D1MS ;显示1MS SETB P2.5 MOV P0,#00H

DJNZ R1,DPLOP ;小于100次循环 DJNZ R0,DPL1 ;小于4个100次循环 RET 1MS延时(按12MHZ算)

;========================================================================== D1MS: MOV R7,#0FFH DJNZ R7,$ DJNZ R7,$ RET

;========================================================================== 实验板上的7段数码管0~9数字的共阴显示代码

- 34 -

TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH

TAB2: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH END

- 35 -

本文来源:https://www.bwwdw.com/article/9k06.html

Top