定时闹钟设计摘要:本设计目的是利用单片机设计制作一个简易的定时闹铃时钟,可以放在宿舍或教室使用,在夜晚或黑暗的场合也可以使用。
可以设置现在的时间以及闹铃的时间并且显示出来,若时间到则发出一阵声响。
本次设计的定时闹钟在硬件方面就采用了AT89C52芯片,用6位LED数码管进行显示。
LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。
通过五个功能按键可以实现对时间的修改、定时和闹铃终止,闹钟设置的时间到时蜂鸣器可以发出声响。
在软件方面用C51编程。
整个定时闹钟系统能完成时间的显示,调时和设置闹钟、停止响铃等功能,并经过系统仿真后得到了正确的结果。
关键词:定时闹钟;蜂鸣器;AT89C52;74HC245;目录第1章绪论 (1)1.1设计目的 (1)1.2设计要求和任务 (1)1.2.1设计要求: (1)1.2.2设计任务: (1)1.3论文主要内容 (1)第2章系统总体设计 (2)2.1系统设计需求 (2)2.2总体设计方案 (2)2.3系统软件 (3)2.4系统硬件 (3)第3章系统硬件设计 (4)3.1系统硬件模块及功能 (4)3.2主控模块 (4)3.2.1主芯片AT89C52 (4)3.2.2时钟电路设计 (7)3.2.3 74HC245芯片 (7)3.3 LED显示模块 (9)3.4 按键模块 (9)3.5警报模块 (10)第4章系统软件设计 (11)4.1系统软件设计概述 (11)4.2主程序设计 (11)4.3单片机的中断系统 (11)4.3.1中断源 (11)4.3.2中断的优先级别 (12)4.4主程序 (12)第5章系统测试 (13)5.1测试内容 (13)5.2测试环境 (13)5.3测试步骤 (13)5.3.1测试环境的构建 (13)5.3.2测试内容 (14)5.4测试结果 (14)结论 (15)致谢 (16)参考文献 (17)附录 (18)第1章绪论1.1设计目的本次课程设计的主题是定时闹钟,其基础部分是一个数字钟。
电路系统由秒信号发生器、“时、分、秒”计数器、显示器组成。
其中秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,这里用51单片机的定时器来实现。
利用定时器获得每一秒的时刻,然后在程序中,我们就可以给秒进行逐秒赋值,满60秒则进位为1分,满60分则进位为1小时,满24小时则时间重置实现一天24小时的循环。
译码显示电路将“时”、“分”、“秒”计数器的输出状态送到七段显示译码器译码,通过一个六位八段数码管显示出来。
这里利用51单片机的相关知识,来实现电子闹钟的相关功能。
实验使用了AT89C52、74HC245等芯片,通过单片机的P0、P3管脚来驱动数码管显示出相应的时刻。
本文将讲述AT89C52、74HC245等芯片的基本功能原理,并重点介绍该电子闹钟的设计。
1.2设计要求和任务1.2.1设计要求:使用6位七段LED显示器来显示现在的时间;显示格式为“时时分分秒秒”;具有4个按键来做功能设置,可以设置现在的时间及显示闹铃设置时间;时间到则发出一阵声响,可通过按键复位;对单片机系统设计的过程进行总结,认真书写课程设计报告并按时上交。
1.2.2设计任务:利用51单片机结合七段LED显示器设计一个简易的定时闹铃时钟,可以放在宿舍或教室使用,由于用七段LED显示器显示数据,在夜晚或黑暗的场合也可以使用。
可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响。
1.3论文主要内容论文分别叙述从硬件和软件上实现该设计的过程。
第2章为总体设计方案。
第3章主要介绍设计实现需要解决的硬件问题。
依次介绍所使用的各种硬件的使用方法,并附上仿真电路图和文字说明。
第4章从软件的角度说明实现该设计需要解决的问题。
第2章系统总体设计2.1系统设计需求系统要求实现以下功能:1.当电源接通时,系统能正确显示当前时间。
2.当前时间与实时时间有误差时,可以通过键盘调整当前时间。
3.系统允许进行闹钟设置,开启闹钟功能时,当设置的闹钟时间与当前时间一致的时候,系统通过蜂鸣器发出警报声并且可以通过按键停止。
2.2总体设计方案功能组成:本次设计中的计时功能很容易实现,难点在于时钟功能和闹钟功能的切换和时间的设置。
该电子闹钟设计对51单片机定时器0装初值,使其初值对应50ms,定时器0的中断次数达到20次就刚好为1s,当秒部分计数到60时置零,并向分部分进一;当分部分计数到60时置零,并向时部分进一,当时部分计数到24时置零,从而满足时钟的正常工作。
在设计过程中,我发现通过4个按键来完成一个闹钟的基础功能虽然可以实现,但是用户用起来就会很麻烦,因为有的键必须有多种功能和不同的触发方式,我认为可以增加少许按键来方便用户快速了解到我们的闹钟是如何进行控制的。
所以本次设计设置5个键依次对其进行“时间校准”、“闹钟设置”、“秒分时切换/终止警报”、“加1按钮”、“减1按钮”。
“秒分时切换/终止报警”键在调时状态中,起时分秒切换的作用,在非调试状态下,起闹钟终止的作用。
当用户按下“时间校准”的按钮后,程序会关闭T0定时器,之后时钟停止工作,此时数码管会显示当前静止的时间,说明已经进入时间校准的界面了。
在完成时间校准后,打开T0定时器,时钟会在设置好的时间上继续工作走秒。
当用户按下“闹钟设置”按钮后,会将当前时间复制出来提供给定时界面,注意此时我们的时钟仍然在继续工作,只是数码管显示的是定时模式的静止时间。
当设置好后,此时用户设置的时间只要没有触发过闹铃,再次按“闹钟设置”按钮就能查看并修改,即闹钟会保存下用户最后一次未被触发的闹钟时间。
当正常工作的时钟时刻到达了预设的闹铃时刻,蜂鸣器发出警报声,屏幕会闪烁并显示当前时间。
考虑到用户可能已经被提醒而不想继续被闹铃声干扰,还提供了一个能够终止闹铃的功能,此功能与“时分秒切换”功能共用同一按键,按下后时钟继续正常工作,且闹钟功能又可以重新设置。
2.3系统软件本设计在Keil编程环境下,使用C语言进行编程的编辑。
编辑成功后,通过仿真软件Proteus进行仿真测试。
2.4系统硬件LED显示屏×1主控芯片:AT89C52闹钟提示:蜂鸣器人机交互:按键×5晶振:12KHz×1排阻:RESPACK-8×1电容:10nf×2总线收发器:74HC245×2第3章系统硬件设计3.1系统硬件模块及功能系统硬件模块主要分为以下几个模块:1.主控模块:控制其他子模块。
2.时钟模块:为系统提供实时时间。
3.显示模块:显示系统时间信息。
4.按键模块:用户通过按键进行人机交互,修改实时时间、设置闹钟时间和终止闹钟报警。
5.闹钟模块:在所设闹钟时间发出警报声。
3.2主控模块3.2.1主芯片AT89C52(1).AT89C52简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
AT89C52有PDIP、PQFP/TQFP 及PLCC等三种封装形式,以适应不同产品的需求。
AT89C52引脚图如图3.2.1:图 3.2.1(2).工作原理AT89C52为8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。
功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。
主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。
RST/Vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。
VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。
P0~P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。
P0 口:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1 口:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),Flash 编程和程序校验期间,P1 接收低8 位地址。
P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16 位地数据存储器(例如执行MOVX @DPTR 指令)时,P2 口送出高8 位地址数据。
在访问8 位地址的外部数据存储器(如执行MOVX@RI 指令)时,P2 口输出P2锁存器的内容。
Flash 编程或校验时,P2亦接收高位地址和一些控制信号。