定时闹钟设计(1)

合集下载

设计一个定时闹钟

设计一个定时闹钟

设计一个定时闹钟作者:谢作如蔡慧敏来源:《中国信息技术教育》2016年第19期闹钟在我们日常生活中十分常见,几乎所有的手机都自带了闹钟功能。

不知道大家是否记得指针式闹钟(如图1)。

现在的闹钟,纯机械的几乎绝版了,就连指针式的电子闹钟也不多见了。

利用开源硬件,做一个复古的指针式闹钟,让它能定时闹铃,应该是挺有趣的。

● 器材和原理闹钟至少需要指针和铃声。

因此,舵机和蜂鸣器是必要的电子模块。

舵机可以做指针,每分钟转动一定的角度。

当舵机转到预定的角度(预定时间)时,停止转动并让蜂鸣器响起,这就是定时闹钟的核心功能了。

至于控制板,当然选择Arduino了。

舵机的工作过程是把所接收到的电信号转换为电动机轴上的角位移或角速度输出,可以精确控制其旋转的角度。

为了辨别舵机的转动,我们需要做一个指针固定在舵机上。

闹钟的原型如图2所示。

● 建模和编程我们先确定做一个1小时的闹钟,指的是最大时间长度(最大量程)是1小时的闹钟。

然后找一张纸剪成圆形,用一个画了刻度的半圆(180度)来表示闹钟的指针。

简单计算下,舵机每分钟转动的单位角度是3度,即180/60=3(度)。

如果要定时15分钟,当舵机转过45度时就要“闹铃”了。

你能否归纳出定时n分钟时舵机转过的角度?答案就是3×n度。

为了让舵机顺时针转动,舵机的初始角度要设定为180度,即从180度到0度旋转。

那么,舵机的角度随时间的增加而减小,因此n分钟的定时,舵机停止转动的角度就是(180-3n)度,如表1所示。

弄明白原理,就可以开始编程了。

我们采用的编程工具是Mixly(米思齐)。

编程工具Mixly可以通过扫描文尾的二维码下载。

以1小时闹钟定时15分钟为例,具体代码见下页图3。

那么,如何制作一个最大量程为15分钟或者3小时之类的闹钟?在代码中预设的最小单位角度(3度)不变的情况下,只用修改延时即可。

例如,最大里程是3小时,可知每分钟转1度(180度/180=1度),转过单位角度(3度)需要180秒,所以延时时间为180000毫秒。

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

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

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. 时钟电路时钟电路采用RTC芯片,可以提供高精度的时间计量。

RTC芯片内部自带晶振,保证了较高的时钟精度。

时钟电路主要功能为提供当前时间,包括小时、分钟和秒。

2. 单片机控制电路单片机控制电路是实现定时闹钟的核心部分。

程序流程如下:①初始化:单片机启动后,需要对RTC芯片和闹钟设定进行初始化,包括设定当前时间和设定闹钟时间。

②计时函数:单片机开启定时器,在每秒钟时钟信号来临时,计时器会进行一次计数。

③闹钟判断:单片机判断当前时间是否等于闹钟设定时间,如果相等,则触发闹钟事件,启动蜂鸣器提示。

④按键设置:单片机可以通过按键进行时间设置和闹钟设置,包括增加或减少小时、分钟和秒数,并将设置信息保存至RTC芯片内存中。

3. 显示电路显示电路采用数码管进行显示,使用单片机控制输出数据。

数码管分为小时显示、分钟显示和秒显示,可以满足不同的显示需求。

三、实验结果分析通过实验结果可以发现,本文设计的基于单片机的定时闹钟可以准确地显示时间和定时提醒。

同时,可以通过按键进行时间和闹钟的设置,并存储至RTC芯片内部,保证了时间和闹钟的持久性。

四、结论及展望基于单片机的定时闹钟设计具有实用性和可行性,可以提高人们生活的效率和品质。

然而,本设计在信号筛选和抗干扰能力方面还有一定的改进空间,需要通过更深入的研究来进一步完善。

定时闹钟课程设计大作业(DOC)

定时闹钟课程设计大作业(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),是把中央处理器、存储器、定时/计数器、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。

与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。

12小时制任意点定时数字闹钟设计方案

12小时制任意点定时数字闹钟设计方案
图2
2.2可调时钟模块
秒、分、时分别为60、60和12进制计数器。用两片74LS290做一个十二进制, 输入计数脉冲CP加在CLKA’端,把QA与与CPLB’从外部连接起来,电路将对CP按照8421BCD码进行异步加法计数。通过反馈端,控制清零端清零,其中个位接成二进制形式,十位接成四进制形式。其电路图如下:
图1
第二章、设计容及设计方案
2.1 原理框图
数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。数字电子钟的总体图如图2所示。由图1可见,数字电子钟由以下几部分组成:石英晶体振荡器和分频器组成的秒脉冲发生器;校对电路;六十进制秒、分计数器、十二进制时计数器;以及秒、分、时的译码显示部分等。
图3
同理利用两片74LS290组成的六十进制计数器。
将两个六十进制的加法计数器和一个十二进制的加法计数器进行级联:将秒的十位进位脉冲接到分的个位输入脉冲,将分的十位进位脉冲接到时的个位输入脉冲,这样就可以组成最基本的电路。
2.3校时电路
例如说时的校准,开关1上端接1HZ脉冲,下端接分的进位。当开关打到上端时电路进入校准功能,当开关打到下端时电路进入正常计时功能。
2.4整点报时
分别用2个或非门接到分和秒的各输出个节点处,再用一个与非门与报时灯,当输出同时为零时,即整点时,报时灯就亮了,起到报时功能。本实验使用LED部分工作在EWB仿真软件上进行。对于电路的调试应该分为几个部分,分别对电路各个部分的功能都进行调试,之后,每连接一部分都要调试一次。
12小时制任意点定时数字闹钟设计方案

基于单片机定时闹钟的设计

基于单片机定时闹钟的设计

基于单片机定时闹钟的设计随着科技的快速发展,嵌入式系统已经深入到我们生活的各个角落。

其中,单片机以其高效性、灵活性和低成本性,广泛应用于各种设备的设计中。

本文将探讨如何基于单片机设计一个定时闹钟。

一、硬件需求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、安全性:保证设备的电源稳定,避免在突然断电的情况下数据丢失或设备损坏。

LCD显示的定时闹钟设计方案

LCD显示的定时闹钟设计方案

LCD显示的定时闹钟设计方案1.设计要求使用AT89C51单片机结合字符型LCD显示器设计一个简易的定时闹钟LCD 时钟,若LCD选择有背光显示的模块,在夜晚或黑暗的场合中也可使用。

定时闹钟的基本功能如下:显示格式为“时时:分分”。

由LED闪动来做秒计数表示。

一旦时间到则发出声响,同时继电器启动,可以扩充控制家电开启和关闭。

程序执行后工作指示灯LED闪动,表示程序开始执行,LCD显示“ 00:00”,按下操作键K1〜K4动作如下:(1)K1 —设置现在的时间。

(2)K2 —显示闹钟设置的时间。

(3)K3 —设置闹铃的时间。

⑷K4 —闹铃ON/OFF勺状态设置,设置为ON时连续三次发出“哗”的一声,设置为OFF发出“哗”的一声。

设置当前时间或闹铃时间如下。

(1)K1 —时调整。

(2)K2 —分调整。

(3)K3 —设置完成。

(4)K4 —闹铃时间到时,发出一阵声响,按下本键可以停止声响。

本项目的难点在于4 个按键每个都具有两个功能,以最终实现菜单化的输入功能。

采用通过逐层嵌套的循环扫描,实现嵌套式的键盘输入。

2.设计方案2.1 原理本LCD定时闹钟,是以单片机及外围接口电路为核心硬件,辅以其他外围硬件电路,用汇编语言设计的程序来实现的。

根据C51单片机的外围接口特点扩展相应的硬件电路,然后根据单片机的指令设计出数字钟相应的软件,再利用软件执行一定的程序来实现数字钟的功能。

由于采用集成芯片性的单片机来制作电子钟,这样设计制作简单而且功能多、精确度高,也可方便扩充其他功能,实现也十分简单。

本设计是利用AT89C51单片机为主控芯片,由LCD晶振、电阻、电容、发光二极管、开关、喇叭等元件组成硬件电路,通过编写软件程序来实现和控制的数字定时闹钟2.2系统总框图2.3原理及工作过程说明(1)定时闹钟的基本功能如下:(a)启动仿真软件,使用LCD液晶显示器来显示现在的时间。

(b)程序执行之后显示“ 00:00”并且LED闪烁,表示开始已经计时。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定时闹钟的设计学生姓名:学生学号:指导教师:所在学院:专业班级:中国·2014年 6 月信息技术学院课程设计任务书信息技术学院院专业级,学号姓名一、课程设计课题:定时闹钟的设计二、课程设计工作日自 2014 年 6 月 15 日至 2014 年 7 月 1 日三、课程设计进行地点:四、程设计任务要求: (详细内容见课程设计文档)1.课题来源:指导老师下发2.目的意义:此次设计的目的是培养同学们系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力,以及一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案;通过完成所选题目的分析与设计,达到技术性能要求。

3.基本要求:设计基于单片机的定时闹钟,可以实现时分秒的显示、以及定时等基本功能。

能够设定定时时间,并实现修改定时的功能。

定时时间到应能发出报警声。

课程设计评审表目录1 设计任务要求…………………………………………………….………2 方案设计………………………………………………………….………3 单元电路设计…………………………………………………….………4 元件选择(要求计算元件参数)………………………………….………5 整体电路(标出原元件型号和参数、画出必要波形图)………………6 说明软件程序设计……………………………………………………….7 困难问题及解决措施…………………………………………….………8 总结与体会……………………………………………………………….9 致谢……………………………………………………………….………10参考文献……………………………………………………….………...1. 设计要求1.1 目的:此次设计的目的是培养同学们系统地运用已学的理论知识解决实际问题的能力和查阅资料的能力,以及一定的自学能力和独立分析问题、解决问题的能力,能通过独立思考、查阅工具书、参考文献,寻找解决方案;通过完成所选题目的分析与设计,达到技术性能要求。

1.2 要求:(1)设计基于单片机的定时闹钟,可以实现时分秒的显示、以及定时等基本功能。

(2)能够设定定时时间,并实现修改定时的功能。

(3)定时时间到应能发出报警声。

1.3 规定:设计硬件线路,用protel画图。

按单元电路详细说明硬件线路设计思路,元件参数,选取根据。

附详细的元件清单。

总结设计过程和设计体会。

1.4 内容:这一次课程设计,所设计的是一个定时闹钟,能显示时-分-秒,能够设计定时时间,修改定时时间,并且定时时间到了能发出报警声。

设计的部分分为软件及硬件,软件部分写出闹钟的工作方式以及它是如何工作的,而硬件部分是软件的载体,画出正确的电路图然后在软件的控制下才能使设计的定时闹钟正常工作。

1.5 完成时间:3周。

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

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

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

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

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

单片机的各功能部件的运行都以时钟控制信号为基准图3 内部时钟方式的电路3.4按键及蜂鸣器电路按键可以对时间进行调整,蜂鸣器可以在到达定时的时间时提醒我们。

图4 按键及蜂鸣器电路4. 元件选择4.1 芯片AT89C52AT89C52 是ATMEL公司生产的低电压,高性能CMOS单片机. AT89C52 提供以下标准功能:8字节FLASH闪速存储器,256字竹内部RAM , 32个I/O口线,3个16 位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89c52可降至OHz的静态逻辑操作,并支持两种软件可选的节电上作模式。

空闲方式停止CPU 的工作,但允许RAM,定时/计数器.串行通信口及中断系统继续工作。

掉电方式保存RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位.4.2 LCD显示屏1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点。

晶模块内部的控制器共有11条控制指令,如表所示:表3-1:控制命令表指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移S: 屏幕上所有文字是否左移或者右移。

高电平表示有效,低电平则无效。

指令4:显示开关控制。

D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。

指令6:功能设置命令DL:高电平时为4位总线,低电平时为8位总线N:低电平时为单行显示F:低电平时显示5×7的点阵字符。

指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。

4.3蜂鸣器有源蜂鸣器是一种一体化结构的电子讯响器,是内部自带振荡电路,只需电平驱动就可以发生的蜂鸣器,而与其对应的无源蜂鸣器内部则无振荡电路。

5. 整体电路图见附图。

6. 软件程序设计#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table1[]="00:00:00";sbit lcden=P2^6 ;//位定义sbit lcdrw=P2^5;sbit lcdrs=P2^4;sbit s1=P3^0;sbit s2=P3^1;sbit s3=P3^2;sbit beep=P3^7;//定义蜂鸣器uchar num,count,s1num;//显示的位数;响应中断数;按键次数;uint i;char shi,fen,miao,shi1,fen1,miao1;void delay(uint z)//延时程序{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void write_com(uchar com)//控制指令{lcdrs=0; //低电平时选择指令寄存器lcdrw=0;// 低电平时进行写操作delay(5);lcden=1; //E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令P0=com;delay(5);lcden=0;}void write_data(uchar date)//数据指令{lcdrs=1;lcden=1; //均为高时是读出数据的内容delay(5);P0=date;delay(5);lcden=0;}void init()//初始化{lcdrw=0;lcden=0;delay(15);write_com(0x38);//设置为4位总线,单行显示delay(5);write_com(0x38);delay(5);write_com(0x38);write_com(0x38);//重复多次以确定可以正确设置write_com(0x08);//无光标正常显示write_com(0x01);//清显示write_com(0x06);//光标和显示模式设置 d1 I/D:光标移动方向,高电平右移 d0 S:屏幕上所有文字是否左移或者右移。

低电平表示光标闪烁 write_com(0x0c);// 显示开关控制。

d2 D:控制整体显示的开与关,高电平表示开显示 d1 C:控制光标的开与关,低电平表示无光标 B:控制光标是否闪烁,低电平不闪烁write_com(0x80+1);d7为高时,显示数据存储地址TMOD=0x11;工作方式3TH0=(65536-50000)/256;//定时时间为50msTL0=(65536-50000)%256;EA=1;//开总中断ET0=1;//打开定时器TR0=1;//启动定时器write_com(0x80+4);//秒的设定for(num=0;num<8;num++){write_data(table1[num]);delay(20);}write_com(0x80+0x40+4);for(num=0;num<8;num++){write_data(table1[num]);delay(20);}}void write_sfm(uchar add,uchar date)//调整时间{uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add);//控制指令,0x40:字符发生器RAM地址设置进行加write_data(0x30+shi);//数据指令,功能设置命令 d4 DL:高电平时为4位总线 d3 N:低电平时单行显示 d2 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

write_data(0x30+ge);}void write_shedingsfm(uchar add1,uchar date1)//设定定时时间{uchar shi1,ge1;shi1=date1/10;ge1=date1%10;write_com(0x80+add1);//控制指令write_data(0x30+shi1);write_data(0x30+ge1);}void keyscan(){if(s1==0){delay(5);if(s1==0){s1num++;while(!s1);//s1按下}}if(s1num==1)//按下次数{TR0=0;//停止定时器工作write_com(0x80+0x40+11);//调整时间设置,控制秒设定write_com(0x0f); //d3 显示开关控制。

d2 D:控制整体显示的开与关,高电平表示开显示 d1 C:控制光标的开与关,高电平表示有光标d0 B:控制光标是否闪烁,高电平闪烁}if(s1num==2){write_com(0x80+0x40+8);//控制分钟设定write_com(0x0f);//控制光标闪烁}if(s1num==3){write_com(0x80+0x40+5);//控制时设定write_com(0x0f);}if(s1num==4){TR0=1;//启动定时器,定时时间的设定write_com(0x80+11);//控制秒的设定write_com(0x0f);//光标显示}if(s1num==5){write_com(0x80+8);//定时分钟的设定write_com(0x0f);}if(s1num==6){write_com(0x80+5);//定时时的显示write_com(0x0f);}if(s1num==7){s1num=0; // 按键次数清零write_com(0x0c);//显示此时为无光标状态 }if(s1num!=0)//有按键时{if(s2==0){delay(5);if(s2==0){while (!s2);if(s1num==1){miao++;if(miao==60){miao=0;}write_sfm(10,miao)//第10位进行秒的设定write_com(0x80+0x40+11);//控制秒的设定}if(s1num==2){fen++;if(fen==60){fen=0;}write_sfm(7,fen);write_com(0x80+0x40+8);}if(s1num==3){shi++;if(shi==24){shi=0;}write_sfm(4,shi);write_com(0x80+0x40+5);}if(s1num==4){TR0=1;//定时器启动miao1++;if(miao1==60){miao1=0;}write_shedingsfm(10,miao1);write_com(0x80+11);}if(s1num==5){fen1++;if(fen1==60){fen1=0;}write_shedingsfm(7,fen1);write_com(0x80+8);}if(s1num==6){shi1++;if(shi1==24){shi1=0;}write_shedingsfm(4,shi1);write_com(0x80+5);}}}}if(s3==0){delay(5);if(s3==0){while (!s3);if(s1num==1){miao--;if(miao==-1){miao=59;}write_sfm(10,miao);write_com(0x80+0x40+11);}if(s1num==2){fen--;if(fen==-1){fen=59;}write_sfm(7,fen);write_com(0x80+0x40+8);}if(s1num==3){shi--;if(shi==-1){shi=23;}write_sfm(4,shi);write_com(0x80+0x40+5);}if(s1num==4){TR0=1;miao1--;if(miao1==-1){miao1=59;}write_shedingsfm(10,miao1);write_com(0x80+11);}if(s1num==5){fen1--;if(fen1==-1){fen1=59;}write_shedingsfm(7,fen1);write_com(0x80+8);}if(s1num==6){shi1--;if(shi1==-1){shi1=23;}write_shedingsfm(4,shi1);write_com(0x80+5);}}}}void main()//主函数{init();//初始化函数while(1){keyscan();//键盘扫描if(count==20)//响应中断20次,时间1s{count=0;//清零miao++;//秒加1if(miao==60)//60秒时分加1{miao=0;fen++;if(fen==60)//60分时时加1{fen=0;shi++;if(shi==24)//24时时时全为0,从00:00:00开始计时{shi=0;}write_sfm(4,shi);//修改时}write_sfm(7,fen);//修改分}write_sfm(10,miao);//修改秒if((shi==shi1)&&(fen==fen1)&&(miao==miao1))//蜂鸣器电路的运行{for(i=0;i<10;i++){beep=0;//蜂鸣器响delay(50);beep=1;delay(50);}}}}}void timer0() interrupt 1//中断函数{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}8. 总结与体会8.1 设计过程中遇到的问题及解决方法在设计的过程中遇到问题是不可避免的,我遇到了很多问题,如下所示;(1).做实物时无法驱动数码管显示,后来了解到可以加锁存器,如74LS253,74LS573等等,还可以加三极管用来加大电流。

相关文档
最新文档