微机原理课程设计报告-数字时钟的实现(附代码) 下载本文

内容发布更新时间 : 2024/4/28 21:18:13星期一 下面是文章的全部内容请认真阅读。

合肥工业大学 计算机与信息学院

课程设计

课 程:微机原理与接口技术设计

专业班级:计算机科学与技术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端口及控制字设置:

Port_8259_0 EQU 0FFE0H Port_8259_1 EQU 0FFE1H 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 ;IRQ7 OUT DX,AL RET

(2)8253端口及控制字设置:

PORT_8253_00 EQU 0FFE4H PORT_8253_01 EQU 0FFE5H PORT_8253_10 EQU 0FFE6H PORT_8253_11 EQU 0FFE7H 8253初始化设置: INITCLK0: MOV DX,PORT_8253_11 MOV AL,00110100B ; OUT DX,AL MOV DX,PORT_8253_00 ;CLK0 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:

DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H DB 080H,090H,088H,083H,0C6H,0A1H,086H,08EH DB 0BFH (5)键码定义:

KEYTABLE:

DB 07H,04H,08H,05H,09H,06H,0AH,0BH

DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH