资源描述
电子跑表的设计与实现
一、 设计内容:
设计与实现用微机控制的电子跑表的功能。
二、设计要求:
1、 利用开发箱中的8255以及8254芯片完成功能。用8254实现计时。
2、 显示格式:分 秒 1/10秒
3、 定义PC机上的键盘或实验箱上的小键盘控制计时开始、停止和清零。
二、 实验器材:
PC机一台,实验箱一个
三、 实验结果
1. 显示格式:分、秒、1/10秒,用四个LED显示。中间两个显示秒。
2. 定义实验箱上几个开关控制计时开始、停止和清零。
三 、实验流程图:
开始
判断按键
启动 按停止键
停止计时
其它键不起作用
开始计时
是否复位
YES
Y
清零复位
开始计时
N
结束
四、实验接线图
8254接线图
D7 GATE0
D6
D5
D4
D3
D2 CLK
D1
D0
A0
A1
WR
RD OUTO
CS
CS
xd7
总 xd6
xd5
线 xd4
xd3
接 xd2
xd1
口 xd0
xa0
xa1
XIOW
XIOR
IOY2
8255接线图
D7 PA0
D6 PA1
D5 PA2
D4 PA3
D3 PA4
D2 PA5
D1 PA6
D0 PA7
WR
RD
CS
A1
A0
A
B
C
D
E
F
G
DP
X1
X2
X3
X4
四、 实验代码
MY8255_A EQU 0E460H
MY8255_B EQU 0E461H
MY8255_C EQU 0E462H
MY8255_MODE EQU 0E463H
MY8254CT0 EQU 0E440H
MY8254MD EQU 0E443H
STACK1 SEGMENT STACK
DW 64 DUP(?)
STACK1 ENDS
DATA SEGMENT ;数据段定义
TABLE1 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
BUFFER DB 6 DUP(0)
count DW 0000H
SE DB 00H
SEC DB 00H
MIN1 DB 00H
SEC1 DB 00H
MIN22 DB 00H
MIN21 DB 00H
SEC21 DB 00H
SEC22 DB 00H
SECOND DB 60H
MINUTE DB 60H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,DATA
MOV DS,AX
MOV BX,OFFSET TABLE1
MOV DI,OFFSET BUFFER
MOV SI,OFFSET SECOND
INIT8255: MOV AL,82H ;向8255写入控制字,PA,PC口作输出,PB口作输入
MOV DX,MY8255_MODE
OUT DX,AL
INIT8254: MOV AL,34H ;8254采用通道0,方式2
MOV DX,MY8254MD ;向8254写入控制字
OUT DX,AL
MOV AX,003CH ;写入计数初值
MOV DX,MY8254CT0
OUT DX,AL
MOV AL,AH
OUT DX,AL
A3: MOV CX,0004H
A4: call display1 ;该死循环用于循环监测PB口的输入,以便进行相应的跳转
MOV DX,MY8255_B
IN Al,DX
CMP AL,01H ;START启动
JZ A6
CMP AL,02H ;RET复位
JZ KEY15
CMP AL,03H ;STOP停止
JZ A5
JMP A4
A5: MOV AL,SECOND
MOV DX,MY8255_A
OUT DX,Al
jmp a4
A6: CALL DISPLAY1
CMP AX,0FFH
JZ A4
LOOP A4
;MOV AL,SECOND ;秒加1
MOV AX,count
ADD AX,0001H
MOV count,AX
JNZ ND_HOU
DAA
ND_HOU:
CALL DISPLAY1
JMP A3
KEY15: CALL CLEAR
MOV SECOND,00H
mov minute,00h
MOV COUNT,0000H
MOV MINUTE,00H
JMP a4
EXIT1: RET
DISPLAY1 PROC ;显示子程序
PUSH DS
PUSH AX
PUSH BX
PUSH DX
MOV AX,DATA
MOV DS,AX
MOV AX,count
MOV BL,10
DIV BL
MOV SEC,AH
MOV SE,AL
MOV AL,SE
MOV AH,0
MOV BL,60
DIV BL
MOV MIN1,AL
MOV SEC1,AH
MOV AL,MIN1
MOV AH,0
MOV BL,10
DIV BL
MOV MIN21,AL
MOV MIN22,AH
MOV AL,SEC1
MOV AH,0
MOV BL,10
DIV BL
MOV SEC21,AL
MOV SEC22,AH
YY: MOV DX,MY8255_C ;选中一个数码管
MOV AL,0FEH
OUT DX,AL
MOV AL,MIN22
MOV BX,OFFSET TABLE1
XLAT
MOV DX,MY8255_A ;输出该数码管对应的显示码
OUT DX,AL
CALL DELLY
MOV DX,MY8255_C ;选中一个数码管
MOV AL,0FDH
OUT DX,AL
MOV AL,SEC21
MOV BX,OFFSET TABLE1
XLAT
MOV DX,MY8255_A ;输出该数码管对应的显示码
OUT DX,AL
CALL DELLY
MOV DX,MY8255_C ;选中一个数码管
MOV AL,0FBH
OUT DX,AL
MOV AL,SEC22
MOV BX,OFFSET TABLE1
XLAT
MOV DX,MY8255_A ;输出该数码管对应的显示码
OUT DX,AL
CALL DELLY
MOV DX,MY8255_C ;选中一个数码管
MOV AL,0F7H
OUT DX,AL
MOV AL,SEC
MOV BX,OFFSET TABLE1
XLAT
MOV DX,MY8255_A ;输出该数码管对应的显示码
OUT DX,AL
POP DX
POP BX
POP AX
POP DS
CALL DELLY
RET
DISPLAY1 ENDP
DELLY PROC ;延时子程序
PUSH AX
PUSH CX
MOV CX , 002FH
BB: MOV AX , 0FFFFH
AA: DEC AX
JNZ AA
LOOP BB
POP CX
POP AX
RET
DELLY ENDP
CLEAR: PUSH AX ;清零复位
MOV AL,3FH
MOV BUFFER,AL
MOV BUFFER+1,AL
MOV BUFFER+2,AL
MOV BUFFER+3,AL
MOV BUFFER+4,AL
MOV BUFFER+5,AL
POP AX
RET
CODE ENDS
END START
六、实验结果:
正常运行后,数码管显示全零,按动实验板上的启动键开始计时,四只数码管从高到低位分别显示分、秒、1/10秒。此时按停止键会暂停计时。按复位后会清零复位。否则会一直计时。
展开阅读全文