多加热炉炉温检测课程设计报告

更新时间:2023-05-02 15:38:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

多加热炉炉温检测课程

设计报告

公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-

课题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.多加热炉炉温检测系统硬件图。

三、源程序

.486

DATA SEGMENT AT 0 USE16

;8255各个端口的地址

PORTA EQU 203H

PORTB EQU 207H

PORTC EQU 20BH

CONTROLPORT EQU 20FH

;七段码地址

WEI EQU 360H

DUAN EQU 340H

;8253各个端口地址

DS0 EQU 300H

DSI EQU 304H

DS2 EQU 308H

DSC EQU 30CH

;8259端口地址

OPORT EQU 3A0H

JPORT EQU 3A8H

;0809地址

ADPORT EQU 3C0H

ADPORTI EQU 3C4H

ADPORI2 EQU 3C8H

;中断向量

ZDIRO EQU 20H ;定时器中断

ZDLR1 EQU 24H ; AD中断

ZDIR2 EQU 28H ;开笑1中断

ZDIR3 EQU 2CH ;开关2中断

ZDIR4 EQU 30H ;开关3中断

;定义数据缓冲区

ORG 4000H

DATA4AD DB 3 DUP(?);AD转换后的数据存储处

DATA4LED DB 18 DUP(?);十六进制列BCD的显爪数据存储处DATA ENDS

CODE SEGMENT USE16

ORG 2000H

ASSUME CS:CODE,DS:DATA,ES:DATA

BEG: CLI

JMP START

TAB 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 0FFH

SWH2 DB 0FFH

SWH3 DB 0FFH

START:

MOV AX,DATA

MOV DS,AX

MOV AX,0

MOV SS,AX

MOV SP,1000H

MOV AL,0C0H

MOV DX,WEI , OUT DX,AL

INITA8259:

MOV AL,00010011B;ICWI ;写入ICW1 MOV DX,OPORT

OUT DX,AL

MOV AL,00001000B ;写入ICW2

MOV DX,JPORT

OUT DX,AL

MOV AL,00000001B ;写入ICW4

MOV DX,JPORT

OUT DX,AL

MOV AL,B ;写入OCW1 屏蔽字

MOV DX,JPORT

OUT DX,AL

MOV AL,20H ;清 ISR

MOV DX,OPORT

OUT DX.AL

INITLA8255:

MOV AL,B ;A、B、C口都工作于方式0,都为输出 MOV DX,CONTROLPORT

OUT DX,AL

MOV AL,0FFH

MOV DX,PORTA

OUT DX,AL

INITIA8253:

MOV DX,DSC

MOV AL,00110110B ;方式3 二进制计数

OUT DX,AL

MOV DX,DS0

MOV AL,60H ;计数初值设为 0EA60H /6000D

OUT DX,AL

MOV AL,0EAH

OUT DX,AL

;中断向量初始化

MOV DI,ZDIR0

MOV AX,OFFSET TIMER

STOSW

MOV AX,SEG TIMER

STOSW

MOV DI,ZDIRI

MOV AX,OFFSET ADPROC STOSW

MOV AX,SEG ADPROC

STOSW

MOV DI,ZDIR2

MOV AX, OFFSET SWITCH1 STOSW

MOV AX, SEG SWITCH1 STOSW

MOV DI,ZDIR3

MOV AX,OFFSET SWITH2 STOSW

MOV AX,SEG SWITH2

STOSW

MOV DI,ZDIR4

MOV AX,OFFSET switcb3 STOSW

MOV AX,SEG SWITCH3 STOSW

MOV DX,ADPORT;启动ADC

OUT DX.AL

;炉号初始化

MOV DX,4003H

MOV BYTE PTR [DI],0

INC DI

MOV BYTE PTR [DI],0

INC DI

MOV BYTE PTR [DI],1 ADD DI,4

MOV BYTE PTR [DI],0

INC DI

MOV BYTE PTR [DI],0

INC DI

MOV BYTE PTR [D1],2

ADD DL4

MOV BYTE PTR [DI],0 INC DI

MOV BYTE PTR [DI],0 INC DI

MOV BYTE PTR [DI],3 AGAIN:

STI

CALL CZBCD

CALL DISP

JMP AGAIN

;一一拆字十六进制转BCD码一一

CZBCD PROC

PUSH Bx

PUSH CX

PUSH AX

LEASI,DATA4AD;AD转换后的数据存储处

LEA DI,DATA4LED;十六进制到BCD的显示数据存储处 ADD DI,2

CZ0

MOV AL,[SI]

CMP AL,11H ;与60比较

JBE ST0

CMP AL,0DDH ;与180比较

JAE ST1

JMP CZ00

ST0:

MOV BYTE PTR[DI+1],0EH

MOV BYTE PTR[DI+2],00H

JMP CZ00

ST1:

MOV BYTE PTR[DI+1],0EH

MOV BYTE PTR[DI+2],0FH

JMP CZ00

CZ00:

MOV BX,1EH ;转换为实际温度值

MUL BX

MOV DL,51

DIV DL

ADD AX,50

MOV AH,00H

MOV BL,0AH

MOV CX,3

CZ1:

DIV BL

MOV [DI],AH

DEC DI

MOV AH,00H

LOOP CZ1

ADD DI,9

INC SI

CMP SI,4002H :AD转换后的数据存储处是否到头

JBE CZ0

POP AX

POP CX

POP BX

RET

CZBCD ENDP

DISP PROC

PUSH DX

PUSH CX

PUSH BX

PUSH AX

LEA BX,TAB;段码表 MOV SI,LEDNW

MOV AH,0C1H

DISP1:

MOV DX,WEI

MOV AL,AH

OUT DX.AL;位输山

MOV DX,DUAN

MOV AL,[SI]

XLAT

OUT DX,AL;段输出

MOV CX,0200H

LOOP $

INC SI

SAL AH.1

OR AH,0C0H

CMP AH,0C0H

JNZ DISP1

POP AX

POP BX

POP CX

POP DX

RET

DISP ENDP

:一一AD采样程序一一

ADPROC PROC

PUSH AX

PUSH SI

PUSH DX

MOV DX,[ADPTNW];A/D通道 0

CMP DX ,3c8H;到第三号炉r r?

JBE NEXT

MOV【ADPTNW],3COH;就置数据区7号炉端口

NEXT:

MOV SI,[ADATANW]

CMP SI ,4002H

JBE NEXT2

MOV [ADATANW),4000H

JMP CHU

NEXI2:

IN AL,DX

MOV [SI],AL

ADD [ADPTNW],4

INC [ADATANW]

CMPAL,11H ;是否在 60和180之间JBE BAOJIN

CMP AL,0DDH

JAE BAOJIN

JMP OK

CMP SI,4000H

JZ OK

CMP SI,4001H

JZ OK1

CMP SI,4002H

JZ OK2

BAOJIN:CMPSI,4000H

JZ BAOJIN1

CMPSI,4001H

JZ BAOJIN2

CMP SI,4002H

JZ BAOJIN3

JMP CHUQU

BAOJIN l:

MOV DX,203H :报警 1

MOV AX,0FEH

OUT DX,AL

JMP CHUQU

BAOJIN2:

MOV DX,207H :报警 2

MOV AX,0FDH

OUT DX,AL

JMP CHUQU

BAOJIN3:

MOV DXT,20BH ;报警 3 MOV AX,OFCH

OUT DX,AL

JMP CHUQU

OK: MOVDX,203H ;解除报警

MOV AX,0FFH

OUT DX,AL

OK1:

MOV DX,207H

OUT DX,AL

OK2:

MOV DX,20BH

OUT DX,AL

CHUQU:

MOV DX,[ADPTNW];启动ADC OUT DX,AL

CHU:MOV AL,20H

MOV DX,OPORT

OUT DX,AL

POP DX

POPSI

POP AX

IRET

ADPROC ENDP

:一一定时器中断

TIMER PROC

PUSH AX

PUSH DX

MOV AL,[TIME]

DEC AL

MOV[TIME],AL

CMP AL,0 ;是否到0

JNZ END0

CMP [SWH1,0 :判断是否有按键按下

JZ ENDD

CMP [STWH2],0

JZ ENDDCMP [SWH3],0

JZ ENDD

MOV AX,[LEDNW] ;

CMP AX,400FH ; JAE DALE ;

ADD AX,6 ; MOV [LEDNW],AX ;

JMP ENDD ;

DALE:MOV[LEDNW],4003H ;改变显示参数ENDD:

MOV DX,ADPORT ;到了开A/D OUT DX,AL ;

MOV [TIME],150 ; END0:

MOV AL,20H

MOV DX,OPORT

OUT DX,AL

POP DX

POP AX

IRET

TIMER ENDP

:一——开关l的中断———一SWITCH1 PROC

NOT SWHI

CMP SWHI,O

JNZ BACK1

MOV[LEDNW],4003H;第1次按T' BACK1:

MOV AL,20H

MOV DX,OPORT

OUT DX,AL

STI

IRET

SWITCH1 ENDP

:——一一开关2的中断——SWITH2 PROC

NOT STWH2

CMP STWH2,0

JNZ BACK2

MOV [LEDNW],4009H;是第1次按下BACK2:

MOV AL,20H

MOV DX,OPORT

OUT DX,AL

STI

IRET

SWITH2 ENDP

:一一·一开关3的中断——一一SWITCH3 PROC

NOT SWH3

CMP SWH3,0

JNZ BACK3

MOV [LEDNW],400FH;是第1次按下BACK3:

MOV AL,20H

MOV DX,OPORT

OUT DX,AL STI

IRET

SWITCH3 ENDP CODE ENDS

END BEG

四、程序流程图

本文来源:https://www.bwwdw.com/article/v7se.html

Top