多加热炉炉温检测系统设计
-
- 题目
- 硬件参考图
- 代码
- 程序框图
本文仅供参考,版本1.1 仅提供大概思路,如有错欢迎指出
题目
一.任务及要求:
1,加热炉的炉温可以在 0℃~350℃之间任意调节;
2,系统每隔 5 秒钟检测一遍炉温;(2 路)
3,利用六位七段码显示器实时显示加热炉的炉号和实际温度,显示值为十
进制数值。显示器的左三位显示加热炉的炉号(以班级学号尾数序号+通道号),
右三位显示实际值。在启动按键按下系统开始运行显示相应炉温。
4,按下启动功能键之后(用灯来指示工作状态),采集炉温并通过七段码显
示加热炉的炉号和实际温度, 按下停止功能键后,系统停止工作不采集温度,但
仍显示最后采集到的温度。
由 2 个键分别决定固定显示某个炉子的炉温,即当按下一号炉显示键,则七
段码显示相应的炉号及温度,如没有固定显示键按下,则同时显示 2 个炉子炉温
(左 3 位显示 1 路炉温,右三位显示 2 路炉温)。
5,扩展发光二极管担任报警功能,当温度超过 280℃或低于 50℃即点亮发
光二极管报警。
二.基本接线及说明(参考)
1,系统硬件连接参考“多加热炉炉温检测系统硬件参考图”。
(1)硬件部分为实验系统。包括 0809、8253、8259、8255、七段码显示器及
其驱动电路、按键和报警部分。图中虚线为需要连接的连线;
(2)实际温度由电位器给出,可由外部电位器调节。电压范围 0~5V;
(3)实验系统中利用 8253 提供定时服务。8253 的译码片选接译码地址 320H,
计数器 1: H,计数器 2: H,计数器 3: H;控制口地址:
(4)实验系统中利用 8259 提供中断服务。8259 片选接译码地址 360H;
(5)实验系统中利用 8255 驱动报警发光二极管。
命令口地址:20FH;A 口地址: H;B 口地址: H; C 口地址:
(6)加热炉的实际温度用模拟电压表示。0809 的输入通道选用 IN0、IN1、IN2、
IN3、…。0809 的译码地址为 300H。通道 0~7 分别为、、、。
(7)七段码显示,位码输出接 8255B 口,段码地址接译码地址 340h
2,检测系统应用软件主要包括:
⑴主程序;
⑵A/D 转换中断服务子程序;
⑶定时器中断服务子程序;
⑷代码转换子程序;
⑸显示子程序;
⑹按键中断服务子程序;
3, 程序参考流程图;
4, 多加热炉炉温检测系统硬件参考图。
三.步骤及进度
课程设计时间共一周,5 天。
1.阅读《微机原理及应用》课程设计任务书,理解题意。按要求设计多加
热炉炉温检测系统硬件连接图,按要求设计多加热炉炉温检测系统应用软件。
阅读、理解、硬件及软件设计时间为 1 天;
2.系统调试:
⑴ 连接硬件线路;
⑵ 按以下步骤调试应用软件:
① 主程序、定时器;
② A/D 转换;
③ 代码转换、显示;
④ 按键、报警;
⑤ 统调。
系统调试时间为 3 天;
3.验收及考核,时间为 0.5~1 天;
4.写课程设计报告书,时间为 0.5~1 天。
四.理论设计要求
每人独立完成:
1,硬件接线图及分析硬件组成原理;
2,各模块实现的主要功能,
3,程序框图
4, 程序及主要注释;
五. 课程设计报告要求
1, 规范书写、字迹清楚规整。
2, 任务及要求;
3 ,画出硬件系统图;
4 ,硬件各组成原理及各程序模块实现的主要功能;
5 ,程序框图、程序详细清单及注释;
6,调试过程、及调试过程中出现的问题及解决的方法或解决方案;
7,本次课程设计心得体会。
硬件参考图
图片:
代码
.486
DATA SEGMENT AT 0 USE16
PORTA EQU 203H ;8255 A口
PORTB EQU 207H ;8255 B口 七段码显示位码地址
PORTC EQU 20BH ;8255 C口
CONTROL EQU 20FH ;8255控制口
PORT1 EQU 340H ;七段码显示段码地址
DS0 EQU 320H ;8253计数器0
DS1 EQU 324H ;8253计数器1
DS2 EQU 328H ;8253计数器2
DSC EQU 32CH ;8253控制口
OPORT EQU 360H ;8259偶地址
JPORT EQU 368H ;8259奇地址
AD0 EQU 300H ;0809通道0
AD1 EQU 304H ;0809通道1
AD4 EQU 310H ;0809通道4
AD5 EQU 314H ;0809通道5
IR1 EQU 24H ;定时器中断
IR2 EQU 28H ;AD中断
IR3 EQU 2CH ;开关1 显示4号炉
IR4 EQU 30H ;开关2 显示5号炉
IR5 EQU 34H ;开关3 开始按钮
IR6 EQU 38H ;开关4 结束按钮
ORG 4000H
DATA1 DB 4 DUP(?) ;显示数据区
DATA2 DB 6 DUP(?) ;显示缓存区
TDATA DB 2 DUP(?) ;温度存储区
;开关状态
SWITCH DB 2 DUP(?) ;第一个为开始结束状态位:00H为结束状态,01H为开始状态
;第二个为显示模式位,00H位显示两路,04H为显示4号炉,05H ;为显示5号炉
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA,ES:DATA
ORG 2000H
BEG:
CLI
JMP START
ADPORT DB 01H ;采样通道数
TIME DB 250 ;定时计数
LED DB FFH ;LED状态
TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH
DB 6FH,77H,7CH,39H,5EH,79H,71H
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV SS,AX
INIT8259:
MOV AL,00010011B ;写入ICW1
MOV DX,OPORT
OUT DX,AL
MOV AL,00001000B ;写入ICW2
MOV DX,JPORT
OUT DX,AL
MOV AL,00001101B ;写入ICW4
MOV DX,JPORT
OUT DX,AL
MOV AL,10000001B ;写入OCW1 屏蔽字,仅IR1~6可用
MOV DX,JPORT
OUT DX,AL
MOV AL,20H ;清ISR
MOV DX,OPORT
OUT DX,AL
INIT8255:
MOV AL,10000000B ;ABC口输出,方式0
MOV DX,CONTROL
OUT DX,AL
MOV AL,0FFH ;关闭所有led
MOV DX,PORTA
OUT DX,AL
INIT8253:
MOV DX,DSC
MOV AL,36H ;
OUT DX,AL
MOV DX,DS0
MOV AL,0BH
OUT DX,AL
MOV AL,0E9H ;每20ms产生一次中断
OUT DX,AL
INIT ZDXL: ;中断向量初始化
XOR AX,AX
MOV ES,AX
MOV DI,IR1 ;中断向量1,计数器中断
MOV AX,OFFSET TIMER
CLD
STOSW
MOV AX,SEG TIMER
STOSW
MOV DI,IR2 ;中断向量2,A/D中断
MOV AX,OFFSET AD
CLD
STOSW
MOV AX,SEG AD
STOSW
MOV DI,IR3 ;中断向量3,按键1
MOV AX,OFFSET KEY1
CLD
STOSW
MOV AX,SEG KEY1
STOSW
MOV DI,IR4 ;中断向量4,按键2
MOV AX,OFFSET KEY2
CLD
STOSW
MOV AX,SEG KEY2
STOSW
MOV DI,IR5 ;中断向量5,按键3
MOV AX,OFFSET KEY3
CLD
STOSW
MOV AX,SEG KEY3
STOSW
MOV DI,IR6 ;中断向量6,按键4
MOV AX,OFFSET KEY4
CLD
STOSW
MOV AX,SEG KEY4
STOSW
AGAIN:
STI
LEA SI,SWITCH
LEA DI,DATA1
MOV AL,[SI]
AND AL,0FFH
JZ AGAIN
MOV DX,PORTA
MOV AL,0EFH
OUT DX,AL
CALL ALARM
CALL XCH
MOV AL,[SI+1]
CMP AL,04H
JB P0
JA P1
MOV AL,[DI]
MOV [DI+2],AL
MOV AL,[DI+1]
MOV [DI+3],AL
MOV AL,04H ;put port num
MOV [DI],AL
MOV AL,15H ;put ur id
MOV [DI+1],AL
JMP P0
P1:
MOV AL,05H ;put port num
MOV [DI],AL
MOV AL,15H ;put ur id
MOV [DI+1],AL
P0:
CALL CZ
CALL DISP
MOV AL,[SI]
AND AL,0FFH
JZ P0
JMP AGAIN
XCH PROC ;转换子程序
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
LEA SI,TDATA
LEA DI,DATA1
MOV AL,[SI] ;转换4号炉温度
MOV BX,89H ;137
MUL BX ;结果存AX
MOV BX,2710H
DIV BX ;商存AX,余数存DX
MOV [DI],AL
MOV AX,DX
MOV BL,64H
DIV BL ;取十位和个位,商存AL
MOV [DI+1],AL
MOV AL,[SI+1] ;转化5号炉温度
MOV BX,89H
MUL BX ;结果存AX
MOV BX,2710H
DIV BX ;商存AX,余数存DX
MOV [DI+2],AL
MOV AX,DX
MOV BL,64H
DIV BL ;取十位和个位,商存AL
MOV [DI+3],AL
POP AX
POP BX
POP CX
POP DX
POP SI
POP DI
RET
XCH ENDP
ALARM PROC ;报警子程序
PUSH AX
PUSH BX
PUSH DX
PUSH CX
PUSH SI
PUSH DI
LEA SI,TDATA
MOV BL,LED
CMP [SI],24H ;4号炉与50度比较
JNB L0
MOV DX,PORTA
MOV AL,EEH ;小于50度一号灯亮
OUT DX,AL
L0:
CMP[SI],CCH ;4号炉与280度比较
JBE L1
MOV DX,PORTA
MOV AL,EDH ;大于280度二号灯亮
OUT DX,AL
JMP L2
L1: MOV DX,PORTA
MOV AL,E
L2: CMP [SI+1],24H ;5号炉与50度比较
JNB L3
MOV DX,PORTA
MOV AL,EBH ;小于50度三号灯亮
OUT DX,AL
L3:
CMP[SI+1],CCH ;5号炉与280度比较
JBE L4
MOV DX,PORTA
MOV AL,E7H ;大于280度四号灯亮
OUT DX,AL
LA:
POP AX
POP BX
POP DX
POP CX
POP SI
POP DI
RET
ALARM ENDP
CZ PROC ;拆字子程序
PUSH AX
PUSH BX
PUSH DX
PUSH CX
PUSH SI
PUSH DI
LEA SI,DATA1 ;数据显示
LEA DI,DATA2 ;数据缓存
CZ0:
C0:
MOV BL,[SI]
AND BL,0FH
MOV [DI],BL ;取低位
INC SI
INC DI
C1:
MOV BL,[SI]
AND BL,0F0H
MOV CL,4
ROL BL,CL
MOV [DI],BL ;取高位
INC DI
MOV BL,[SI]
AND BL,0FH
MOV [DI],BL ;取低位
INC SI
INC DI
CMP SI,4004H
JB CZ0
POP AX
POP BX
POP DX
POP CX
POP SI
POP DI
RET
CZ ENDP
DISP PROC ;显示子程序
PUSH AX
PUSH BX
PUSH DX
PUSH CX
PUSH SI
PUSH DI
LEA BX,TAB ;段码表
LEA SI,DATA2 ;数据缓存
MOV AH,01H
DISP1:
MOV DX,PORTB
MOV AL,AH
OUT DX,AL
MOV DX,PORT1
MOV AL,[SI]
XLAT
OUT DX,AL
MOV CX,020EH
LOOP $
INC SI
SAL AH,1
CMP AH,40H ;判断是否显示完(6位)
JNZ DISP1
POP AX
POP BX
POP DX
POP CX
POP SI
POP DI
RET
DISP ENDP
----------------------------------------------------------------------------------
AD PROC
PUSH AX
PUSH BX
PUSH CX
PUSH SI
PUSH DI
PUSH DX
MOV SI,TDATA
MOV AH,[ADPORT]
CMP AH,02H ;判断,如果为01H则存4通道数据,如果为02H则存5通道数据并复位通道数并退出。
JNZ A1
MOV DX,AD5 ;存通道5数据
IN AL,DX
MOV [SI+2],AL
MOV [ADPORT],01H
JMP EXIT
A1: MOV DX,AD4 ;存通道4数据
IN AL ,DX ;读入4通道的数据
MOV [SI],AL
MOV AH,[ADPORT]
SHL AH,1
MOV [ADPORT],AH
MOV DX,AD5
OUT DX,AL ;启动A/D,采样通道为5
EXIT:
MOV AL,20H
MOV DX,OPORT
OUT DX,AL
POP AX
POP BX
POP CX
POP SI
POP DI
POP DX
IRET
AD ENDP
TIMER PROC
PUSH AX
PUSH BX
PUSH CX
PUSH SI
PUSH DI
PUSH DX
MOV AL,[TIME]
DEC AL
MOV [TIME],AL
CMP AL,0 ;判断定时时间是否到5s
JNZ T1
T0: ;计时时间到,打开0809
MOV DX,AD0 ;0809通道0开启
OUT DX,AL
MOV [TIME],25
T1: ;没有计时到5s则推出中断
MOV AL,20H ;EOI
MOV DX,OPORT
OUT DX,AL
POP AX
POP BX
POP CX
POP SI
POP DI
POP DX
IRET
TIMER ENDP
KEY1 PROC ;4号炉按键
PUSH DX
PUSH AX
PUSH SI
LEA SI,SWITCH
MOV AL,[SWITCH]
CMP AL,04H
JNZ K1
MOV [SWITCH+1],00H
JMP K2
K1:
MOV [SWITCH+1],04H
K2: ;EOI
MOV AL,20H
MOV DX,OPORT
OUT DX,AL
POP DX
POP AX
POP SI
IRET
KEY1 ENDP
KEY2 PROC ;5号炉按键
PUSH DX
PUSH AX
PUSH SI
LEA SI,SWITCH
MOV AL,[SWITCH]
CMP AL,05H
JNZ K3
MOV [SWITCH+1],00H
JMP K4
K3:
MOV [SWITCH+1],05H
K4: ;EOI
MOV AL,20H
MOV DX,OPORT
OUT DX,AL
POP DX
POP AX
POP SI
IRET
KEY2 ENDP
KEY3 PROC ;开始按键中断
PUSH DX
PUSH AX
PUSH SI
LEA SI,SWITCH
MOV [SWITCH],01H ;状态位为1
MOV AL,20H ;EOI
MOV DX,OPORT
OUT DX,AL
POP DX
POP AX
POP SI
IRET
KEY3 ENDP
KEY4 PROC ;结束按键中断
PUSH DX
PUSH AX
PUSH SI
LEA SI,SWITCH
MOV [SWITCH],00H ;状态为0
MOV AL,20H ;EOI
MOV DX,OPORT
OUT DX,AL
POP DX
POP AX
POP SI
IRET
KEY4 ENDP
CODE ENDS
END BEG