一、实验目的
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 校时中断服务程序流程图
因篇幅问题不能全部显示,请点此查看更多更全内容