您的当前位置:首页正文

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

2020-02-22 来源:意榕旅游网
多功能数字钟的设计与实现

一、实验目的

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 硬件电路框图

键盘电路

8255 8253

微机系统 蜂鸣器电路

8259

单脉冲发生

单元

五、硬件设计

根据设计思路,硬件电路可通过实验平台上的一些功能模块电路组成,由于实验平台上的各个功能模块已经设计好,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。完整系统的硬件连接如图2所示。硬件电路由定时模块、按键模块、数码管显示模块和蜂鸣器模块组成。 PC BUS

地址 CS1

译码 CS2 电路 CS3 CS4

PA0 8255 PB0

PC

数码管显示模块

单脉冲发生单元 单脉冲发生单元 蜂鸣器 键盘电路

OUT0 8253 GATE0 Clk0

Q6

8259

IRQ2 IRQ3 IRQ5

图2 系统硬件电路图

各个模块的详细说明: 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键 B键 C键 键名 校时键 闹钟定时键 加1键 减1键 切换键 功能说明 进入校时状态 进入闹钟定时状态 校分或校时的时候使其加1递增 校分或校时的时候使其减1递减 校分后切换到校时 校时后切换到时钟状态 闹钟设定分值后切换到设定时值 闹钟设定时值后切换到时钟状态

图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) 闹铃定时中断程序流程图和校时中断程序流程图差不多,只是不需要关闭启动计数

器。

定时中断中断保护Cnt+1->CntCnt=10?NY0->CntSec+1->SecSec=60?NY0->SecPB0输出0Min+1->MinMin=60?NY0->MinPB0输出1Hour+1->HourHour=60?NY0->Hour时分是定时时间?NYPB0输出1恢复中断中断返回6 计时中断服务程序流程图图

校时中断中断保护PA0输出停止计数器读键值YYN是A键?Min+1->MinMin-1->MinN是B键?N是C键?Y读键值YYN是A键?Hour+1->HourHour-1->HourN是B键?N是C键?YPA0输出启动计数器中断返回图7 校时中断服务程序流程图

因篇幅问题不能全部显示,请点此查看更多更全内容