logo资料库

微机原理课程设计报告-数字时钟的实现.doc

第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
资料共16页,剩余部分请下载后查看
华南理工大学 计算机与信息学院 课程设计 课 程:微机原理与接口技术设计 专业班级:计算机科学与技术 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、按键处理子程序流程图
分享到:
收藏