定时闹钟设计
定时闹钟课程设计设计程序

K1 EQU P1.0 ;在程序开始前定义变量K2 EQU P1.1K3 EQU P1.2K4 EQU P1.3ORG 0000HLJMP MAINORG 000BHLJMP TIMEORG 0100HMAIN:MOV SP,#50HMOV 20H,#00H ;时间BIN SECONDMOV 21H,#00H ; BIN MINUTEMOV 22H,#00H ; BIN HOURMOV 23H,#01H ;闹铃BIN MINUTEMOV 24H,#01H ; BIN HOURMOV 25H,#00H ;定义一个标志位MOV 30H,#00H ;时间BCD SECONDMOV 31H,#00H ;MOV 32H,#00H ; BCD MINUTEMOV 33H,#00H ;MOV 34H,#00H ; BCD HOURMOV 35H,#00H ;MOV 36H,#01H ;闹铃BCD MINUTEMOV 37H,#00H ;MOV 38H,#01H ; BCD HOURMOV 39H,#00H ;MOV TMOD,#01H ;16位计数器T0,方式1MOV TH0,#03CH ;赋初值MOV TL0,#0B0HMOV IE,#10000111B ;开中断T0,EA=1SETB TR0 ;T0启动计数MOV R2,#14H ;计数器MOV P2,#0FFHLOOP:LCALL TIMEPRO ; 调用现在时间与闹铃时间比较程序LCALL DISPLAY1 ; 调用现在时间显示子程序JB K1,M1 ; 判断按键是否按下LCALL XIAOZHEN1 ; 调用消抖程序MOV C,25H.0JC A1A1:CLR 25H.0LCALL SETTIME ; 调用设置现在时间子程序LJMP LOOPM1:JB K2,M2LCALL XIAOZHEN2MOV C,25H.0JC A2A2:CLR 25H.0LCALL SETATIME ; 调用设置闹钟的程序LJMP LOOPM2:JB K4,M3A3:LCALL XIAOZHEN3MOV C,25H.0JC A4A4:CLR 25H.0M3:LJMP LOOPSETTIME:L0:LCALL DISPLAY1JB K2,L1LCALL XIAOZHEN4MOV C,25H.0JC A5A5:CLR 25H.0INC 22HMOV A,22HCJNE A,#18H,GO12MOV 22H,#00HMOV 34H,#00HMOV 35H,#00HLJMP L0L1:JB K3,L2LCALL XIAOZHEN5MOV C,25H.0JC A6A6:CLR 25H.0INC 21HMOV A,21HCJNE A,#3CH,GO11MOV 21H,#00HMOV 32H,#00HMOV 33H,#00HLJMP L0GO11:MOV B,#0AHDIV ABMOV 32H,BMOV 33H,ALJMP L0GO12:MOV B,#0AHDIV ABMOV 34H,BMOV 35H,ALJMP L0L2:JB K4,L0LCALL XIAOZHEN3MOV C,25H.0JC AXAX:CLR 25H.0RETSETATIME:LCALL DISPLAY2 ;调用闹钟设置,闹铃响时的显示程序N0:LCALL DISPLAY2JB K3,N1LCALL XIAOZHEN6MOV C,25H.0JC A7A7:CLR 25H.0INC 24HMOV A,24HCJNE A,#24,GO22MOV 24H,#00HMOV 38H,#00HMOV 39H,#00HLJMP N0N1:JB K1,N2LCALL XIAOZHEN7MOV C,25H.0JC A8A8:CLR 25H.0INC 23HMOV A,23HCJNE A,#60,GO21MOV 23H,#00HMOV 36H,#00HMOV 37H,#00HLJMP N0GO21:MOV B,#0AHDIV ABMOV 36H,BMOV 37H,ALJMP N0GO22:MOV B,#0AHDIV ABMOV 38H,BMOV 39H,ALJMP N0N2:JB K4,N0LCALL XIAOZHEN3MOV C,25H.0JC A9A9:CLR 25H.0RETTIMEPRO:MOV A,21HMOV B,23HCJNE A,B,BKMOV A,22HMOV B,24HCJNE A,B,BKSETB 25H.0MOV C,25H.0JC XXXX:LCALL TIMEOUTBK:RETTIMEOUT:X1:LCALL BZLCALL DISPLAY2CLR 25H.0JB K4, X1RETBZ:CLR P3.7MOV R7,#250T2:MOV R6,#124T3:DJNZ R6,T3DJNZ R7,T2SETB P3.7JB K4,XYLCALL XIAOZHEN3MOV C,25H.0JC XY1XY:RETXY1:LJMP LOOP XIAOZHEN1:LCALL DISPLAY1JB K1,XIAOZHEN1MOV C,K1JC XIAOZHEN1LCALL DELAYMOV C,K1JC XIAOZHEN1STOP1:MOV C,K1JNC STOP1LCALL DELAYMOV C,K1JNC STOP1SETB 25H.0RETXIAOZHEN2:LCALL DISPLAY2JB K2,XIAOZHEN2MOV C,K2JC XIAOZHEN2LCALL DELAYMOV C,K2JC XIAOZHEN2STOP2:MOV C,K2JNC STOP2LCALL DELAYMOV C,K2JNC STOP2SETB 25H.0RETXIAOZHEN3:LCALL DISPLAY1JB K4,XIAOZHEN3MOV C,K4JC XIAOZHEN3LCALL DELAYMOV C,K4JC XIAOZHEN3STOP3:MOV C,K4JNC STOP3LCALL DELAYMOV C,K4JNC STOP3SETB 25H.0RETXIAOZHEN4:LCALL DISPLAY1JB K2,XIAOZHEN4MOV C,K2JC XIAOZHEN4LCALL DELAYMOV C,K2JC XIAOZHEN4STOP4:MOV C,K2JNC STOP4LCALL DELAYMOV C,K2JNC STOP4SETB 25H.0RETXIAOZHEN5:LCALL DISPLAY1JB K3,XIAOZHEN5MOV C,K3JC XIAOZHEN5LCALL DELAYMOV C,K3JC XIAOZHEN5STOP5:MOV C,K3JNC STOP5LCALL DELAYMOV C,K3JNC STOP5SETB 25H.0RETXIAOZHEN6:LCALL DISPLAY2JB K3,XIAOZHEN6MOV C,K3JC XIAOZHEN6LCALL DELAYMOV C,K3JC XIAOZHEN6STOP6:MOV C,K3JNC STOP6LCALL DELAYMOV C,K3JNC STOP6SETB 25H.0RETXIAOZHEN7:LCALL DISPLAY2JB K1,XIAOZHEN7MOV C,K1JC XIAOZHEN7LCALL DELAYMOV C,K1JC XIAOZHEN7STOP7:MOV C,K1JNC STOP7LCALL DELAYMOV C,K1JNC STOP7SETB 25H.0RETDELAY:MOV R4,#14HDL00:MOV R5,#0FFHDL11:DJNZ R5,DL11DJNZ R4,DL00RETTIME:PUSH ACCPUSH PSWMOV TH0,#03CHMOV TL0,#0B0HDJNZ R2,RET0MOV R2,#14HMOV A,20HCLR CINC ACJNE A,#3CH,GO1MOV 20H,#0MOV 30H,#0MOV 31H,#0MOV A,21HINC ACJNE A,#3CH,GO2MOV 21H,#0HMOV 32H,#0MOV 33H,#0MOV A,22HINC ACJNE A,#18H,GO3MOV 22H,#00HMOV 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 PSWPOP ACCRETIDISPLAY1:MOV R0,#30HMOV R3,#0FEHMOV A,R3PLAY1:MOV P2,AMOV A,@R0MOV DPTR,#DSEG1MOVC A,@A+DPTRMOV P0,ALCALL DL1MOV P2,#0FFHMOV A,R3RL AJNB ACC.6,LD1INC R0MOV R3,ALJMP PLAY1LD1:RETDISPLAY2:PUSH ACCPUSH PSWMOV R0,#36HMOV R3,#0FBHMOV A,R3PLAY2:MOV P2,AMOV A,@R0MOV DPTR,#DSEG1MOVC A,@A+DPTRMOV P0,ALCALL DL1MOV P2,#0FFHMOV A,R3RL AJNB ACC.6,LD2INC R0MOV R3,ALJMP PLAY2LD2:POP PSWPOP ACCRETDL1:MOV R7,#05HDL:MOV R6,#0FFHDL6:DJNZ R6,$DJNZ R7,DLRETDSEG1:DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FHEND。
单片机定时闹钟课程设计

单片机定时闹钟课程设计一、课程目标知识目标:1. 理解单片机定时器的工作原理,掌握定时器的编程方法;2. 学会使用单片机实现闹钟功能,了解时间计算与时间显示的基本方法;3. 掌握相关电子元器件的原理和功能,如晶振、电容、数码管等。
技能目标:1. 能够运用C语言编写单片机程序,实现闹钟的定时与显示功能;2. 学会使用调试工具对单片机程序进行调试,解决常见问题;3. 提高动手能力,能够独立完成单片机定时闹钟的硬件电路搭建与程序编写。
情感态度价值观目标:1. 培养学生对电子技术的兴趣,激发创新意识;2. 培养学生团队协作精神,学会共同解决问题;3. 增强学生实践操作能力,树立实践出真知的观念。
课程性质:本课程为实践性课程,结合理论教学,注重培养学生的动手能力与实际应用能力。
学生特点:学生具备一定的单片机基础知识,对编程有一定了解,但对实际应用尚缺乏经验。
教学要求:结合学生特点,注重理论与实践相结合,以学生为主体,引导学生主动参与,提高学生的实践操作能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 理论知识:- 单片机定时器/计数器的工作原理与编程方法;- 时间计算与时间显示技术;- 硬件电路设计原理,包括晶振、电容、数码管等元器件的应用。
2. 实践操作:- 搭建单片机定时闹钟的硬件电路;- 编写单片机程序,实现定时与显示功能;- 使用调试工具对程序进行调试,解决常见问题。
3. 教学大纲:- 第一阶段:回顾单片机基础知识,介绍定时器/计数器原理,分析闹钟功能需求;- 第二阶段:学习时间计算与显示技术,讲解硬件电路设计方法;- 第三阶段:动手实践,分组进行硬件电路搭建与程序编写;- 第四阶段:程序调试与优化,展示成果,总结经验。
4. 教材关联:- 教材第3章:单片机定时器/计数器的原理与应用;- 教材第4章:C语言编程基础,涉及闹钟程序编写;- 教材第5章:电子元器件及其应用,用于硬件电路设计。
基于单片机的定时闹钟设计

基于单片机的定时闹钟设计设计定时闹钟是人们日常生活中常见的需求之一,而单片机技术的发展为定时闹钟的实现提供了可行的解决方案。
本文将介绍基于单片机的定时闹钟设计。
一、研究背景及意义在现代社会中,时间是人们日常生活中非常重要的一个因素。
为了更好地规划时间和提高生活效率,人们需要定时提醒自己进行各种活动。
闹钟作为定时提醒的工具,在人们的日常生活中扮演着不可替代的角色。
而基于单片机的定时闹钟实现具有高精度、多功能等优点,因此备受人们青睐。
二、技术方案设计本文设计的基于单片机的定时闹钟主要由三部分组成:时钟电路、单片机控制电路和显示电路。
1. 时钟电路时钟电路采用RTC芯片,可以提供高精度的时间计量。
RTC芯片内部自带晶振,保证了较高的时钟精度。
时钟电路主要功能为提供当前时间,包括小时、分钟和秒。
2. 单片机控制电路单片机控制电路是实现定时闹钟的核心部分。
程序流程如下:①初始化:单片机启动后,需要对RTC芯片和闹钟设定进行初始化,包括设定当前时间和设定闹钟时间。
②计时函数:单片机开启定时器,在每秒钟时钟信号来临时,计时器会进行一次计数。
③闹钟判断:单片机判断当前时间是否等于闹钟设定时间,如果相等,则触发闹钟事件,启动蜂鸣器提示。
④按键设置:单片机可以通过按键进行时间设置和闹钟设置,包括增加或减少小时、分钟和秒数,并将设置信息保存至RTC芯片内存中。
3. 显示电路显示电路采用数码管进行显示,使用单片机控制输出数据。
数码管分为小时显示、分钟显示和秒显示,可以满足不同的显示需求。
三、实验结果分析通过实验结果可以发现,本文设计的基于单片机的定时闹钟可以准确地显示时间和定时提醒。
同时,可以通过按键进行时间和闹钟的设置,并存储至RTC芯片内部,保证了时间和闹钟的持久性。
四、结论及展望基于单片机的定时闹钟设计具有实用性和可行性,可以提高人们生活的效率和品质。
然而,本设计在信号筛选和抗干扰能力方面还有一定的改进空间,需要通过更深入的研究来进一步完善。
定时闹钟课程设计大作业(DOC)

微型计算机控制技术大作业设计题目:定时闹钟课程设计院系:计算机科学与信息工程学院学生姓名:曹紫莹学号:201103010036专业班级:计算机科学与技术(嵌入式方向)11-1指导教师:赵凯2014.06.07目录1、课程内容要求及目的 (1)1.1设计题目 (1)1.2 设计要求 (1)1.3能显示时时-分分-秒秒。
(1)1.4能够设定定时时间、修改定时时间。
(1)2、设计实现方案 (2)2.1原理 (2)2.2 原理及工作过程说明 (2)3、硬件设计 (3)3.1 主控芯片AT89C51的设计 (3)3.2 时钟电路部分设计 (4)3.3 LCD显示电路部分 (5)4、软件设计 (6)4.1 软件设计概述 (6)4.2 主函数的设计 (6)4.3.1 程序初始化 (7)4.3.2 闹钟的实现 (8)4.3.3 显示程序 (8)5、实验总结及心得体会 (23)6、参考文献 (24)基于单片机的定时闹钟1、课程内容要求及目的1.1设计题目基于单片机的定时闹钟1.2 设计要求1、能显示时时-分分-秒秒。
2、能够设定定时时间、修改定时时间。
3、定时时间到能发出报警声或者启动继电器,从而控制电器的启停。
1.3LCD电子闹钟的特点和功能介绍时钟是将小时、分钟、秒钟显示于人的肉眼的计时装置。
而单片机模块中最常见的正是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
而LCD电子定时闹钟是以单片机为基础的数字电路实现对时、分、秒的数字显示的数字计时装置,它的计时周期为24小时,另外应有校时功能和一些显示日期、闹钟等附加功能。
一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”,“星期”计数器、校时电路、报时电路和振荡器组成。
目前电子钟广泛用于各种私人和公众场合,成为我们生活、工作和学习中不可缺少的好帮手。
定时闹钟设计

单片机系统课程设计成绩评定表设计课题:定时闹钟设计学院名称:专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:定时闹钟设计目录1 引言 (1)1.1设计背景意义 (1)1.2设计任务 (1)1.3设计系统的主要功能 (1)2 系统总体方案及硬件设计 (1)2.1系统总体方案 (1)2.2统设计方框图 (1)2.3硬件设计 (2)2.3.1芯片:AT89C51 (3)2.3.2扬声器:SPEAKER (3)2.3.3时钟电路 (4)2.3.4显示器模块的设计 (4)3 软件设计 (4)3.1划分模块 (4)3.2程序流程图 (5)3.3程序 (5)3.4数码显示 (16)4 程序运行调试·····························错误!未定义书签。
5 课程设计体会 (16)6 参考文献·····························错误!未定义书签。
1 引言1.1设计背景意义单片机,全称单片微型计算机,又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。
与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。
定时闹钟课程设计摘要

定时闹钟课程设计摘要一、教学目标本课程旨在让学生了解和掌握定时闹钟的工作原理及其应用,培养学生的时间管理能力和实际操作技能。
具体目标如下:知识目标:使学生了解定时闹钟的基本概念、种类及其工作原理;掌握常见的定时闹钟设置方法和使用技巧。
技能目标:培养学生能够正确选择和使用定时闹钟工具;能够根据实际需要设置定时闹钟,进行时间管理;能够分析和解决定时闹钟使用过程中遇到的问题。
情感态度价值观目标:培养学生珍惜时间、合理安排时间的意识,提高学生自我管理能力;培养学生独立思考、合作交流的能力,提升学生的实践操作技能。
二、教学内容本课程的教学内容主要包括以下几个部分:1.定时闹钟的基本概念:介绍定时闹钟的定义、种类及其功能。
2.定时闹钟的工作原理:讲解定时闹钟的工作原理,包括机械式定时闹钟和电子式定时闹钟。
3.定时闹钟的使用方法:介绍常见的定时闹钟设置方法和使用技巧,如设定时间、定时提醒、铃声设置等。
4.定时闹钟的应用场景:分析定时闹钟在日常生活、学习和工作中的应用场景,如起床、休息、开会等。
5.时间管理:讲解如何利用定时闹钟进行时间管理,提高生活和工作效率。
三、教学方法为了更好地实现教学目标,本课程将采用以下教学方法:1.讲授法:讲解定时闹钟的基本概念、工作原理及其使用方法。
2.讨论法:学生讨论定时闹钟的应用场景和时间管理策略。
3.案例分析法:分析实际案例,让学生了解定时闹钟在生活中的具体应用。
4.实验法:学生动手操作,实践定时闹钟的设置和使用。
四、教学资源为了支持本课程的教学内容和教学方法,将准备以下教学资源:1.教材:选择合适的教材,如《定时闹钟使用手册》。
2.参考书:提供相关的参考书籍,如《时间管理技巧》。
3.多媒体资料:制作课件、教案等多媒体资料,以便于讲解和展示。
4.实验设备:准备定时闹钟设备,让学生进行实际操作。
五、教学评估为了全面、客观地评估学生的学习成果,本课程将采取以下评估方式:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,以了解学生的学习状态。
定时闹钟设计

电子闹钟的控制系统设计基于atmega16单片一、设计目的此次设计的目的是培养同学们系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力,以及一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案;通过完成所选题目的分析与设计,达到技术性能要求。
二、设计要求1、能显示时时-分分-秒秒。
2、能够设定定时时间、修改定时时间。
3、定时时间到能发出报警声或者启动继电器,从而控制电器的启停。
三、设计的总体结构3.1 整体设计思路利用Mega16单片机内部时钟作为时间基准,通过软件编程控制可编程器件Mega16单片机,实现秒,分,时,日,月,年的控制,最终通过LCD液晶显示屏显示结果。
此外还可以实现时间调整,定时多种实用功能,整个设计分硬件和软件俩大部分。
硬件部分采用Mega16单片机作为可编程芯片,1602字符液晶作为信号显示;软件部分利用C语言作为设计语言,对Mega16进行编程实现各种功能3.3软件设计各部分电路设计主电路主要就是芯片的运行,加载程序后,在外部时钟的作用下,将按照程序运行,从而可以实现设计的要求,进行时钟时间和定时时间的调整,并且能够在到达定时时间后控制蜂鸣器发出声响。
利用仿真仿真软件画出的电路图1,显示电路显示电路即可以让我们看到时间的调整和定时时间的调整,显示调整后的时间。
2仿真电路的总体原理框图3.3软件设计软件的设计思路框图四,C语言程序设计#include#define uchar unsigned char#define uint unsigned intsbit spk=P1^7;sbit led=P1^5;sbit DQ=P1^0;sbit RS=P2^4;sbit RW=P2^5;sbit EN=P2^6;sbit key1=P2^0;sbit key2=P2^1;sbit key3=P2^2;sbit key4=P2^3;sbit IO=P3^6;sbit RST=P3^7;sbit SCLK=P3^5;uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; int nian,xing,yue,ri,shi,fen,miao;uchar num,temp,c,d,time[7],a,b,aa,bb,ns,ng,ys,yg,rs,rg,ss,sg,fs,fg,ms,mg,flag; /*******************1602************************/void delay(int z)int x,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}void write_com(uchar com) //写命令{RS=0;P0=com;delay(5);EN=1;delay(5);EN=0;}void write_data(uchar date) //写数据{RS=1;P0=date;delay(5);EN=1;delay(5);EN=0;}void init() //初始化{RW=0;EN=0;write_com(0x38); //显示模式设置write_com(0x0c); //开显示不显示光标不闪write_com(0x06); //写一个字符地址指针光标加一整屏不移动write_com(0x01); //显示清零write_com(0x80+0x04);write_data('2');write_com(0x80+0x05);write_data('0');write_com(0x80+0x00);write_data('c');write_com(0x80+0x01);write_data('a');write_com(0x80+0x02);write_data('i');write_com(0x80+0x4e);write_data(0xdf);write_com(0x80+0x4f);write_data('C');write_com(0x80+0x4b);write_data(0x2e); //显示"。
基于单片机定时闹钟的设计

基于单片机定时闹钟的设计随着科技的快速发展,嵌入式系统已经深入到我们生活的各个角落。
其中,单片机以其高效性、灵活性和低成本性,广泛应用于各种设备的设计中。
本文将探讨如何基于单片机设计一个定时闹钟。
一、硬件需求1、单片机:选择一个适合你项目的单片机。
比如Arduino UNO,它具有丰富的IO口和易于使用的开发环境。
2、显示模块:为了能直观地展示时间,你需要一个LCD显示屏。
可以选择常见的16x2字符型LCD显示屏。
3、按键模块:用于设定时间和闹钟功能。
一般可以选择4个按键,分别代表功能设置、小时加、小时减和分钟加。
4、蜂鸣器:当到达设定时间时,蜂鸣器会发出声音提醒。
二、软件需求1、开发环境:你需要一个适用于你单片机的开发环境,例如Arduino IDE。
2、编程语言:一般使用C或C++进行编程。
3、程序设计:你需要编写一个程序来控制单片机,让其根据设定时间准时唤醒。
程序应包括初始化和设定时间的功能,以及到达设定时间后的闹钟提醒功能。
三、设计流程1、硬件连接:将单片机、显示模块、按键模块和蜂鸣器按照要求连接起来。
2、初始化:在程序中初始化所有的硬件设备。
3、时间设定:通过按键模块设定时间。
你需要编写一个函数来处理按键输入,并在LCD显示屏上显示当前时间。
4、闹钟提醒:在程序中加入一个计时器,当到达设定时间时,程序会唤醒并触发蜂鸣器发出声音。
5、循环检测:在主循环中不断检测时间是否到达设定时间,如果到达则触发闹钟提醒,然后继续检测。
四、注意事项1、时钟源:你需要一个稳定的时钟源来保证闹钟的准确性。
可以考虑使用网络时钟或者GPS模块。
2、功耗优化:如果你的设备需要长时间运行,那么需要考虑到功耗的问题,比如使用低功耗的单片机或者在不需要闹钟提醒的时候关闭蜂鸣器等。
3、人机交互:考虑增加更多的功能以满足用户的需求,如设置多个闹钟、调整闹钟的音量等。
4、安全性:保证设备的电源稳定,避免在突然断电的情况下数据丢失或设备损坏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机系统课程设计成绩评定表设计课题:定时闹钟设计学院名称:专业班级:学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:定时闹钟设计专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录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小时,定时时间到时显示器的显示:。