烘箱温度控制系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一部分设计题目及设计要求
设计内容:在烘箱内部装有一个1000W的电加热丝和一个PT100 铂热敏电阻温度传感器,用8088CPU 设计一个温度控制器,对烘箱温度(室温-100度)进行控制。
要求系统可对控制温度进行设置(键盘),对当前温度进行显示(7段LED显示器)(设已知PT100的温度系数为0.01 /度)。
第二部分设计要求
设计要求:画出电路原理图,说明工作原理,编写相应程序,其控制为简单控制,即当温度超过设定温度1度时停止加热,当低于设定温度1度时开始加热。
第三部分设计总体方案
设计总体方案:本系统是以8088微处理器为核心,是一个典型的温度闭环控制系统,需要完成的功能是温度的设定、温度的采集与显示以及温度的自动控制等。
系统采用最简单的开关通断控制方式,即当烘箱温度大于设置值1度时断开加热电阻丝,当温度低于设定值1度值时接通电阻丝开始加热,从而保持恒温控制。
根据设计的要求,可将系统分为如下几个子模块:温度检测模块,AD转换模块,键盘输入模块,接口扩展模块,温度显示模块,温度控制模块。
由于本系统需要的接口较多,我们使用了两片可编程并行接口8255以提高系统的工作效率。
第一片8255(1)用于连接键盘和十位和个位数码管显示;第二片8255(2)用于连接十分位的数码管显示,AD
转换器和温度控制系统。
系统原理图如下图所示:
其详细原理是:温度的传感和放大部分通过PT100热敏电阻温度传感器和运算放大器来实现温度的检测与电压放大,通过温度检测与信号调理模块来实现。
该模块将得到的电压信号送到ADC0809进行模数转换。
8088从ADC0809读转换后的数字量,由温度与数字量的转换关系,调用相应子程序将数字量转换成温度的BCD码。
这时CPU8088将该温度值(即实际温度值)与先前通过键盘输入的值(即设定值)进行比较,若实际温度值高于设定温度值的1度时,调用停止加热子程序,若实际值低于设定值的1度时,则调用开始加热子程序。
这两个子程序执行完毕之后,检测一次按键,若无按键被按下,则返回到温度采集模块重新采集新的温度值与设定值进行比较;若有按键被按下,则回到按键检测过程重新开始执行程序。
系统硬件连接示意图:
系统总流程图:
第四部分主要元件
主要元件介绍:
⑴8088CPU简介及其总线形成原理
1979年,INTEL公司推出了8088芯片,它仍旧是属于16位微处理器,内含29000个晶体管,时钟频率为4.77MHz,地址总线为20位,可使用1MB内存。
8088内部数据总线是16位,外部数据总线是8位。
作为微处理器,再加上必须的支持芯片,如时钟发生器,地址锁存器,总线驱动器 ,存储器和I/O接口等,才能构成一台完整的微型计算机。
根据外部设备的数量和系统复杂程度,8088可以选用两种系统总
线构成模式,最小模式和最大模式。
最小模式是单CPU系统,在这种系统中,8088的MN/MX引脚接高电平,系统全部的控制信号都直接由CPU 提供。
最大模式是多CPU系统,此时MN/MX引脚接低电平,必须通过8288总线控制器对CPU的状态信息进行译码才能产生系统必须的控制信号。
最小模式系统构成如图1所示。
这时8088的MN/MX引脚接至VCC,它直接产生存储器和I/O端口的读写命令,如IO/M,RD,WR,INTA,直接产生地址锁定信号ALE,控制数据收发器的控制信号DT/R,DEN。
图1 8088的最小总线模式
⑵8255简介及其工作方式
8255是Intel公司生产的为x86系列CPU配套的可编程并行接口芯片,其通用性较强,使用灵活。
8255内部包含3个独立的I/O 端口(A口、B口和C口)以及一个控制寄存器,共有3种工作方式(本设计中三个端口工作在方式0和方式1下):
1)方式0:基本输入输出方式。
在这种工作方式下,A口、C口的高4位、B口以及C口的低4位可分别定义为输入或输出,各端口相互独立,故共有16种不同的组合,且C口具有按位进行置位和复位的能力。
此方式最适合于无条件传送方式。
本设计中三个端口均工作在方式0下。
2)方式1:选通输入输出方式。
在这种方式下,A口和B口仍作为数据的输入输出口,C口的某些位用来提供选通信号以控制数据的输入输出。
3)方式2:双向传输方式。
只有A口可以工作在这种方式下。
利用C 口的5条线来提供双向传输所需的控制信号。
当A口工作于方式2时,B口可以工作在方式0或方式1,而C口剩下的3条线可作为输入输出线或用作B口方式1下的控制线。
8255具体的工作方式通过软件向控制寄存器中写入相应的控制字来实现,这个过程称为8255的初始化。
8255的外部引线如图2所示。
图2 8255外部引线
⑶存储器简介
1.EPROM2764
2764是8K*8b的紫外线擦出、电可编程只读存储器,单一+5V供电,工作电流为75mA,维持电流为35mA,读出时间最大为250nS,28脚双列直插式封装。
各引脚的含义为:
A0-A12为13根地址线,可寻址8K字节;D0-D7为数据输出线;CE 为片选线;OE为数据输出选通线;PGM为编程脉冲输入端;Vpp是编程电源;Vcc是主电源。
正常工作(只读)时,Vpp=Vcc=+5V, PGM=+5V。
编程时,Vpp=+25V(高压),PGM端加入宽度为50ms的负脉冲。
EPROM 2764的外部引线如图3所示。
它的引线与SRAM芯片6264是兼容的。
这给使用者带来很大方便。
因为在软件调试过程中,程序经常需要修改,此时可将程序先放在6264中,读写修改都很方便。
调试成功后,将程序固化在2764中,由于它与6264的引脚兼容,所以可以把2764直接插在原6264的插座上。
这样,程序就不会由于断电而丢失。
2.SRAM6264
6264是一种8K×8的静态存储器,主要包括512×128的存储器矩阵、行/列地址译码器以及数据输入输出控制逻辑电路。
地址线13位,其中A12~A3用于行地址译码,A2~A0和A10用于列地址译码。
在存储器读周期,选中单元的8位数据经列I/O控制电路输出;在存储器写周期,外部8位数据经输入数据控制电路和列I/O控制电路,写入到所选中的
单元中。
6264有28个引脚,如图所示,采用双列直插式结构,使用单一+5 V电源。
其中,D0~D7接8根双向数据线,CS接片选信号线,OE为输出允许信号,WE为写允许信号,Vcc为+5V电源,GND是接地端,NC 表示空端。
EPROM 2764 的外部引线
第五部分子模块介绍
⑴温度检测模块
详细原理:本系统的温度检测的设计是以PT100热敏电阻为检测元件的,PT100铂电阻温度传感器, 0℃时电阻值为100Ω,100℃时为138.5Ω。
精度高,稳定性好,应用温度范围广,是中低温区(-200℃~650℃)最常用的一种温度检测器,不仅广泛应用于工业测温,而且被制成各种标准温度计。
由于其电阻值小,灵敏度高,所以引线的阻值不能忽略不计,采用三线式接法可消除引线线路电阻带来的测量误差。
原理如下:PT100引出的三根导线截面积和长度均相同(即r1=r2=r3),测量铂电阻的电路一般是不平衡电桥,铂电阻(Rpt100)作为电桥的一个桥臂电阻,将导线一根(r1)接到电桥的电源端,其余两根(r2、r3)分别接到铂电阻所在的桥臂及与其相邻的桥臂上,这样两桥臂都引入了相同阻值的引线电阻,电桥处于平衡状态,引线线电阻的变化对测量结果没有任何影响。
由于测温的范围是0℃——100 ℃,将0℃对应的PT100阻值100Ω和100 ℃时对应的阻值138.5Ω分别带进电桥计算,得到温差为100 ℃时电桥两端的出入约为0.15v,这时需要将该电压值调理到适合ADC0809的输入通道匹配电压值0~5v,于是用LM324将该电压放大33倍,接近5v。
由于一般电源供应多器件之后,电源是带杂波的,因此使用稳压二极管作为稳压元件,再利用可变电阻分压输出电压接A\D转换器,那么A\D转换输出的数字量就和摄氏温度成线性比例的关系。
电路图
⑵AD转换模块
器件简介:我们选择使用ADC0809来进行AD转换,ADC0809是逐位逼近型8位单片AD转换芯片。
片内含8路模拟开关,可允许8路模拟量输入。
片内带有三态输出缓冲器,可直接与总线相连。
它的转换精度和转换时间都不是很高,但其性能价格比有比较明显的优势,是目前应用较为广泛的芯片之一。
ADC0809工作过程:
1)首先输入3位地址信号,ADDA、ADDB、ADDC。
2)在通道地址信号有效期间,使ALE引脚上产生一个由低到高的电平变化,即脉冲上跳沿,它将输入的3位通道地址锁存到内部地址锁存器。
3)接着给START引脚加上一个由高到低变化的电平,启动AD 转换。
4)变换开始后,EOC引脚呈现低电平,一旦变换结束,EOC又重新变为高电平。
5)CPU在检测到EOC变高后,输出一个正脉冲到OE端,将转换结果取走。
详细应用过程:
模拟输入通道地址A,B,C直接接地,因此ADC0809只对通道IN0输入的电压进行模数转换。
为了减少输入噪声其他通道直接接地。
ADC0809的数据线D0-D7与第一片8255的PA0-PA7相连接,其EOC接在PB2上,ALE和START接在PB0上,OE接在PB1上。
PB2接加温电路。
ADC0809接受由温度采集模块送来的模拟电压信号。
CPU8088通过8255向ADC0809的ALE和START端口送一个高电平,这时ADC0809将地址信息锁存起来,并启动模数转换器开始转换模拟信息。
当转换完成之后,ADC0809的EOC将变为高电平,这时8088读到该高电平时,向ADC0809的OE端口送一个高电平读允许信号,并从它的8位数据端口读转换完成后的数字量。
电路图流程图:
⑶键盘输入模块
详细原理:温度的预设值需要用键盘输入,矩阵键盘所需的连线非常少,是一般微机常用的键盘结构。
本系统需要输入0-9的数字,所以设计成4*4的矩阵键盘,其中只有前十个按键有效。
按键的识别采用反转法。
电路图
矩阵键盘键码的读出这里采用反转法,首先初始化第一片8255,定义PC口高四位为输出,低四位为输入。
然后使PC口高4位先输出0,读低四位即列线的状态,如果列线有低电平,说明有键按下,保存列值。
再定义PC口高四位为输入,低四位为输出,使低四位输出刚才保存的列值,读高四位得到行值并保存。
组合行值和列值,查表后即可得到对应的键值。
流程图
⑷接口扩展模块
详细原理:两片8255的数据口D0-D7与CPU的数据总线相连接,控制8255内部的各种操作。
控制线RESET用来使8255A复位。
CS 和地址线A1及A0用于芯片选择和通道寻址。
分别与译码电路和8088的地址线A1,A0相连接。
电路图
首先确定第一块8255的地址为0000H~0003H,第二块8255的地址为
0004H~0007H,按照该地址分配使用8088的低16位地址线确定译码电路,分别选中两片8255的CS。
由于8088的AD0~AD19具有分时复用的功能,使用时首先送出地址,选中对应芯片后送出数据。
所以两片8255的数据端口再次接8088的AD0~AD7。
⑸数据显示模块
详细原理:用第一片8255的A口和B口分别接2片LED数码管,分别用来显示十位数和个位数;第二片8255的C口接1片LED数码管用来显示十分位。
显示时8088首先向第1片8255送控制字,然后向A口送十位数转换的字段码,将温度的十数位显示在LED上,同样的方法依次选中LED之后将温度的个位和十分位显示在LED,每秒更新一次温度值。
个位的数码管的dp端接高电平,使其上面的小数点点亮。
流程图:
⑹温度控制模块
详细原理:当第一片8255的PB3为高电平时,三极管导通,继电器
吸合,加热系统开始压加热;反之,输入低电平,三极管截止,继电
器断开,停止加热。
在图中二极管的作用是吸收继电器端开时产生的浪涌电压。
电路图
数据处理流程图:
(7)存储器扩展模块
用74LS138对RAM6264和ROM2764存储器进行片选,用A15~A13作片选信号。
A20~A16与或门相连接选通输入端。
地址分配如下。
第六部分代码
DATA SEGMENT
KEY DB 77H,7BH,7DH,B7H,BBH,BDH,D7H,DBH,DDH,E7H
BUF DB 1OO DUP(?)
LED DB 3FH,06H,5BH,4FH,60H,6DH,7DH,07H,7FH,6FH
DATA ENDS
STACK SEGMENT DB 30 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATE
START: MOV AX,DATE
MOV DS,AX
L6: MOV AX,0
CALL SHOW
OUT 00H,AL;将取得的字码段输出到十位LED上
MOV DI,OFFSET BUF
MOV [DI],BL;保存十位
CALL DELAY;延迟
CALL SHOW
OUT 01H,AL;将取得的字码段输出到个位的LED上
MOV [DI+1],BL;保存个位
CALL DELAY
MOV AL,92H
OUT 07H,AL;将8255(2)C口设为输出
CALL SHOW
OUT 06H,AL;将取得的字码段输出到十分位的LED
MOV [DI+2],BL;保存十分位
L4:CALL DELAY
CALL ZHUANHUAN
MOV AL,[DI];取设定温度的十位
MOV BL,[DI+4];取检测温度的十位
CMP AL,BL;将设置温度的十位和检测温度的十位比较 JA L1;跳到L1,直接加热
MOV AH,[DI+1];取设定温度的个位
MOV AL,[DI+2];取设定温度的十分位
MOV CL,4
SHL AH,CL
ADD AH,AL;将个位和十分位相加
MOV BH,[DI+5];取检测温度的个位
MOV BL,[DI+3];取检测温度的十分位
SHL BH,CL
ADD BH,AL
CMP AH,BH
JA L3
ADD AH,10H;相当于个位加1
CMP AH,BH
JAE L1
JMP L2
L3:SUB AH,10H;相当于个位减1
CMP AH,BH
JA L1
JMP L2
L1:MOV AL,80H
OUT 07H,AL;将8255(2)的B口设为输出MOV AL,08H
OUT 05H,AL;PB3输出为1,加热
JMP L5
L2:MOV AL,80H
OUT 07H,AL
MOV AL,00H
OUT 05H,AL;PB3输出为0,不加热
JMP L5
L5:MOV AL,81H
OUT 03H,AL
MOV AL,0
OUT 02H,AL
IN AL,02H ;读C口低4位值
AND AL,0FH
CMP AL,0FH;看是否有键按下
JE L4;没有键按下,则跳到L4
JMP L6;否则跳到L6
INPUT PROC :NEAR
MOV AL,81H;方式选择控制字,PC7-PC4输出,PC3-PC0输入OUT 03H,AL
MOV AL,0
OUT 02H,AL;将C口高4值输出
WAIT1:IN AL,02H;读取C口低4位值
AND AL,0FH;清零掉高4位
CMP AL,0FH;看是否有键按下
JE WAIT1;没有键按下,跳到WAIT1
MOV AH,AL;保留低4位
MOV AL,88H;PC7-PC4输入,PC3-PC0输出
OUT 03H,AL
MOV AL,AH
OUT 02H,AL;把得到的低4位值再输出到低4位口上IN AL,02H;读取C口高4位的值
AND AL,F0H;保留高4位
OR AL,AH;组合读到的值
RET
INPUT ENDP
SHOW PROC NEAR
CALL INPUT
MOV BL,00H
AND BX,000FH
WAIT2:MOV CL,KEY[BX];取键值
INC BL
CMP AL,CL
JNE WAIT2;不相等跳回WAIT2
DEC BL
MOV AL,LED[BX];取得显示的字码段
RET
SHOW ENDP
ZHUANHUAN PROC NEAR
MOV BX,0;BX作为累加器
MOV CL,8;总共采集8次数据
MOV AL,90H
OUT 07H,AL;给8255控制端写控制字,定义B口为输出AD1: MOV AL,1
OUT 05H,AL;给PB口写命令字,使ALE和START变高电平,地址锁存
MOV AL,0
OUT 05H,AL;给PB口写命令字,使ALE和START变低电平,AD转换启动
CALL DELAY1;调用延时子程序,等待AD转换结束
MOV AL,92H
OUT 07H,AL;重新给控制端写控制字,定义B口为输入WAIT:IN AL,DX
TEST AL,04H;检测PB3口EOC是否为高电平
JNZ WAIT
MOV AL,90H
OUT 07H,AL;重新给控制端写控制字,定义B口为输出
MOV AL,06H
OUT 05H,AL;若EOC是高电平,送高电平给OE MOV DX,04H
IN AL,DX;读PA口数据
CBW;将AL扩展为AX
AND AX,00FFH;高8位置0
ADD BX,AX;累加读出数据
LOOP AD1;再次采集
MOV CL,3
SHR BX,CL;将采集总数除以8取平均值
CALL BCDZH
RET
ZHUANGHUAN ENDP
BCDZH PROC NEAR
MOV AX,BX
MOV BL,4
MUL BL;将AX中的值乘以4 存AX
MOV BL,10
DIV BL;将AX中的值除以10,余数存AH,商存AL
MOV [DI+3],AH;存十分位
MOV BL,AH
MOV BH,0
MOV BL,LED[BX]
OUT 06H,BL
MOV AH,O
MOV BL,10
DIV BL
MOV [DI+4],AH;存十位
MOV BL,AH
MOV BH,0
MOV BL,LED[BX]
OUT OOH,BL
MOV [DI+5],AL;存个位
MOV AH,0
MOV BL,LED[AX]
OUT O1H,BL
RET
BCDZH ENDP
DELAY1 PROC NEAR
PUSH CX
MOV CX,0DAH;占4个周期NEXT: NOP;占3个周期
NOP
LOOP NEXT;执行循环时占17个周期,最后不执行循环占5个周期
POP CX
RET;约1MS延时
DELAY1 ENDP
DELAY PROC NEAR
PUSH CX
PUSH DX
NEXT1:MOV DX,03E5H
MOV CX,0DAH
NEXT2: NOP
NOP
LOOP NEXT2
DEC DX
JNZ NEXT1;约1s延时
POP DX
POP CX
RET
DELAY ENDP
CODE ENDS
END START
第七部分课程设计心得
两周的课程设计结束了,感觉收获好多,其中不乏有组员的努力和起初时完全没有思路的头疼,但是通过我们团队每个人的努力,查阅资料和分工明确,高效而紧张的展开了课程设计,课程中遇到不少问题,通过询问同学和老师,终于解决了问题,这使得我们学会了遇到问题时应该坚持不懈,终会有好的结果出现。
最后感谢陈鸿老师的课程辅导和同学们的帮助!
第八部分参考文献
[1]冯博琴,微型计算机原理与接口技术,北京:清华大学出版社,2010
[2]郑学坚,微型计算机原理及应用实验指导.北京:清华大学出版社,2000。