多加热炉炉温检测课程设计报告Word文件下载.docx
《多加热炉炉温检测课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《多加热炉炉温检测课程设计报告Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
电压范围0~5V;
2.检测系统应用软件主要包括:
⑴主程序;
⑵A/D转换中断服务子程序;
⑶定时器中断服务子程序;
⑷代码转换子程序;
⑸显示子程序;
⑹按键中断服务子程序;
3.程序流程图;
4.多加热炉炉温检测系统硬件图。
三、源程序
.486
DATASEGMENTAT0USE16
;
8255各个端口的地址
PORTAEQU203H
PORTBEQU207H
PORTCEQU20BH
CONTROLPORTEQU20FH
七段码地址
WEIEQU360H
DUANEQU340H
8253各个端口地址
DS0EQU300H
DSIEQU304H
DS2EQU308H
DSCEQU30CH
8259端口地址
OPORTEQU3A0H
JPORTEQU3A8H
0809地址
ADPORTEQU3C0H
ADPORTIEQU3C4H
ADPORI2EQU3C8H
中断向量
ZDIROEQU20H;
定时器中断
ZDLR1EQU24H;
AD中断
ZDIR2EQU28H;
开笑1中断
ZDIR3EQU2CH;
开关2中断
ZDIR4EQU30H;
开关3中断
定义数据缓冲区
ORG4000H
DATA4ADDB3DUP(?
);
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
MOVAL,00001000B;
写入ICW2
MOVDX,JPORT
MOVAL,00000001B;
写入ICW4
MOVAL,11100000B;
写入OCW1屏蔽字
OUTDX,AL
MOVAL,20H;
清ISR
MOVDX,OPORT
OUTDX.AL
INITLA8255:
MOVAL,10000000B;
A、B、C口都工作于方式0,都为输出
MOVDX,CONTROLPORT
MOVAL,0FFH
MOVDX,PORTA
INITIA8253:
MOVDX,DSC
MOVAL,00110110B;
方式3二进制计数
MOVDX,DS0
MOVAL,60H;
计数初值设为0EA60H/6000D
MOVAL,0EAH
中断向量初始化
MOVDI,ZDIR0
MOVAX,OFFSETTIMER
STOSW
MOVAX,SEGTIMER
MOVDI,ZDIRI
MOVAX,OFFSETADPROC
STOSW
MOVAX,SEGADPROC
MOVDI,ZDIR2
MOVAX,OFFSETSWITCH1
MOVAX,SEGSWITCH1
MOVDI,ZDIR3
MOVAX,OFFSETSWITH2
MOVAX,SEGSWITH2
MOVDI,ZDIR4
MOVAX,OFFSETswitcb3
MOVAX,SEGSWITCH3
MOVDX,ADPORT;
启动ADC
炉号初始化
MOVDX,4003H
MOVBYTEPTR[DI],0
INCDI
MOVBYTEPTR[DI],1
ADDDI,4
MOVBYTEPTR[DI],0
INCDI
MOVBYTEPTR[D1],2
ADDDL4
MOVBYTEPTR[DI],3
AGAIN:
STI
CALLCZBCD
CALLDISP
JMPAGAIN
一一拆字十六进制转BCD码一一
CZBCDPROC
PUSHBx
PUSHCX
PUSHAX
LEASI,DATA4AD;
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
ST1:
MOVBYTEPTR[DI+2],0FH
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
PUSHBX
LEABX,TAB;
MOVSI,LEDNW
MOVAH,0C1H
DISP1:
MOVDX,WEI
MOVAL,AH
OUTDX.AL;
位输山
MOVDX,DUAN
XLAT
OUTDX,AL;
段输出
MOVCX,0200H
LOOP$
SALAH.1
ORAH,0C0H
CMPAH,0C0H
JNZDISP1
POPDX
DISPENDP
:
一一AD采样程序一一
ADPROCPROC
PUSHSI
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
JZBAOJIN1
CMPSI,4001H
JZBAOJIN2
CMPSI,4002H
JZBAOJIN3
JMPCHUQU
BAOJINl:
MOVDX,203H:
报警1
MOVAX,0FEH
BAOJIN2:
MOVDX,207H:
报警2
MOVAX,0FDH
BAOJIN3:
MOVDXT,20BH;
报警3
MOVAX,OFCH
OK:
MOVDX,203H;
解除报警
MOVAX,0FFH
OK1:
MOVDX,207H
OK2:
MOVDX,20BH
OUTDX,AL
CHUQU:
CHU:
MOVAL,20H
POPSI
IRET
ADPROCENDP
一一定时器中断
TIMERPROC
MOVAL,[TIME]
DECAL
MOV[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
TIMERENDP
一——开关l的中断———一
SWITCH1PROC
NOTSWHI
CMPSWHI,O
JNZBACK1
MOV[LEDNW],4003H;
第1次按T'
BACK1:
IRET
SWITCH1ENDP
——一一开关2的中断——
SWITH2PROC
NOTSTWH2
CMPSTWH2,0
JNZBACK2
MOV[LEDNW],4009H;
是第1次按下
BACK2:
SWITH2ENDP
一一·
一开关3的中断——一一
SWITCH3PROC
NOTSWH3
CMPSWH3,0
JNZBACK3
MOV[LEDNW],400FH;
BACK3:
SWITCH3ENDP
CODEENDS
ENDBEG
4、程序流程图
N
Y
是否不小于DDH
报警3
报警2
采样通道号加1
温度否不大于11H
不报警
采样通道号是否大于3
SI=4000H?
SI=4001H?
SI=4002H?
置1号炉
读A/D采样数据
中断返回
启动A/D
显示
是否到三号炉?
拆字
开中断
预置Tk值
预置采样通道号0
程序初始化
清数据区
主程序A/D转换中断服务子程序
报警1
定时器中断服务子程序
定时时间到(TK-1=0)?
拆字子程序
LED地址加2
换炉显示
温度≤11H(60)
输出报错号E0
≥DDH(180)
输出报错号EF
转换为实际温度(乘30除51加50)
显示子程序
结束
AH=3C0H?
AH左移
SI加1
延时
位输出
取段码表
SI+1≤4002?
?
RET
CX=0?
CX-1
除以10取余
CX=3
重置TK值
5、硬件连接图
0V
+5V
D0~D7
A2
A3
A4
IN2
IN1
IN0
0~5V
0809
START
ALE
OE
CLK
EOC
ADDA
ADDB
ADDC
EOC
74LS02
CLOCK
CS-4CS-4
按键1
GND
470+5V
IOR
+5VSP/1
RST
A0
A1
IOW
CSCS7
CS1CS
IORIOW
IRQ1
8255
RESET
A0PA0
A1
WRRDPB1
CSPC2
RD
WRINT
IRQ1CS
IRQ2INTA
IRQ3
IRQ4D0~
D7
SP/EN
8253
Q_1
Q_2
Q_0
按键2
按键3
INT1INTR
INTA
CS-1CS6
P_1
P_0
3MHz
+5VIRQ0
CS3CS2
VCC
74LS273
CLRQ0
Q1
Q2
Q3
Q4
Q5
CLKQ6
Q7
Q0
CLKQ1
Q6
CLRQ7
CS4CS1
位码驱动
段码驱动
abcdefgdp
多加热炉炉温检测硬件连接图
1
4
2
3
6
5
8259
CSCLK0
D0GATE0
~OUT0
D7
RDA0
WRA1