大连理工大学数字电路课程设计报告_多功能数字时钟设计说明
数电设计数字钟基于QUARTUS完整版

数电设计数字钟基于Q U A R T U SHEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】大连理工大学本科实验报告题目:数电课设——多功能数字钟课程名称:数字电路课程设计学院(系):电信学部专业:电子与通信工程班级:学生姓名: ***************学号:***************完成日期:成绩:2010 年 12 月 17 日题目:多功能数字时钟一.设计要求1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)2)具有手动校时校分功能3)具有整点报时功能,从59分50秒起,每隔2秒钟提示一次4)具有秒表显示、计时功能(精确至百分之一秒),可一键清零5)具有手动定时,及闹钟功能,LED灯持续提醒一分钟6)具有倒计时功能,可手动设定倒计时范围,倒计时停止时有灯光提示,可一键清零二.设计分析及系统方案设计1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码从59分50秒开始,数字钟进入整点报时功能。
每隔两秒提示一次。
(本设计中以两个LED灯代替蜂鸣器,进行报时)2. 多功能数字钟的秒表功能部分,计时范围从00分秒至59分秒。
可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。
将DE2硬件中的50MHZ晶振经过分频获得周期为秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。
数电设计数字钟基于QUARTUS

大连理工大学本科实验报告题目:数电课设——多功能数字钟课程名称:数字电路课程设计学院(系):电信学部专业:电子与通信工程班级:学生姓名: ***************学号:***************完成日期:成绩:2010 年 12 月 17 日题目:多功能数字时钟一.设计要求1)具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)2)具有手动校时校分功能3)具有整点报时功能,从59分50秒起,每隔2秒钟提示一次4)具有秒表显示、计时功能(精确至百分之一秒),可一键清零5)具有手动定时,及闹钟功能,LED灯持续提醒一分钟6)具有倒计时功能,可手动设定倒计时范围,倒计时停止时有灯光提示,可一键清零二.设计分析及系统方案设计1. 数字钟的基本功能部分,包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
进入手动调时功能时,通过按键改变控制计数器的时钟周期,使用的时钟脉冲进行调时计数(KEY1调秒,LOAD2调分,LOAD3调时),并通过译码器由七位数码管显示。
从59分50秒开始,数字钟进入整点报时功能。
每隔两秒提示一次。
(本设计中以两个LED灯代替蜂鸣器,进行报时)2. 多功能数字钟的秒表功能部分,计时范围从00分秒至59分秒。
可由输入信号(RST1)异步清零,并由按键(EN1)控制计时开始与停止。
将DE2硬件中的50MHZ晶振经过分频获得周期为秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示。
3.多功能数字钟的闹钟功能部分,通过按键(KEY1,KEY2,KEY3)设定闹钟时间,当时钟进入闹钟设定的时间(判断时钟的时信号qq6,qq5与分信号qq4,qq3分别与闹钟设定的时信号r6,r5与分信号r4,43是否相等),则以LED灯连续提示一分钟。
电子技术课程设计报告---多功能数字时钟

电子技术课程设计数字钟的设计一、设计任务与要求1.能直接显示“时〞、“分〞、“秒〞十进制数字的石英数字钟。
2.可以24小时制或12小时制。
3.具有校时功能。
可以对小时和分单独校时,对分校时的时候,停顿分向小时进位。
校时时钟源可以手动输入或借用电路中的时钟。
4.整点能自动报时,要求报时声响四低一高,最后一响为整点。
5.走时精度高于普通机械时钟〔误差不超过1s/d〕。
二、方案设计与认证1、课题分析数字时钟一般由6个局部组成,其中振荡器和分频器组成标准的秒信号发生器,由不同进制的计数器,译码器和显示器组成计时系统。
秒信号送入计数器进展计数,把累计的结果以“时〞、“分〞、“秒〞的十进制数字显示出来。
“时〞显示由二十四进制计数器、译码器和显示器构成,“分〞、“秒〞显示分别由六十进制计数器、译码器构成。
其原理框图如图1所示。
2、方案认证〔1〕振荡器振荡器是计时器的核心,主要用来产生时间标准信号,也叫时基信号。
数字钟的精度,主要取决于时间标准信号的频率及稳定度。
振荡器的频率越高,计时的精度就越高,但耗电量将增大。
一般采用石英晶体振荡器经过分频后得到这一信号,也可采用由555定时器构成的多谐振荡器作为时间标准信号。
〔2〕分频器振荡器产生的时基信号通常频率都很高,要使它变成能用来计时的“秒〞信号,需由分频器来完成。
分频器的级数和每级的分频次数要根据时基频率来定。
例如,目前石英电子钟多采用32768 Hz的标准信号,将此信号经过15级二分频即可得到周期为1s的“秒〞信号。
也可选用其他频率的时基信号,确定好分频次数后再选择适宜的集成电路。
〔3〕计数器数字钟的“秒〞、“分〞信号产生电路都由六十进制计数器构成,“时〞信号产生电路由二十四进制计数器构成。
“秒〞和“分〞计数器用两块十进制计数器来实现是很容易的,它们的个位为十进制,十位为六进制,这样,符合人们通常计数习惯。
“时〞计数也可以用两块十进制计数器实现,只是做成二十四进制。
数电课设大作业数字钟

大连理工大学本科实验报告题目:数字钟课程名称:数字电路课程设计学院(系):电信专业:电气班级: 1201学生姓名:学号:完成日期: 2014.11.23成绩:2014 年 11 月 23 日课程设计得分表一、数字钟课程设计要求:1、设计一个具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)计时器。
2、整点报时。
两种方法任选其一:⑴发出仿中央人民广播电台的整点报时信号,即从59分50秒起,每隔2秒钟发出一次低音“嘟”的信号,连续5次,最后一次要求高音“嘀”的信号,此信号结束即达到整点。
“嘟”是500Hz左右的频率输出,“嘀”是1000Hz左右的频率输出⑵通过LED闪烁实现,闪烁频率及花型可自己设计并在这里说明。
3、手动校时、校分、校秒。
4、定时与闹钟功能,能在设定的时间发出闹铃声。
5、设计一个秒表,显示1%秒到60秒、手动停止。
6、设计一个倒计时,显示小时、分钟、秒。
7、其他创新。
第1题25分,其他每题5分二、课程设计考试(40分,每题分):考试题目:1、实体名□2、计数器□3、异步清零□4、进位输出□5、仿真图□6、数码管输出□7、分频□8、元件例化□9、引脚分配□10、下载□题目:数字钟(1.大连理工大学电信学院,辽宁大连,116023;2. 大连理工大学电工电子实验中心,辽宁大连,116023;)1.设计要求一、电子表部分:(1)由晶振电路产生1HZ的校准秒信号。
(2)设计一个具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)计时器具有手动校时、校分,校秒和清零的功能。
(3)整点报时功能,通过LED闪烁实现,此实验LED灯亮一秒。
二、秒表部分:(1)有晶振产生100HZ的校准0.01秒信号。
(2)设计一个有“时”、“分”、“秒”、“0.1秒”、“0.01秒”(23小时59分59秒99)显示功能(3)具有开始计时暂停计时功能和清零功能三、具有电子表和秒表状态切换。
四、划出框图和逻辑电路图,写出设计。
多功能电子时钟数字系统课程设计设计实验报告

数字系统课程设计设计实验报告———多功能电子时钟目录一、电子时钟的功能及工作介绍 01、本设计电子时钟具有的功能 02、本设计电子时钟工作介绍 0二、设计思路 0三、各模块具体介绍 (1)计数器模块: (1)控制模块: (3)四、仿真 (6)五、实验成果 (11)六、实验总结和感想 (13)1、实验错误排查和解决 (13)2、实验感想 (14)七、各模块代码 (15)1、计数器模块 (15)2、控制模块 (29)一、电子时钟的功能及工作介绍1、本设计电子时钟具有的功能1)具有显示时、分、秒的功能,能准确显示时间2)能够手动设置时间3)具有闹钟功能,可以设置闹钟的时间,然后再实际时间与设定时间相等是闹钟响,并有闹钟开关,可控制其是否响4)具有秒表功能,可以累计计时2、本设计电子时钟工作介绍此电子时钟开机后即会显示时间,其中后两位数码管显示秒,前两位数码管显示分,还可以通过拨盘开关S1来使得前两位数码管显示小时。
(开机后,按下按键1一次,会继续显示时间。
)此后,每按下按键1一次,会显示设置小时界面,按下按键1两次会显示设置分钟界面,按下按键1三次会显示闹钟设置小时界面,按下按键1四次会显示闹钟设置分钟界面,按下按键1五次会显示秒表界面。
而在每一个界面,按下按键2相应的位会开始跳动,在按下按键2时,跳动停止,此时按下按键3,即确认键,则会返回时间显示状态。
二、设计思路设计一个电子时钟,必然要用到计时器,而需要设置时间和闹钟,又需要控制器来控制系统所处的状态。
我们采用外部一个按键来切换系统的状态,用另一个按键来调整时间和启动秒表,再有一个按键来确认操作,并返回显示状态,继续等待命令。
在控制器中,需要接受外部信号,并给出信号给计时器,使其做出相应的动作。
三、各模块具体介绍本设计主要分成计数器模块和控制模块。
计数器模块主要包括60进制计数器模块和24进制计数器模块,向量与整数转换模块,1Hz 时钟分频模块,整数转换为两个向量的模块,动态显示模块和8段数码管译码模块。
《数字电子技术》课程设计说明书多功能数字钟电路设计

学号:课程设计题目多功能数字钟电路设计学院信息工程学院专业通信工程班级通信0804班姓名指导教师2010 年7 月 6 日课程设计任务书学生姓名:专业班级:通信工程0804班指导教师:工作单位:题目: 多功能数字钟电路设计初始条件:数字电子技术基础知识、模拟电子技术基础知识、电子技术实验室、NE555、74LS90、74LS48、7段数码管。
要求完成的主要任务:1、电路原理图设计和相关参数的确定。
2、电路仿真3、设计报告的撰写时间安排:指导教师签名:年月日系主任(或责任教师)签名:年月日摘要本设计是基于555定时器产生脉冲的多功能数字钟,能够分别显示时、分、秒,还能够对时钟做校时操作,本设计时钟还具有整点报时功能。
从555定时器输出1KHZ的脉冲经过三个串联计数器分频分别为100HZ、10HZ和1HZ的时间脉冲,其中1HZ脉冲作为秒脉冲输入,10HZ作为校时电路输入。
秒脉冲输入时间计数部分,计数部分由六个计数器组成,每两个分别计数秒、分和时。
计数器输出输到到7端数码管译码器,再书到数码管进行显示出时间。
校时电路工作时,封锁计数器的进位信号,由10HZ给出计数信号,方便校时。
当分计数部分要向时计数部分进位时,给出的欲进位信号驱动扬声器,发出进位信号,到达报时的目的。
AbstractThe design is based on the pulse 555 timing produce multifunctional digital clock, can show, minutes and seconds on the clock, also can make the operation, the school also has the clock strike on the design. From 1KHZ 555 timing of pulse output by three series counter frequency respectively, 10HZ 100HZ 1HZ and the time pulse, including 1HZ pulse as seconds, 10HZ as input pulses at school input circuit. Seconds count part time input pulses, count by six counter composition, every two seconds, and were counting. To counter the output lost 7 digital tube decoder, book to digital tube show time. When school work, blockade circuit, signal by the binary counter counts, convenient 10HZ given signal when the school. When points to count part when, is part of binary counter to carry signals, a binary signals drive the speaker, arrive the strike.目录1.引言 (1)2、多功能数字钟 (2)任务 (2)、要求 (2)基本要求 (2)2.2.2 扩展功能 (2)数字钟电路系统的组成原理框图 (2)3、方案设计与选择 (3)3.1 振荡器的设计 (3)3.1.1 振荡器的选择 (3)3.1.2 参数确定 (4)3.2 分频设计 (5)3.3 时分秒计数器的设计 (5)3.3.1 时计数部分设计 (5)3.3.2 分、秒计数部分设计 (6)校时电路设计 (7)3.5 整点报时电路设计 (7)显示部分 (8)3.7 总体设计电路图 (9)4、元器件的选择 (11)振荡器NE555 (11)4.1.1. NE555的特点 (11)4.1.2 NE555引脚位配置说明 (11)4.2 计数器74LS90 (12)4.3 译码器74LS48 (13)5、电路仿真 (15)5.1 振荡器部分的仿真 (15)5.1.1 NE555输出结果仿真 (15)5.1.2 NE555输出和电容C1波形 (15)5.2 分频器的仿真 (16)5.3 时间显示仿真 (17)5.4 整点报时、校时电路仿真 (18)6总结 (19)附录元件清单 (20)参考文献 (21)1.引言时钟是现在最基本最常见的生活用品,随着现代人们的忙碌,似乎每一个角落都装上时钟才能满足人们对知晓时间的需求,现在很多宿舍楼,商场等都装上了时钟。
多功能数字钟电路设计实验报告

多功能数字钟电路设计实验报告实验目的:设计一个多功能数字钟电路,能够显示当前时间,并具备闹钟、秒表和计时等功能。
实验原理:1. 数码管显示:使用4位共阴极数码管进行显示,采用BCD码方式输入。
2. 按键输入:使用按键进行时间的调节和选择功能。
3. 时钟频率:使用晶体振荡器提供系统时钟,通过分频电路控制时钟频率。
实验器材:1. 4位共阴极数码管2. 按键开关3. 74LS90分频器4. 时钟晶体振荡器5. 耐压电容、电阻等元件6. 电路连接线实验步骤:1. 连接电路:根据电路原理图,将数码管、按键开关、74LS90分频器、晶体振荡器等连接起来,注意接线正确。
2. 编写程序:根据实验要求,编写相应的程序,实现时钟、闹钟、秒表和计时等功能。
3. 调试电路:将电路通电并运行程序,观察数码管的显示情况和按键功能是否正常。
4. 测试功能:分别测试多功能数字钟的时钟、闹钟、秒表和计时等功能,确保功能正常。
5. 完善实验报告:根据实验结果和观察情况,完善实验报告,并附上电路原理图、程序代码等。
实验结果:经过调试和测试,多功能数字钟电路能够正常显示时间,并具备时钟、闹钟、秒表和计时功能。
使用按键进行时间调节和功能选择,数码管根据不同功能进行相应的显示。
实验总结:通过本次实验,我掌握了多功能数字钟电路的设计原理和实现方法,并且了解了数码管显示、按键输入、时钟频率控制等相关知识。
实验过程中,我发现电路连接正确性对功能实现起到关键作用,同时合理编写程序也是确保功能正常的重要环节。
通过实验,我对数字电路的设计和实现有了一定的了解,并且培养了动手实践和解决问题的能力。
(数电)多功能数字钟—设计报告

1、设计内容及要求:①基本功能:以数字形式显示时、分、秒的时间,小时计数器的计时要求为24进制,并要求手动快校时、校分。
②扩展功能:整点报时。
2、系统设计原理:系统要求:数字电子钟由555集成芯片构成的振荡电路、计数器、译码器、显示器和校时电路组成。
555集成芯片构成的振荡电路产生的信号作为秒脉冲,秒脉冲送入计数器,计数结果通过“时”、“分”、“秒”译码器显示时间。
在功能方面,对于本次综合设计,还要求有校时与整点报时功能。
方案设计:图1. 数字钟电路框图电子钟的计时周期为24小时,显示满刻度为23时59分59秒,另外应有校时功能和报时功能。
因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。
主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。
系统工作原理:秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,用555振荡器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。
校时电路时用来对“时”、“分”显示数字进行校对调整。
3.单元电路的设计:3.1、基于555电路的秒脉冲发生器的设计3.1.1用555芯片设计一个多谐振荡器,输出方波用作计数器。
脉冲频率公式:f=1/(R1+2R2)C㏑2选择R1=1K,R2=5K,RV1=2K,C=100nF,形成电路图如图所示:图2. 555振荡器电路图仿真波形如图所示图3. 555脉冲仿真波形图555振荡器输出f=1000HZ,通过分频得出1HZ的脉冲,此脉冲当做秒时针脉冲。
数电课程设计报告-多功能数字钟

课题名称:多功能数字钟所在院系:机械电子工程学院班级:*自动化*班学号:2011******* 姓名:*宜杰指导老师:***时间:2013.12.20瓷学院数字电子技术课程设计任务书目录引言 (4)第一章方案设计 (5)第二章单元电路设计 (7)第三章总体电路图 (13)第四章课程设计总结 (15)附表元件清单 (16)附录参考文献 (17)引言随着社会的发展,科学技术的不断进步,对电子产品的性能要求也更高。
我们做为21世纪的一名学电子的大学生,不仅要将理论知识学会,更应该将其应用与我们的日常生活中去,使理论与实践很好的结合起来。
电子课程设计是电子技术学习中的一个非常重要的实践环节,能够真正体现我们是否完全吸收了所学的知识。
数字电子时钟是一个对标准频率(1HZ)进行计数的计数电路。
通常使用石英晶体振荡器电路构成数字钟,以保证其频率的稳定。
以10 进制计数器74HC390 来实现时间计数单元的计数功能。
用4518作为计数电路,采用CD4511 作为显示译码电路。
选择LED数码管作为显示电路。
由CD4511 把输进来的二进制信号翻译成十进制数字,再由数码管显示出来。
用COMS 与或非门实现的时或分校时电路。
该电路还有在整点前10 秒钟开始整点报时的功能。
报时电路可选74HC30 来构成。
时间以24 为一个周期。
数字钟采用数字电路实现对“时”“分”“秒”数字显示的计时装置。
具有时间显示、闹钟设置、报时功能、校时的功能。
走时准确、显示直观、精度高、稳定等优点。
第一章方案设计设计制作一多功能数字钟一、设计任务:设计一个电子电路系统时,首先必须明确系统的设计任务,根据任务进行方案选择,然后对方案中的各部分进行单元的设计和器件选择,最后将各部分连接在一起,设计出一个符合设计要求的完整系统电路设计要求:(1) 时钟显示功能,能够十进制显示“时”、“分”、“秒”;(2) 小时高位具有零熄灭功能;(3) 具有整点报时功能;(4) 具有快速校准时间的功能。
数字电路课程设计-多功能数字时钟设计报告

多功能数字时钟设计报告目录一、设计任务和要求 (2)二、设计的方案的选择与论证 (2)(1) 总体电路分析 (2)(2) 仿真分析 (3)(3) 仿真说明 (3)三、电路设计计算与分析 (4)(1)小时计时电路 (4)(2)分钟计时电路 (5)(3)秒钟计时电路 (7)(4)校时选择电路 (8)(5)整点译码电路 (9)(6)定时比较电路 (11)(7)脉冲产生电路 (12)四、总结及心得 (13)五、附录 (15)(1)元器件明细表 (15)(2)附图 (17)六、参考文献 (17)一、设计任务和要求实现24小时的时钟显示、校准、整点报时、闹铃等功能。
具体要求:(1)显示功能:具有“时”、“分”、“秒”的数字显示(“时”从0~23,分0~59,秒0~59)。
(2)校时功能:当刚接通电源或数字时钟有偏差时,可以通过手动的方式去校时。
(3)整点报时:当时钟计时到整点时,能进行整点报时。
(4)闹铃功能:在24小时之内,可以设定定时时间,当数字时钟到定时时间时能进行报时提醒。
二、设计的方案的选择与论证(1)总体电路分析总体电路设计是将单元电路模块小时计时电路、分钟计时电路、秒计时电路、校时选择电路、整点译码电路、闹钟电路等模块连接在一起,外接输入开关和输出显示数码管构成。
总体结构图如下:(2)仿真分析单击运行按钮,可观测仿真结果。
电路能完成显示计时、校时、整点报时以及闹铃等功能。
○1计时功能。
当开关S1、S2都处于左边触点时,数字时钟工作于计时状态。
此时,电路中的秒计时电路、分计时电路以及小时计时电路分别对秒脉冲、分脉冲和小时脉冲进行计数。
计数结果经数码管显示计时时间值。
○2校时功能。
当开关S1、S2都处于右边触点时,数字时钟工作于校时状态。
按瞬态按钮B键,可以选择对“小时”、“分钟”和“秒钟”进行校时。
校时时通过开关S3(按C键)手动输入校时时间。
○3整点报时功能。
整点译码电路通过识别整点时间,产生整点报时信号。
多功能数字钟—数电课程设计报告

1.设计任务与要求1.1产生1HZ的脉冲;1.2能显示时,分,秒,24小时进制;1.3可手动校正:能分别进行分、时的校正。
只要将开关置于手动位置。
可分别对分、时进行连续脉冲输入调整;1.4整点报时。
2.系统原理框图由振荡器输出稳定的高频脉冲信号作为时间基准,秒计数器满60向分计数器进位,分计数器满60向小时计数器进位,小时计数器按“24翻1”规律计数,计数器经译码器送到显示器;计数出现误差可用校时电路进行校时、校分、校秒,可发挥部分:使数字钟具有可整点报时与定时闹钟的功能。
数字钟的结构框图如图1所示图1数字钟的结构框图3.设计方案与论证3.1时间脉冲产生电路方案一:由集成电路定时器555与RC组成的多谐振荡器作为时间标准信号源。
555与RC振荡电路如图2所示图1 555与RC组成的多谐振荡器图方案二:振荡器是数字钟的核心。
振荡器的稳定度及频率的精确度决定了数字钟计时的准确程度,通常选用石英晶体构成振荡器电路。
石英晶体振荡器的作用是产生时间标准信号。
因此,一般采用石英晶体振荡器经过分频得到这一时间脉冲信号。
石英晶体振荡电路如图3所示图 2 石英晶体振荡器图方案三:由集成逻辑门与RC组成的时钟源振荡器门电路组成的振荡电路如图4所示图 3 门电路组成的多谐振荡器图用555组成的脉冲产生电路: R1=47kΩ,R2=47kΩ,C=10μF,则555所产生的脉冲的为:f=1/[(R1+2*R2)CLn2=1Hz,而设计要求为1Hz,在精度要求不是很高的时候可以使用。
石英晶体振荡电路:采用的32768晶体振荡电路,其频率为32768Hz,然后再经过15分频电路可得到标准的1Hz的脉冲输出.R的阻值,对于TTL门电路通常在0.7~2KΩ之间;对于CMOS门则常在10~100MΩ之间。
由门电路组成的多谐振荡器的振荡周期不仅与时间常数RC有关,而且还取决于门电路的阈值电压VTH ,由于VTH容易受到温度、电源电压及干扰的影响,因此频率稳定性较差,只能用于对频率稳定性要求不高的场合。
大连理工大学数字电路课程设计报告_多功能数字时钟设计说明

大连理工大学本科实验报告题目:多功能数字时钟设计课程名称:数字电路与系统课程设计学院(系):信息与通信工程学院专业:电子信息工程班级:学生姓名:学号:完成日期: 2014年7月16日2014 年 7 月 16 日题目:多功能数字时钟设计1 设计要求1) 具有“时”、“分”、“秒”及“模式”的十进制数字显示功能;2) 具有手动校时、校分功能,并能快速调节、一键复位(复位时间12时00分00秒);3) 具有整点报时功能,从00分00秒起,亮灯十秒钟;4) 具有秒表功能(精确至百分之一秒),具有开关键,可暂停、可一键清零;5) 具有闹钟功能,手动设置时间,并可快速调节,具有开关键,可一键复位(复位时间12时00分00秒),闹钟时间到亮灯十秒钟进行提醒;6) 具有倒计时功能(精确至百分之一秒),可手动设置倒计时时间,若无输入,系统默认60秒倒计时,且具有开关键,计时时间到亮灯十秒钟进行提醒,可一键复位(复位时间默认60秒)。
2 设计分析及系统方案设计2.1 模式选择模块:按键一进行模式选择,并利用数码管显示出当前模式。
模式一:时钟显示功能;模式二:时钟调节功能;模式三:闹钟功能;模式四:秒表功能;模式五:倒计时功能。
2.2 数字钟的基本功能部分:包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
具有复位按键1,在时钟模式下按下复位键后对时钟进行复位,复位时间12时00分00秒。
进入手动调时功能时,通过按键调节时间,每按下依次按键2,时钟时针加一,按下按键2一秒内未松手,时钟时针每秒钟加十;按键1对分针进行控制,原理与时针相同并通过译码器由七位数码管显示。
从00分00秒开始,数字钟进入整点报时功能(本设计中以一个LED灯代替蜂鸣器,进行报时),亮灯10秒钟进行提示。
大连理工大学数字电路课程设计报告_多功能数字时钟设计说明

理工大学本科实验报告题目:多功能数字时钟设计完成日期:2014 年7月16日2014 年7 月16 日题目:多功能数字时钟设计1设计要求1)具有“时”、“分”、“秒”及“模式”的十进制数字显示功能;2)具有手动校时、校分功能,并能快速调节、一键复位(复位时间12时00分00秒);3)具有整点报时功能,从00分00秒起,亮灯十秒钟;4)具有秒表功能(精确至百分之一秒),具有开关键,可暂停、可一键清零;5)具有闹钟功能,手动设置时间,并可快速调节,具有开关键,可一键复位(复位时间12时00分00秒),闹钟时间到亮灯十秒钟进行提醒;6)具有倒计时功能(精确至百分之一秒),可手动设置倒计时时间,若无输入,系统默认60秒倒计时,且具有开关键,计时时间到亮灯十秒钟进行提醒,可一键复位(复位时间默认60秒)。
2设计分析及系统方案设计2.1 模式选择模块:按键一进行模式选择,并利用数码管显示出当前模式。
模式一:时钟显示功能;模式二:时钟调节功能;模式三:闹钟功能;模式四:秒表功能;模式五:倒计时功能。
2.2 数字钟的基本功能部分:包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分” “秒”的形式通过译码器由数码管显示出来。
具有复位按键1,在时钟模式下按下复位键后对时钟进行复位,复位时间12时00分00秒。
进入手动调时功能时,通过按键调节时间,每按下依次按键2,时钟时针加一,按下按键2 一秒未松手,时钟时针每秒钟加十;按键1对分针进行控制,原理与时针相同并通过译码器由七位数码管显示。
从00分00秒开始,数字钟进入整点报时功能(本设计中以一个LED灯代替蜂鸣器,进行报时),亮灯10秒钟进行提示。
2.3 多功能数字钟的秒表功能部分:计时围从00分00.00秒至59分59.99秒。
大连理工大学数电实验报告

大连理工大学本科实验报告题目:数字钟课程名称:数字电路课程设计学院(系):电子信息工程专业:电子班级:电子1301班学生姓名:陈冠谋学号:201383022完成日期:2015年7月18日成绩:2014 年7 月18 日注意:本页要求放在实验报告第一页课程设计得分表一、数字钟课程设计要求:1、设计一个具有‘时'、‘分'、‘秒'的十进制数字显示(小时从00~23)计时器。
2、整点报时。
两种方法任选其一:⑴发出仿中央人民广播电台的整点报时信号,即从59分50秒起,每隔2秒钟发出一次低音“嘟”的信号,连续5次,最后一次要求高音“嘀”的信号,此信号结束即达到整点。
“嘟”是500Hz 左右的频率输出,“嘀”是1000Hz左右的频率输出⑵通过LED闪烁实现,闪烁频率及花型可自己设计并在这里说明。
3、手动校时、校分、校秒。
4、定时与闹钟功能,能在设定的时间发出闹铃声。
5、设计一个秒表,显示1%秒到60秒、手动停止。
6、设计一个倒计时,显示小时、分钟、秒。
7、其他创新。
第1题25分,其他每题5分二、课程设计考试(40分,每题分):考试题目:1、实体名□2、计数器□3、异步清零□4、进位输出□5、仿真图□6、数码管输出□7、分频□8、元件例化□9、引脚分配□10、下载□一、设计要求1、设计一个数字钟,能够显示当前时间,分别用6个数码管显示小时、分钟、秒钟的时间,秒针的计数频率为1Hz,可由系统脉冲分频得到。
2、整点报时,可通过LED闪烁实现,闪烁频率及花型可自己设计。
3、能够调整小时和分钟的时间,调整的形式为通过按键进行累加。
4、具有闹钟功能,闹钟时间可以任意设定(设定的形式同样为通过按键累加),并且在设定的时间能够进行提示,提示同样可以由LED闪烁实现。
二、设计分析及系统方案设计数字计时器一般都由振荡器、分频器、计数器、译码器、显示器等几部分组成。
其中振荡器和分频器组成标准秒信号发生器,由不同进制的计数器、译码器和显示器组成计时系统。
多功能数字钟设计实验报告

多功能数字钟设计实验报告多功能数字钟设计实验报告一、引言数字钟是一种常见的时间显示设备,其简洁明了的显示方式受到了广泛的欢迎。
然而,随着科技的不断发展,人们对于数字钟的功能要求也越来越高。
本实验旨在设计一款多功能数字钟,以满足人们对于时间显示设备的更多需求。
二、设计原理1. 时间显示:数字钟应能准确地显示当前的时间,包括小时、分钟和秒钟。
为了实现精确的时间显示,我们采用了基于晶体振荡器的时钟电路,并结合数码管显示技术,使得时间能够以数字形式直观地呈现。
2. 日期显示:除了时间显示外,数字钟还应具备日期显示的功能。
我们通过添加一个实时时钟模块,可以获取当前的日期信息,并通过数码管显示出来。
3. 闹钟功能:为了提醒用户重要的时间节点,我们在数字钟中加入了闹钟功能。
用户可以设置闹钟的时间,并在到达设定时间时,数字钟会发出声音或震动来提醒用户。
4. 温湿度显示:为了更好地满足用户的需求,我们还在数字钟中添加了温湿度显示功能。
通过接入温湿度传感器,数字钟可以实时监测当前的温度和湿度,并将其显示在数码管上。
5. 其他功能:除了以上功能外,我们还可以根据用户需求进行扩展,如倒计时功能、闪烁效果等。
三、实验步骤1. 硬件设计:根据设计原理,我们需要选择合适的元器件进行电路的搭建,包括晶体振荡器、数码管、实时时钟模块、温湿度传感器等。
2. 电路连接:根据电路原理图,将各个元器件按照正确的连接方式进行连接,确保电路的正常工作。
3. 程序编写:通过编写合适的程序代码,实现数字钟的各项功能。
包括时间显示、日期显示、闹钟功能、温湿度显示等。
4. 调试测试:在完成硬件连接和程序编写后,我们需要对数字钟进行调试测试,确保各项功能的正常运行。
可以通过模拟不同的时间、设置不同的闹钟时间等来测试数字钟的稳定性和准确性。
5. 优化改进:根据实际测试结果,我们可以对数字钟进行优化改进,提高其性能和稳定性。
例如,优化显示效果、增加功能扩展等。
大连理工大学数字电路课程设计报告-多功能数字时钟设计说明

(理工大学本科实验报告题目:多功能数字时钟设计;课程名称:数字电路与系统课程设计学院(系):信息与通信工程学院专业:电子信息工程{班级:学生:学号:完成日期: 2014年7月16日2014 年 7 月 16 日(题目:多功能数字时钟设计1 设计要求1) 具有“时”、“分”、“秒”及“模式”的十进制数字显示功能;2) 具有手动校时、校分功能,并能快速调节、一键复位(复位时间12时00分00秒);3) 具有整点报时功能,从00分00秒起,亮灯十秒钟;4) 具有秒表功能(精确至百分之一秒),具有开关键,可暂停、可一键清零;5) 具有闹钟功能,手动设置时间,并可快速调节,具有开关键,可一键复位(复位时间12时00分00秒),闹钟时间到亮灯十秒钟进行提醒;6) 具有倒计时功能(精确至百分之一秒),可手动设置倒计时时间,若无输入,系统默认60秒倒计时,且具有开关键,计时时间到亮灯十秒钟进行提醒,可一键复位(复位时间默认60秒)。
"2 设计分析及系统方案设计模式选择模块:按键一进行模式选择,并利用数码管显示出当前模式。
模式一:时钟显示功能;模式二:时钟调节功能;模式三:闹钟功能;模式四:秒表功能;模式五:倒计时功能。
数字钟的基本功能部分:包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
具有复位按键1,在时钟模式下按下复位键后对时钟进行复位,复位时间12时00分00秒。
进入手动调时功能时,通过按键调节时间,每按下依次按键2,时钟时针加一,按下按键2一秒未松手,时钟时针每秒钟加十;按键1对分针进行控制,原理与时针相同并通过译码器由七位数码管显示。
从00分00秒开始,数字钟进入整点报时功能(本设计中以一个LED灯代替蜂鸣器,进行报时),亮灯10秒钟进行提示。
数电课设大作业数字钟

大连理工大学本科实验报告题目:数字钟课程名称:数字电路课程设计学院(系):电信专业:电气班级: 1201学生姓名:学号:完成日期: 2014.11.23成绩:2014 年 11 月 23 日课程设计得分表一、数字钟课程设计要求:1、设计一个具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)计时器。
2、整点报时。
两种方法任选其一:⑴发出仿中央人民广播电台的整点报时信号,即从59分50秒起,每隔2秒钟发出一次低音“嘟”的信号,连续5次,最后一次要求高音“嘀”的信号,此信号结束即达到整点。
“嘟”是500Hz左右的频率输出,“嘀”是1000Hz左右的频率输出⑵通过LED闪烁实现,闪烁频率及花型可自己设计并在这里说明。
3、手动校时、校分、校秒。
4、定时与闹钟功能,能在设定的时间发出闹铃声。
5、设计一个秒表,显示1%秒到60秒、手动停止。
6、设计一个倒计时,显示小时、分钟、秒。
7、其他创新。
第1题25分,其他每题5分二、课程设计考试(40分,每题分):考试题目:1、实体名□2、计数器□3、异步清零□4、进位输出□5、仿真图□6、数码管输出□7、分频□8、元件例化□9、引脚分配□10、下载□题目:数字钟(1.大连理工大学电信学院,辽宁大连,116023;2. 大连理工大学电工电子实验中心,辽宁大连,116023;)1.设计要求一、电子表部分:(1)由晶振电路产生1HZ的校准秒信号。
(2)设计一个具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)计时器具有手动校时、校分,校秒和清零的功能。
(3)整点报时功能,通过LED闪烁实现,此实验LED灯亮一秒。
二、秒表部分:(1)有晶振产生100HZ的校准0.01秒信号。
(2)设计一个有“时”、“分”、“秒”、“0.1秒”、“0.01秒”(23小时59分59秒99)显示功能(3)具有开始计时暂停计时功能和清零功能三、具有电子表和秒表状态切换。
四、划出框图和逻辑电路图,写出设计。
模电课程设计--数字钟

大连理工大学项目报告题目:数字钟项目名称:数电实验设计学院(系):电信专业:班级:学生姓名:学号:完成日期:7.201、设计要求具有如下功能的闹钟:1).设计一个具有‘时’、‘分’、‘秒’的十进制数字显示(小时从00~23)计时器。
2). 具有手动校时、校分的功能。
3).定时与闹钟功能,能在设定的时间发出闹铃声。
4).能进行整点报时。
要求发出仿中央人民广播电台的整点报时信号,即从59分50秒起,每隔2秒钟发出一次低音“嘟”的信号,连续5次,最后一次要求高音“嘀”的信号,此信号结束即达到整点。
2、设计分析及系统方案设计1). 时钟控制:将set置0,时钟小时位、分钟位、秒位全部归0;将set置1,时钟开始“走”。
2). 时钟设置:将sel置1,开始进行时间设置,按下键8,输出一个脉冲,时位进1,进行小时设置;按下键7,输出一个脉冲,分位进1,进行分钟设置。
将sel置0,设置结束,时钟开始运行。
3). 闹钟设置:将setc置1,开始进行闹钟设置。
将set1置1,进行闹钟小时位设置,按一下键6,输出一个脉冲,小时位叫进1;将set1置0,进行闹钟分钟位设置,按一下键6,输出一个脉冲,分钟位进1。
4). 闹钟铃声:当时钟时、分“走”到与上面设置的闹钟的时、分一致时,comout 输出1,一分钟后时钟分与闹钟分不一致,comout输出0。
5). 报时设置:当时钟分位走到59,秒位走到51时,发出第一声512Hz响声,秒位走到53时,发出第二声512Hz响声,55第三声,57第四声,走到59秒时,发出1024Hz响声。
闹铃实现:当comout输入为1时,发出1024Hz响声,当comout 输入为0时,响声停止。
系统框图:3、系统以及模块硬件电路设计试验箱设备采用FLEX10K/EPF10K10L84-8(摸5)说明:引脚图4、系统的VHDL设计1)、分、秒模块(摸60计数器)程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity munite_and_second isport(clk: in std_logic;reset: in std_logic;--置0设置qh: out std_logic_vector(3 downto 0);--“秒”或“分”高位ql: out std_logic_vector(3 downto 0);--“秒”或“分”低位co: out std_logic);--为下一个模块提供脉冲end munite_and_second;architecture a of munite_and_second issignal qqh,qql: std_logic_vector(3 downto 0);beginprocess(clk)beginif(reset='0') thenqqh<="0000";qql<="0000";elsif(clk'event and clk='1') thenif(qqh="0101" and qql="1001") thenqqh<="0000"; qql<="0000"; co<='1';elsif(qql="1001") thenqql<="0000"; qqh<=qqh+1; co<='0';elseqql<=qql+1; co<='0';end if;end if;end process;qh<=qqh;ql<=qql;end a;2)、小时模块(模24计数器)程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity hour isport(clk: in std_logic;reset: in std_logic;hh: out std_logic_vector(3 downto 0);hl: out std_logic_vector(3 downto 0));end hour;architecture a of hour issignal hhh,hhl: std_logic_vector(3 downto 0);beginprocess(clk)beginif(reset='0') then—置零设置hhh<="0000"; hhl<="0000";elsif(clk'event and clk='1') thenif(hhh="0010" and hhl="0011") thenhhh<="0000"; hhl<="0000";elsif(hhl="1001") thenhhl<="0000"; hhh<=hhh+1;elsehhl<=hhl+1;end if;end if;end process;hh<=hhh; hl<=hhl;end a;3)、调时模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity adjust isport(clka,d0,sel: in std_logic;y: out std_logic);end adjust;architecture a of adjust isbeginprocess(clka,d0,sel)beginif(sel='1') then—调时控制y<=clka;--手动调时elsey<=d0;--时钟自动运行end if;end process;end a;记时调时电路图:4)、闹钟设置模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clkset isport(hh,hl,mh,ml :in std_logic_vector(3 downto 0);setc,set1,f:in std_logic;bhg,bhd,bmg,bmd :buffer std_logic_vector(3 downto 0); comout :out std_logic);end clkset ;architecture behav of clkset isbegincom:process(hh,mh,hl,ml)beginif(bhg=hh and bhd=hl and bmg=mh and bmd=ml)thencomout<='1';--时钟和设置的闹钟比较,输出值elsecomout<='0';end if;end process;set:process(f)beginif(f'event and f='1')then—手动对闹铃进行设定if(setc='1' and set1='1')then—选择设定闹钟“时”if(bhg="0010" and bhd="0011")thenbhd<="0000";bhg<="0000";elsif(bhd="1001")thenbhd<="0000";bhg<=bhg+1;elsif(bhd<"1001")thenbhd<=bhd+1;end if;end if;end if;end process;process(f)beginif(f'event and f='1')then—手动设置闹钟if(setc='1' and set1='0')then—选择设置闹钟“分”if(bmg="0101" and bmd="1001")thenbmd<="0000";bmg<="0000";elsif(bmd="1001")thenbmd<="0000";bmg<=bmg+1;elsif(bmd<"1001")thenbmd<=bmd+1;end if;end if;end if;end process;end behav;电路:5)、显示模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity show isport(show1: in std_logic;hh,hl,mh,ml: in std_logic_vector(3 downto 0); high,low: out std_logic_vector(3 downto 0)); end ;architecture a of show isbeginprocess (show1)begincase show1 iswhen '1'=>high<=hh;low<=hl;--设置闹钟时选择显示“时”或“分”when others=>high<=mh;low<=ml;end case;end process;end a;电路:6)、报时模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity baoshi isport(mh,ml,sh,sl :in std_logic_vector(3 downto 0);f512hz,clk,comout :in std_logic;bell :out std_logic);end baoshi;architecture a of baoshi isbeginprocess(clk,mh,ml,sh,sl,f512hz)beginif(comout='1') then—闹铃控制bell<=clk;elsif(mh="0101"and ml="1001" )thenif(sh="0101") thenif(sl="1001") thenbell<=clk;--当59分59秒时,报时频率为clk频率elsif(sl="0001" or sl="0011" or sl="0101" or sl="0111")then--当59分51、53、55、57秒时,报时频率为f512频率bell<=f512hz;end if;elsebell<='0';end if;elsif(ml<"1001"or mh<"0101"or sh<"0101" )thenbell<='0';--当分钟小于59或者秒高位小于5时,不报时end if;end process;end a;电路:6)、分频模块程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity fenpin isport(clk:in std_logic;f512:out std_logic);end fenpin;architecture a of fenpin issignal tmp1: std_logic;beginprocess(clk)beginif(clk'event and clk='1')thentmp1<=not tmp1;--在上升沿时,temp1翻转end if;end process;f512<=tmp1;end a;电路:总仿真结果:5、结论以及结果说明1)运行环境:芯片名称:FLEX10K/EPF10LC84-8调试软件:MAX+PLUS II 10.2参数选取:CLOCK0=1Hz,CLOCK5=1kHz2)运行结果:当reset置0时,时钟时,分,秒全部置0,当reset置1时,时钟开始运行。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
理工大学本科实验报告题目:多功能数字时钟设计课程名称:数字电路与系统课程设计学院(系):信息与通信工程学院专业:电子信息工程班级:学生:学号:完成日期: 2014年7月16日2014 年 7 月 16 日题目:多功能数字时钟设计1 设计要求1) 具有“时”、“分”、“秒”及“模式”的十进制数字显示功能;2) 具有手动校时、校分功能,并能快速调节、一键复位(复位时间12时00分00秒);3) 具有整点报时功能,从00分00秒起,亮灯十秒钟;4) 具有秒表功能(精确至百分之一秒),具有开关键,可暂停、可一键清零;5) 具有闹钟功能,手动设置时间,并可快速调节,具有开关键,可一键复位(复位时间12时00分00秒),闹钟时间到亮灯十秒钟进行提醒;6) 具有倒计时功能(精确至百分之一秒),可手动设置倒计时时间,若无输入,系统默认60秒倒计时,且具有开关键,计时时间到亮灯十秒钟进行提醒,可一键复位(复位时间默认60秒)。
2 设计分析及系统方案设计2.1 模式选择模块:按键一进行模式选择,并利用数码管显示出当前模式。
模式一:时钟显示功能;模式二:时钟调节功能;模式三:闹钟功能;模式四:秒表功能;模式五:倒计时功能。
2.2 数字钟的基本功能部分:包括时、分、秒的显示,手动调时,以及整点报时部分。
基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。
利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。
将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。
具有复位按键1,在时钟模式下按下复位键后对时钟进行复位,复位时间12时00分00秒。
进入手动调时功能时,通过按键调节时间,每按下依次按键2,时钟时针加一,按下按键2一秒未松手,时钟时针每秒钟加十;按键1对分针进行控制,原理与时针相同并通过译码器由七位数码管显示。
从00分00秒开始,数字钟进入整点报时功能(本设计中以一个LED灯代替蜂鸣器,进行报时),亮灯10秒钟进行提示。
2.3多功能数字钟的秒表功能部分:计时围从00分00.00秒至59分59.99秒。
可由复位键0异步清零,并由开关1控制计时开始与停止。
将DE2硬件中的50MHZ晶振经过分频获得周期为0.01秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示2.4多功能数字钟的闹钟功能部分:进入闹钟功能模式后,通过按键2(设定小时)和按键1(设定分钟)设定闹钟时间,当按下按键一秒未松手时,可进行快速设定时间。
当时钟进入闹钟设定的时间(判断时钟的时信号时针,分针分别与闹钟设定的时信号时针、分针是否相等),则以LED灯连续亮10秒钟进行提示,并由开关0控制闹钟的开和关。
2.5 多功能数字钟的倒计时功能部分:可通过按键3(设定分针)和按键2(设定秒针)设定倒计时开始,当按下按键一秒未松手时,可进行快速设定时间。
当没有手动时间设定时,系统默认为60秒倒计时。
倒计时的时钟与数字钟的时钟相同,每迎到一个1s 时钟上升沿,则计数器减一。
计数器减至00时,分钟位、秒钟位保持为00。
倒计时结束时(即00分00秒),倒计时信号灯亮10秒钟进行提示,并由开关2控制倒计时的开始于停止。
本设计通过数据选择器控制译码器,使数码管独立显示,各功能之间互不影响。
当mode=“000”时,时钟功能,则对时钟信号进行译码,数码管显示时钟数据; 当mode=“001”时,时间校准功能,则对时钟信号进行译码,数码管显示闹钟数据; 当mode=“”时,闹钟功能,则对闹钟信号进行译码,数码管显示闹钟信号数据; 当mode=“011”时,秒表功能,则对秒表信号进行译码,数码管显示秒表信号数据。
当mode=“100”时,则倒计时功能,对倒计时钟信号进行译码,数码管显示倒计时信号数据。
系统总体结构框图如下所示:3系统以及模块硬件电路设计3.1分频电路参数计算:666150100010001501015010001000.150101501000100.015010T sT sT s=⨯⨯⨯=⨯=⨯⨯⨯=⨯=⨯⨯⨯=⨯3.2系统硬件电路设计系统硬件模拟图:接口名称 类型(输入/输出)引脚号 说明clkIN PIN_N2 晶振50MHz 时钟输入selectmodeIN PIN_W26 模式选择按键 rstIN PIN_G26 复位按键 addIN PIN_P23 高位设置键 decIN PIN_N23 地位设置键 startnzIN PIN_N25 闹钟开关 startmbIN PIN_N26 秒表开关 startdjsIN PIN_P25 倒计时开关 lednzOUT PIN_AE23 闹钟提示灯 leddjsOUT PIN_AE22 倒计时提示灯 ledbsOUT PIN_Y18 整点报时提示灯 qss[6]OUT PIN_N9 时针高位数码管显示qss[5]OUT PIN_P9 qss[4]OUT PIN_L7 qss[3]OUT PIN_L6 qss[2]OUT PIN_L9 qss[1]OUT PIN_L2 qss[0]OUT PIN_L3 qsg[6]OUT PIN_M4 时针低位数码管显示qsg[5]OUT PIN_M550MHZ KEY[0] KEY[1] KEY[2] KEY[3] Sw[0] Sw[1] LED[djs] LED[nz]分别与数码管相连 Sw[2]LED[bs]4 系统的VHDL设计4.1顶层设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity liyabin is --实体声明,及系统输入与输出port(clk,rst,add,dec,selectmode,startmb,startnz,startdjs:in std_logic;qgs,qgg,qss,qsg,qfs,qfg,qms,qmg:buffer std_logic_vector(6 downto 0);ledbs,lednz,leddjs:out std_logic);end;architecture data of liyabin iscomponent mode --模式循环模块元件例化port(selectmode:in std_logic;mode:buffer std_logic_vector(2 downto 0));end component;component gnxz --功能选择模块元件例化port(zt:in std_logic_vector(2 downto 0);sz1,sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);--时钟显示信号mb1,mb2,mb3,mb4,mb5,mb6:in std_logic_vector(3 downto 0);--秒表显示信号nz3,nz4,nz5,nz6:in std_logic_vector(3 downto 0);--闹钟显示信号djs1,djs2,djs3,djs4,djs5,djs6:in std_logic_vector(3 downto 0);--倒计时显示信号s1,s2,s3,s4,s5,s6,s7,s8:out std_logic_vector(3 downto 0)--输出,送入显示模块用数码管进行显示);end component;component fp --分频模块元件例化port(clk,rst:in std_logic;clk10ms,clk100ms,clk1s:out std_logic);end component;component sz --时钟模块元件例化port(zt:in std_logic_vector(2 downto 0);clk,clk100ms,rst,add,dec:in std_logic;sz1,sz2,sz3,sz4,sz5,sz6:buffer std_logic_vector(3 downto 0);ledbs: out std_logic);end component;component nz --闹钟模块元件例化port(startnz,add,dec,rst,clk,clk100ms:in std_logic;zt:in std_logic_vector(2 downto 0);sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);--时钟显示信号nz3,nz4,nz5,nz6:buffer std_logic_vector(3 downto 0);--闹钟显示信号] lednz:out std_logic --闹钟提示灯输出);end component;component mb --秒表模块元件例化port(zt:in std_logic_vector(2 downto 0);clk,rst,startmb:in std_logic;mb1,mb2,mb3,mb4,mb5,mb6:buffer std_logic_vector(3 downto 0));end component;component djs --倒计时模块元件例化port(rst,startdjs,add,dec,clk,clk100ms:in std_logic;zt:in std_logic_vector(2 downto 0);djs1,djs2,djs3,djs4,djs5,djs6:buffer std_logic_vector(3 downto 0);leddjs:out std_logic);end component;component xs --显示模块元件例化port(xsin:in std_logic_vector(3 downto 0);--xsout:out std_logic_vector(6 downto 0));end component;signal clk10ms,clk100ms,clk1s,clk1m,clk1h :std_logic; --分频脉冲信号级进位脉冲信号signal sz1,sz2,sz3,sz4,sz5,sz6,sz33,sz55:std_logic_vector(3 downto 0);--时钟显示信号signal nz3,nz4,nz5,nz6:std_logic_vector(3 downto 0);--闹钟显示信号signal mb1,mb2,mb3,mb4,mb5,mb6:std_logic_vector(3 downto 0);--秒表显示信号signal djs1,djs2,djs3,djs4,djs5,djs6:std_logic_vector(3 downto 0);--倒计时显示信号signal s1,s2,s3,s4,s5,s6,s7,s8:std_logic_vector(3 downto 0);--显示信号signal zt:std_logic_vector(2 downto 0);begin --结构体------------------------------模式循环模块------------------------------u1:mode port map(selectmode,zt);------------------------------功能选择模块-----------------------------u2:gnxz port map(zt,sz1,sz2,sz3,sz4,sz5,sz6,mb1,mb2,mb3,mb4,mb5,mb6,nz3,nz4,nz5,nz6,djs1,djs2,djs3,djs4,s1,s2,s3,s4,s5,s6,s7,s8);--------------------------------分频模块--------------------------------u3:fp port map(clk,rst,clk10ms,clk100ms,clk1s);--------------------------------时钟模块--------------------------------u4:sz port map(zt,clk1s,clk100ms,rst,add,dec,sz1,sz2,sz3,sz4,sz5,sz6,ledbs); --------------------------------闹钟模块-------------------------------u5:nz port map(startnz,add,dec,rst,clk1s,clk100ms,zt,sz2,sz3,sz4,sz5,sz6,nz3,nz4,nz5,nz6,lednz);--------------------------------秒表模块--------------------------------u6:mb port map(zt,clk10ms,rst,startmb,mb1,mb2,mb3,mb4,mb5,mb6);--------------------------------倒计时模块------------------------------u7:djs port map(rst,startdjs,add,dec,clk10ms,clk100ms,zt,djs1,djs2,djs3,djs4,djs5,djs6,leddjs);--------------------------------------显示模块-----------------------------------------show1: xs port map(s1,qmg);show2: xs port map(s2,qms);show3: xs port map(s3,qfg);show4: xs port map(s4,qfs);show5: xs port map(s5,qsg);show6: xs port map(s6,qss);show7: xs port map(s7,qgg);show8: xs port map(s8,qgs);end; --结束4.2 分频模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fp isport(clk,rst:in std_logic;clk10ms,clk100ms,clk1s:out std_logic);end;architecture data of fp isbegin--50兆分频,产生clk1s,作为始时钟的秒计时脉冲process(clk,rst)variable num:integer range 0 to 49999999;beginif rst='0' thennum:=0;elsif rising_edge(clk) thenif num=49999999 thennum:=0;clk1s<='1';elsenum:=num+1;clk1s<='0';end if;end if;end process;--5兆分频,产生clk100ms(即clk0.1s),作为快速调整时间的脉冲信号process(clk,rst)variable num:integer range 0 to 4999999;beginif rst='0' thennum:=0;elsif rising_edge(clk) thenif num=4999999 thennum:=0;clk100ms<='1';elsenum:=num+1;clk100ms<='0';end if;end if;end process;--5兆分频,产生clk10ms(即clk0.01s)作为秒表计时脉冲process(clk,rst)variable num:integer range 0 to 499999;beginif rst='0' thennum:=0;elsif rising_edge(clk) thenif num=499999 thennum:=0;clk10ms<='1';elsenum:=num+1;clk10ms<='0';end if;end if;end process;end;4.3模式循环模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mode is --实体声明port(selectmode:in std_logic;mode:buffer std_logic_vector(2 downto 0));end;architecture data of mode isbeginprocess(selectmode)beginif rising_edge(selectmode) then --模式循环计数器if mode="100" thenmode<="000";else mode<=mode+1;end if;end if;end process;end;4.4功能选择模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity gnxz is --实体声明port(zt:in std_logic_vector(2 downto 0);sz1,sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);--时钟显示信号mb1,mb2,mb3,mb4,mb5,mb6:in std_logic_vector(3 downto 0);--秒表显示信号nz1,nz2,nz3,nz4,nz5,nz6:in std_logic_vector(3 downto 0);--闹钟显示信号djs1,djs2,djs3,djs4,djs5,djs6:in std_logic_vector(3 downto 0);--倒计时显示信号s1,s2,s3,s4,s5,s6,s7,s8:out std_logic_vector(3 downto 0)--输出,送入显示模块用数码管进行显示);end;architecture data of gnxz isbeginprocess(zt,sz1,sz2,sz3,sz4,sz5,sz6, --选择译码器数日信号nz3,nz4,nz5,nz6,mb1,mb2,mb3,mb4,mb5,mb6,djs1,djs2,djs3,djs4,djs5,djs6)beginif zt="000" then--1时钟显示s1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0001";s8<="1111";elsif zt="001" then--2调整s1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0010";s8<="1111";elsif zt="" then--3闹钟s1<="0000";s2<="0000";s3<=nz3;s4<=nz4;s5<=nz5;s6<=nz6;s7<="0011";s8<="1 111";elsif zt="011" then--4秒表s1<=mb1;s2<=mb2;s3<=mb3;s4<=mb4;s5<=mb5;s6<=mb6;s7<="0100";s8<="1111";elsif zt="100" then--5倒计时s1<=djs1;s2<=djs2;s3<=djs3;s4<=djs4;s5<=djs5;s6<=djs6;s7<="0101";s8<="1 111";elses1<=sz1;s2<=sz2;s3<=sz3;s4<=sz4;s5<=sz5;s6<=sz6;s7<="0001";s8<="1111";end if;end process;end;4.5显示模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity xs isport(xsin:in std_logic_vector(3 downto 0);xsout:out std_logic_vector(6 downto 0));end;architecture data of xs isbeginprocess(xsin) --显示译码器begincase xsin iswhen "0000"=>xsout<="1000000";when "0001"=>xsout<="1111001";when "0010"=>xsout<="0100100";when "0011"=>xsout<="0110000";when "0100"=>xsout<="0011001";when "0101"=>xsout<="0010010";when "0110"=>xsout<="0000010";when "0111"=>xsout<="1111000";when "1000"=>xsout<="0000000";when "1001"=>xsout<="0010000";when others=>xsout<="1111111";end case;end process;end;4.6 时钟及其调整模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sz is --实体声明port(zt:in std_logic_vector(2 downto 0);clk,clk100ms,rst,add,dec:in std_logic;sz1,sz2,sz3,sz4,sz5,sz6:buffer std_logic_vector(3 downto 0);ledbs: out std_logic);end;architecture data of sz issignal clk1m,clk1h,clk1m0,clk1h0:std_logic; --进位脉冲信号signal js,js1:std_logic_vector(0 downto 0); --按键计时信号beginprocess(zt,js,clk100ms,clk1m0,add,dec)--时间校准选择脉冲分针部分beginif zt="001" and js="1" thenclk1m<=clk100ms;elsif zt="001" and js/="1" thenclk1m<=clk1m0 or not dec;else clk1m<=clk1m0;end if;end process;process(zt,js1,clk100ms,clk1h0)--时间校准选择脉冲时针部分beginif zt="001" and js1="1" thenclk1h<=clk100ms;elsif zt="001" and js1/="1" thenclk1h<=clk1h0 or not dec;else clk1h<=clk1h0;end if;end process;process(zt,clk,rst,add,dec) --时钟分针按键计时beginif zt="000" and rst='0' thensz2<="0000";sz1<="0000";elseif zt="001" and dec='0' thenif rising_edge(clk) thenjs<=js+1;if js="1" thenjs<="1";end if;end if;else js<="0";end if;if zt="001" and add='0' then --时钟时针按键计时if rising_edge(clk) thenjs1<=js1+1;if js1="1" thenjs1<="1";end if;end if;else js1<="0";end if;if rising_edge(clk) then --时钟秒针计数器if sz2="0101" and sz1="1001" thensz2<="0000";sz1<="0000";clk1m0<='1';elsif sz1="1001" thensz1<="0000";sz2<=sz2+1;clk1m0<='0';else sz1<=sz1+1;clk1m0<='0';end if;end if;end if;end process;process(zt,clk1m,rst) --时钟分针计数器beginif zt="000" and rst='0' thensz4<="0000";sz3<="0000";elsif rising_edge(clk1m) thenif sz4="0101" and sz3="1001" thensz4<="0000";sz3<="0000";clk1h0<='1';elsif sz3="1001" thensz3<="0000";sz4<=sz4+1;clk1h0<='0';else sz3<=sz3+1;clk1h0<='0';end if;end if;end process;process(clk1h,rst,zt) --时钟时针计数器beginif zt="000" and rst='0' thensz6<="0001";sz5<="0010";elsif rising_edge(clk1h) thenif sz6="0010" and sz5="0011" thensz6<="0000";sz5<="0000";elsif sz5="1001" thensz5<="0000";sz6<=sz6+1;else sz5<=sz5+1;end if;end if;end process;process(sz1,sz2,sz3,sz4) --整点报时beginif sz4="0000" and sz3="0000" and sz2="0000" thenledbs<='1';else ledbs<='0';end if;end process;end;4.7闹钟模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity nz isport(startnz,add,dec,rst,clk,clk100ms:in std_logic;zt:in std_logic_vector(2 downto 0);sz2,sz3,sz4,sz5,sz6:in std_logic_vector(3 downto 0);--时钟显示信号nz3,nz4,nz5,nz6:buffer std_logic_vector(3 downto 0);--闹钟显示信号] lednz:out std_logic);end;architecture data of nz issignal js,js1:std_logic_vector(0 downto 0);--按键计时信号signal clkd,clkg:std_logic; --进位脉冲信号beginprocess(js,clk100ms,dec)beginif js="1" then --分针按键计时clkd<=clk100ms;else clkd<=not dec;end if;end process;process(js1,clk100ms,add) --时针按键计时beginif js1="1" thenclkg<=clk100ms;else clkg<=not add;end if;end process;process(zt,add,dec,rst,clk,clkg,clkd) --闹钟时间手动设置beginif zt="" thenif rst='0' thennz6<="0001";nz5<="0010";nz4<="0000";nz3<="0000"; --闹钟复位12:00:00elseif dec='0' thenif rising_edge(clk) thenjs<=js+1;if js="1" thenjs<="1";end if;end if;else js<="0";end if;if add='0' thenif rising_edge(clk) thenjs1<=js1+1;if js1="1" thenjs1<="1";end if;end if;else js1<="0";end if;if falling_edge(clkd) then --闹钟手动设置分钟if nz4="0101" and nz3="1001" thennz4<="0000";nz3<="0000";elsif nz3="1001" thennz3<="0000";nz4<=nz4+1;else nz3<=nz3+1;end if;end if;if falling_edge(clkg) then --闹钟手动设置时钟if nz6="0010" and nz5="0011" thennz6<="0000";nz5<="0000";elsif nz5="1001" thennz5<="0000";nz6<=nz6+1;else nz5<=nz5+1;end if;end if;end if;end if;end process;process(startnz,nz6,nz5,nz4,nz3,sz2,sz3,sz4,sz5,sz6) ----闹钟判断及提示beginif startnz='1' thenif nz6=sz6 and nz5=sz5 and nz4=sz4 and nz3=sz3 and sz2="0000" then lednz<='1';else lednz<='0';end if;else lednz<='0';end if;end process;end;4.8秒表模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mb is --实体声明port(zt:in std_logic_vector(2 downto 0);clk,rst,startmb:in std_logic;mb1,mb2,mb3,mb4,mb5,mb6:buffer std_logic_vector(3 downto 0));end ;architecture data of mb issignal clk10ms,clk1s,clk1m:std_logic; --进位脉冲信号beginprocess(zt,clk,startmb,rst) --秒表脉冲计数器beginif zt="011" and rst='0' thenmb2<="0000";mb1<="0000";elsif startmb='1' thenif rising_edge(clk) thenif mb2="1001" and mb1="1001" thenmb2<="0000";mb1<="0000";clk1s<='1';elsif mb1="1001" thenmb1<="0000";mb2<=mb2+1;clk1s<='0';else mb1<=mb1+1;clk1s<='0';end if;end if;end if;end process;process(zt,clk1s,rst) --秒表分针计数器beginif zt="011" and rst='0' thenmb4<="0000";mb3<="0000";elsif rising_edge(clk1s) thenif mb4="0101" and mb3="1001" thenmb4<="0000";mb3<="0000";clk1m<='1';elsif mb3="1001" thenmb3<="0000";mb4<=mb4+1;clk1m<='0';else mb3<=mb3+1;clk1m<='0';end if;end if;end process;process(zt,clk1m,rst) --秒表时针计数器beginif zt="011" and rst='0' thenmb6<="0000";mb5<="0000";elsif rising_edge(clk1m) thenif mb6="0101" and mb5="1001" thenmb5<="0000";mb6<="0000";elsif mb5="1001" thenmb5<="0000";mb6<=mb6+1;else mb5<=mb5+1;end if;end if;end process;end;4.9 倒计时模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity djs is --实体声明port(rst,startdjs,add,dec,clk,clk100ms:in std_logic; --按键及脉冲输入zt:in std_logic_vector(2 downto 0); --状态输入djs1,djs2,djs3,djs4,djs5,djs6:buffer std_logic_vector(3 downto 0);--倒计时显示输出leddjs:out std_logic --倒计时提示灯);end;architecture data of djs issignal clk1s,clk1m,clkd,clkg:std_logic; --进位脉冲signal js,js1:std_logic_vector(0 downto 0); --按键计时信号signal s1,s2,s3,s4,s5,s6,ss1,ss2,ss3,ss4,ss5,ss6:std_logic_vector(3 downto 0); --倒计时设置时间信号和倒计时减法器时间信号begin --结构体process(js,clk100ms,dec)--分针按键计时beginif js="1" thenclkd<=clk100ms;else clkd<=not dec;end if;end process;process(js1,clk100ms,add)--时针按键计时beginif js1="1" thenclkg<=clk100ms;else clkg<=not add;end if;end process;process(zt,add,dec,rst,startdjs,clk,clkd,clkg)--倒计时设置时间beginif zt="100" and rst='0' then --异步复位s6<="0000";s5<="0000";s4<="0101";s3<="1001";elsif zt="100" and startdjs='0' thenif dec='0' thenif rising_edge(clk) thenjs<=js+1;if js="1" thenjs<="1";end if;end if;else js<="0";end if;if add='0' thenif rising_edge(clk) thenjs1<=js1+1;if js1="1" thenjs1<="1";end if;end if;else js1<="0";end if;if rising_edge(clkd) thenif s4="0101" and s3="1001" thens4<="0000";s3<="0000";elsif s3="1001" thens3<="0000";s4<=s4+1;else s3<=s3+1;end if;end if;if rising_edge(clkg) thenif s6="0101" and s5="1001" thens6<="0000";s5<="0000";elsif s5="1001" thens5<="0000";s6<=s6+1;else s5<=s5+1;end if;end if;end if;end process;process(zt,startdjs,clk,s1,s2,s3,s4,s5,s6,ss1,ss2,ss3,ss4,ss5,ss6)--倒计时减法器beginif zt="100" and startdjs='0' thenss1<="0000";ss2<="0000";elsif zt="100" and startdjs='1' thenif rising_edge(clk) thenif ss3="0000" and ss4="0000" and ss5="0000" and ss6="0000" then ss2<="0000" ;ss1<="0000";elsif ss2="0000" and ss1="0000" thenss2<="1001";ss1<="1001";clk1s<='1';elsif ss1="0000" thenss1<="1001";ss2<=ss2-1;clk1s<='0';else ss1<=ss1-1;clk1s<='0';end if;end if;end if;end process;process(zt,startdjs,clk1s,s3,s4)--倒计时减法器秒针部分beginif zt="100" and startdjs='0' thenss3<=s3;ss4<=s4;elsif rising_edge(clk1s) thenif ss3="0000" and ss4="0000" and ss5="0000" and ss6="0000" then ss3<="0000" ;ss4<="0000";elsif ss3="0000" and ss4="0000" thenss3<="1001";ss4<="0101";clk1m<='1';elsif ss3="0000" thenss3<="1001";ss4<=ss4-1;clk1m<='0';else ss3<=ss3-1;clk1m<='0';end if;end if;end process;process(zt,startdjs,clk1m,s5,s6)--倒计时减法器分针部分beginif zt="100" and startdjs='0' thenss5<=s5;ss6<=s6;elsif rising_edge(clk1m) thenif ss5="0000" and ss6="0000" thenss5<="0000";ss6<="0000";elsif s5="0000" thenss5<="1001";ss6<=ss6-1;else ss5<=ss5-1;end if;end if;end process;process(zt,startdjs,djs6,djs5,djs3,djs4) --倒计时时间到提示beginif zt="100" and startdjs='1' thenif djs6="0000" and djs5="0000" and djs4="0000" and djs3/="0000"then leddjs<='1';elsif djs2="0000" and djs3="0000" and djs4="0000" and djs1="0000" then leddjs<='0';else leddjs<='0';end if;else leddjs<='0';end if;end process;process(zt,startdjs,s1,s2,s3,s4,s5,s6,ss1,ss2,ss3,ss4,ss5,ss6) --设置时间与减法器时间切换进程beginif zt="100" and startdjs='1' thendjs5<=ss5;djs6<=ss6;djs3<=ss3;djs4<=ss4;djs2<=ss2;djs1<=ss1;else djs5<=s5;djs6<=s6;djs3<=s3;djs4<=s4;djs2<=s2;djs1<=s1;end if;end process;end;5 结论以及结果说明5.1 结论:本设计基于VHDL 硬件描述语言,在windows7(32bit)计算机上运行Quartus II Version 6.0进行编程及仿真,将程序下载带DE2实验平台,主芯片为Cyclone II EP2C35F672C6NK上运行。