《单片机实习报告温控系统文档格式.docx
《《单片机实习报告温控系统文档格式.docx》由会员分享,可在线阅读,更多相关《《单片机实习报告温控系统文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
89C52单片机,ADC0809,四位一体共阳极数码管,三极管,导线,电阻,晶振,按键开关,工具箱,温箱,加热箱。
四、设计方案及分析
本次设计采用89C52单片机作为控制芯片,采用温箱中的温度传感器采集温度信号。
通过温度传感器将采集的温度信号传送给控制箱,控制箱输出的电流信号再经过滑动变阻器转换成与之相对应的电压信号,经过放大处理送入A/D转换器进行A/D转换,将模拟信号转换成数字信号送入到控制芯片进行数据处理。
通过在芯片外围添加显示、控制等外围电路来实现对控制箱中继电器的控制,从而实现保温箱温度的实时检测和控制功能。
本系统功能由硬件和软件两大部分协调完成,硬件部分主要完成温箱中传感器信号的采集处理,信息的显示等;
软件主要完成对采集的温度信号进行处理及显示控制等功能。
系统结构框图如图4.1所示:
图4.1系统结构框图
4.1系统硬件设计方案
单片机应用系统的硬件电路设计就是为本单片机温控系统选择合适的、最优的系统配置,即按照系统功能要求配置外围设备,如显示器、A/D转换器、设计合适的接口电路等。
系统设计应本着以下原则:
(1)尽可能选择典型电路,并符合单片机常规用法。
本设计采用了典型的四位一体共阳极数码管显示电路、A/D转化电路,为硬件系统的标准化、模块化打下良好的基础。
(2)硬件结构应结合应用软件方案一并考虑。
软件能实现的功能尽可能由软件实现,以简化硬件结构。
由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。
由于本设计的响应时间要求不高,所以有一些功能可以用软件编程实现。
(3)系统中的相关器件要尽可能做到性能匹配。
系统中所有芯片都应尽可能选择低功耗产品。
本系统的硬件电路主要包括模拟部分和数字部分,从功能模块上来分有主机电路、数据采集电路、控制执行电路。
系统硬件包括:
温箱、控制箱、信号调理电路、A/D转换器件、89C52单片机、按键控制、四位一体共阳极数码管温度显示器、温度控制电路。
4.1.1芯片选择
单片机:
单片机就是在一块硅片上集成了微处理器、存储器和各种输入输出接口电路的微型计算机,简称单片机。
单片机以其较高的性能价格比受到了人们的重视和关注。
它的优点就是体积小、重量轻、抗干扰能力强、对环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
单片机根据其基本操作处理的位数可分为4、8、16、32位单片机,应用最为广泛的是八位单片机。
根据本次设计的实际情况和要求,在本次设计中采用AT89C52作为系统的控制芯片。
89C52内置8位中央处理器、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。
A/D转换电路:
A/D转换电路的种类很多,例如,计数比较型、逐次逼近型、双积分型等等。
选择A/D转换器件主要从转换速度、精度和价格上考虑。
逐次逼近型A/D转换器,在精度、速度和价格上都比较适中,是最常用的A/D转换器。
双积分A/D转换器,具有精度高、抗干扰性好、价格低廉等优点,但转换速度慢。
近年来在微机应用领域中也得到了广泛的应用。
本课题需要将采集到的温度模拟信号转换成相应的数字信号,从而进行比较控制显示,而ADC0809是8位逐次逼近型的A/D转换器。
它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成(见图a)。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
其特点符合本次课题的转换要求,故选用ADC0809。
图(a)
四位一体共阳极数码管:
本课题的温度显示部分要求显示到小数点一位,而温度控制范围为0-200摄氏度,因此需要四个七段数码管来显示。
根据实验室已有的器件做全面权衡,最后选择了四位一体共阳极数码管,十二个引脚,四个控制位选,八个控制段选。
如图(b)。
图(b)
4.1.2控制电路
控制电路作为单片机系统的后向通道,他是将单片机处理后的数字控制信号用输出口输出,并将该数字信号用于对控制对象的控制。
由于单片机的输出信号电平很低,无法直接驱动外围设备进行工作,因此在单片机的后向通道中需要外围设备的驱动、信号电平的转换等技术。
本次设计采用控制箱作为控制电路的主要器件,通过继电器可以实现直流信号控制交流负载的功能,从而实现单片机系统的控制功能。
4.1.3系统硬件设计方案
中央处理器:
AT89C52主要性能:
与MCS-51单片机产品兼容、8K字节在系统可编程Flash存储器、1000次擦写周期、全静态操作:
0Hz~33Hz、三级加密程序存储器、32个可编程I/O口线、三个16位定时器/计数器八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。
89C52芯片引脚图:
图(c)
●P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
●P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在线系统编程用)
P1.6MISO(在线系统编程用)
P1.7SCK(在线系统编程用)
●P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
●P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
P3口亦作为STC89C52特殊功能(第二功能)使用,如下表所示。
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
●RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
●ALE/PROG——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
●PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
●EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
●VCC:
电源
●GND:
地
复位电路的设计
复位使单片机处于起始状态,并从该起始状态开始运行。
AT89C52的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,则可使单片机复位。
内部复位电路在每一个机器周期的S5P2期间采样斯密特触发器的输出端,该触发器可抑制RST引脚的噪声干扰,并在复位期间不产生ALE信号,内部RAM处于不断电状态。
其中的数据信息不会丢失,也即复位后,只影响SFR中的内容,内部RAM中的数据不受影响。
外部复位有上电复位和按键电平复位。
由于单片机运行过程中,其本身的干扰或外界干扰会导致出错,此时我们可按复位键重新开始运行。
为了便于本设计运行调试,复位电路采用按键复位方式。
时钟电路设计
时钟电路是单片机的心脏,它控制着单片机的工作节奏。
MCS-51单片机允许的时钟频率是因型号而异的,其典型值为12MHZ。
AT89C51内部有一个反相振荡放大器,XTAL1
和XTAL2分别是该反向振荡放大器的输入端和输出端。
该反向放大器可配置为片内振荡器,石晶振荡和陶瓷振荡均可采用。
本设计采用的晶振频率为12MHZ。
其时钟电路如图3.4所示。
51系列单片机还可使用外部时钟。
在使用外部时钟时,外部时钟必须从XTAL1输入,而XTAL2悬空。
A/D转换电路
ADC0809是一种8位逐次逼近式A/D转换器,其内部有一个8位“三态输出锁存器”可以锁存A/D转换后的数字量,故它本身既可看作一种输入设备,也可以认为是并行I/O接口芯片。
故ADC0809可以和微机直接接口,本设计就是用AT8951和ADC0809直接相连的。
ADC0809采用双列直插式封装,图(e)为ADC0809引脚图,共有28条引脚,主要引脚功能为:
●IN0~IN7:
为八路模拟电压输入线,用于输入被转换的模拟电压。
●ALE:
为地址锁存允许输入线,高电平有效。
●ADD-A、ADD-B和ADD-C:
为地址输入线,用于选择IN0~IN7上那一路模拟电压送给比较器进行A/D转换。
ADDA、ADDB和ADDC对IN0~IN7的选择如表3-4所列:
●START:
为“启动脉冲”输入线,上升沿清零SAR,下降沿启动ADC0809工作。
●EOC:
为转换结束输出线,该线上高电平表示A/D转换已结束。
●OE:
为“输出允许”线,高电平时能使2
~2
引脚上输出转换后的数字量。
图(e)ADC0809引脚图
表3-48位模拟开关功能表
被选模拟电压
ADDC
ADDB
ADDA
IN0
IN1
1
IN2
IN3
IN4
IN5
IN6
IN7
AT89C52与ADC0809的连接方法如图3.9所示,AT89C52通过地址线P2.7和写控制信号线
用一个或非门联合控制启动转换信号端(START)和地址锁存信号端(ALE)。
地址线P2.7和读控制信号线
用一个或非门联合控制输出允许控制端(EOC)。
低三位地址线加到ADC0809的ADDA、ADDB、ADDC端,所以选中ADC0809的IN0通道的地址为7FF8H。
转换结束信号EOC通过一个反相器接到INT1。
图3.9AT89C52与ADC0809连接图
AT89C52和ADC0809连接通常可以采用查询和中断两种方式。
本系统采用中断方式传送数据,EOC线作为CPU的中断请求输入线。
CPU线响应中断后,应在中断服务程序中使OE线变为高电平,以提取A/D转换后的数字量。
其中
和START的逻辑关系分别为:
=P2.7•
=P2.7+
START=P2.7•
=P2.7+
对ADC0809地址的确定:
根据系统硬件连接图可知所选定模拟电压路数为IN0,其对应的地址为ABC=000,即P0.0、P0.1、P0.2=000;
又P2.7=0时才能启动ADC0809工作和使AT89C51从ADC0809接收A/D转换电压的数字量。
故确定ADC0809其中一个地址为:
0111111111111000B=7FF8H,其中“__”表示固定量。
ADC0809的IN0和变送器输出端线连,故IN0上输入的0V~+5V范围的模拟电压经A/D转换后可由AT89C52通过程序从P0口输入到它的内部RAM单元。
ADC0809所需时钟信号可以由AT89C52的ALE信号提供。
AT89C52的ALE信号通常是每个机器周期出现两次,故它的频率是单片机时钟频率的1/6。
本系统AT89C51主频是12MHZ,ALE信号频率为2MHZ,使AT89C51的ALE上信号经过4分频后接到ADC0809的CLOCK输入端,就可获得500KHZ的A/D转换脉冲,当然,ALE上脉冲会在MOVX指令的每个机器周期少出现一次,但通常情况下影响不大。
ADC0809时序图如图3.10所示。
10us
图3.10ADC0809时序图
从时序图可以看出,在启动ADC0809后,EOC约在10us后才变为低电平,EOC线经过反相器和AT89C52线相连,这即是AT89C52采用中断方式来和ADC0809传送A/D转换后的数字量的。
为了给OE线分配一个地址,把AT89C52RD和P2.7经或门和OE相连。
平时,使OE处于低电平封锁状态,在响应中断后,AT89C51执行中断服务程序中如下两条指令就可以使OE变为高电平,从而打开三态输出锁存器,让CPU提取A/D转换后的数字量。
数码管显示电路:
单片机应用系统中使用的显示器主要有发光二极管显示器,简称LED;
液晶显示器,简称LCD。
前者价廉,配置灵活,与单片机接口方便;
后者可进行图形显示,但接口复杂,成本较高。
结合本设计的特点,在这里系统的显示采用发光二极管作为显示器件。
单片机中使用7段LED构成字形“8”,另外,还与一个小数点发光二极管用以显示数字、符号及小数点。
这种显示器有共阴极和共阳极两种,如图3.11所示。
发光二极管的阳极连在一起称为共阳极显示器,阴极连在一起的称为共阴极显示器。
一位显示器由八个发光二极管组成,其中,7个发光二极管构成字形“8”的各个笔划(段)a-g,另一个小数点为dp发光二极管。
当在某段发光二极管施加一定的正向电压是,该段笔划即点亮;
不加电压则该段二极管不亮。
为了保护各段LED不被损坏,需要外加限流电阻。
图3.11数码管
如果要显示某个字形,则应使此字形的相应段点亮,也即送一个不同的电平组合代表的数据来控制LED的显示字形,此数据称为字符的段码。
数据字位数与LED段码的关系如表3-4所示。
表3-4数码管各段与输出口各位的对应关系
输出口各位
D7
D6
D5
D4
D3
D2
D1
D0
数码管各段
dp
g
f
e
d
c
b
a
如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段暗;
如使用共阴极数码管,数据为0表示对应字段暗,数据为1表示对应字段亮。
如要显示“0”,共阳极数码管的字型编码应为:
11000000B(即C0H);
共阴极数码管的字型编码应为:
00111111B(3FH)。
依次类推,可求得数码管字型编码如表3-5所示。
表3-5数码管字型编码表
字型
共阳极
共阴极
字型码
C0H
3FH
F9H
06H
2
A4H
5BH
3
B0H
4FH
续表3-5
4
99H
66H
5
92H
6DH
6
82H
7DH
7
F8H
07H
8
80H
7FH
9
90H
6FH
A
88H
77H
B
83H
7CH
C
C6H
39H
D
A1H
5EH
E
86H
79H
F
8EH
71H
灭
FFH
00H
控制箱部分:
控制箱里有继电器,主要是通过控制继电器的闭合与断开,来控制温箱加热与不加热。
继电器它实际上是用较小的电流控制较大电流的一种开关。
故在电路中起自动调节、安全保护、转换电路等作用。
这部分,主要注意将控制箱和温箱正确的连接起来。
仿真时,P3.0口接LED,当继电器闭合时,仿真图上演示为灯亮,当继电器断开时,仿真图上演示为灯灭。
这部分的仿真如下:
按键部分:
当按键闭合时,是温箱中的温度和预设温度比较,数码管上显示的是控制中的温箱上的温度;
当按键断开时,温箱中的温度和预设温度不进行比较,数码管上显示的是温箱中的温度。
4.2系统软件设计
本次单片机温控系统的功能是由硬件电路配合软件来实现的,当硬件基本定型后,软件的功能也就基本定下来了。
系统软件的功能又可分为两大类:
一是监控软件,它是整个控制系统的核心,专门用来协调各执行模块和操作者的关系。
二是执行软件,它是用来完成各种实质性的功能如测量、显示等功能。
每一个执行软件也就是一个小的功能执行模块。
本文将各执行模块一一列出,各执行模块规划好后,就可以规划监控程序了。
本系统程序设计包括温度采集子程序、显示子程序、、控制子程序。
程序流程图如图4.2所示。
数码管显示温箱中温度变化
小于等于-2大于等于2
图4.2系统流程图
4.2.1主程序
主程序的编写是为了实现程序在各个模块间的跳转。
这样使程序编写思路更加明了,简化了程序的编写难度,有利于程序的调试。
本软件系统包括A/D转换模块,显示模块,控制模块等。
程序如下:
voidmain(void)
{delay(5);
TMOD=0x02;
TH0=200;
TL0=200;
//须定时200us左右
TR0=1;
ET0=1;
PT0=1;
//优先级
EA=1;
AD_START=0;
AD_START=1;
//上升沿复位内部寄存器
AD_START=0;
//下降沿开始A/D
while
(1)
{
if(AD_Change>
=KEY_Change)
LED=0;
else
LED=1;