《数字钟系统的设计与实现》由会员分享,可在线阅读,更多相关《数字钟系统的设计与实现(13页珍藏版)》请在金锄头文库上搜索。
1、1武汉大学电子信息学院电子系统综合设计课程论文数字钟系统的设计与实现专 业: 年 级: 作 者:指导教师: 2012 年 6 月 20 日2目录1.选题背景与意义12.功能指标设计13.系统总体方案设计13.1 核心器件的选择13.2 系统整体框图23.3 模块方案设计24.硬件设计35.软件设计45.1 主程序流程图45.2 显示模块流程图45.3 中断服务流程图65.4 校时子程序86.系统仿真测试86.1 测试环境86.2 测试步骤.86.3 测试结论 8参考文献 8附录 1 系统参考代码9附录 2 系统器件清单11电子系统综合设计课程论文11 选题背景及意义单片机应用系统因其优异的性能
2、、高可靠性以及成本低廉被广泛应用于航空航天、工业测控、机器人感觉、数字信号处理、通信等各个技术领域。在比较特殊的应用领域中,我们不仅希望单片机能够完成数据的采集处理,同时还想知道产生这些数据的时刻,以便于更详细地了解和掌握现场情况,这就需要为单片机系统增加数字时钟的功能。数字钟是采用数字电路实现对时分秒的数字显示的计时装置,广泛应用于个人、家庭、车站、码头、办公室等情况和场所,已成为人们日常生活中的必需品。数字钟能长期、连续、稳定、可靠地工作,同时还具有体积小、功耗低的优点,便于携带,使用方便。由于数字集成电路的发展和石英晶体振荡器的发展,新型数字钟的精度已经远远超过老式的机械钟表,可见钟表的
3、数字化给人们的生活带来了极大的方便。而在实现数字钟的各种方法中,使用单片机实现的数字钟不仅设计方法灵活,计时准确,而且可以很方便地通过软件编程使数字钟拥有丰富可靠的功能,同时也便于新功能的扩展,因而是不错的选择。目前数字钟的常见功能有:自动计时并显示时间、通过按键或者键盘进行时间校准(包括对闹铃的设置) 、闹钟功能、整点报时功能,以及万年历等等众多扩展功能。鉴于我们首次接触单片机的有关知识,对复杂功能的实现还有困难,本次设计中我们只选择实现前两个基本功能,并希望通过自主学习、小组讨论、动手实践、与老师交流等途径尽可能多的掌握单片机的基础知识。2功能指标设计根据要实现的功能,我们确定了以下的设计
4、要求:1)设计一个精确的一秒定时器;2)根据一秒定时器,设计一个带小时、分钟、秒的时钟,并将小时、分钟、秒显示在LED 上;3) 设计小时、分钟、秒的修改按键,可分别调整小时、分钟、秒。3系统总体方案的设计3.1 核心器件的选择该数字钟系统的设计用 MCS51 单片机系统学习板即可。根据数字钟系统的功能要求,可得到该系统的实现需要三个主要部分,即定时计数部分、显示部分和时间调整部分。51 单片机内部的脉冲振荡电路为单片机的工作提供时钟节拍,两个定时/计数器可由软件设置为定时工作方式或计数工作方式及其他灵活多样的可控功能方式,为数字钟系统的定时计数部分提供了硬件基础。V1.1 实验板上的总线扩展
5、八位高亮数码管已由内部电路与单片机相连,通过单片机 IO 口进行数据传输可以实现对数码管显示的控制,数字钟系统的时间显示部分由这部分电子系统综合设计课程论文2完成,若显示时分秒则只需其中六位数码管。在工作过程中对时分秒的校准需要通过外部按键与内部电路相联系,V1.1 实验板上的 4 路独立按键和 4*4 矩阵键盘为设计提供了较完善的按键功能,保证了时间调整部分的硬件基础。51 单片机有 5 个中断源,256B 的片内 RAM 和4KB 的片内 flash ROM,完成所需功能不需要外部硬件的扩展,使得整个设计方案较为简便。作为整个系统核心的 SST 单片机不仅有丰富的硬件资源,另一个很大的优势
6、是具有在线仿真功能。在 SoftICE 监控程序的控制下,单片机通过 PC 的一个 COM 口与 Keil uVision2debugger 通讯,从而实现对目标程序的实时调试。 SST 的仿真功能可以极大地简化工作,这也是选择该器件的原因。3.2 系统整体框图图 3-1 系统整体框图3.3 模块方案的设计根据数字钟的功能,可以将整个系统划分为四个主模块,即定时器模块、时间计数器模块、校时按键模块和显示模块。1)时间计数器模块又可以分为时分秒三个子模块。秒计数器为 60 进制计数器,其进位输出是分计数器的进位输入;分计数器也是 60 进制计数器,其进位输出是时计数器的进位输出;时计数器是 24
7、 进制计数器。电子系统综合设计课程论文32)定时器模块主要用来产生精确的一秒定时,作为时钟的基准秒信号,在正常计时模式下,时间计数器在该秒信号的驱动下按照相应的进制进行计数。而在时间调整模式下,时间计数器则根据按键传输的信息进行相应的部分的数字调整。3)校时按键模块主要是产生校计时模式切换脉冲,提供计数器选择信号(移位) ,以及作为外部事件触发单片机内部计数器计数进而改变相应时间部分(上调/下调) 。4)显示模块则主要用来将时间计数器的内容以直观的方式表示出来,程序设计中应该反复调用该模块,使得时间可以实时显示。这几个模块的选择与设计都是从数字钟整体功能的实现方面来考虑的,各个模块有其独立的功
8、能,同时也要和其他模块紧密相连。图 3-2 模块图4硬件设计1)计时方案:使用单片机内部定时器/计数器计时。利用 MSC51 单片机内部的 T1 定时/计数器进行中断延时,配合软件延时可以实现时分秒的计时。该方案可以很好地节省硬件资源。2)显示方案:LED 动态显示。常用的显示方案有两种,即静态显示和动态显示。其中静态显示的效果较好,数码管亮度高,但是由于本次实验要用到六位数码管,使用静态显示就意味着硬件开销会较大。而动态显示虽然效果没有静态显示的好,但是可以在很大程度上节省硬件资源,简化实现过程,所以本次我们选用动态显示。动态显示的原理:逐个循环点亮各位数码管,虽然在任意时刻只有一个数码管被
9、点亮,但由于人眼的视觉暂留效应,只要循环的频率足够高,我们观察到的就是多位数码管同时被点亮。为了实现 LED 动态扫描,需要为数码管提供位选和段选信号。单片机输出控制引脚使用 P0(P0.0P0.7)作为控制端,分别通过 74HC573 连到 LED 的段选端 a 到 h 用来输出相应数码或连接到 LED 的位选端,控制每个时刻点亮的数码管,也即控制时分秒的显示。3)校时方案:使用实验板上的四位独立按键分别作为四个校时按键 K1、K2 、K3、K4。四位独立按键分别与 P3.2P3.5 连接进行相应的信息交换。每按下一次 K4,数字钟就在计时与校时模式之间切换一次;若是在校时模式下,再按 K3
10、 键可以改变当前的位选信号,使得时间电子系统综合设计课程论文4调整位依次右移,当移到最右端(秒个位)时,再按 K3 则重新回到最左端;选定调整位后按K2 和 K1 可分别实现相应位上数值的加减 1。此种实现方式使用的 I/O 口较多,但是实现相对简单。5软件设计5.1 主程序流程图主程序:主要对中断源和定时器进行初始化,其中 T1 作为计时器,定时时间为 50ms,则经过二十次中断的时间即为 1s.设 T 1 为 模 式 1设 中 断 次 数 为 2 0开 中 断清 计 时 单 元启 动 T 1二 进 制 码 转 换 为 B C D子 程 序调 用 显 示 子 程 序等 待 定 时 中 断图
11、5-1 主程序流程图5.2 显示模块流程图显示模块可分为两部分,要完成的功能叙述如下:电子系统综合设计课程论文5转换为可显示码子程序:定时计数器单元的内容为十六进制,为适合 LED 的显示,须把其转换为压缩 BCD 码,也即把每个计数器的十位和个位拆分开,再通过查表将六个 BCD 码转换成对应的显示数码,并将转换后的内容放入时间缓存区 40H-45H,以便后续程序使用。开始B - 1 0A - ( 3 0 H )D I V A B查表转码4 0 H - AA - B查表转码4 1 H - AA - ( 3 1 H )4 2 H - 分十位4 3 H - 分个位A - ( 3 2 H )4 4
12、H - 秒十位4 5 - 秒个位调用 S H O W图 5-2 转码子程序流程图显示子程序:LED 动态扫描显示时分秒。首先 R2 设置初值 07FH,通过位选信号选中时十位;R0 指向 40H,得到时十位的数码,通过 P0 送出段选信号到数码管使其显示。然后 R2电子系统综合设计课程论文6循环右移,依次选中后面五位数码管,R0 循环加 1,依次得到相应数码。这样扫描完全部六个数码管就可显示时分秒。注意相邻两个数码管扫描时间间隔不能过长,否则会出现闪烁现象。开始寄存器赋初值给出位选信号给出段选信号调用延时子程序时分秒显示完毕 ?R E T是否图 5-3 显示子程序流程图5.3 中断服务流程图中
13、断服务程序:主要判断中断次数是否足够,并对时分秒计数器进行相应的加 1 操作。电子系统综合设计课程论文7入 口保 护 现 场赋 计 数 初 值到 1 s( 3 2 H ) - - - ( 3 2 H ) + 1( 3 2 H ) = 6 0 ?( 3 2 H ) - - - 0( 3 1 H ) - - - ( 3 1 H ) + 1( 3 1 H ) = 6 0 ?( 3 1 H ) - - - 0( 3 0 H ) - - - ( 3 0 H ) + 1( 3 0 H ) = 2 4 ?( 3 0 H ) - - - 0恢复现场返 回YYNNNYNY图 5-4 中断子程序流程图电子系统综合
14、设计课程论文85.4 校时模块主程序中包含对按键情况的判断,一旦监测到有按键被按下,则转到相应按键的功能处理程序。独立按键从上到下分别是 K4 到 K1。K4 的功能处理程序进行对用户标志位 F0 的修改,当 F0=1 时工作于计时模式,否则为校时模式;K3 按下则改变寄存器 R7 的内容,R7 初值为30H,即时计数器,每按下 K3 则 R7 内容加 1,直到 32H 时再回到初值;K2 和 K1 每按下一次则(R7) )内容加 1 或减 1,对于时计数器是满 23 变为 0 或者到 0 后变为 23,分秒计数器则是满 59 变 0 或者到 0 变 59。6系统仿真测试6.1 测试环境由于数字钟系统设计重点是软件,其测试环境也主要是对软件仿真环境的要求。我们选用Keil 开发环境对汇编代码进行编译连接,利用 SST 单片机的在线仿真功能对系统进行测试。6.2 测试步骤为测试系统期望达到的要求是否满足,按照下列步骤进行测试仿真:1) 实验板上电,单片机复位;2) 打开 Keil 软件,新建工程 CLOCK,对工程进行必要的设置;3) 在编辑窗口中进行代码的