当前位置:文档之家› 多功能数字钟的设计与实现

多功能数字钟的设计与实现

多功能数字钟的设计与实现
一、实验目的
1.掌握数字钟的设计原理。

2.用微机实验平台实现数字钟。

3.分析比较微机实现的数字钟和其他方法实现的数字钟。

二、实验内容与要求
使用微机实验平台实现数字钟。

1.基本要求如下:
1)24小时制时间显示。

2)可以随时进行时间校对。

3)整点报时。

4)闹钟功能,要求设置起闹时间时,不影响时钟的正常走时。

2.提高要求
1)校时时相应位闪烁。

2)能够设置多个起闹点。

三、实验报告要求
1.设计目的和内容
2.总体设计
3.硬件设计:原理图(接线图)及简要说明
4.软件设计框图及程序清单
5.设计结果和体会(包括遇到的问题及解决的方法)
四、系统总体设计
根据设计要求,初步思路如下:
1)计时单元由定时/计数器8253的通道0来实现。

定时采用硬件计数和软件技术相结合的方式,即通过8253产生一定的定时时间,然后再利用软件进行计数,从而实现24小时制定时。

8253定时时间到了之后产生中断信号,8253在中断服务程序中实现时、分、秒的累加。

2)时间显示采用实验平台上的6个LED数码管分别显示时、分、秒,采用动态扫描方式实现。

3)校时和闹铃定时通过键盘电路和单脉冲产生单元来输入。

按键包括校时键、闹钟定时键、加1键和减1键等。

4) 报警声响用蜂鸣器产生,将蜂鸣器接到8255的一个端口,通过输出电平的高低来控制蜂鸣器的发声。

系统硬件设计主要利用微机实验平台上的电路模块。

硬件电路主要由键盘电路、单脉冲产生单元、8253定时计数器、8255并行接口单元、8259中断控制器、LED 显示电路和蜂鸣器电路等等。

系统的硬件电路设计框图如图1所示。

图1 硬件电路框图
五、硬件设计
根据设计思路,硬件电路可通过实验平台上的一些功能模块电路组成,由于实验平台上的各个功能模块已经设计好,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。

完整系统的硬件连接如图2所示。

硬件电路由定时模块、按键模块、数码管显示模块和蜂鸣器模块组成。

微机系统
8253
8255 8259
数码管显示
键盘电路
蜂鸣器电路
单脉冲发生
单脉冲发生单元
键盘电路
PA0 8255
PB0
P
Q6
OUT0 8253 GATE0
地址
CS1
译码 CS2
数码管显示模块
IRQ2
8259 I
PC BUS 蜂鸣器
各个模块的详细说明:
1.定时模块
定时模块主要是实现硬件定时1s,由8253的计数器0来实现。

Clk0接实验平台分频电路输出Q6,f=46875hz。

GATE0接8255的PA0,由8255的PA0输出来控制计数器的起停。

OUT0接8259的IRQ2,定时完成请求中断,进入中断服务程序。

软件在中断服务程序中实现时分秒的累加。

2.LED数码管模块
实验平台上提供一组六个LED数码管。

插孔CS1用于数码管段选的输出选通,插孔CS2用于数码管位选信号的输出选通。

本设计用6个数码管来动态显示时分秒,动态显示的定时时间由软件延时。

3.按键模块
按键模块包括有2个单脉冲发生单元的按键,3个键盘模块的按键。

2个单脉冲发生单元的按键K1,K2分别为校时键和闹钟定时键,采用中断方式。

3个键盘按键A键,B键和C 键分别为加1键,减1键和切换键。

具体的功能定义如下表。

键盘电路和8255的连接见图3所示。


键名功能说明

K1校时键进入校时状态
K2闹钟定时键进入闹钟定时状态
A键加1键校分或校时的时候使其加1递增
B键减1键校分或校时的时候使其减1递减
C键切换键校分后切换到校时
校时后切换到时钟状态
闹钟设定分值后切换到设定时值
闹钟设定时值后切换到时钟状态
图3 键盘电路和8255的连接图
4.蜂鸣器模块
蜂鸣器模块由蜂鸣器驱动电路和8255组成。

选择一只压电式蜂鸣器,压电式蜂鸣器工作时约需要100mA驱动电流。

蜂鸣器电路如图4所示。

当8255的PB0口输出为高电平时,蜂鸣器产生蜂鸣音,8255输出为低电平时,蜂鸣器不发声。

图4 蜂鸣器电路
六、软件设计
1. 软件设计思路
根据系统的功能,可以将程序分为5个功能模块,包括LED数码管扫描模块、时间计时模块、校时模块、闹钟定时模块和键盘扫描模块。

1)LED数码管扫描模块
在采用动态扫描方式时,要使得LED显示得比较均匀,又有足够的亮度,需要设置适当的扫描频率。

当扫描频率在70Hz左右时,能够产生足够的图形和比较好的效果。

在每一位LED显示后调用一个延时程序。

采用实验平台时,插孔CS1用于数码管段选的输出选通,插孔CS2用于数码管位选信号的输出选通。

在编程时,只需要先输出数据选通相应的位,再输出显示数据。

显示数据输出前要将数据转换为显示代码。

2)时间计时模块
计时是采用硬件计时和软件计时相结合的方法。

硬件定时100ms,产生中断。

8253定时的时间是100ms,clk0的输入时钟f=46875hz,所以计数初值为124FH。

分别用Hour、Min、Sec来存储时分秒值。

在中断服务程序中,计数到1秒的时间时,Sec加1。

当Sec加到60的时候进一,Min值加1。

当Min等于60时,Hour值加1,Hour值等于24时清零开始下一次循环。

3)校时模块
当校时键按下时,进入校时中断程序。

停止计数器,开始键盘扫描。

当键盘是A键时,校正的相应值为加1,若为B键时,校正的相应值为减1。

C键负责在相应的位之间切换。

具体流程见校时中断程序的流程图。

4)闹铃定时模块
当闹铃定时键按下时,进入闹铃定时中断程序。

开始键盘扫描。

当键盘是A键时,定时的相应值为加1,若为B键时,定时的相应值为减1。

C键负责在相应的位之间切换。

具体流程同校时中断程序流程图。

5)键盘扫描模块
采用的是行反转法来扫描键盘的,调用键盘扫描的程序TESTKEY后,程序中的变量KEY 的值就是按下的键的值,如果KEY为0FFH则表示无键盘输入,为0~15 则按照上往下从左往右的顺序分别代表每一个按键按下的信息。

判断键值进行相应的操作。

2. 程序流程图
1)主程序流程图如图5
图5 主程图流程图
2)计时中断程序流程图如图6
3)校时中断程序流程图如图7
4)闹铃定时中断程序流程图和校时中断程序流程图差不多,只是不需要关闭
启动计数器。

图6 计时中断服务程序流程图
图7 校时中断服务程序流程图。

相关主题