设计一个数字闹钟

合集下载

基于vhdl数字闹钟设计说明书

基于vhdl数字闹钟设计说明书

毕业设计(论文)论文题目:基于VHDL的数字闹钟设计所属系部:指导老师:职称:学生姓名:班级、学号:专业:毕业设计(论文)任务书题目:基于VHDL的数字闹钟设计任务与要求:设计一个带闹钟功能的24小时计时器。

完成功能:1.计时功能:每隔1分钟计时1次,并在显示屏上显示当前时间。

2.闹钟功能:如果当前时间与设置的闹钟时间相同,扬声器发出蜂鸣声。

时间:年月日至年月日共周所属系部:学生姓名:学号:专业:指导单位或教研室:指导教师:职称:毕业设计(论文)进度计划表本表作评定学生平时成绩的依据之一。

基于VHDL的数字闹钟设计【摘要】随着EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益突出。

EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言VHDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑优化和仿真测试,直至实现既定的电子线路系统功能。

本文介绍了基于VHDL硬件描述语言设计的多功能数字闹钟的思路和技巧。

在Quartus 11开发环境中编译和仿真了所设计的程序,并逐一调试验证程序的运行状况。

仿真和验证的结果表明,该设计方法切实可行,该数字闹钟可以实现调时定时闹钟功能具有一定的实际应用性。

关键词:数字闹钟 FPGA VHDL Quartus IIAbstract: With the EDA technology development and expansion of application fields and in-depth, EDA technology in the electronic information, communication, automatic control and computer applications of growing importance. EDA technology is dependent on a powerful computer, the software platform in the EDA tools for the hardware description language VHDL description for the system logic means completed design documents, automatically complete the test logic optimization and simulation, electronic circuit set up to achieve the system functionality. This article describes the VHDL hardware description language based on multi-function digital alarm clock design ideas and techniques. In the Quartus 11 compiler and development environment designed to simulate the process, and one by one to debug verification process operating conditions. Simulation and verification results show that the design method is feasible, digital alarm clock can adjust the time when the alarm clock to play music with some practical application.Key words: Alarm Clock FPGA VHDL Quartus II目录1 选题背景 (6)1.1选题研究内容 (6)1.2课题研究功能课题研究功能 (6)1.3课题相关技术应用 (6)2 FPGA 简介 (8)2.1FPGA概述 (8)2.2FPGA编程原理 (8)2.3FPGA设计流程 (9)3 总体设计思想 (10)3.1基本原理 (10)3.2设计框图 (10)4 设计步骤和调试过程 (11)4.1总体设计电路 (11)4.2模块设计和相应模块程序 (12)4.3仿真及仿真结果分析 (14)4.4实验调试结果 (15)结束语 (16)文献 (17)1 选题背景1.1 选题研究内容设计一个 24 小时的闹钟,该闹钟由显示屏、数字键、TIME 键、ALARM 键、扬声器组成。

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. 概述
本课程设计旨在通过设计数字电子闹钟的过程,学生将了解数字电子闹钟的工作原理、功能特点以及设计流程和方法。

2. 前置知识
本课程设计需要学生对模拟电路、数字电路、单片机原理有一定的了解和掌握。

3. 设计目标
通过本课程设计,学生应该能够:
1) 理解数字电子闹钟的工作原理和功能特点;
2) 掌握数字电子闹钟的设计流程,包括电路设计、程序设计和PCB设计;
3) 独立完成数字电子闹钟的设计和调试,
4) 培养学生的创新意识和实践能力。

4. 教学内容
(1)数字电子闹钟的工作原理和功能特点;
(2)闹钟电路设计:包括时钟电路、显示电路、报警电路;
(3)单片机程序设计:包括时钟设置程序、闹钟设置程序、报警程序和显示程序;(4) PCB设计和制作;
(5)调试和测试。

5. 教学方法
本课程设计采用“理论引导、实例演示、实践操作”相结合的教学方法。

6. 实验器材和工具材料:数字电子闹钟电路板、电路模型器件、单片机、直流电源、万用表、烙铁、PCB软件、调试工具等。

7. 考核方式
学生应独立完成数字电子闹钟的设计和调试,并提交相关设计和调试文档,包括电路图、程序、PCB布局图、效果演示和测试报告等。

按照设计文档的完成情况和效果进行考核和评分。

以上为数字电子闹钟课程设计,希望可以帮到你。

EDA设计 数字钟

EDA设计 数字钟

摘要利用MAX+PLUSⅡ软件,设计一个能进行时、分、秒计时的24制多功能数字钟,使其具有定时与闹钟功能,且能在设定的时间发出闹铃音,能非常方便地对时、分、秒进行手动调节以校准时间,每逢整点,产生报时音效,并在实验板上成功下载,验证后满足要求。

关键词:EDA ; MAX+PLUS2 ;数字钟;0 引言随着科学技术的发展,现代电子设计技术已进入一个全新的阶段,传统的电子设计方法、工具和器件在更大的程度上被EDA所取代。

在EDA技术中,最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术,该技术的出现,使电子系统设计发生了质的变化,设计速度快、体积小、重量轻、功耗小的集成电路已成为趋势。

本文利用EDA 技术,选用ALTERA公司的CPLD器件EPF10K10LC84-4和软件MAX+PLUS2,设计了一个多功能数字钟,提高了系统的整体性能和可靠性,并通过编译、仿真、下载,经验证后已满足要求。

1 多功能数字钟设计任务1.1 数字钟设计要求(1)、设计一个能显示1/10秒、秒、分、时的12小时数字钟。

(2)、熟练掌握各种计数器的使用。

(3)、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。

(4)、能用低位的进位输出构成高位的计数脉冲。

1.2 设计思路此设计可分为主控电路、计数器模块和扫描显示三大模块。

1.2.1 主控电路模块主控电路状态用表格显示,如下表所列:模式选择秒、时、分、计数器脉冲输出状态备注Reset Reset1 A B Turn LD-h LD-m LD-alert0 X X X X X 0 0 0 系统复位1 X 0 0 X CLK 0 0 0 系统计时1 X 0 1 0 Change=分计数器加1 0 1 0手动1 X 0 1 1 Change=时计数器加1 1 0 0校时1 1 1 0 0 Change=分计数器加1 0 1 1 设置闹钟1 1 1 0 1 Change=时计数器加11 0 11 0 X X X X 0 0 0 关闭闹钟1.2.2 计数器模块计数器模块中,分钟和秒用带进位位的60进制功能模块,小时用不带进位位的24进制功能模块(如果考虑到日期的问题,在24进制模块加进位输出即可实现)。

数电课设--数字钟的设计

数电课设--数字钟的设计

数电课设--数字钟的设计摘要:该设计主要是设计一种基于数字电路实现的数字钟,用于显示当前时间,同时设计一个简单的时间调整系统来实现对数字钟的时间调整。

本设计实现了数字钟的时间显示、时间调整等功能,具有简单、实用等优点。

关键词:数字钟、计数器、时间调整系统一、引言数字钟是一种时钟显示设备,它可以在显示面板上显示当前时间,数字钟的普及改变了人们观念上的关于时间知识的变革。

本课设就是要通过设计一个数字钟,来综合应用我们所学的数字电路知识,通过数字电路的设计实现时间的显示及调整。

二、数字钟的设计原理数字钟的设计离不开计数器和定时器,计数器的作用是进行计数操作,进而对时间进行处理,定时器的作用是用来控制计数器的计数和复位,使其能够按照固定的时间序列不断进行计数。

数字钟的显示部分采用数码显示管显示当前时间,数码显示管显示的时间单位有小时、分钟和秒。

三、数字钟的设计方案数字钟的设计方案可以分为两部分,一部分是计数器及定时器的设计,另一部分是时间调整系统的设计。

下面分别进行介绍。

(一)计数器及定时器的设计计数器采用7474型D触发器进行设计,二进制计数器采用模8计数模式,带有异步复位功能。

其中,D触发器的Vcc接+5V电源,GND接地,CLK接定时器的输出,D接Q的输出,Q接下一级触发器D端。

计数器采用8253/8254型定时器,应该根据标准时钟的频率和预置值计算计数器的频率和复位时间。

时间调整功能通常是通过8255接口芯片实现。

(二)时间调整系统的设计时间调整系统通过单片机实现,主要实现以下功能:上下键切换修改时间单位、按键快速调整修改时间数字、按键高频稳定范围设置、判断闹钟是否开启、日历选择等。

四、数字钟的实现数字钟的实现可以参考实验教材进行,实现前需要明确以下几点:1. 根据实际需求确定数字钟的参数:例如显示的时间格式,以及是否需要设置闹钟等。

2. 设计好数字钟的原理图,并选择适合的元件进行接线。

3. 进行电路调试和测试,对电路进行稳定性测试等。

多功能数字钟——校时闹钟

多功能数字钟——校时闹钟

电子电路综合实验陈述之答禄夫天创作——多功能数字钟设计目录设计理念2设计要求3设计目的3设计要求4总体设计概要4振荡器电路4输出波形仿真图如图所示5分频器电路5时间计时单元的设计5译码与显示电路的设计6校时电路的设计6方案一:7方案二:8定时控制电路的设计8·电子系统中罕见实际问题的分析9面包板和芯片的测试9时间计数电路的连接与测试9校正电路9主要芯片介绍10主体电路的装调10时钟结果仿真12面包板的使用及注意事项12实验用到的器件13设计理念20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

数字钟已成为人们日常生活中:必不成少的必须品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场合,给人们的生活、学习、工作、娱乐带来极大的方便。

由于数字集成电路技术的发展和采取了先进的石英技术,使数字钟具有走时准确、性能稳定、集成电路有体积小、功耗小、功能多、携带方便等优点,,因此在许多电子设备中被广泛使用。

电子钟是人们日常生活中经常使用的计时工具,而数字式电子钟又有其体积小、重量轻、走时准确、结构简单、耗电量少等优点而在生活中被广泛应用,因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间及星期的显示功能。

本次设计以数字电子为主,分别对1S时钟信号源、秒计时显示、分计时显示、小时计时显示、整点报时及校时电路进行设计,然后将它们组合,来完成时、分、秒的显示而且有整点报时和走时校准的功能。

并通过本次设计加深对数字电子技术的理解以及更熟练使用计数器、触发器和各种逻辑门电路的能力。

电路主要使用集成计数器、译码集成电路、LED数码管及各种门电路和基本的触发器等,电路使用5号电池共电,很适合在日常生活中使用。

设计要求本课题是设计一个多功能数字钟,以数字形式显示时,分,秒的时间,要求有手动校时分秒的基本功能,以及定时控制,仿广播电台正点报时,自动整点报时或触摸报整点时数的扩展功能。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

多功能数字闹钟电路设计实验报告

多功能数字闹钟电路设计实验报告

多功能数字闹钟电路设计实验报告
实验目的:设计一个多功能数字闹钟电路,能够显示时间、设定并响起闹铃。

实验原理:本实验采用数字集成电路实现数字显示和闹铃功能。

数字显示部分采用BCD到七段数码管解码器74LS47和共阴
七段数码管进行实现,闹铃部分采用555定时器集成电路作为发生器,通过驱动蜂鸣器发出声音。

实验仪器:多功能数字闹钟电路实验箱、数字集成电路
74LS47、七段数码管、555定时器集成电路、蜂鸣器、电源、
示波器等。

实验步骤:
1. 按照电路图连接电路。

将74LS47连接到七段数码管,将
555定时器连接到蜂鸣器和电路中相应的电源和地线。

2. 上电并调节电路供电电压。

3. 设定时间。

通过拨动开关和按钮进行时间的设定。

4. 切换闹钟状态。

通过开关切换闹钟的开启和关闭状态。

5. 监测闹钟时间。

借助示波器调整闹钟时间的精度。

6. 监测闹钟声音。

确认蜂鸣器发出的声音符合要求。

实验结果:实验中,我们成功设计并调试出了一个多功能数字闹钟电路。

通过拨动开关和按钮可以设定时间,并且可以通过切换开关来设置闹钟的开启和关闭状态。

实验中监测到的闹钟时间和声音都符合预期要求。

结论:通过本次实验,我们成功设计了一个多功能数字闹钟电路,实现了时间显示和闹铃功能。

实验结果显示该电路的性能良好,具有实用价值。

在实验中我们也学到了关于数字集成电路和定时器集成电路的使用和调试方法。

毕业设计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组即当时的时间.对于闹钟部分和选择输出部分在模块分析时,已经讲的很清楚,在这就不在赘述了.七、设计感想在每步的设计中已经将感想穿插在里面了。

74ls161单片机30进制数数字钟设计过程

74ls161单片机30进制数数字钟设计过程

74ls161单片机30进制数数字钟设计过程设计一个74LS161单片机30进制数的数字钟,可以按照以下步骤进行:
1.确定时钟的时间范围和显示方式。

例如,设定时间范围为00:00到29:59,并使用四个数码管显示小时和分钟。

2.确定数码管的接线方式。

74LS161是一个4位二进制计数器,输出
是四个二进制信号。

将每个输出信号连接到对应数码管的相应段。

3.编写单片机程序。

使用74LS161作为时钟源,每秒产生一个脉冲。

程序需实现以下功能:
-将74LS161的输出转换为30进制的数值,并将其转换为BCD码或者
直接连接到数码管显示。

-根据当前的数值更新数码管的显示。

4.连接外部电路和电源。

将74LS161和四位数码管连接到单片机的引脚,并连接适当的电源。

确保电路的接地和电源线连接正确。

5.编译程序,并将其烧录到单片机中。

使用适当的开发工具和编译器,将编写好的程序烧录到单片机中。

6.测试和调试。

连接电源后,观察数码管的显示是否正确。

调试程序,确保时钟的计时和显示功能正常。

以上是一个简单的设计过程,可以根据具体需求进行适当的修改和调整。

还可以添加其他功能,如闹钟和定时器等。

利用单片机的定时器设计一个数字时钟

利用单片机的定时器设计一个数字时钟

利用单片机的定时器设计一个数字时钟数字时钟是我们日常生活中常见的计时工具,可以准确地显示当前的时间。

而单片机的定时器则可以提供精准的定时功能,因此可以利用单片机的定时器来设计一个数字时钟。

本文将介绍如何使用单片机的定时器来设计一个基于数字显示的时钟,并提供基本的代码实现。

一、时钟电路设计利用单片机设计一个数字时钟,首先需要设计一个合适的时钟电路。

时钟电路一般由电源电路、晶振电路、单片机复位电路和显示电路组成。

1. 电源电路:为电路提供工作所需的电源电压,一般使用稳压电源芯片进行稳定的供电。

2. 晶振电路:利用晶振来提供一个稳定的时钟信号,常用的晶振频率有11.0592MHz、12MHz等。

3. 单片机复位电路:用于保证单片机在上电或复位时能够正确地初始化,一般使用降低复位电平的电路。

4. 显示电路:用于将单片机输出的数字信号转换成七段数码管可以识别的信号,一般使用BCD码和译码器进行实现。

二、单片机定时器的应用单片机的定时器具有精准的定时功能,可以帮助实现时钟的计时功能。

单片机的定时器一般分为定时器0和定时器1,根据具体的应用需求选择使用。

在设计数字时钟时,可以将定时器0配置成定时器模式,设置一个适当的定时时间。

当定时器0计时达到设定时间时,会触发一个中断信号,通过中断处理程序可以实现时钟的计时功能。

以下是一个基于单片机的定时器的伪代码示例:```void Timer0_Init(){// 设置定时器0为工作在定时器模式下// 设置计时时间// 开启定时器0中断}// 定时器0中断处理程序void Timer0_Interrupt_Handler(){// 更新时钟显示}void main(){Timer0_Init();while(1){// 主循环}}```在上述伪代码中,Timer0_Init()函数用于初始化定时器0的相关设置,包括工作模式和计时时间等。

Timer0_Interrupt_Handler()函数是定时器0的中断处理程序,用于处理定时器0计时到达设定时间时的操作,例如更新时钟显示。

基于C51单片机的数字时钟课程设计(C语言,带闹钟).

基于C51单片机的数字时钟课程设计(C语言,带闹钟).

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录一、数字电子钟设计任务、功能要求说明及方案介绍 (4)1.1 设计课题设计任务 (4)1.2 设计课题的功能要求说明 (4)1.3 设计课的设计总体方案介绍及工作原理说明 (4)二、设计课题的硬件系统的设计 (5)2.1硬件系统各模块功能简要介绍 (5)2.1.1 AT89C52简介 (5)2.1.2 按键电路 (6)三、设计课题的软件系统的设计 (6)3.1 使用单片机资源的情况 (6)3.2 软件系统个模块功能简要介绍 (7)3.3 软件系统程序流程框图 (7)3.4 软件系统程序清单 (7)四、设计课题的设计结论、仿真结果、误差分析 (9)4.1 设计结论及使用说明 (9)4.2 仿真结果 (10)结束语 (12)参考文献 (12)附录 (13)附录A:程序清单 (13)一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

基于AVR单片机的电子闹钟设计

基于AVR单片机的电子闹钟设计

基于AVR单片机的数字电子闹钟设计此处按务老师要求填写即可目录基于A VR单片机的 (1)数字电子闹钟设计 (1)一系统构造 (4)方案论证 (4)一.1单片机的的选择: (4)一.2电源模块 (4)一.3时钟信号源; (5)一.4显示器 (5)一.5报警 (5)二硬件电路: (5)二.1电源电路设计 (5)二.2按键输入模块 (6)二.3控制器最小系统: (7)二.4显示模块: (8)二.5报警电路设置: (9)三程序设计框图: (10)三.1主流程图: (10)三.2按键设置程序: (11)四液晶屏驱动: (11)四.1模块说明: (11)四.2通信时序图 (12)四.3字符显示坐标 (13)五A VR定时器CTC模式介绍 (13)六系统调试 (14)六.1可以显示时间 (15)六.2调节时间 (16)六.3系统整体运行正常。

(17)七附录 (18)七.1电路总图 (18)七.2全部程序 (18)摘要本文主要讲述基于A VR单片机的数字电子闹钟,能够显示年月日时分秒,具备闰年平年补偿及闹铃功能。

时钟信号源采用单片机内部定时器中断实现,该系统原理简单,成本低廉,操作简单。

控制核心为Atmel公司的A VR高性能单片机,程序基于C语言开发,可读性强。

显示核心为字符液晶LCD1602,显示效果稳定。

输入模块为6个独立式按键,可操作性强,便于使用。

关键词:A VR单片机、LCD1602、数字电子闹钟AbstractThis paper mainly described the digital electronic based on AVR microcontroller able to display when the alarm clock, date of February alone, have a leap year provides compensation and alarm function. The clock signal source adopts singlechip internal timer interrupt achieve, this system theory is simple, low cost, simple operation. Atmel company control core for the AVR high-performance single chip microcomputer based on C language, program development, readable. Show LCD1602 core to characters LCD display effect, stable. Input module for six independent type key, the maneuverability is strong, easy to use.Keywords: AVR microcontroller, LCD1602, digital electronic alarm clock一系统构造根据系统设计要求,本设计由电源模、用户设置键盘、报警模块、显示模块组成,形成实时时钟系统。

多功能语音报时数字钟的设计 (4)

多功能语音报时数字钟的设计 (4)

多功能语音报时数字钟的设计摘要:自进入21世纪以来,电子产业飞速发展,各种新兴的电子产品布满了电子专柜,电子产品几乎走进了家家户户,走进了社会的各个行业,有力的推动了社会生产力的发展和电子信息化、电子智能化的提高。

数字钟也在发生着各种各样的变化,由体积较大、功能少、运行不精确的机械钟变为在液晶显示屏上显示数字的数字钟,再到多种功能于一钟的语音报时数字钟等等。

本设计是实现一款可正常显示当前时间,测量当前温度,带有语音报时的多功能数字钟。

本设计是采用AT89C51单片机控制的多功能语音报时数钟,可以显示年、月、日、时、分、秒、星期、温度。

具有年、月、日、时、分校准功能,自动提取温度并显示功能,语音报时功能,调整时间按下相应键会发出嘟嘟提示声功能。

采用DS1302时钟芯片进行时钟控制,DS18B20传感器实现温度采集功能,LCD12864作为液晶显示模块,ISD1420语音芯片实现语音播报时间功能。

钟表的多功能化给我们生活带来了很大的改善,比如定时报警、备忘提醒、电气设备的自动断电、自动开启关闭等功能。

数字时钟对世界有着重要的影响,对工业、电子业、商业有着重要的推进作用,使用简单方便,成本低,显示直观,在广阔的市场具有非常很好的前景市场。

数字时钟之所以这么受广大的欢迎,它使用简单直观,数字时钟在显示方面能清楚的在LED显示屏上显示出年、月、日、周日、时、分、秒,还有调准时间的准确度的功能,并且能够显示当日的温度情况。

但目前市场上的数字时钟还比较机械性和传统性,在实际运用过程中不够灵活。

而随着社会的不断发展,人们对数字时钟的控制要求越来越高,数字时钟应用到很多方面,在报警和闹铃的方面都应用到数字时钟准确的计时功能,还有定时器,微波炉,自动通电器,数字时钟可以成为自己生活中的小助手,可以轻松掌控时间,又能了解天气及温度的变化。

语音报时多功能数字时钟改善了人们的生活质量,为人们的生活、工作带来极大的便利。

关键词:数字钟单片机温度液晶显示语音报时一、绪论时间对于我们每个人都很重要,包括老人和小孩,通过眼睛看时间,当然可以看到当前时间,但是对于视力不好老人和不认识钟表的小孩来说,语音报时数字钟就给他们带来了很大的帮助,只需要按下相应键就可以自动播报获得时间。

Labview的数字钟设计

Labview的数字钟设计

基于Labview的数字钟设计1 设计要求使用Labview设计一个数字时钟,能够在前面板显示系统时间,并支持闹钟功能。

2 设计流程2.1 界面设计本课题要求设计一个电子时钟。

通过获取电脑的系统时间,并分离出数字后,通过布尔类型的方形指示灯显示。

数字的显示主要是由7个方形指示灯组成,原理与7段数码管相似。

为实现闹钟功能,提供布尔类型闹钟设置开关及闹钟时分设置按钮,并通过闹钟开关控制闹钟的开启与关闭。

用圆形指示灯指示闹钟状态。

界面如下:2.2 设计思路为保证数字钟的精度,时间的获取可直接获取系统时间,并通过相应的系统函数转换为年月日,时分秒等信息。

由于转换后的时间信息为数字,为直观地通过布尔类型显示,需要进行译码操作,译码操作的完成可通过独立的子VI完成,方便主程序调用。

为简化程序框图,将7个布尔类型指示灯打包成簇。

为实现闹钟功能,需要有闹钟时间设置和闹钟提醒模块。

为了直观地模仿数字钟的时间设置,在程序中不提供数字输入的相关控件,而是通过布尔类型的按钮完成。

当闹钟设置开关处于关闭状态时,时、分对应的“数码管”显示系统当前时间,当闹钟设置开关处于开启状态时,时、分对应的“数码管”显示设置的闹钟时间,此时按下时、分设置按钮,相应的闹钟时间可以被调整。

闹钟设置模块也通过独立的子VI完成。

程序运行期间会比较系统时间和设置的闹钟时间,当闹钟开关处于开启状态且闹钟时间到来时,指示灯会亮起,并且会发出警报声。

如不关闭闹钟开关,提醒时间会持续两分钟。

2.3 软件设计2.3.1 系统时间获取和解除捆绑获取系统时间,并分离出时分秒、年月日等信息。

从十进制数字分离出十位和个位数字,可通过简单的除法运算完成。

2.3.2译码子VI对译码子VI模块,设计时使其输入为一个数字,输出为一个由七个布尔类型方形指示灯组成的簇。

设计时使用条件结构,依据输入的数字点亮相应的指示灯,实现模拟数码管的效果。

2.3.3闹钟设置子VI对闹钟设置子VI,其输入应包括以下内容,即系统时间,闹钟设置开关,时间调整按钮,以及60或24进制的限制数字,用于判断是小时还是分钟。

多功能数字钟设计实验报告

多功能数字钟设计实验报告

多功能数字钟设计实验报告多功能数字钟设计实验报告一、引言数字钟是一种常见的时间显示设备,其简洁明了的显示方式受到了广泛的欢迎。

然而,随着科技的不断发展,人们对于数字钟的功能要求也越来越高。

本实验旨在设计一款多功能数字钟,以满足人们对于时间显示设备的更多需求。

二、设计原理1. 时间显示:数字钟应能准确地显示当前的时间,包括小时、分钟和秒钟。

为了实现精确的时间显示,我们采用了基于晶体振荡器的时钟电路,并结合数码管显示技术,使得时间能够以数字形式直观地呈现。

2. 日期显示:除了时间显示外,数字钟还应具备日期显示的功能。

我们通过添加一个实时时钟模块,可以获取当前的日期信息,并通过数码管显示出来。

3. 闹钟功能:为了提醒用户重要的时间节点,我们在数字钟中加入了闹钟功能。

用户可以设置闹钟的时间,并在到达设定时间时,数字钟会发出声音或震动来提醒用户。

4. 温湿度显示:为了更好地满足用户的需求,我们还在数字钟中添加了温湿度显示功能。

通过接入温湿度传感器,数字钟可以实时监测当前的温度和湿度,并将其显示在数码管上。

5. 其他功能:除了以上功能外,我们还可以根据用户需求进行扩展,如倒计时功能、闪烁效果等。

三、实验步骤1. 硬件设计:根据设计原理,我们需要选择合适的元器件进行电路的搭建,包括晶体振荡器、数码管、实时时钟模块、温湿度传感器等。

2. 电路连接:根据电路原理图,将各个元器件按照正确的连接方式进行连接,确保电路的正常工作。

3. 程序编写:通过编写合适的程序代码,实现数字钟的各项功能。

包括时间显示、日期显示、闹钟功能、温湿度显示等。

4. 调试测试:在完成硬件连接和程序编写后,我们需要对数字钟进行调试测试,确保各项功能的正常运行。

可以通过模拟不同的时间、设置不同的闹钟时间等来测试数字钟的稳定性和准确性。

5. 优化改进:根据实际测试结果,我们可以对数字钟进行优化改进,提高其性能和稳定性。

例如,优化显示效果、增加功能扩展等。

多功能数字钟电路设计

多功能数字钟电路设计

多功能数字钟电路设计
多功能数字钟电路可以用来显示时间、日期、闹钟和定时器等功能。

下面是一个简单的多功能数字钟电路设计,它基于CD4511七段译码器和CD4543 BCD-七段译码器。

1. 时间显示功能
为了显示时间,我们需要使用CD4543 BCD-七段译码器。

该译码器接收来自实时时钟(RTC)模块的BCD编码输出。

RTC模块可以用来跟踪时间和日期,它通常包括一个晶体振荡器、计数器和存储器。

BCD 编码输出通过CD4543译码器转换为七段LED显示。

2. 日期显示功能
类似于时间显示功能,日期显示也需要使用RTC模块。

RTC模块可以提供年份、月份和日期的BCD编码输出。

这些编码输出通过CD4543译码器转换为七段LED显示。

3. 闹钟功能
闹钟功能可以通过计时器和比较器实现。

我们可以使用555定时器作
为计时器,它可以生成一个固定的时间间隔。

然后,我们可以使用一个比较器来比较当前时间和闹钟时间。

如果它们匹配,闹钟就会响起。

4. 定时器功能
定时器功能可以通过555定时器来实现。

我们可以设置计时器的时间间隔,并使用CD4511七段译码器来显示剩余时间。

当定时器完成计时时,它可以触发一个报警器或执行其他操作。

总之,多功能数字钟电路可以实现时间、日期、闹钟和定时器等多种功能。

这些功能可以通过RTC模块、CD4511七段译码器、CD4543 BCD-七段译码器和555定时器等元件来实现。

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

数字闹钟一、设计要求数字闹钟具有如下功能:闹钟的输入是1s,从Clock_1sec输入闹钟基于12小时制,分为上午和下午。

LoadTime为高电平时,设定时间。

LoadAlm为高电平是,设定闹铃时间。

当前时间和设定的闹铃时间相同时,Alarm输出高电平。

Alarm信号保持在高电平,直到AlarmEnable变为低电平(相当于关闭闹铃或者闹铃1分钟后)当闹钟掉电后,然后又通电,应该显示“00:00:00”.Flashing信号变为高电平。

这时候显示屏为空状态(flashing),表示闹钟要设定时间。

Flashing信号维持高电平直到设定新的时间。

二、设计分析与设计思路1、实验板硬件资源看完题目,有了大概思路后,接下来第一步就是了解提供的实验板,以确定编程思路。

经过研究发现,此次实验板可以用到的开发板上的控制外设有:4个按键开关、4个拨码开关、4个数码管(此处按6位数码管设计)。

因此,可以初步这么决定,利用数码管显示时间,利用按键开关进行修改与设置的操作,利用拨码开关改变闹钟运行的模式,利用蜂鸣器发出各种提示音,利用发光LED表示闹钟运行的各种状态。

2、功能分析修改时间或设置闹钟时能实现加1操作。

时钟走到设置时间时会响,正常模式时响1分钟。

3、确定开关功能按键开关(对应板上按键从左至右分别为K1、K2、K3、K4和拨位开关K5、K6、K7、K8)K1:重置时间和闹铃时间为00:00:00K2:设置时钟K3:设置闹铃K4、k5、k6:修改或设置时间和闹钟状态下加1操作K7:设置时间或闹铃的上午或者下午K8:结束修改或设置时间和闹铃,开始计时4、设计分析在设计中考虑采用模块化的思想,将系统总的功能分解成若干个子功能。

初步考虑分为3个部分:键盘部分、处理器部分和显示部分。

键盘模块通过扫描按键开关和拨码开关得到操作信息,处理器模块通过键盘模块输入的操作信息处理数据,并加处理后的时间数据传给显示模块,由显示模块显示结果。

结构框图如下:三、各模块的设计与实现1、键盘模块:keyboard1、anjian1为7位键,包括四位按键和三位拨码;2、Clock_hsec为2Hz的时钟。

3、Reset,4、LoadTime,启动时间设置按键5、SetHours, SetSecs, Set_AM_PM为时间设置按键6、LoadAlm, 启动时间设置按键7、AlarmHoursIn,AlarmMinsln,Alarm_AM_PM_In为闹铃设置按键8、AlarmEnable 启动计时和闹铃由8个开关组成的键盘通过不断扫描得到操作信息,送入数据处理器。

源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity keybord isport(Clock_hsec:in std_logic;anjian1:in bit_vector(6 downto 0);Reset:out std_logic;LoadTime:out std_logic;SetHours:out std_logic;SetSecs:out std_logic;Set_AM_PM:out std_logic;LoadAlm:out std_logic;AlarmHoursIn:out std_logic;AlarmMinsln:out std_logic;Alarm_AM_PM_In:out std_logic;AlarmEnable:out std_logic);end keybord;architecture hebav of keybord issignal key:std_logic_vector(6 downto 0); beginprocess(Clock_hsec,anjian1)beginif(Clock_hsec'event and Clock_hsec='1') then case anjian1 iswhen "0111111"=>key<="1000000";when "1011111"=>key<="0100000";when "1101111"=>key<="0010000";when "1110111"=>key<="0001000";when "1111011"=>key<="0000100";when "1111101"=>key<="0000010";when "1111110"=>key<="0000001";when others=>key<="0000000";end case;end if;end process;Reset<=key(0);LoadTime<=key(1);LoadAlm<=key(2);SetHours<=key(3);SetSecs<=key(4);Set_AM_PM<=key(5);AlarmHoursIn<=key(3);AlarmMinsln<=key(4);Alarm_AM_PM_In<=key(5);AlarmEnable<=key(6);end hebav;2、处理器模块:processor如左图:1、时钟脉冲信号:Clock_1sec2、Reset,重置时间和闹铃为00:00:003、start,为开始计时按键4、LoadTime,启动时间设置按键5、SetHours, SetSecs, Set_AM_PM为时间设置按键6、LoadAlm, 启动时间设置按键7、AlarmHoursIn , AlarmMinsln,Alarm_AM_PM_In为闹铃设置按键8、AlarmEnable 启动闹铃源代码如下:library ieee;USE IEEE.STD_LOGIC_ARITH.ALL;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alarm isport( Clock_1sec:in std_logic;Reset:in std_logic;start:in std_logic;LoadTime:in std_logic;SetHours:in std_logic;SetMins:in std_logic;Set_AM_PM:in std_logic;LoadAlm:in std_logic;AlarmHoursIn:in std_logic;AlarmMinsIn:in std_logic;AlarmAM_PM_In:in std_logic;AlarmEnable:in std_logic;Hours:out std_logic_vector(3 downto 0); Mins:out std_logic_vector(5 downto 0); Secs:out std_logic_vector(5 downto 0); AM_PM:out std_logic;Alarm:out std_logic;Flashing:out std_logic);end alarm;architecture behav of alarm issignal Hourssjh:integer range 0 to 11:=0; signal Minssjh:integer range 0 to 59:=0;signal Secssjh:integer range 0 to 59:=0;signal asjh:std_logic:='0';signal Hourssj:integer range 0 to 11:=0;signal Minssj:integer range 0 to 59:=0;signal Secssj:integer range 0 to 59:=0;signal asj:std_logic:='0';signal Hourss:integer range 0 to 11:=0;signal Minss:integer range 0 to 59:=0;signal Secss:integer range 0 to 59:=0;signal as:std_logic:='0';signal Flash:std_logic:='1';signal AL: std_logic:='0';beginHours<= conv_std_logic_vector(Hourss,4);Mins<= conv_std_logic_vector(Minss,6);Secs<= conv_std_logic_vector(Secss,6);AM_PM<=as;Alarm<=AL;Flashing<=Flash;jishi:process(Clock_1sec)beginif (rising_edge(Clock_1sec))thenif (Reset='1')then --ResetSecssjh<=0;Minssjh<=0;Hourssjh<=0;asjh<='0';Flash<='1';elsif (start='1')then --startFlash<='0';elsif(Flash='0')AND(LoadTime='0')then --timeif(Secssjh<59)thenSecssjh<=Secssjh+1;elseSecssjh<=0;if(Minssjh<59)thenMinssjh<=Minssjh+1;elseMinssjh<=0;if(Hourssjh<11)thenHourssjh<=Hourssjh+1;elseHourssjh<=0;asjh<=not asjh;end if;end if;end if;elsif((LoadTime='1')and(LoadAlm='0'))then --set time if SetHours='1' thenif(Hourssjh<11)thenHourssjh<=Hourssjh+1;elseHourssjh<=0;end if;elsif SetMins='1' thenif(Minssjh<59)thenMinssjh<=Minssjh+1;elseMinssjh<=0;end if;elsif Set_AM_PM='1' thenasjh<=not asjh;end if;end if;end if;end process;process(Clock_1sec)beginif (rising_edge(Clock_1sec))thenif (Reset='1')then --alarm resetSecssj<=0;Minssj<=0;Hourssj<=0;asj<='0';elsif(LoadAlm='1')then --set alarmif AlarmHoursIn='1' thenif(Hourssj<11)thenHourssj<=Hourssjh+1;elseHourssj<=0;end if;elsif AlarmMinsIn='1' thenif(Minssj<59)thenMinssj<=Minssj+1;elseMinssj<=0;end if;elsif AlarmAM_PM_In='1' thenasj<=not asj;end if;end if;end if;end process;process(Clock_1sec) --show time and alarmbeginif (rising_edge(Clock_1sec))thenif(LoadAlm='0')thenHourss<=Hourssjh;Minss<=Minssjh;Secss<=Secssjh;as<=asjh;elseHourss<=Hourssj;Minss<=Minssj;Secss<=Secssj;as<=asj;end if;end if;end process;process(Clock_1sec) --start alarmbeginif (rising_edge(Clock_1sec))thenif(AlarmEnable='1' )thenif(Hourssjh=Hourssj)AND(Minssjh=Minssj)AND(asjh=asj)then AL<='1';elseAL<='0';end if;elseAL<='0';end if;end if;end process;end behav;3、显示模块:display源代码如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity display isport(clk:in std_logic;Mins, Secs:in integer range 0 to 59;Hours:in integer range 0 to 12;seg:out std_logic_vector(7 downto 0);lsd:out std_logic_vector(5 downto 0));end display;architecture hebav of display issignal cnt:integer range 0 to 5;signal dis1:integer range 0 to 9;signal dis2:integer range 0 to 9;signal dis3:integer range 0 to 9;signal dis4:integer range 0 to 9;signal dis5:integer range 0 to 9;signal dis6:integer range 0 to 9;signal dis:integer range 0 to 9;signal m:std_logic_vector(15 downto 0);signal clk2:bit;begindividefreq:process(clk)beginif(clk'event and clk='1') thenm<=m+'1';if(m="1111111111111111") thenm<="0000000000000000";clk2<=not clk2;end if;end if;end process dividefreq;disp:process(clk,dis1,dis2,dis3,dis4,dis5,dis6,Hours,Mins,Secs,cnt) beginif(clk'event and clk='1') thendis2<=Hours mod 10;dis1<=(Hours-dis2)/10;dis4<=Mins mod 10;dis3<=(Mins-dis4)/10;dis6<=Secs mod 10;dis5<=(Secs-dis6)/10;end if;if(cnt=0) thendis<=dis1;lsd<="011111";cnt<=cnt+1;elsif(cnt=1) thendis<=dis2;lsd<="101111";cnt<=cnt+1;elsif(cnt=2) thendis<=dis3;lsd<="110111";cnt<=cnt+1;elsif(cnt=3) thendis<=dis4;lsd<="111011";cnt<=0;elsif(cnt=4) thendis<=dis4;lsd<="111101";cnt<=0;elsif(cnt=5) thendis<=dis4;lsd<="111110";cnt<=0;end if;case dis iswhen 0=>seg<="00001100";when 1=>seg<="01101111";when 2=>seg<="10101000";when 3=>seg<="00101001";when 4=>seg<="01001011";when 5=>seg<="00011001";when 6=>seg<="00011000";when 7=>seg<="01101101";when 8=>seg<="00001000";when 9=>seg<="00001001";when others=>seg<="11111111";end case;end process;end hebav;4、分频模块 clkdiv源代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY clkdiv ISPORT(clk :IN STD_LOGIC;Clock_1sec:OUT STD_LOGIC;Clock_hsec:OUT STD_LOGIC);END clkdiv;ARCHITECTURE rtl OF clkdiv ISSIGNAL count1,count2:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL clk_temp1,clk_temp2:STD_LOGIC;BEGINPROCESS(clk)BEGINIF clk'event AND clk='1' THENIF(count1=25000000) THENcount1 <= (OTHERS =>'0');clk_temp1 <= NOT clk_temp1;ELSEcount1 <= count1+1;END IF ;IF(count2=12500000) THENcount2 <= (OTHERS =>'0');clk_temp2 <= NOT clk_temp2;ELSEcount2 <= count2+1;END IF ;END IF ;END PROCESS;Clock_1sec <= clk_temp1;Clock_hsec <= clk_temp2;END rtl;五、仿真分析一、仿真结果由于仿真时间过长或时钟频率过大会导致quartusII无法仿真,所以以下仿真均是在修改源程序时钟频率的前提下进行的。

相关文档
最新文档