多加热炉炉温检测课程设计报告.docx
《多加热炉炉温检测课程设计报告.docx》由会员分享,可在线阅读,更多相关《多加热炉炉温检测课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。
多加热炉炉温检测课程设计报告
课题3多加热炉炉温检测系统设计
.任务及要求:
1.加热炉的炉温可以在60C〜180C之间任意调节;
2.系统每隔3秒钟检测一遍炉温(三个炉子);
3.利用六位七段码显示器实时显示加热炉的炉号和实际温度,显示值为十进制数值。
显示器的右三位显示加热炉的炉号,左三位显示实际值。
程序启动运行之后即开始循环显示,每次显示时间为3秒钟;
4.分别记录各加热炉的实际炉温数据,轮流显示。
每检测一次即保存一次,循环刷新;
5.对应各加热炉扩展功能按键。
功能键按下后不影响检测功能,仅影响显示功能。
具体要求如下:
⑴在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度。
如果此时按下另外功能键则不起作用,既不会改变当前显示。
只有再次按下同一个功能键之后才能使系统回到循环显示方式状态;
⑵在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度,如果此时按下另一个功能键,则会改变当前显示,即应显示与后一次按下的功能键对应的加热炉的炉号和炉温。
只有连续按下同一个功能键两次才能回到循环显示方式状态;
6.扩展发光二极管担任报警功能,当温度超过200r即点亮发光二极管报警,并显示错误号“EF”,当温度低于50C,点亮发光二极管报警,并显示错误号“E0”。
二•基本工作原理及说明
1.系统硬件连接参考“多加热炉炉温检测系统硬件参考图”。
⑴硬件部分为PD32实验系统或8051单片机实验系统。
包括0809、8253、8259、8255、数据存储器62256、七段码显示器及其驱动电路、按键和报警部分。
图中虚线为需要连接的连线;
⑵加热炉的实际温度用电压表示,由电位器给出。
模拟量电压经A/D转换器0809
转换成数字量。
0809的输入通道选用IN0、IN1、IN2、IN3、…。
A/D采样结束后由EOC信号发出中断请求。
0809的译码地址为3C0H。
通道0~7分别为3C0H,3C4H,3C8H,3CCH,3D0H,3D4H,3D8H,3DCH。
A/D采样结束后由EOC信号发出中断请求;
⑶PD32实验系统中利用8253提供定时服务。
8253的译码地址控制口:
30CH,计数器1:
300H,计数器2:
304H,计数器3:
308H;
8051单片机实验系统中利用单片机内部定时器提供定时;
⑷PD32实验系统中利用8259提供中断服务。
偶地址:
3A0H,奇地址:
3A8H;
8051单片机实验系统中利用单片机内部定时中断和外部中断为系统提供中断服务;
⑸PD32实验系统中利用74LS273驱动七段码显示器。
位地址:
360H,段地址:
340H;
8051单片机实验系统中利用驱动芯片驱动七段码显示器;
⑹PD32实验系统中利用74LS245驱动报警发光二极管。
地址:
340H;
8051单片机实验系统中利用P1口驱动报警发光二极管;
⑺数据存储器62256不需连接,地址范围08000H〜0FFFFH;
⑻PD32实验系统中功能键连到8259的中断端;
8051单片机实验系统中功能键利用P1口和外部中断1实现中断检测;
⑼实际温度由电位器给出,可由外部调节。
电压范围
2.检测系统应用软件主要包括:
⑴主程序;
⑵A/D转换中断服务子程序;
⑶定时器中断服务子程序;
⑷代码转换子程序;
⑸显示子程序;
⑹按键中断服务子程序;
3.程序流程图;
4.多加热炉炉温检测系统硬件图。
三、源程序
0〜5V;
.486
DATASEGMENTAT0USE16;8255各个端口的地址
PORTA
EQU
203H
PORTB
EQU
207H
PORTC
EQU
20BH
CONTROLPORTEQU20FH;七段码地址
WEI
EQU
360H
DUAN
EQU
340H
;8253各个端口地址
DS0
EQU
300H
DSI
EQU
304H
DS2
EQU
308H
DSC
EQU
30CH
;8259端口地址OPORTEQU3A0HJPORTEQU3A8H
;0809地址
ADPORTEQU3C0HADPORTIEQU3C4H
ADPORI2EQU3C8H
;中断向量
ZDIRO
EQU
20H
;定时器中断
ZDLR1
EQU
24H
;AD中断
ZDIR2
EQU
28H
;开笑1中断
ZDIR3
EQU
2CH
;开关2中断
ZDIR4
EQU
30H
;开关3中断
;定义数据缓冲区
ORG4000H
DATA4AD
DB
3
DUP(?
);AD转换后的数据存储处
DATA4LEDDB18DUP(?
);十六进制列BCD的显爪数据存储处
DATAENDS
CODESEGMENTUSE16
ORG2000H
ASSUMECS:
CODE,DS:
DATA,ES:
DATA
BEG:
CLI
段码表
JMPSTART
TABDB3FH,06H.5BH,4FH,66H,6DH,7DH.07H,7FH,67H,77H,7CI-L39H,5EH.79H,71H;;AD转换中断用
ADATANWDWDATA4AD
ADPTNWDW3C0H;通道口内存保留
;显示程序用
LEDNWDWDATA4LED
;定时中断用
TIMEDB150;设置计数值
;开关中断用
SWH1DB0FFH
SWH2DB0FFH
SWH3DB0FFH
START:
MOVAX,DATA
MOVDS,AX
MOVAX,0
MOVSS,AX
MOVSP,1000H
MOVAL,0C0H
MOVDX,WEI,
OUTDX,AL
INITA8259:
MOVAL,00010011B;ICWI;写入ICW1
MOVDX,OPORT
OUTDX,AL
MOVAL,00001000B;写入ICW2
MOVDX,JPORT
OUTDX,AL
MOVAL,00000001B;写入ICW4
MOVDX,JPORT
OUTDX,AL
MOVAL,B;写入OCW1屏蔽字
MOVDX,JPORT
OUTDX,AL
MOVAL,20H;清ISR
MOVDX,OPORT
OUTDX.AL
INITLA8255:
MOVAL,B;A、B、C口都工作于方式0,都为输出
MOVDX,CONTROLPORT
OUTDX,AL
MOVAL,0FFH
MOVDX,PORTA
OUTDX,AL
INITIA8253:
MOVDX,DSC
MOVAL,00110110B;方式3二进制计数
OUTDX,AL
MOVDX,DS0
MOVAL,60H;计数初值设为0EA60H/6000D
OUTDX,AL
MOVAL,0EAH
OUTDX,AL
;中断向量初始化
MOVDI,ZDIR0
MOVAX,OFFSETTIMER
STOSW
MOVAX,SEGTIMER
STOSW
MOVDI,ZDIRI
MOVAX,OFFSETADPROC
STOSW
MOVAX,SEGADPROC
STOSW
MOVDI,ZDIR2
MOVAX,OFFSETSWITCH1
STOSW
MOVAX,SEGSWITCH1
STOSW
MOVDI,ZDIR3
MOVAX,OFFSETSWITH2
STOSW
MOVAX,SEGSWITH2
STOSW
MOVDI,ZDIR4
MOVAX,OFFSETswitcb3
STOSW
MOVAX,SEGSWITCH3
STOSW
MOVDX,ADPORT;启动ADC
OUTDX.AL
;炉号初始化
MOVDX,4003H
MOVBYTEPTR[DI],0
INCDI
MOVBYTEPTR[DI],0
INCDI
MOVBYTEPTR[DI],1
ADDDI,4
MOVBYTEPTR[DI],0
INCDI
MOVBYTEPTR[DI],0
INCDI
MOVBYTEPTR[D1],2
ADDDL4
MOV
BYTEPTR[DI],0
INCDI
MOV
BYTEPTR[DI],0
INCDI
MOV
BYTEPTR[DI],3
AGAIN:
STI
CALLCZBCD
CALLDISP
JMPAGAIN
;一一拆字十六进制转BCD码一一
CZBCDPROC
PUSHBx
PUSHCX
PUSHAX
LEASI,DATA4AD;AD转换后的数据存储处
LEADI,DATA4LED;十六进制到BCD的显示数据存储处
ADDDI,2
CZ0
MOVAL,[SI]
CMPAL,11H;与60比较
JBEST0
CMPAL,0DDH;与180比较
JAEST1
JMPCZ00
ST0:
MOVBYTEPTR[DI+1],0EH
MOVBYTEPTR[DI+2],00H
JMPCZ00
ST1:
MOVBYTEPTR[DI+1],0EH
MOVBYTEPTR[DI+2],0FH
JMPCZ00
CZ00:
MOVBX,1EH;转换为实际温度值
MULBX
MOVDL,51
DIVDL
ADDAX,50
MOVAH,00H
MOVBL,0AH
MOVCX,3
CZ1:
DIVBL
MOV[DI],AH
DECDI
MOVAH,00H
LOOPCZ1
ADDDI,9
INCSI
CMPSI,4002H:
AD转换后的数据存储处是否到头
JBECZ0
POPAX
POPCX
POPBX
RET
CZBCDENDP
DISPPROC
PUSHDX
PUSHCX
PUSHBX
PUSHAX
LEABX,TAB;段码表
MOVSI,LEDNW
MOVAH,0C1H
DISP1:
MOVDX,WEI
MOVAL,AH
OUTDX.AL;位输山
MOVDX,DUAN
MOVAL,[SI]
XLAT
OUTDX,AL;段输出
MOVCX,0200H
LOOP$
INCSI
SALAH.1
ORAH,0C0H
CMPAH,0C0H
JNZDISP1
POPAX
POPBX
POPCX
POPDX
RET
DISPENDP:
一一AD采样程序一一
ADPROCPROC
PUSHAX
PUSHSI
PUSHDX
MOVDX,[ADPTNW];A/D通道0
CMPDX,3c8H;到第三号炉rr?
JBENEXT
MOV【ADPTNW],3COH;就置数据区7号炉端口
NEXT:
MOVSI,[ADATANW]
CMPSI,4002H
JBENEXT2
MOV[ADATANW),4000H
JMPCHU
NEXI2:
INAL,DX
MOV[SI],AL
ADD[ADPTNW],4
INC[ADATANW]
CMPAL,11H;是否在60和180之间
JBEBAOJIN
CMPAL,0DDH
JAEBAOJIN
JMPOK
CMPSI,4000H
JZOK
CMPSI,4001H
JZOK1
CMPSI,4002H
JZOK2
BAOJIN:
CMPSI,4000H
JZBAOJIN1CMPSI,4001H
JZBAOJIN2
CMPSI,4002H
JZBAOJIN3
JMPCHUQU
BAOJINl:
MOVDX,203H:
报警1
MOVAX,0FEH
OUTDX,AL
JMPCHUQU
BAOJIN2:
MOVDX,207H:
报警2
MOVAX,0FDH
OUTDX,AL
JMPCHUQU
BAOJIN3:
MOVDXT,20BH;报警3
MOVAX,OFCH
OUTDX,AL
JMPCHUQU
OK:
MOVDX,203H;解除报警
MOVAX,0FFH
OUTDX,AL
OK1:
MOVDX,207H
OUTDX,AL
OK2:
MOVDX,20BH
OUTDX,AL
CHUQU:
MOVDX,[ADPTNW];启动ADCOUTDX,AL
CHU:
MOVAL,20H
MOVDX,OPORT
OUTDX,AL
POPDXPOPSIPOPAX
IRET
ADPROCENDP:
一一定时器中断
TIMERPROC
PUSHAX
PUSHDX
MOVAL,[TIME]DECALMOV[TIME],AL
CMPAL,0;是否到0
JNZEND0
CMP[SWH1,0:
判断是否有按键按下
JZENDD
CMP[STWH2],0
JZENDDCMP[SWH3],0
JZENDD
MOVAX,[LEDNW];
CMPAX,400FH;
JAEDALE;
ADDAX,6;
MOV[LEDNW],AX;
JMPENDD;
DALE:
MOV[LEDNW],4003H;改变显示参数ENDD:
MOVDX,ADPORT;到了开A/D
OUTDX,AL;
MOV[TIME],150;
END0:
MOVAL,20H
MOVDX,OPORT
OUTDX,AL
POPDX
POPAX
IRET
TIMERENDP
:
一——开关l的中断———一
SWITCH1PROC
NOTSWHI
CMPSWHI,O
JNZBACK1
MOV[LEDNW],4003H;第1次按T'
BACK1:
MOVAL,20H
MOVDX,OPORT
OUTDX,AL
STI
IRET
SWITCH1ENDP
:
——一一开关2的中断——
SWITH2PROC
NOTSTWH2
CMPSTWH2,0
JNZBACK2
MOV[LEDNW],4009H;是第1次按下
BACK2:
MOVAL,20H
MOVDX,OPORT
OUTDX,AL
STI
IRET
SWITH2ENDP
开关3的中断一一
SWITCH3PROC
NOTSWH3
CMPSWH3,0
JNZBACK3
MOV[LEDNW],400FH;是第1次按下
BACK3:
MOVAL,20H
MOVDX,OPORT
OUTDX,AL
STI
IRET
SWITCH3ENDP
CODEENDS
ENDBEG
四、程序流程图
主程序
A/D
转换中断服务子程序
清数据区
拆字子程序
输岀报错号E0
N
输出报错号EF
温度金1H
预置
是否到三号
定时器中断服务子程
定时时间到(K-1=0)?
读A/D采样数据
换炉显示
采样通道号是
否大丁3
启动A/D
N
报警1
置1号炉
转换为实际温度(乘
50)值
D0
D7
A4A3A2
CS-4
IRQ4
►
cx=0?
示
+5V
8255
RESET
CSrdwRA1拆字0Ao
五、硬件连接置
P/T
A0
NRQRQRQR不
SP/E
D0
D7
CX=3
开中断
pcPbiCX-1
□+5V
采样通—
一重置Tk值
温度否不曲血
0〜5
IN1IN00'IN2IN1IN0
断返回
EOCdtadaddddaoc[示子程序clkncseA74lTart
是否不小于io
CD
取段码表
9CU
0809SI=4000H?
SP/1sp/eNrqrqrqr不位
D0
D7〜INTAS|NT
CS7
S&4001H?
825
N
N
SI=4002H?
INTA9NT
N
报警
3
Q_P
按键
PP
按键
inTa
CS6
cs4-
INT1
INTR
口口□□□
EEI:
■n
A3A2
□
…口
irq+53MHz
CS3
IOW
多加热炉炉温检测硬件连接图
VCC
1
cSip
1
CLR
CLK
74
Q7Q6Q5Q4Q3Q2Q1QC
CLK
LS273
Q7Q6Q5Q4Q3Q2Q1Q0
CS2
VCC
CL
R
74LS273