当前位置:文档之家› 定时闹钟设计

定时闹钟设计

单片机系统课程设计成绩评定表设计课题:定时闹钟设计学院名称:专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:定时闹钟设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录1 绪论 (4)1.1摘要 (4)1.2单片机基本概念 (4)2 设计的总体结构 (4)2.1电路的总体原理框图 (4)2.2 工作原理 (6)2.3 元器件名称 (7)3 各部分电路设计 (9)3.1 主电路 (9)3.2 显示电路 (9)3.3 内部时钟方式的电路 (10)3.4 按键及蜂鸣器电路 (11)4 整体电路图 (11)5 设计总结 (12)5.1 设计过程中遇到的问题及解决方法 (12)5.2 设计体会 (12)5.3 对设计的建议 (13)参考文献 (14)附录 (15)附录A 整体电路图 (15)附录B 源程序代码 (16)附录C 调试 (25)1 绪论本设计是简单定时闹钟系统,不仅能实现系统要求的功能:(1)能显示时时-分分-秒秒,(2)能设定和修改定时时间,(3)定时时间到后能发出报警声;而且还有附加功能,即还能设定和修改当前所显示的时间。

本设计采用单片机AT89C52作为核心元件,12MHZ晶振,由P0口输出所要显示的字形段码,由P2口输出字位信号。

在其基础上扩展外围芯片与电路,附加时钟电路及LCD电路。

单片机具有集成度高、功能强、通用性好、特别是它能耗低、价格便宜、可靠性高、抗干扰能力强和使用方便等独特的优点,所以单片机现在广泛的应用到家用电器、机电产品、儿童玩具、机器人、办公自动化产品等领域。

为了进一步的熟悉并掌握单片机的应用及开发,认真的做好此次课程设计非常必要。

一个单片机的定时闹钟系统离不开软件和硬件,硬件是软件的依托,软件是硬件的内核。

设计硬件电路时应该先设计一个单片机的最小系统,它是单片机应用系统的设计基础,然后在此基础上添加外围器件,如显示器、按键等构成闹钟的硬件电路图。

在设计应用程序时遵循模块化的设计方法,在明确了设计方向之后按照分成的几大模块分别画出流程图,然后根据流程图写出程序,在每个模块编写好之后分别调试、修改、完善。

最后在主程序下调用再次调试、修改。

通过这次设计让我更深入了解单片机基本电路、如何控制和定时器和中断编程的基本方法,从而锻炼了我学习、设计和开发软、硬件的能力。

2 系统方案2.1 电路的总体原理框图使用单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统进行不同状态的组合。

本系统采用单片机AT89C52作为本设计的核心元件,接入液晶显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,扬声器发出报警声,并显示“Time up”,提示预先设定时间电器的起停时间到,从而控制电器的起停。

电路由下列部分组成:时钟电路、复位电路、控制电路、LCD显示,报警电路,芯片选用AT89C52 单片机。

系统基本框图如图2.1所示:2.2 工作原理当给电路足够的电源时,电路开始正常初始化,此时显示“00 :00 :00”,若不进行时间调整和定时,时钟将正常计时下去。

若按下按键1,由于按下次数的不同,出现光标闪烁的位置不同,即可进行时间的时分秒的调整和定时时间的时分秒的调整,按键2和3分别是进行时间的加和减,若确定好时间,时钟将正常运行,到达定时时间后蜂鸣器将会响一段时间后停止。

如果按复位键,时钟将重新初始化,需要重新定制时间。

如果不做任何改动,到下一个定时的时间,时钟将会继续鸣叫。

定时闹钟的基本功能如下:首先,使用LCD液晶显示器来显示现在的时间。

其次,程序执行之后显示“Time:00:00:00”;按键功能如下:按键K1设置现在的时间和时调整;按键K2显示闹钟设置的时间和分调整;按键K3设置闹铃的时间和设置完成;按键K4闹铃ON/OFF的状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声和闹铃时间到时,发出一阵声响,按下本键可以停止声响。

调整计时器时间如下:按下K1键,然后按K1调整小时,K2调整分钟,按下K3表示时间设置完成。

调整闹钟时间设置如下 : 再次按下K3开始闹中设置,LCD下一行显示“Alarm:00:00”按下K1设置小时,按一下K2设置分钟,再次按下K3设置完成,并且设置时间消失,当再次按一下K2时“Alarm:00:00再次显示并马上消失。

按一下K4关闭闹钟,再次按下打开闹钟。

2.3 系统流程图一个单片机的定时闹钟系统离不开软件和硬件,硬件是软件的依托,软件是硬件的内核。

系统软件设计总流程图如图2.2所示:定时闹钟设计,首先得对时钟闹铃有一个很好的设计和操作。

时钟闹铃设计流程图如图2.3所示:3 各部分电路设计3.1主电路主电路主要就是芯片的运行,加载程序后,在外部时钟的作用下,将按照程序运行,从而可以实现设计的要求,进行时钟时间和定时时间的调整,并且能够在到达定时时间后控制蜂鸣器发出声响。

如图3.1所示:图3.1 主电路3.2 显示电路显示电路即可以让我们看到时间的调整和定时时间的调整,显示调整后的时间。

如图3.2所示的显示电路:图3.2 仿真过程中的显示电路3.3 内部时钟方式的电路单片机内部有一个用于构成振荡器的高增益反向放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

这两个引脚跨接石英晶体和微调电容,构成一个稳定的自激振荡器。

时钟频率可以影响单片机的速度。

单片机的各功能部件的运行都以时钟控制信号为基准,如图3.3所示:图3.3 内部时钟方式的电路3.4 按键及蜂鸣器电路有源蜂鸣器是一种一体化结构的电子讯响器,是内部自带振荡电路,只需电平动就可以发生的蜂鸣器,而与其对应的无源蜂鸣器内部则无振荡电路。

按键可以对时间进行调整,蜂鸣器可以在到达定时的时间时提醒我们。

按键及蜂鸣器电路如图3.4所示:图3按键及蜂鸣器电路4 整体电路图定时闹钟的设计,由单片机AT89C52芯片和LCD、,辅以必要的的电路,构成一个单片机定时闹钟。

电子钟可采用数字电路实现,也可以采用单片机来完成。

LCD显示“时”,“分”,“秒”,定时时间到能发出警报声或者启动继电器,从而控制电器的启停。

现在是自动化高度发达的时代,特别是电子类产品都是靠内部的控制电路来实现对产品的控制,达到自动运行的目的,这就需要我们这里要做的设计中的电器元件及电路的支持。

在这次设计中主要是用AT89S52来进行定时,也结合着其他辅助电路实施控制,在定时的时候,按一下控制小时的键对小时加一;按一下控制分钟的键对分钟加一;到达预设的时间,此电路就会发出报警声音提示已经到点。

总体电路图见附图A。

设计总结5.1 设计过程中遇到的问题及解决方法在设计的过程中遇到问题是不可避免的,我遇到了很多问题,如下所示;1)烧程序时没发烧进去,需要改变最高和最低波特率,才能按照步骤把程序烧进去。

2)仿真时没问题的电路,在做好实物时发现无法运行。

原因可能是程序出现问题,或者在连实物时线路连接错误等等都有可能。

这是很难的一部分,需要查找出原因。

在做实物的过程中我进行的很多检查,有很多连接错误,最终又重新焊接的。

3)复位电路在实物中可以运行,但是在仿真中不能正常运行。

目前还未找到原因。

5.2设计体会这次设计中遇到了很多问题,例如刚开始我在在仿真时程序出现了每次按按钮时总是显示测量时需要关闭仿真的字样,试了很多方法都没有找到原因,最后才知道是因为按钮太近的缘故。

很多类似的经历让我明白:1)在设计程序之前,务必要对所学单片机课程的内容有一个系统的了解,知道单片机片内片外的内容及其功能。

2)设计程序关键要有一个清晰的思路和一个完整的软件流程图。

模块化的设计思想在程序设计中的作用是重大的,它可以为你提供一个比较清晰的思路,并且很容易找到头绪,不至于在编写一个程序时感觉到无从下手。

3)在设计程序时,不能妄想一次就将整个程序设计好,"反复修改,不断改进"是程序设计的必经之路。

程序刚开始编好时,一般情况下会存在很多错误,要不断地修改,不断的改进才能达到预期的目的,编写程序的时间并不是很长,主要用于修改程序了。

4)要养成注释程序的好习惯,让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。

刚开始我在编写程序时,很不习惯于写注释,感觉很麻烦,而且没用,但是在修改的过程中我就遇到了较大的麻烦,以至于不得不重新的作了注释,以增加程序的易读性,从而使修改过程变得容易一些。

总之,通过这次课程设计不仅使我巩固了本课程所学的基本知识,还使我具有了撰写科研报告的初步训练能力,我相信这些能力在我以后的工作或者是再学习中一定会起到不小的作用,一切的辛苦和艰难都是值得的。

5.3对设计的建议在设计前应该对所要实现的功能有一定的了解,定下有大概的流程图,把设计模块化,写程序时也应该一个模块一个模块的写,这样方便理解,也方便以后的检查。

在仿真和实物的过程中要了解所使用芯片的功能及引脚的排列方式,这样焊接时比较方便。

参考文献[1]余发山.单片机原理及应用技术.中国矿业大学出版社,2003.21-45,98-118,185-198[2]刘和平. 单片机编程与入门.重庆大学出版社,2002.68-99,111-122[3]陈明荧. 89C51单片机课程设计实训教材.清华大学出版社,2003.38-67,102-118[4]刘瑞新. 单片机原理及应用教程.北京机械工业出版社,2005.78-109[5]杨文龙. 单片机原理及应用.西安电子科技大学出版社,2002.33-62[6]董国增. 单片机接口及应用实验和训练指导.北京机械工业出版社,1998.43-70[7]付寿英,张登举,徐飞. 单片机接口技术及在工业控制中的应用.陕西科学技术出版,2001.78-101附录A 整体电路图附录B 定时闹钟源程序代码ORG 0000HLJMP MAINORG 000BHLJMP TIME;×××××主程序部分:×××××ORG 0100HMAIN:MOV SP,#50HMOV 20H,#00H ;秒钟BINMOV 21H,#00H ;分钟BINMOV 22H,#00H ;小时BINMOV 23H,#01HMOV 24H,#01HMOV 25H,#00HMOV 30H,#00HMOV 31H,#00HMOV 32H,#00HMOV 33H,#00HMOV 34H,#00HMOV 35H,#00HMOV 36H,#01HMOV 37H,#00HMOV 38H,#01HMOV 39H,#00HMOV TMOD,#01H ;16位计数器MOV TH0,#03CH ;赋计数初值MOV TL0,#0B0HMOV IE,#10000111BSETB TR0 ;T0启动计数MOV R2,#14HMOV P2,#0FFHLOOP: LCALL TIMEPROLCALL DISPLAY1JB P1.0,M1LCALL SETTIME ;调用设定时间程序LJMP LOOPM1:JB P1.1,M2LCALL SETA TIME ;调用设定时间程序LJMP LOOPM2:JB P1.3,M4LCALL LOOKATIME ;调用设定闹钟时间程序M4:LJMP LOOPDELAY:MOV R4,#030H ;延时时间DL00:MOV R5,#0FFHDL11:MOV R6,#9HDL12:DJNZ R6,DL12DJNZ R5,DL11DJNZ R4,DL00RET;×××××设定时间程序:×××××SETTIME:L0:LCALL DISPLAY1 ;调用时间允许程序MM1: JB P1.1,L1MOV C,P1.1JC MM1LCALL DELAY1 ;调用延时JC MM1MSTOP1: MOV C,P3.0JNC MSTOP1 ;判断P3.0是否释放?释放则继续LCALL DELAY1 ;调用延时MOV C,P3.0JNC MSTOP1INC 22H ;小时增加1MOV A,22HCJNE A,#18H,GO12 ;判断小时是否到1时?未到继续循环MOV 22H,#00H ;小时复位MOV 34H,#00HMOV 35H,#00HLJMP L0L1:JB P1.2,L2MOV C,P1.2JC L1LCALL DELAY1 ;延时JC L1MSTOP2: MOV C,P1.2JNC MSTOP2 ;判断P1.2是否释放?释放则继续LCALL DELAY1 ;调用延时MOV C,P1.2JNC MSTOP2INC 21H ;分钟增加一MOV A,21HCJNE A,#3CH,GO11MOV 21H,#00H ;分钟复位MOV 32H,#00HMOV 33H,#00HLJMP L0GO11:MOV B,#0AH ;将A中的内容分成高低两部分DIV ABMOV 32H,BMOV 33H,ALJMP L0GO12:MOV B,#0AHDIV ABMOV 34H,BMOV 35H,ALJMP L0L2:JB P1.3,L0MOV C,P1.3JC L2LCALL DELAY1 ;调用延时MOV C,P1.3JC L2STOP1: MOV C,P1.3 ;判断按键P1.3是否释放?JNC STOP1LCALL DELAY1 ;调用延时MOV C,P1.3JNC STOP1LJMP LOOP;×××××设置闹钟时间×××××SETATIME:LCALL DISPLAY2 ;调用时间运行N0:LCALL DISPLAY2MM2: JB P1.2,N1 ;判断P1.2是否按下?MOV C,P1.2JC MM2LCALL DELAY1JC MM2MSTOP3: MOV C,P1.2 ;判断P1.2是否释放?JNC MSTOP3LCALL DELAY1MOV C,P1.2JNC MSTOP3INC 24H ;设定小时增加1MOV A,24HCJNE A,#24,GO22MOV 24H,#00H ;时钟复位MOV 38H,#00HMOV 39H,#00HLJMP N0N1:JB P1.0,N2 ;判断P1.0是否按下?MOV C,P1.0JC N1LCALL DELAY1JC N1MSTOP4: MOV C,P1.0 ;判断P1.0是否释放?JNC MSTOP4LCALL DELAY1MOV C,P1.0JNC MSTOP4INC 23H ;设定闹钟分钟增加1MOV A,23HCJNE A,#60,GO21 ;判断A是否到60分?MOV 23H,#00H ;分钟复位MOV 36H,#00HMOV 37H,#00HLJMP N0GO21:MOV B,#0AH ;将A中的内容分成高低两部分DIV ABMOV 36H,BMOV 37H,ALJMP N0GO22:MOV B,#0AHDIV ABMOV 38H,BMOV 39H,ALJMP N0N2:JB P1.3 ,N0 ;判断P1.3是否按下?MOV C,P1.3JC N2LCALL DELAY1MOV C,P1.3JC N2STOP2: MOV C,P1.3 ;判断P1.3是否释放?JNC STOP2LCALL DELAY1MOV C,P1.3JNC STOP2LJMP LOOPTIMEPRO:MOV A,21HMOV B,23HCJNE A,B,BK ;判断分钟是否运行到设定的闹钟的分钟?MOV A,22HMOV B,24HCJNE A,B,BK ;判断时钟是否运行到设定的闹钟的时钟?SETB 25H.0MOV C,25H.0JC XXXX: LCALL TIMEOUT ;调用时间闹钟响应程序BK:RETTIMEOUT:X1:LCALL BZ ;调用喇叭响应程序LCALL DISPLAY2CLR 25H.0JB P1.3, X1 ;判断P1.3是否按下?LCALL DELAYCLR 25H.0LJMP DISPLAY1BZ: CLR P3.7 ;喇叭响应程序MOV R7,#250 ;响应延时时间T2: MOV R6,#124T3: DJNZ R6,T3DJNZ R7,T2SETB P3.7RETLOOKATIME:LCALL DISPLAY2 ;调用时间运行程序MM: JB P1.3,LOOKA TIME ;判断按键P1.3是否按下MOV C,P1.3JC MMLCALL DELAY1MOV C,P1.3JC MMSTOP3: MOV C,P1.3JNC STOP3LCALL DELAY1MOV C,P1.3JNC STOP3LJMP LOOPDELAY1: MOV R4,#14H ;时间延时DL001: MOV R5,#0FFHDL111: DJNZ R5,DL111DJNZ R4,DL001RET;×××××时间运行程序×××××TIME: PUSH ACC ;现场保护PUSH PSWMOV TH0,#03CH ;赋初值MOV TL0,#0B0HDJNZ R2,RET0MOV R2,#14HMOV A,20HCLR CINC A ;秒钟自加1CJNE A,#3CH,GO1 ;判断秒钟是否到60秒?MOV 20H,#0 ;到60秒复位MOV 30H,#0MOV 31H,#0MOV A,21HINC A ;分钟自加1CJNE A,#3CH,GO2 ;判断分钟是否到60分?MOV 21H,#0H ;到60分复位MOV 32H,#0MOV 33H,#0MOV A,22HINC A ;时钟自加1CJNE A,#18H,GO3 ;判断时钟是否到24时?MOV 22H,#00H ;到24时复位MOV 34H,#0MOV 35H,#0AJMP RET0GO1: MOV 20H,AMOV B,#0AHDIV ABMOV 31H,AMOV 30H,BAJMP RET0GO2: MOV 21H,AMOV B,#0AHDIV ABMOV 33H,AMOV 32H,BAJMP RET0GO3: MOV 22H,AMOV B,#0AHDIV ABMOV 35H,AMOV 34H,BAJMP RET0RET0: POP PSW ;恢复现场POP ACCRETI;×××××运行部分×××××DISPLAY1: MOV R0,#30HMOV R3,#0FEHMOV A,R3PLAY1: MOV P2,AMOV A,@R0MOV DPTR,#DSEG1 ;表首地址送DPTRMOVC A,@A+DPTRMOV P0,ALCALL DL1MOV P2,#0FFH ;送高电平到P2MOV A,R3RL A ;JNB ACC.6,LD1INC R0MOV R3,ALJMP PLAY1 ;调用查表程序LD1: RETDISPLAY2: PUSH ACC ;现场保护PUSH PSWMOV R0,#36HMOV R3,#0FBHMOV A,R3PLAY2: MOV P2,AMOV A,@R0MOV DPTR,#DSEG1 ;表首地址送DPTRMOVC A,@A+DPTR ;查ASCII特码MOV P0,A ;查表结果送ALCALL DL1MOV P2,#0FFH ;送高电平到P2MOV A,R3RL AJNB ACC.6,LD2INC R0MOV R3,ALJMP PLAY2LD2: POP PSW ;恢复现场POP ACCRET;×××××延时时间×××××DL1: MOV R7,#02H ;延时时间DL: MOV R6,#0200HDL6: DJNZ R6,$DJNZ R7,DLRETDSEG1:DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHEND附录C 调试当时钟通电刚开始显示时:在计时的过程中某一时刻的显示电路:当设定定时时间为30分钟,并且定时时间到时显示器的显示:当修改定时时间为1小时,定时时间到时显示器的显示:。

相关主题