华南理工大学
计算机与信息学院
课程设计
课
程:微机原理与接口技术设计
专业班级:计算机科学与技术 x 班
学
姓
号:
名:
一、设计题目及要求:
【课题 6】 数字时钟
1. 通过 8253 定时器作产生秒脉冲定时中断。 在中断服务程序中实现秒、 分、 小
时的进位 (24 小时制) 。
2.在七段数码管上显示当前的时分秒(例如,12 点 10 分 40 秒显示为 121040) 。
3.按“C”可设置时钟的时间当前值(对准时间) 。
二、设计思想:
总体思想:
1、功能概述:
实验箱连线:
本实验建立在 Dais 实验箱基础上完成的基本连线及程序如下:
138 译码器:
A,B,C,D,分别连接 A2,A3,A4,GS;
y0 连接 8253 的 CS 片选信号;
y1 连接 8259 的 CS 片选信号;
8253 连线:
分频信号 T2 接 8253 的 CLK0;
8253 的 OUT0 接 8259 的 IR7;
8253 的 gate 信号接+5V;
8259 连线:
8259 的数据线接入数据总线;
本程序包括显示模块,键盘扫描模块,时间计数模块,设置模块等几个模块,
(1)程序运行后,LED 显示 000000 初始值,并且开始计数
(2)按 C 键进行设置初始时间,考虑到第一个数只能是 0,1,2,当第一个数显示 2
时第二个数只能显示 0~4,同理下面各位应满足时钟数值的合理的取值;
(3)在手动输入初始值时,按 D 键进行回退 1 位修改已设置值,连续按 D 键可以全部
进行删除修改。
2、主程序设计
主程序中完成通过调用子程序完成对 8253 及 8259 的初始化,对 8259 进行中断设置。
主要在显示子程序和键盘子处理程序之间不断循环,8253 每一秒给 8259 一个刺激,当 8259
接受到刺激后会给 CPU 一个中断请求,CPU 会转去执行中断子程序,而中断子程序设置成
时间计数加,即完成电子表的整体设计。详细流程图见图三-1。
3、LED 显示子程序设计
本程序显示部分用了 6 个共阳极 LED 作为显示管,显示程序要做到每送一次段码就送
一次位码,每送一次位码后,将位码中的 0 右移 1 位作为下次的位码,从而可以实现从左到
右使 6 个 LED 依次显示出相应的数字。虽然 CPU 每隔一定时间便执行显示程序,但只要这
个时间段不太长,由于人眼的视觉作用,就可以在 6 个 LED 上同时见到数字显示。
4、键盘扫描子程序设计
本程序需要用键盘对时间的初始值进行设置,因此对键盘扫描的子程序需要满足的功能
如下:
判断是否是 C 键,若不是就返回至主程序,若是 C 键就开始对时间初始值进行设置,
同时因注意到第一个值不可以超过 2,第一个数是 2 时第二数不能超过 4,余下的同理要满
足时间数值的取值范围呢,若不是合法输入不予反应继续等待输入。当遇到输入数值错误时
可以按下 D 键进行删除一位重新设置;当 6 位初始值全部设置成功后,电子表将自动开始
走表。
5、时间运算子程序设计
该子程序的主要功能是对时、分、秒的运算,并把运算出的最终结果存到事先已经开辟
的内存单元里,以便显示模块即时地显示出来。该模块可以细分为秒定时模块和运算模块。
定时模块交由 8253 通过对分频出来的频率进行放大至 1 秒,因此每隔 1 秒对 8259 进行刺激,
进而使 CPU 处理中断子程序及时间运算的子程序。另外,在中断服务程序里,必须对秒、
分和时的单元内的数值进行判断,当秒加到 60 时,分必须加 1 、秒清零;当分加到 60 时,
时加 1、分清零。当时加到 24 时,直接清零。
6、中断设置
8259 芯片:在该系统中,8259 主要担负着处理 8253 的一秒时间的脉冲信号,通过 8253
的每秒的刺激下向 CPU 发送中断请求,进而 CPU 处理担负时间计算的中断子程序,即可完
成每秒钟时间自加 1 秒的功能,因此 8259 的设置应为:
ICW1:单片,边沿触发,写入 ICW4
ICW2:写入 08H
ICW3:
7、定时器设置
8253 芯片:在系统中定时/计数芯片 8253 主要与 CPU 及中断扩展芯片 8259 之间存在着
连接关系。8253 主要担负着时间计时的功能,通过对分频单元提供的频率信号进行方法产
生一秒时间为周期的脉冲信号,因此 8253 的设置应为:
控制口写入:00110100b;计算器 0 选择先低后高两字节读或写 方式 2 二进制计
数;
计数器 0 写入:38400;时间系数通过计算可以产生 1 秒的脉冲信号;
8、编址及控制字确定
(1)8259 端口及控制字设置:
EQU 0FFE0H
EQU 0FFE1H
Port_8259_0
Port_8259_1
8259 初始化设置:
ICW1:00010011,边沿触发,单片方式,写入 ICW4;
ICW2:00001000,
INIT8259:
MOV AL,13H
MOV DX,Port_8259_0
OUT DX,AL
MOV AL,08H
MOV DX,Port_8259_1
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,7FH
OUT DX,AL
RET
;IRQ7
(2)8253 端口及控制字设置:
EQU 0FFE4H
EQU 0FFE5H
EQU 0FFE6H
EQU 0FFE7H
PORT_8253_00
PORT_8253_01
PORT_8253_10
PORT_8253_11
8253 初始化设置:
INITCLK0:
MOV DX,PORT_8253_11
MOV AL,00110100B
OUT DX,AL
MOV DX,PORT_8253_00
MOV AX,38400
OUT DX,AL
MOV AL,AH
OUT DX,AL
RET
(2)LED 端口:
OUTSEG EQU 0FFDCH
OUTBIT EQU 0FFDDH
(3)键盘端口:
IN_KEY EQU 0FFDEH
(4)LED 数码管字型码:
LEDMAP:
;
;CLK0
;段控制口
;位控制口/键扫口
;键盘读入口
DB
DB
DB
0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H
080H,090H,088H,083H,0C6H,0A1H,086H,08EH
0BFH
(5)键码定义:
KEYTABLE:
DB
DB
07H,04H,08H,05H,09H,06H,0AH,0BH
01H,00H,02H,0FH,03H,0EH,0CH,0DH
三、功能流程图:
1、主程序流程图
2、LED 显示子程序流程图
3、按键处理子程序流程图