电子闹钟设计-毕业设计

合集下载

多功能电子时钟,毕业设计

多功能电子时钟,毕业设计

多功能电子时钟摘要本文是基于AT89C52单片机数字钟的设计,通过多功能电子时钟的设计思路,详细叙述了系统硬件、软件的具体实现过程。

论文重点阐述了电子时钟硬件中MCU模块、时钟模块和键盘模块、显示模块等的模块化设计与制作;软件同样采用模块化设计思路,包括中断模块、闹钟模块、时间调整模块的设计,并采用C语言编写实现。

本设计实现了时间与闹钟的修改功能,年、月、日和星期的显示功能。

并且通过对比实际的时钟,查找出了误差的来源,确定了调整误差的方法,尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。

本文还涉及到非接触止闹功能,在有效范围内使用者不需用手去寻找开关而关闭闹钟,该功能使本设计更具有人性化。

该时钟还有重要日子倒计时功能,能够提前几天设定好时间,以避免遗忘重要日子。

关键词:AT89C52单片机,电子时钟,模块化设计,C语言Multifunctional electronic clockABSTRACTThis article is based on AT89C52 microcontroller digital clock design, through multi-functional electronic clock design ideas, detailed description of the system hardware and software realization process.Paper focuses on the electronic clock hardware MCU module, clock module and keyboard module, display module, modular design and production; software as a modular design concept, including aninterrupt module, alarm module, module design time to adjust and adopt the C language implementation. The Design and Implementation of the changes of time and alarm functions, year, month, day and week display. And by comparing the actual clock, find out the source of the error, the error method to determine the adjustment, as much as possible to reduce the error, allows the system to achieve the actual number of minutes of allowable error range. This also involves the function of non-contact only trouble in the effective range of users do not need a hand to find switch and turn off the alarm, this feature makes the design more user friendly. There are important days of the countdown clock function, set a good few days ahead of time, to avoid forgetting important occasions.KEY WORDS:AT89C52 microcontroller, electronic clock, modular design, C language前言 (1)第一章系统总体设计 (2)1.1 系统总体设计 (2)1.2 方案论证 (2)1.2.1 总体方案论证 (2)1.2.2 模块方案论证 (3)1.2.3 止闹功能 (3)第2章系统模块设计 (4)2.1 时钟接口电路设计 (4)2.2 键盘接口电路设计 (5)2.3 液晶显示电路设计 (8)2.4 单片机电路设计方案 (11)2.5 跑表功能设计 (14)2.6 非接触止闹电路设计 (14)2.7 报警电路设计 (14)2.8 重要日子倒计时功能设计 (15)2.9 看门狗电路 (15)第3章软件设计 (18)3.1 系统软件设计综述 (18)3.2 系统软件流程图 (18)第4章系统测试 (20)4.1 时钟功能的测试 (20)4.2 闹钟功能的测试 (20)4.3 跑表功能的测试 (20)4.4 重要日子倒计时功能的测试 (21)结论 (22)谢辞 (23)参考文献 (24)附录 (25)前言电子时钟己成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。

毕业设计36LCD电子钟的功能

毕业设计36LCD电子钟的功能

摘要本设计是采用单片机技术的电子定时闹钟,近年来集成电路技术的出现和应用,是推动了人类文明的突飞猛进。

基于集成电路技术的单片机产品更是方便了人们的生活和工作,目前以单片机技术的应用为核心的产品种类非常丰富。

应用我们所学过的知识和查阅相关资料,我制作了这个单片机技术为基础的LCD 可校时可定时电子闹钟,这是一个简单的实用的单片机电子设计产品。

本“LCD定时电子闹钟’设计采用AT89C51为主控芯片。

在充分理解了设计的要求后,准确的定位了设计的目的,然后构思了总体的方案。

在选择和合适的硬件完成了电路的设计后,又进行了软件的设计和调试。

本系统的硬件组成以及工作原理都有详细的图文说明,所应用的软件技术和各个模块设计的功能及工作过程也有详细的介绍,最后的部分则详细描述了了软件仿真及调试过程。

本电子钟设计是以单片机技术为核心,采用了中小规模集成度的单片机制作的功能较为完善的电子闹钟。

硬件设计应用了成熟的数字钟电路的基本设计方法以,并详细介绍了系统的工作原理。

硬件电路中使用了除AT89C51外,另外还有LCD、晶振、电阻、电容、发光二极管、开关、喇叭等元件。

在硬件电路的基础上,软件设计按照系统设计功能的要求,运用所学的汇编语言,实现的功能包括‘时时-分分-秒秒’显示、设定和修改定时时间的小时和分钟、校正时钟时间的小时、分钟和秒、定时时间到能发出一分钟的报警声。

最后应用‘伟福’及‘Proteus’等软件将硬件电路和软件系统链接在一起对各个部分及整体进行仿真并调试构成了整个完整的电子闹钟的设计。

最后通过反复的实际仿真和测试表明,该系统能够实现所有要求的功能包括:(1)能显示‘时时-分分-秒秒’。

(2)能够设定定时时间、修改定时时间及时钟。

(3)定时时间到蜂鸣器能发出铃声,另外还在此基础上实现了其他的附加功能比如万年历。

当然这个系统仍然是属于比较简单的单片机应用系统,要设计功能更强的更复杂的系统还需要我进一步的学习。

(完整)基于STC单片机的电子时钟毕业设计(DOC)

(完整)基于STC单片机的电子时钟毕业设计(DOC)

电子时钟[摘要] 本设计是基于STC单片机的电子时钟技术,由STC12C5A16S2芯片和LCD1602液晶显示屏,DS18B20进行温度测量,辅以必要的的电路,构成一个单片机定时闹钟。

电子钟可采用数字电路实现,也可以采用单片机来完成.LCD显示“时”,“分”,LED闪动来做秒计数,定时时间到能发出警报声或者启动继电器,从而控制电器的启停。

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

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

[关键词] 定时闹钟STC12C5A16S2 LCD1602Time clock[Abstract] The regular alarm clock designers design, by the microcontroller STC12C5A16S2 chip and LCD1602 display、 DS18B20 , combined with the necessary circuitry to form a single—chip timer alarm clock. Clock can be digital circuit,the microcontroller can also be used to complete。

LCD display "when”, "sub”,LED flash to do the second count, regular time to be able to sound an alarm or start relay to control the electrical start and stop. Now is the era of highly developed automation, especially electronic products are relying on the internal control circuitry to achieve control of the product to achieve the purpose of automatic operation, which requires us to do the design of electrical components and circuits to support 。

毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]

毕业设计(论文)-基于单片机多功能电子时钟的设计与仿真(含程序仿真)[管理资料]

程序仿真等全套设计,联系153893706第1章绪论二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。

第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。

第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。

第三次革命就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步……我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。

商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。

本设计为软件,硬件相结合的一组设计。

在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。

基本的要了解一些主要器件的基本功能和作用。

除了采用集成化的时钟芯片外,还有采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LED数码管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。

AT89C52是由ATMEL公司推出的一种小型单片机。

95年出现在中国市场。

其主要特点为采用Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,可以很快被中国广大用户接受。

本文介绍了基于AT89C52单片机设计的电子万年历。

选题背景及研究的目的与意义设计的目的电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。

毕业设计论文_单片机电子时钟的设计

毕业设计论文_单片机电子时钟的设计

毕业设计论文_单片机电子时钟的设计摘要:电子时钟作为一种常见的时间显示装置,在现代社会中应用广泛。

本文设计了一款基于单片机的电子时钟,使用DS1307实时时钟芯片来获取系统时间,并通过数码管进行显示。

设计过程中,通过对单片机的编程和电路的连接,实现了时间的显示与调节功能,具有较高的准确性和稳定性。

该设计方案简单、实用,可用于各种场合。

关键词:单片机;电子时钟;DS1307;数码管1.引言电子时钟是一种利用电子技术构造的显示时间的装置,具有时间准确、使用简单、显示清晰等特点,广泛应用于生活和工作中。

本文以单片机为核心,设计了一款实时准确的电子时钟,提高了时间的准确度和稳定性。

2.设计原理该设计的核心是通过单片机与DS1307实时时钟芯片的连接,使得单片机可以获取到准确的系统时间,并通过数码管进行显示。

DS1307芯片通过I2C总线与单片机连接,通过读取芯片中的时间寄存器,单片机可以获得当前的时间信息。

3.硬件设计本设计中使用了AT89S52单片机作为主控芯片,通过引脚与DS1307芯片相连。

单片机的P0口接到数码管的段选信号,P1口接到数码管的位选信号,通过控制这两个口的输出状态,可实现对数码管上显示的数字进行控制。

同时,为了使时钟可以正常运行,需外接一个晶振电路为单片机提供时钟信号。

4.软件设计通过对单片机的编程,实现了以下功能:(1)初始化DS1307芯片,设置初始时间;(2)每隔一秒读取一次DS1307芯片的时间寄存器,将时间信息保存到单片机的RAM中;(3)根据当前时间信息,在数码管上显示对应的小时和分钟。

5.调试与测试经过硬件的连接以及软件的编写,进行了调试与测试。

将初始时间设置为08:30,观察数码管上的显示是否正确,以及时间是否准确。

同时,通过手动调节DS1307芯片中的时间,检查单片机是否能正确获取时间,并进行显示。

6.总结与展望本文设计了一款基于单片机的电子时钟,通过单片机与DS1307芯片的连接和编程,实现了准确的时间显示功能。

电子钟毕业设计课题

电子钟毕业设计课题

科技学院新科学院电气工程系电子课程设计报告单片机时钟的设计学生:石豪时间: 2014.12.8-2014.12.2所在班级: 129班指导老师:艳峰2014年12月23号基于单片机控制的时钟控制器一.设计要求(一)基本功能1.显示:可以显示时、分和秒2.调时功能:时(0-24)、分和秒(0-60)可以连续可调(二)性能:时间日误差< 2秒(三)扩展功能1.增加整点报时功能2.增加闹钟任意设定功能二.计划完成时间三周1.第一周完成软件和硬件的整体设计,同时按要求上交设计报告一份。

2.第二周完成软件的具体设计和硬件的制作。

3.第三周完成软件和硬件的联合调试。

目录ABSTRACT................................................................................................................... I V1. 引言 (1)2.关于单片机 (2)2.1单片机的发展 (2)2.2 AT89S52单片机 (3)2.2.1 AT89S52单片机引脚功能 (4)2.2.2 AT89S52单片机硬件结构的特点 (5)2.2.3 AT89S52单片机的硬件原理 (7)3. 系统的硬件设计 (9)3.1 控制部分电路的设计 (9)3.1.1 时钟模块 (9)3.1.2 音乐模块 (9)3.1.3 复位模块 (9)4. 系统电路的制作与调试 (10)4.1 电路硬件焊接制作 (10)4.2 调试的主要方法 (10)4.3 系统调试 (11)4.3.1 硬件调试 (11)4.3.2 软件调试 (11)4.3.3 联机调试 (11)4.3.4调试中遇到的问题及解决方法 (11)结论 (13)参考文献 (14)附录1 数字钟电路图 (16)致 (25)单片机时钟设计MCU clock design摘要基于单片机的定时和控制装置在许多行业有着广泛的应用,而数字钟是其中最基本的,也是最具有代表性的一个例子。

多功能电子钟毕业设计

多功能电子钟毕业设计

多功能电子钟毕业设计本文主要介绍了一款多功能电子钟的设计方案,其中包括时钟、定时器、闹钟、日历、温度显示等多种功能。

通过硬件和软件的相结合,实现了这种多功能的电子钟,具有易操作、准确显示、功能多样等特点。

本设计可用于家庭、实验室、工作室等多种场合。

一、设计目标随着现代科技的发展,电子钟成为人们生活中不可缺少的一部分。

因此,本文设计了一款多功能电子钟,集时钟、定时器、闹钟、日历、温度显示等多种功能于一身,方便人们的日常生活。

二、设计原理该电子钟的各项功能均用单片机控制实现。

电子钟的控制部分是基于51单片机进行设计。

时钟的原理是通过一个晶振来控制芯片的工作频率,从而达到时钟的准确显示。

使用DS1302进行存储和控制时间。

定时器的原理是通过定时器中断进行实现,通过设定定时器的计数值即可实现定时器的功能。

闹钟的原理是通过设定一个“警报时间”来实现,当时间到达“警报时间”时,闹钟就会开始响铃。

日历的原理是通过读取DS1302中存储的日期信息进行实现。

温度显示的原理是通过使用DS18B20传感器实现对温度的检测。

三、硬件设计本设计的硬件主要由以下部分组成:显示部分、按键部分、计时器部分、DS1302时钟芯片、DS18B20温度传感器、单片机及其外设(如LCD12864液晶屏等)。

1.显示部分本设计采用LCD12864液晶屏进行显示。

2.按键部分本设计采用4个按键T1~T4,T1键用于切换时间制式;T2键用于设定时间和日期等;T3键用于设定闹钟;T4键用于定时器的设定。

3.计时器部分本设计采用计时器555进行固定时间的计时。

4. DS1302时钟芯片DS1302时钟芯片是一种用于实现实时时钟的芯片,本设计将其用于控制电子钟的时间。

5. DS18B20温度传感器DS18B20温度传感器是一种用于测量温度的芯片,本设计将其用于温度显示功能。

6. 单片机及其外设本设计采用AT89C52单片机进行控制,其外设包括LCD12864液晶屏、DS1302时钟芯片、DS18B20温度传感器等。

毕业设计190数字闹钟的电子设计

毕业设计190数字闹钟的电子设计

数字设计数字闹钟的电子设计班级: 04通信学号: 20040734046姓名:唐俊目录1、设计目的 (3)2、设计选题 (3)3、设计要求 (3)4、分析要求和总体设计 (3)5、详细设计过程及遇到的困难与解决方法 (4)6、顶层设计 (16)7、设计感想 (19)附:参考文献及程序 (20)一、设计目的:1. 通过设计,掌握电子设计的一般思路,学习电子设计的一般方法.2. 通过设计,学习掌握MAX-PLUS2的使用方法.二、设计选题通过小组成员讨论,决定做数字钟的设计.三、设计要求设计一个能进行时、分、秒计时的十二小时制或二十四小时制的数字钟,并具有定时与闹钟功能,能在设定的时间发出闹铃音,能非常方便地对小时、分钟和秒进行手动调节以校准时间,每逢整点,产生报时音报时。

四、分析要求和总体设计1.根据老师所给设计要求规纳有以下需求的功能:[1].计时功能:这是本数字钟设计的基本功能,每隔一秒钟计时一次,并在显示屏上显示当前时间.[2].闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出报警声.[3].校时功能:设置新的时间作为当前时间.[4].设置闹钟:设置闹钟时间.[5].整点报时:每逢整点则报时.2.根据需求分析,我们采用自顶向下的方法确定数字钟的总体实现思路如下:要实现以上的功能,经过分析我们设计了四个模块.分别是:计时模块,校时功能模块,闹钟功能模块和选择显示模块.根据自顶向下的设计方法确定数字钟的设计方案.为完全实现上面的4个功能,我们进一步向下进行功能划分,得到更详细的设计方案如下:3.各模块具体实现的功能及彼此之间的数据流流动方向:[1].计时模块:计时器的设计采用一般的计数器的设计方法,只是模60的秒计数器满60送进位输出,作为分计数器的CLK时钟信号.同理, 模60的分计数器满60送进位输出,作为时计数器的CLK时钟信号,这样就实现了电子时钟计数的雏形,以上是计时模块内部的数据流流向;由于要显示,所以必须还要有一个输出来表示现在的计数值,这个计数值应该送到选择显示模块进行显示,这是计时模块与外部的数据交换.[2]. 校时功能模块:校时电路用来完成对计时时间以及闹钟时间的修改与校正,修改后的时间应该要送到相应的计数模块作为新计数的起始值,所以要有输出端将修改后的数值送到相应的计数模块.[3]. 闹钟功能模块:比较当时的时间是否与闹钟设置的时间相等,如果相同则应该发出通知,告诉用户时间到了,有点类似于比较器.因此要能从计时模块获得当时时间,从校时模块获得设置的闹钟时间,要能将结果输出作为提示.[4]. 选择显示模块根据所在的状态,选择输出正在设置的新计数时间或新闹钟时间或当前计数时间.五、详细设计过程及遇到的困难与解决方法1.计时模块的设计[1].模60的计数器的设计:(a).实现方案:采用一般的计数器的设计方法,每来一个CLK时钟信号(T为1秒),计数值加1;如果计数到59,输出一个进位,表示一个周期.(b).实现过程中的问题及解决方案:通过以上分析,我做了初步的设计,在机子上输入草稿上的程序后,通过提示,发现以下的几个错误:对于第一个提示错误,我通过将SIGNAL中的BUFFER去掉即可,由于我输出的Q_OUT中定义的是BUFFER,所以为了省时间直接拷贝,粗心而导致的错误.因为这里不是在定义引脚,而只是内部的连接线定义,但BUFFER是相当于带输出缓冲器并可以回读的引脚,所以肯定是错误的.上面这个图是我改正了几个小错后才保存的,其它一些错误的提示就没有在上面.还有两个错误是:我在定义端口时,定义了输出EN,并且在PROCESS的敏感参数表中列出来了,但在后面却没有用到,所以提示出错.在PROCESS的敏感参数表中忘记写CLK信号,却写了一个输出引脚,这是致命性的错误.在输入过程中的手误,将QL=9写成了QL=’9’,提示出错,明显要么写成QL=”1001”.其它,逻辑上倒没有出错,因为这是参照EDA教材上187页的具有异步复位\同步置数功能的计数器改写的.仿真图如下,为了便于观察分析,我在这设的END TIME是13微秒.以上是我在单独设计模60计数器时写下的,但在顶层设计时,发现如果按上面这个设计结果,将无法将新设置的时间作为新的起始计数时间.经分析只要增加一个输入用来接受新的设置值,相应用一个OK信号控置便能实现.因此,增加了两个输入.出现这种情况的主要原因是概要设计没做到位.以下是修改后的仿真及相应模块的引脚图:分析可知60个脉冲要12微秒,为了观察的方便,我设置的END TIME=13,为了检验计数到59->0和以设置的新时间为起始计数的功能是否实现,因此做了以下的输入.从仿真结果可以方便的看出,功能得到了很好的实现.在OK信号未来之前,计数正常进行,到59则重新从00开始计数,如果OK信号一来,计数器对新设置的时间进行加载作为新起始计数值.此功能实现基本上秒和分的计时功能得到了成功设计.[2].模24计数器的设计:(a).实现方案:采用一般的计数器的设计方法,每来一个CLK时钟信号(T为1秒),计数值加1;如果计数到23,输出一个进位,表示一个周期.类似于模60计数器的设计方法.(b).实现过程中的问题及解决方案:对于COUNT 24的设计,我是仿照COUNT 60改写的,语法上倒没怎么出错,不过刚粘贴修改后忘设当前PROJECT,结果程序去运行COUNT60去了,而刚好我将文件移动了下位置,结果提示出错如下.设了PROJECT后运行,语法没错,只是逻辑上出错了,因为我没改,所以它到29才变,后修改逻辑执行,得仿真如下:(计数24约END TIME=4.8微秒.为了便于分析,这里设成了5.5微秒)分析程序的仿真结果如上图可知:计数是以24为周期,当计数到23时,如果再有进位,就计数从0重新开始,并给出一个进位信号,这个信号可以做为日期的CLK信号,从而实现显示日期的功能.同模60计数器的设计一样,从单个模块来看以上的仿真结果自认为是正确的.但在顶层设计时,发现如果按上面这个设计结果,将无法将新设置的时间作为新的起始计数时间.经分析只要增加一个输入用来接受新的设置值,相应用一个OK信号控制便能实现.因此,增加了两个输入.出现这种情况的主要原因是概要设计没做到位.以下是修改后的仿真及相应模块的引脚图:针对以上的问题是解决了,但后来仔细观察发现COUT从有了第一次进位后就保持了这个值,而在没有进位的时候也输出进位,带着这个问题,我分析出进位输出后,在低位进行加 1 时没有将进位清0.因此,找到相应程序部分改成了ELSE QL<=QL+1;COUT<='0';修改后进行仿真,仿真结果如下图,可知修改成功.从这里也让我知道,在做单个模块时的仿真图一定要仔细分析,像这个错误如果不是发现的早,到后来的整体顶层设计时,计数功能将会出现严重的错误,那时候再来找原因,比现在可难多了.这个系统还算比较小,如果更复杂的系统就更难找出错误了.因此,每个模块设计的功能检测不能马虎,也体会到了,不是说一个模块做出来了,就完全在顶层设计不会出错的,譬如这里如果不增加输入端口,在顶层设计时,既使语法没错,逻辑功能也不能实现.总之,各模块要完全实现相应功能,并且要在设计前想好框架和各模块之间的数据流流程,在这一点上感觉我的这次设计做的很不到位,因此造成很多次基本功能实现了,可是有些功能却无法实现,又得返回去重新设计,全部返工很耗时间,因为每设计一个模块要仿真等等.但是如果不仿真又不能完全肯定设计达到要求.所以最好的方法是详细设计做到位,引脚及要实现的功能写在详细设计说明书里面,设计时根据设计说明的要求来,每步实现每步的功能,这样只要详细设计做到位,返工的可能性就少多了.对于COUNT 24的设计,我是用COUNT 60来CTRL+C和CTRL+V得到的,因此COUNT 24出现了这个问题,返回去看COUNT 60的确也出现了相应问题,修改后仿真如下:2.校时功能模块(a).实现方案:对这个模块的功能实现,我原来想参照教材P314的实现方法—-----用状态机的形式来控制,虽然实现起来也就是套用状态机的一般格式,但是我觉得有个缺陷,那就是平时用的电子手表会有设这么多个按键吗?一般都是几个按键灵活用,设置时间时是先选定是设置秒\分\时的哪一个,然后一直按一个按键来实现时间的调整,这时的状态完全是一个计时器的功能,我就是以这个思路来设计的.个人觉得方法也较简单,因为主体功能实现基本是用60和24的计数器的方法.(b).实现过程中的问题及解决方案对于SET_TIME模块的设计,花费了不少功夫,也出了不少的错误,以下是一些主要的调试出错过程.根据自己在草稿纸上的实现语句,在机子上运行出错信息如上,代码出错是可以理解的,学C++到现在也不敢保证我写个几十行程序不会写错,不过这里一些错的确有点粗心.根据提示分别进行修改,过程如下:“OK”等没有定义,明显写了,但是提示却没有定义,肯定是定义时的语句问题,仔细观察发现PORT( );没写完整.输入的过程中,由于粗心将ART输错,根据提示得到了相应的解决.……修改相应提示错误后,编译得到:第二天调试了半天,结果与预料的完全背道而驰,连一个输出都没有,也就是说它无法达到IF中的条件,开始时我在想是不是变量名与系统有冲突,但想想如果是冲突应该是报语法错,而不是逻辑错,再分析发现原来我的秒IN_MIN/分IN_MIN/时IN_MIN等都设置是STD_LOGIC_VECTOR(3 DOWNTO 0)最大才2^3+2^2+2^1+2^0=15,改成8位的,结果就有输出了,但却并不是希望的结果,也就是逻辑上又错了,通过相应的改动,再进行调试结果如下,分析可知,这个运行结果是比较符合要求的,不过由于END TIME太小,看不到所有正确的运行结果,也就相当于没有软件工程中的测试文档,有时候的测试数据不是很理想.后来分析,设置60个计数大约是12us,想测试到59后是否会回到0,就得超过12微秒.因此,在这设END TIME=13.5分析可知时间设置SET_TIME模块得到了很好的实现,这相当于标志着我的设计基本差不多了.因为,时间设置一成功,后面我想设计的模块基本上在这个模块的基础上改动一些小地方就能实现.譬如说:日期的显示与设置,完全可以在此基础上进行,年份的设置的高两位即2007中的20可以用系统保存为缺省,年份的低两位/月份/日期就完全可以用SET_TIME的方法来设置,而对于闹钟就基本上一样的方法来实现设置闹钟时间了.由以上设计得到的相应模块的引脚图如下:3.选择显示模块(a).实现方案:这个模块的设计是最为简单的,因为它要实现的功能就是选择输出,在设计中有设置时间和显示时间不同的模块,显示相对应的时间,我的想法是:用一个输出控制信号来选择输出,由前面的设计中我们知道设置时间按钮是EN,如果EN有效就表示在设置时间.因此,我们完全可以就用EN来控制,如果EN有效,就显示输出正在设置的值,否则显示当前时间值.从分析就可以明确,只要一个IF语句基本上就能达到要求.在这里,我定义了一个输出用来告诉用户现在显示的是设置时间还是当前时间,即SET_LED接指示灯.(b).实现过程中的问题及解决方案这个模块设计中出现的一个错误是:由于CTRL+C的是SET_TIME模块,这样可以少输入一些常用的东西,但在修改时漏改ARCHITECTURE ART OF SELECT_OUT IS部分,结果显示如下图的提示错误. 修改程序后得以下的引却图:由以上的仿真结果可以看出:当EN 为0时(即非设置状态),输出DISP 是当前时钟QOUT 部分,当EN 为1时(即设置时间状态),输出DISP 是OK 部分,并且SET_LED 输出高电平,告诉用户现在显示的是设置时间.其中IN 部分是中间信号.因此由以上仿真结果可以看出功能基本实现,不过LED 显示有个时钟的延迟,如果是标准秒计时应该是有1秒延迟.这个做为一个提示信号倒不是太大的问题,上次更改程序还没解决.4.闹钟系统的设计(补充设计)由于在第一次设计中,对设计需求的忽视,忘记了对闹钟系统的设计,后来再增加这一功能给设计带来了一定的困难,通过分析(后面有详细说明),我选择了方案三结合方案一.其中是实现时,出现的一些错误及调试过程.由于引脚太多引起的错误,我在原来设计的SELECT中去掉了SET_LED指示灯,准备放到输入中直接接.更改后仿真结果如下(功能实现了,不过不是很精确):模块设计出来了,将这一个改动的模块直接代替原来设计好的顶层图中的模块,不过由于设计出来的引脚位置不一样,如果改线的连接,感觉有点麻烦,我选择改模块图如下:六、顶层设计根据要实现的功能,将设计的各模块连成电路图如下:它对应的仿真图如下:设计做到这,如果结果正确就基本上设计完成了,可是在仿真过程中,再来看老师的设计要求发现闹钟部分没有设计.因此得重新设计出新功能.对照着以上的顶层设计电路图.我的三个修改方案是:[1]. 在SET_TIME模块中,增加一个ALARM按键,用来控制设置闹钟,然后在SET_TIME 中增加IF语句,如果EN=0 AND ALARM=1,则进入设置闹钟的时间状态,可以再在SET_TIME中增设内部信号,用来保存设置的闹钟值,并将值送给OK去显示,当然,相应的SELECT_OUT的EN使能信号就应是EN与ALARM的或值.但此时还是必须在SELECT 中增加比较的语句,用来判断是否是到了闹钟时间,如果到了,则应该输出一个闹钟信号.思路个人觉得应该是对的.[2]. 直接增加一个闹钟处理模块,其实也完全可以就采用增加一个SET_TIME的方法,只要记住这里它是用来实现闹钟的,然后,在选择输出模块的基础上再增加一个比较器.还可以在这里增加一个倒计时功能.这种设计我用SET_TIME的方法尝试过并且设计结果显示是正确的,不过由于要修改以上的SELECT_OUT和SET_TIME太多的地方,因此我还是没有采用这种方法.不过程序及仿真部分放在了附录中,模块名是END_TIME.[3]. 我的想法是直接在SELECT模块中修改来实现,主要是因为顶层设计都出来了,如果修改太多有点麻烦.所以我想在SELECT中增加一个标志,用来标志EN键按下的次数,按下一次,则送来的信号当作时间设置信号;当再按下,则作为闹钟信号保存下来,因为这时OK没按下,就不会送作初始计时信号.这样周而复始,如果实在不行可以类[1]的方法增加一个按键来实现.同时,这个如果实现了,则可以省一些按键,如设置时间的SET_SEC,SET_MIN,SET_HOUR等就可以用一个键来实现,这样就和平常用的电子手表有点相接近了.同样,这样再增加年月的功能时,按键数也不会成为一个问题了.更改后最终的带有闹钟功能的电子钟总接线图如下所示:功能说明:RESECT:用来将设置时间清零,不过后来发现其实这个脚可有可无,功能不大.CLK:标准时钟送入.EN:用来控制时间的设置,为’1’时,设置新时间,且”通知”SELECT_OUT现在输出下在设置的时间.ALARM_EN:用来控制闹钟时间的设置,不过由于只有一组显示器件,所以为’1’时,如果EN为’0’,才进行闹钟的设置.OK:用来控制设置的时间是否作为新的时间,如果有效,则计数模块进行加载新时间.SET_...组:用来设置新时间等的值.基本实现思路:如果EN和ALARM_EN无效,则显示当前正常计数时间.其中秒COUNT60的进位COUT每60计数变为高,并作为分计数的时钟信号,同理分做时的时钟信号,时做日的时钟信号(这里没有设计日期的,不过思路我在上面已经分析过,方法类似于电子钟.闰年等的算法在C++,VB,JAVA,汇编中很常见,只需要更改成VHDL语言即可, 实现起来不是难事,不过由于时间问题,在这就不设计了.)QOUT组即当时的时间.对于闹钟部分和选择输出部分在模块分析时,已经讲的很清楚,在这就不在赘述了.七、设计感想在每步的设计中已经将感想穿插在里面了。

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

电子闹钟设计学生:XXX 指导老师:XXX内容摘要:此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。

系统功能要求电子时钟一运行就从12点00分00秒开始计时,并在数码管上显示时、分、秒当前值。

基本工作原理:AT89C51利用定时器每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;7SEG-MPX6-CA数码管动态显示时、分、秒的当前值。

本课题要求实现的功能比较简单。

此系统键的输入是通过独立式键盘来完成的,编程容易易懂,结构简单,实现起来方便。

由P3.2、P3.3、P3.4作为控制端,构成独立式按键接口方式。

百分之一秒的控制由AT89C51的定时器T0完成;在闹钟方面,通过周期检测闹钟按键和按键标识位来控制开启闹铃服务程序。

在闹铃设置及正常时间设置时为避免时间停止,所以才用定时器计时。

我设置的闹铃是用脉冲的形式驱动扬声器。

关键词:扬声器AT89C51 定时器Electronic alarm clock designAbstract: The system clock circuit design is the internal way, namely using chip inside of the oscillating circuit. System function requirements electronic clock from 12 points a run in points at timing starts seconds, and in the digital tube displayed on the present value, minutes and seconds. Basic working principle: AT89C51 use timer each one percent to one percent seconds of registers second content plus one, and in turn, minutes and hours of seconds the contents of a register with a; 7 SEG-MPX6-CA digital tube dynamic shows, the current value of the minutes and seconds. This topic request function of the realization of the quite simple. The system of the key input is through the independent type keyboard to complete programming easy to understand, the structure is simple, easy to realize. By P3.2, P3.3, P3.4 as control terminals, constitute independent type button interface way. One percent of the second timer of by AT89C51 prearcing control completion; In the alarm clock, through the cycle detection alarm clock button and buttons mark a to control open alarm service program. In the alarm set and the normal time set to avoid time to stop, so only use timer timing. I set the alarm is to use the form of pulse drive the speaker.Keywords: reproducer AT89C51 time r目录前言 (1)1 概述 (1)1.1 应用知识简介 (1)1.1.1 51单片机 (1)1.1.2 汇编语言 (1)2 设计基本原理简介 (2)2.1 CPU的分时复用 (2)2.2 检测开关时需要注意的问题 (2)2.4 设计要求及说明 (2)2.4.1 电子数字钟实现的主要功能 (2)2.4.2 其他设计说明 (3)2.5 整体设计方案及流程 (3)2.5.1 电路设计 (3)2.5.2 系统软件总流程设计 (4)2.5.3 主程序流程图 (4)2.5.4 显示电路 (5)2.5.5 按键控制电路 (5)3 程序显示状态 (6)3.1 正常显示状态 (6)3.2 时钟调整状态 (6)4 调试过程及结果分析总结 (7)5 结束语 (8)附录 (9)参考文献 (13)电子闹钟设计前言电子闹钟在科学技术高度发展的今天,千家万户都少不了它,所以很多家庭个人都需要有一个电子闹钟,为人们提供报时方便,但普通电子闹钟不够方便实用。

这个设计给出了一种以51芯片的电子闹钟,从而给人们带来更为方便的工作与生活。

现代的快节奏生活给人们的精神上带来了很大压力。

如何排解或缓解这些压力已经成为很多人关心的问题。

单片机电子闹钟是具发前闹钟创新性的系统,它代表了时代的发展趋势。

本次设计的51电子闹钟,能随意设定走时起始时间。

能指示秒节奏,即秒指示采用交直流供电电源。

与石英钟不同的是,电子钟一般采用数码管等显示介质,因而必须以交流供电为主,以直流电源为后备辅助电源,并能自动切换。

该设计主要包括:按键、显示程序单元部分,AT89S51单片机芯片、74HC245驱动LED显示电路,集成电路74HC245和LM386各1个,设计的51电子闹钟,该闹钟可由使用者自己设定一个时间,若想设置闹铃,应先按下复位按键,然后长时间按下"设置"按键,然后变为“00-00-00”,此时进入闹铃设置状态,设置方法跟上面一样,闹铃设置完后,下一步要设置当前时间,调整方法跳到第一步。

这样设置好后,它就能按照主人的意思,定时的把你闹醒啦!1 概述1.1 应用知识简介1.1.1 51单片机单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。

51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。

在今后很长一段时间内 51 系列单片机仍将占据嵌入式系统产品的中低端市场。

1.1.2 汇编语言汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。

汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。

但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。

汇编语言可以与高级语言配合使用,应用十分广泛。

2 设计基本原理简介数字钟的设计首先要保证其走时尽可能准确,其次再根据人们日常的使用习惯来设定其附加功能。

在设计中利用单片机定时计数器来完成走时并用两组输出口控制数码管来显示;通过编程向某一输出口输出方波实现报时及闹铃利用输入端口外接各种开关来完成对走时及显示的控制(如预置时间等)。

2.1 CPU的分时复用单片机只有一个CPU,因此在一个时间内只能执行一条语句,要使单片机同时控制多个外部元。

件(比如扬声器和数码管)就必须对单片机的CPU进行分时复用,让单片机在一小段时间内连续交替执行控制多个器件的语句,从表面上看,单片机便用一个CPU控制了多个元件。

本次课程设计中对整点报时和闹铃功能的实现便用到了这个概念。

2.2 检测开关时需要注意的问题对于用各种开关控制程序执行状态的程序设计中,需要注意实时地进行开关的检测,以确保一旦有开关动作,程序状态立即随之改变。

此外,在用多个开关控制不同执行状态时,应注意设置开关检测的优先级以防止多个开关同时按下时出现错误。

2.3 系统资源分配与使用单片机有许多资源是有限的不能滥用,比如定时计数器T,外部中断等,在设计一个多模块程序时,要注意先做一个整体规划,把稀缺资源用在最需要用的地方。

此外在有多个模块时,要注意模块间的数据传递,比如累加器A和进位标志C,在使用时要注意不能让前一个模块的数据对下一个模块产生不希望有的影响。

在模块间的数据传递比较多时最好用固定的内部数据存储器,以避免冲突发生错误。

2.4 设计要求及说明基于单片机电路,借鉴生活中常见的电子钟的功能,结合课本的要求使用汇编语言设计一个简单的电子钟系统。

2.4.1 电子数字钟实现的主要功能★实现正常走时(秒→分→时进位)。

★能够预置时间和日期。

★具有闹铃及设定闹铃时间功能。

★走时可以调节。

★能够区分是否开启闹钟功能。

2.4.2 其他设计说明★优先级:预置>闹铃>报时>正常显示,即预置状态下闹铃、报时功能都无效。

★预置功能通过主程序扫描实现。

★时间改变通过定时实现。

★用数码管(K0,K1)控制显示状态:00:时间,01:闹铃时间。

★闹铃每次响一分钟。

★闹铃使能由拨码开关1控制并实时显示。

2.5 整体设计方案及流程2.5.1 电路设计系统电路根据系统功能可知,需要六个数码管,一个扬声器,三个按键,由此结合单片机课程学习中对实验面板的了解,做出如下电路:图2.5.1-1 电路图如图,晶振频率12MHz,P0口的输出作为控制数码管的段控信号,数码管采用共阳接法(图中未标示);P1口作为数码管的位控信号输出端;扬声器由P3.0口控制,p3.2控制闹钟设置,p3.3控制小时设置,p3.4控制分钟设置。

2.5.2 系统软件总流程设计根据系统要求,设计出系统软件总流程图如下。

图2.5.2-2 系统软件流程图2.5.3 主程序流程图开始清显示缓冲区初始化定时计数器显示初值000000开定时器显示当前时钟值开始图2.5.3-3 程序流程图2.5.4 显示电路采用动态扫描方式,从左到右进行,显示缓冲区首地址为79H。

因此各位显示器都扫过一遍之后,就返回监控程序。

经过一段时间间隔后,再调用显示扫描程序。

通过这种反复调用来实现LED显示器的动态扫描。

程序图如下。

图 2.5.4-4 时钟程序流程图2.5.5 按键控制电路此系统键的输入是通过独立式键盘来完成的,编程容易易懂,结构简单,实现起来方便。

如图由P3.0、 P3.2、P3.3、P3.4作为输入端,构成独立式按键接口方式。

相关文档
最新文档