多加热炉炉温检测课程设计报告精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】课题3 多加热炉炉温检测系统设计一.任务及要求:1.加热炉的炉温可以在60℃~180℃之间任意调节;2.系统每隔3秒钟检测一遍炉温(三个炉子);3.利用六位七段码显示器实时显示加热炉的炉号和实际温度,显示值为十进制数值。
显示器的右三位显示加热炉的炉号,左三位显示实际值。
程序启动运行之后即开始循环显示,每次显示时间为3秒钟;4.分别记录各加热炉的实际炉温数据,轮流显示。
每检测一次即保存一次,循环刷新;5.对应各加热炉扩展功能按键。
功能键按下后不影响检测功能,仅影响显示功能。
具体要求如下:⑴在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度。
如果此时按下另外功能键则不起作用,既不会改变当前显示。
只有再次按下同一个功能键之后才能使系统回到循环显示方式状态;⑵在循环显示方式下,按下某一功能键之后,七段码显示器即显示对应加热炉的炉号和实际温度,如果此时按下另一个功能键,则会改变当前显示,即应显示与后一次按下的功能键对应的加热炉的炉号和炉温。
只有连续按下同一个功能键两次才能回到循环显示方式状态;6.扩展发光二极管担任报警功能,当温度超过200℃即点亮发光二极管报警,并显示错误号“EF”,当温度低于50℃,点亮发光二极管报警,并显示错误号“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的译码地址控制口:30C H,计数器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实现中断检测;⑼实际温度由电位器给出,可由外部调节。
电压范围0~5V;2.检测系统应用软件主要包括:⑴主程序;⑵A/D转换中断服务子程序;⑶定时器中断服务子程序;⑷代码转换子程序;⑸显示子程序;⑹按键中断服务子程序;3.程序流程图;4.多加热炉炉温检测系统硬件图。
三、源程序.486DATA SEGMENT AT 0 USE16;8255各个端口的地址PORTA EQU 203HPORTB EQU 207HPORTC EQU 20BH CONTROLPORT EQU 20FH;七段码地址WEI EQU 360HDUAN EQU 340H;8253各个端口地址DS0 EQU 300HDSI EQU 304HDS2 EQU 308HDSC EQU 30CH;8259端口地址OPORT EQU 3A0HJPORT EQU 3A8H;0809地址ADPORT EQU 3C0H ADPORTI EQU 3C4HADPORI2 EQU 3C8H;中断向量ZDIRO EQU 20H ;定时器中断ZDLR1 EQU 24H ; AD中断ZDIR2 EQU 28H ;开笑1中断ZDIR3 EQU 2CH ;开关2中断ZDIR4 EQU 30H ;开关3中断;定义数据缓冲区ORG 4000HDATA4AD DB 3 DUP();AD转换后的数据存储处DATA4LED DB 18 DUP();十六进制列BCD的显爪数据存储处DATA ENDSCODE SEGMENT USE16ORG 2000HASSUME CS:CODE,DS:DATA,ES:DATABEG: CLIJMP STARTTAB DB 3FH,06H.5BH,4FH,66H,6DH,7DH.07H,7FH,67H,77H,7CI-L39H,5EH.79H,71H ;段码表;AD转换中断用ADATANW DW DATA4AD ADPTNW DW 3C0H ;通道口内存保留;显示程序用LEDNW DW DATA4LED;定时中断用TIME DB 150 ;设置计数值;开关中断用SWH1 DB 0FFHSWH2 DB 0FFHSWH3 DB 0FFHSTART:MOV AX,DATAMOV DS,AXMOV AX,0MOV SS,AXMOV SP,1000HMOV AL,0C0HMOV DX,WEI ,OUT DX,ALINITA8259:MOV AL,00010011B;ICWI ;写入ICW1 MOV DX,OPORTOUT DX,ALMOV AL,00001000B ;写入ICW2MOV DX,JPORTOUT DX,ALMOV AL,00000001B ;写入ICW4MOV DX,JPORTOUT DX,ALMOV AL,B ;写入OCW1 屏蔽字MOV DX,JPORTOUT DX,ALMOV AL,20H ;清 ISRMOV DX,OPORTOUT DX.ALINITLA8255:MOV AL,B ;A、B、C口都工作于方式0,都为输出 MOV DX,CONTROLPORTOUT DX,ALMOV AL,0FFHMOV DX,PORTAOUT DX,ALINITIA8253:MOV DX,DSCMOV AL,00110110B ;方式3 二进制计数OUT DX,ALMOV DX,DS0MOV AL,60H ;计数初值设为 0EA60H /6000D OUT DX,ALMOV AL,0EAHOUT DX,AL;中断向量初始化MOV DI,ZDIR0MOV AX,OFFSET TIMERSTOSWMOV AX,SEG TIMERSTOSWMOV DI,ZDIRIMOV AX,OFFSET ADPROCMOV AX,SEG ADPROC STOSWMOV DI,ZDIR2MOV AX, OFFSET SWITCH1 STOSWMOV AX, SEG SWITCH1 STOSWMOV DI,ZDIR3MOV AX,OFFSET SWITH2 STOSWMOV AX,SEG SWITH2 STOSWMOV DI,ZDIR4MOV AX,OFFSET switcb3MOV AX,SEG SWITCH3 STOSWMOV DX,ADPORT;启动ADC OUT DX.AL;炉号初始化MOV DX,4003HMOV BYTE PTR [DI],0INC DIMOV BYTE PTR [DI],0INC DIMOV BYTE PTR [DI],1ADD DI,4MOV BYTE PTR [DI],0INC DIMOV BYTE PTR [DI],0INC DIMOV BYTE PTR [D1],2ADD DL4MOV BYTE PTR [DI],0INC DIMOV BYTE PTR [DI],0INC DIMOV BYTE PTR [DI],3 AGAIN:STICALL CZBCDCALL DISPJMP AGAIN;一一拆字十六进制转BCD码一一CZBCD PROCPUSH BxPUSH CXPUSH AXLEASI,DATA4AD;AD转换后的数据存储处LEA DI,DATA4LED;十六进制到BCD的显示数据存储处 ADD DI,2CZ0MOV AL,[SI]CMP AL,11H ;与60比较JBE ST0CMP AL,0DDH ;与180比较JAE ST1JMP CZ00ST0:MOV BYTE PTR[DI+1],0EH MOV BYTE PTR[DI+2],00HJMP CZ00ST1:MOV BYTE PTR[DI+1],0EH MOV BYTE PTR[DI+2],0FHJMP CZ00CZ00:MOV BX,1EH ;转换为实际温度值MUL BXMOV DL,51DIV DLADD AX,50MOV AH,00HMOV BL,0AHMOV CX,3CZ1:DIV BLMOV [DI],AHDEC DIMOV AH,00HLOOP CZ1ADD DI,9INC SICMP SI,4002H :AD转换后的数据存储处是否到头 JBE CZ0POP AXPOP CXPOP BXRETCZBCD ENDPDISP PROCPUSH DXPUSH CXPUSH BXPUSH AXLEA BX,TAB;段码表 MOV SI,LEDNWMOV AH,0C1H DISP1:MOV DX,WEIMOV AL,AHOUT DX.AL;位输山MOV DX,DUANMOV AL,[SI]XLATOUT DX,AL;段输出 MOV CX,0200H LOOP $INC SISAL AH.1OR AH,0C0HCMP AH,0C0H JNZ DISP1POP AXPOP BXPOP CXPOP DXRETDISP ENDP:一一AD采样程序一一ADPROC PROCPUSH AXPUSH SIPUSH DXMOV DX,[ADPTNW];A/D通道 0CMP DX ,3c8H;到第三号炉r r?JBE NEXTMOV【ADPTNW],3COH;就置数据区7号炉端口NEXT:MOV SI,[ADATANW]CMP SI ,4002HJBE NEXT2MOV [ADATANW),4000HJMP CHUIN AL,DXMOV [SI],ALADD [ADPTNW],4INC [ADATANW]CMPAL,11H ;是否在 60和180之间JBE BAOJINCMP AL,0DDHJAE BAOJINJMP OKCMP SI,4000HJZ OKCMP SI,4001HJZ OK1CMP SI,4002HBAOJIN:CMPSI,4000HJZ BAOJIN1CMPSI,4001HJZ BAOJIN2CMP SI,4002HJZ BAOJIN3JMP CHUQUBAOJIN l:MOV DX,203H :报警 1 MOV AX,0FEHOUT DX,ALJMP CHUQUBAOJIN2:MOV DX,207H :报警 2OUT DX,ALJMP CHUQUBAOJIN3:MOV DXT,20BH ;报警 3 MOV AX,OFCHOUT DX,ALJMP CHUQUOK: MOVDX,203H ;解除报警 MOV AX,0FFHOUT DX,ALOK1:MOV DX,207HOUT DX,ALOK2:OUT DX,ALCHUQU:MOV DX,[ADPTNW];启动ADC OUT DX,ALCHU:MOV AL,20HMOV DX,OPORTOUT DX,ALPOP DXPOPSIPOP AXIRETADPROC ENDP:一一定时器中断TIMER PROCPUSH AXPUSH DXMOV AL,[TIME]DEC ALMOV[TIME],ALCMP AL,0 ;是否到0JNZ END0CMP [SWH1,0 :判断是否有按键按下JZ ENDDCMP [STWH2],0JZ ENDDCMP [SWH3],0JZ ENDDMOV AX,[LEDNW] ;CMP AX,400FH ;JAE DALE ;ADD AX,6 ;MOV [LEDNW],AX ;JMP ENDD ;DALE:MOV[LEDNW],4003H ;改变显示参数ENDD:MOV DX,ADPORT ;到了开A/DOUT DX,AL ;MOV [TIME],150 ;END0:MOV AL,20HMOV DX,OPORTOUT DX,ALPOP DXPOP AXIRETTIMER ENDP:一——开关l的中断———一SWITCH1 PROCNOT SWHICMP SWHI,OJNZ BACK1MOV[LEDNW],4003H;第1次按T' BACK1:MOV AL,20HMOV DX,OPORTOUT DX,ALSTIIRETSWITCH1 ENDP:——一一开关2的中断——SWITH2 PROCNOT STWH2CMP STWH2,0JNZ BACK2MOV [LEDNW],4009H;是第1次按下BACK2:MOV AL,20HMOV DX,OPORTOUT DX,ALSTIIRETSWITH2 ENDP:一一·一开关3的中断——一一SWITCH3 PROCNOT SWH3CMP SWH3,0JNZ BACK3MOV [LEDNW],400FH;是第1次按下BACK3:MOV AL,20HMOV DX,OPORTOUT DX,ALSTIIRETSWITCH3 ENDPCODE ENDSEND BEG四、程序流程图主程序 A/D转换中断服务子程序拆字子程序多加热炉炉温检测硬件连接图~。