目录1.概论 (1)2.整体设计思路 (2)2.1硬件各部分所能完成的功能 (3)2.2系统工作原理 (4)2.3时钟各功能分析及图解 (4)2.4.1电路各功能图解分析 (4)2.4.2电路功能使用说明 (7)3. 软件设计思路 (8)3.1 主程序模块 (8)3.2 数码管动态扫描模块 (9)3.3 当前时间计时模块 (9)3.4 闹钟输入输出模块 (10)3.5 当前时间调整模块 (12)3.6复位模块 (13)4.系统的调试和性能分析 (14)4.1系统的调试方法 (14)4.1.1输入按键的调试 (14)4.1.2复位电路的调试 (14)4.1.3显示电路的调试 (14)4.1.4整个系统的联调 (14)4.2心得体会 (15)参考文献 (15)附录 (16)附录A 系统原理图 (16)附录B 程序源代码 (17)电气信息学院课程设计评分表 (28)1.概论单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个过程。
如果采用单片机系统的虚拟仿真软件——Proteus,则不用制作具体的电路板也能够完成以上工作。
数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。
数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便[4]。
不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
而且是控制的核心部分。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
电子钟在工业控制和日常生活中是很重要的,它不仅可以用于计时、提醒又可用于对机器的控制,在自动化的过程中必然有电子钟的参与,因此电子钟的应用会越来越广泛。
而且向着精确、低功耗、多功能发展。
基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。
从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。
另外,程序较为简洁,具有可靠性和较好的可读性。
如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。
数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。
这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于功能扩充,精确度高等特点。
2.整体设计思路这部分主要介绍工作安排和整体设计的思想。
工作过程规划如下:图2.1 整体设计思路针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构[7]。
这样,既能做到经济合理又能实现预期的功能。
在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。
程序可分为显示程序、调时显示运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。
本电子钟设计主要是依照图2.1中的流程做出来的,时间分配比较均匀。
首先,在编程之前必须了解硬件结构尤其是各引脚的用法,以及内部寄存器、存储单元的用法,否则,编程无从下手,电路也无法设计。
这是前期准备工作。
第二部分是硬件部分:依据想要的功能分块设计设计,比如输入需要开关电路,输出需要显示驱动电路和液晶电路等。
第三部分是软件部分:先学习理解C语言的编程方法再根据设计的硬件电路进行分块的编程调试,最终完成程序设计。
第四部分是软件画图部分:设计好电路后进行画图,包括电路图和仿真图的绘制。
第五部分是软件仿真部分:软硬件设计好后将软件载入芯片中进行仿真,仿真无法完成时检查软件程序和硬件电路并进行修改直到仿真成功。
第六部分是硬件实现部分:连接电路并导入程序检查电路,若与设计的完全一样一般能实现想要的功能。
2.1硬件各部分所能完成的功能(1)单片机发送的信号通过程序控制最终在数码管上显示出来。
(2)单片机通过输出各种电脉冲信号来驱动控制各部分正常工作。
(3)为使时钟走时与标准时间一致,校时电路是必不可少的,键盘用来校正数码管上显示的时间。
(4)单片机通过控制闹铃电路来完成定时闹钟的功能。
(5)单片机通过程序对闹铃信号灯进行控制,可方便我们对闹铃的开关以及是否在闹铃进行观察。
(6)由于要设置定时功能,所以配置了对闹钟设置的键盘。
2.2系统工作原理设计的电路主要由四模块构成:时间显示电路、信号显示电路、键盘控制电路、外设闹铃电路以及核心控制电路详细电路功能图如图2-2:图2-2 详细电路功能图本设计采用汇编语言程序设计,使单片机控制数码管显示时、分、秒,当秒计数计满60时就向分进位,分计数器计满60后向时计数器进位,小时计数器按“23翻0”规律计数。
时、分、秒的计数结果经过数据处理可直接送显示器显示。
设计采用的是时、分、秒显示,单片机对数据进行处理同时在数码管上显示。
2.3时钟各功能分析及图解2.4.1电路各功能图解分析(1)时钟运行图仿真开始运行时,或按下K7键时,时钟从00:00:00开始运行,其中按下K1键可进入当前时间调节,K2和K3分别负责加一和减一,K5键为确认键。
时钟运行图如图2-3 所示:图2-3 时钟运行图(2)闹钟开关指示图当按下K4键后,可进入闹钟设时控制,设置完后按确认,按下K6,即开闹钟,信号显示区得开/关闹钟信号灯点亮,表示当时间到达闹钟的时间时,闹铃响;再次按下闹铃,为关闹铃,此时的信号显示区得开/关闹钟信号灯熄灭。
如下图2-4:图2-4闹钟开关指示图(3)闹铃运行图当时间到达闹钟设置的时间时,蜂鸣器会按每秒两次的频率响,闹钟指示灯也会闪烁。
如下图2-5:图2-5闹铃运行图该数字钟是用一片AT89C51单片机通过编程去驱动8个数码管实现的。
通过7个开关控制,从上到下7个开关K1-K7的功能分别为:K1:设置当前时间时/分/秒K2:加一按键K3:减一按键K4:设置闹钟时间时/分/秒K5: 确认/关闭闹铃K6:开/关闹钟K7: 复位控制键分别与P1.0~P1.6口连接,通过P2口和P3口去控制数码管的显示如图所示P2口接数码管的a——g端,是控制输出编码,P3口接数码管的1——8端,是控制动态扫描输出.从P3.6输出一个信号使二极管发光,二极管在设置的闹钟时间到了时候发光,P3.7接一个蜂鸣器,若有乐曲可以去驱动扬声器实现。
2.4.2电路功能使用说明(1)各个控制键的功能:可对时间进行校准调节(只能加1);按下设置键数字时钟进入闹钟设置状态,设置闹钟的时间;时加1、分加1键是在校准时间时或设置闹钟时间对小时数或分钟数调节而设置的;按下秒切换键就可以进入秒表模式,同时秒表也开始计时,按下秒表暂停、复位键就暂停、归零,如果要重新对秒计时则可以按秒表开始、复位;清零键可以对闹钟清零。
(2)AT89C51单片机,通过编写程序对数码显示进行控制。
(3) 八个7段数码管显示时钟信号。
3. 软件设计思路根据设计的要求与内容,我们将该软件设计成七个模块,他们包括:主程序、数码管动态扫描模块、当前时间计时模块、闹钟输入输出模块、当前时间调整模块、数制转换模块以及复位模块。
3.1 主程序模块主程序模块是单片机最先编译运行的模块,所以在这个模块里,我们要设置主程序和各个中断服务程序的入口地址、各种初始化以及开关扫描等。
MCS-51系列单片机复位后,(PC)=0000H,而0003H~002BH分别为各中断的入口地址。
所以,编程时应在0000H处写一条跳转指令。
当CPU接受到中断请求信号并予以相应后,CPU把当前的PC内容压入栈中进行保护,然后转入相应的只能中断服务程序入口处执行。
一般应在相应的中断服务程序入口处写一条跳转指令,并以跳转指令的目标地址作为中断服务程序的起始地址进行编程。
初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定。
下图3-1是我们设计该主程序模块的程序框图。
图3-1主程序设计框图3.2 数码管动态扫描模块在数码管动态扫描模块里,包含了两个子程序,一个是显示子程序,另一个是显示延时1MS子程序。
其中显示延时1MS子程序是用软件延时的方法进行的,过程较简单,这里就不画出它的程序框图,下图3-2为显示子程序的程序框图。
图3-2显示子程序3.3 当前时间计时模块本软件中的当前时间计时模块实际上是T0定时器的中断服务程序,我们将T0定时器工作在方式一中,并让它每50MS产生一次中断。
每产生一次中断,进入中断服务程序后,T0定时器重新转载初始值。
MS50(它是对50MS中断次数统计的存储单元地址标号)就会自加一,接着对MS50进行判断,如果MS50没有到达20次(即一秒的时间),就返回到主程序。
如果到达20次,MS50将清零,并将MIAO(MIAO是对秒进行计数的存储单元地址标号)将自加一。
接着判断MIAO是否到达60次,没到就返回,到了60秒,MIAO将被清零,FEN(FEN是对分进行计数的存储单元地址标号)自加一。
再判断FEN,过程与判断MIAO相识,也是到达60分就进1时并对分清零,时的寄存器地址标号是SHI,因为一天只有24小时,所以,如果SHI计数到了24时,它将对SHI、FEN、MIAO同时清零。
下图3-3为该中断服务的程序框图图3-3T0中断服务程序3.4 闹钟输入输出模块由于闹钟输入输出模块要实现的功能较多,所以它是我们该软件中设计耗时最长的一个模块,也是最复杂的一个模块。
而我们对其采取再分子模块策略,我们对该模块划分了6个子模块:设置闹钟时间子模块、闹钟开关子模块、检查闹钟子模块、闹钟指示灯亮子模块、闹钟转换子模块、蜂鸣器子模块。
下面将逐个说明各个子模块的功能。
设置闹钟时间子模块:该模块实现的功能是,当设置闹钟时间的键盘被按下时,则进入该子模块,通过对各个指定按键的操作来实现闹钟时间的设置。
闹钟开关子模块:该模块实现的功能是,对闹钟的工作状态进行开关,当为开时,闹钟时间到后,闹钟指示灯会亮以及蜂鸣器会响;当为关时,即便闹钟时间到了,闹钟指示灯不会亮以及蜂鸣器不会响。