实验三:多功能数字钟
多功能时钟设计实验报告
多功能数字钟设计实验报告一.已知条件Quartus II9.1软件DE0实验开发装置二.设计内容及要求用Verilog HDL设计一个多功能数字钟基本功能时、分用数码管显示;秒用LED显示;小时用同步12/24进制;分秒计数器用同步60进制;手动校时、校分。
扩展功能任意闹钟;(1分)小时为12/24可切换。
(1分)报正点数(几点钟LED闪烁几下)。
(1分)另外:十进制加/减可逆计数器设计(p286)。
(2分)三.仿真环境说明软件环境:Quartus II 9.1硬件环境:硬件平台DE0,FPGA芯片为Cyclone ⅢEP3C16F484本实验除时钟源、按键、拨动开关和显示器(数码管)之外的所有数字电路功能都是用VHDL 语言实现的。
这样设计具有体积小、设计周期短(设计过程中即可实现时序仿真)、调试方便、故障率低、修改升级容易等特点。
本设计采用自顶向下、混合输入方式(原理图输入——顶层文件连接和VHDL语言输入——各模块程序设计)实现数字钟的设计、下载和调试.四.系统框图与说明1.数字钟电路系统由主体电路和扩展电路两大部分所组成。
2. 秒计数器计到59后,下一秒到来时,秒计时器满60,接着清零后向分计数器进位;同样分计数器计满60后向小时计数器进位;小时计数器按照“24进制”规律计数,每当小时计到23小时时,当分计数和秒计数分别59,59时,即到23小时59分,59秒时候,时分秒全部清零,从新开始计数。
小时计数器按照“12进制”规律计数,每当小时计到23小时时,当分计数和秒计数分别59,59时,即到12小时59分,59秒时候,时分秒全部清零,小时为1,从新开始计数。
3. 计数器的输出经译码器送显示器,显示器用,4个数码管表示,每两个数码管分别表示小时,分钟。
秒钟用8个LED管显示,各4位用8421码显示一位十进制秒数。
模块:1.counter60: 该模块为60进制计数器,计时输出为秒或分的数值.由3个输入端CP,nCR,EN控制该模块2. counter24: 该模块为24-12转换计数器,计时输出小时的数值. change12_24为1时进行24hour计数,为0时进行12hour计数3.led_clock:此模块为整点报时提供控制信号.4.trans: 它是七段译码器.该模块对应不同的片选信号送出不同的要显示的数码管的译码后的信号。
eda多功能数字钟实验报告
eda多功能数字钟实验报告
《EDA多功能数字钟实验报告》
摘要:
本实验通过对EDA多功能数字钟的组装和测试,探索了数字钟的功能和性能。
实验结果表明,EDA多功能数字钟具有精准的时间显示、多种闹铃设置、温度
和湿度监测等功能,是一款实用且性能稳定的数字钟产品。
引言:
数字钟作为现代生活中不可或缺的家居用品,其功能和性能一直备受关注。
本
次实验选择了EDA多功能数字钟作为研究对象,旨在通过对其组装和测试,深
入了解数字钟的各项功能和性能指标。
实验方法:
1. 组装数字钟:按照产品说明书,将数字钟的各个部件进行组装,并确保连接
牢固。
2. 功能测试:测试数字钟的时间显示、闹铃设置、温度和湿度监测等功能。
3. 性能测试:对数字钟的时间精准度、闹铃响铃声音、温度和湿度监测准确度
等进行测试。
实验结果:
1. 时间显示:数字钟的时间显示精准,误差在1秒以内。
2. 闹铃设置:数字钟支持多组闹铃设置,响铃声音清晰、音量适中。
3. 温度和湿度监测:数字钟的温湿度监测准确度高,与实际环境温湿度相符合。
讨论:
通过本次实验,我们发现EDA多功能数字钟具有精准的时间显示、多种闹铃设
置、温度和湿度监测等功能,性能稳定,符合用户对数字钟的基本需求。
同时,数字钟的组装和操作也相对简单,适合家庭使用。
结论:
EDA多功能数字钟是一款实用且性能稳定的数字钟产品,能够满足用户对数字
钟的基本需求。
在未来的生活中,数字钟将继续扮演重要的角色,为人们的生
活提供便利。
致谢:
感谢实验中提供支持和帮助的老师和同学们。
多功能数字时钟实验报告
重庆交通大学开放性实验报告(A类)项目名称:多功能数字钟电路设计专业班级:电子2班学生姓名:***小组成员:何聪、范瑞目录多功能数字时钟设计 (3)摘要 (3)1.系统原理框图 (4)2.单元电路设计与仿真 (5)2.1时间脉冲产生电路 (5)2.2时间计数器电路 (6)2.3 十二与二十四小时的切换 (8)2.4校时电路 (8)2.5报时电路 (9)2.6电路总图 (9)3.PCB板的制作 (10)3.1 原理图的绘制 (10)3.2 PCB的制作 (11)3.3 PCB图 (12)4.心得与体会 (12)附录原件清单 (13)附件1 仿真电路图........................................... 错误!未定义书签。
附件2 电路原理图........................................... 错误!未定义书签。
附件3 PCB图................................................ 错误!未定义书签。
多功能数字时钟设计摘要数字电子钟实际上是一个对标准频率(1Hz)进行计数的计数电路。
由振荡电路形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果以“时”、“分”、“秒”的数字显示出来。
秒计数器电路计满60 后触发分计数器电路,分计数器电路计满60 后触发时计数器电路,当计满24 小时后又开始下一轮的循环计数。
一般由振荡电路、计数器、数码显示器等几部分组成。
振荡电路:主要用来产生时间标准信号,由NE555 组成的多谐振电路产生,但是因为时钟的精度主要取决于时间标准信号的频率及稳定度,所以一般采用石英晶体振荡器。
分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。
计数器:有了“秒”信号,则可以根据60 秒为 1 分,24 小时为1 天的进制,分别设定“时”、“分”、“秒”的计数器,分别为60 进制,60 进制,24 进制计数器,并输出一分,一小时的进位信号。
数字钟实验报告5篇范文
数字钟实验报告5篇范文第一篇:数字钟实验报告数字钟实验报告班级:电气信息i类112班实验时间:实验地点:指导老师:目录一、实验目的-----------------3二、实验任务及要求--------3三、实验设计内容-----------3(一)、设计原理及思路3(二)、数字钟电路的设计--------------------------4(1)电路组成---------4(2)方案分析---------10(3)元器件清单------11四、电路制版与焊接---------11五、电路调试------------------12六、实验总结及心得体会---13七、组员分工安排------------19一、实验目的:1.学习了解数码管,译码器,及一些中规模器件的逻辑功能和使用方法。
2.学习和掌握数字钟的设计方法及工作原理。
熟悉集成电路的引脚安排,掌握各芯片的逻辑功能及使用方法了解面包板结构及其接线方法。
3.了解pcb板的制作流程及提高自己的动手能力。
4.学习使用protel软件进行电子电路的原理图设计、印制电路板设计。
5.初步学习手工焊接的方法以及电路的调试等。
使学生在学完了《数字电路》课程的基本理论,基本知识后,能够综合运用所学理论知识、拓宽知识面,系统地进行电子电路的工程实践训练,学会检查电路的故障与排除故障的一般方法锻炼动手能力,培养工程师的基本技能,提高分析问题和解决问题的能力。
二、实验任务及要求1.设计一个二十四小时制的数字钟,时、分、秒分别由二十四进制、六十进制、六十进制计数器来完成计时功能。
2.能够准确校时,可以分别对时、分进行单独校时,使其到达标准时间。
3.能够准确计时,以数字形式显示时、分,发光二极管显示秒。
4.根据经济原则选择元器件及参数;5..小组进行电路焊接、调试、测试电路性能,撰写整理设计说明书。
三、实验设计内容1、设计原理及思路 3.1数字钟的构成数字钟一般由振荡器、分频器、计数器、译码器、显示器、较时电路、报时电路等部分组成,这些都是数字电路中应用最广的基本电路3.2原理分析数字钟实际上是一个对标准频率(1hz)进行计数的计数电路。
多功能数字钟电路设计实验报告
多功能数字钟电路设计实验报告实验目的:设计一个多功能数字钟电路,能够显示当前时间,并具备闹钟、秒表和计时等功能。
实验原理:1. 数码管显示:使用4位共阴极数码管进行显示,采用BCD码方式输入。
2. 按键输入:使用按键进行时间的调节和选择功能。
3. 时钟频率:使用晶体振荡器提供系统时钟,通过分频电路控制时钟频率。
实验器材:1. 4位共阴极数码管2. 按键开关3. 74LS90分频器4. 时钟晶体振荡器5. 耐压电容、电阻等元件6. 电路连接线实验步骤:1. 连接电路:根据电路原理图,将数码管、按键开关、74LS90分频器、晶体振荡器等连接起来,注意接线正确。
2. 编写程序:根据实验要求,编写相应的程序,实现时钟、闹钟、秒表和计时等功能。
3. 调试电路:将电路通电并运行程序,观察数码管的显示情况和按键功能是否正常。
4. 测试功能:分别测试多功能数字钟的时钟、闹钟、秒表和计时等功能,确保功能正常。
5. 完善实验报告:根据实验结果和观察情况,完善实验报告,并附上电路原理图、程序代码等。
实验结果:经过调试和测试,多功能数字钟电路能够正常显示时间,并具备时钟、闹钟、秒表和计时功能。
使用按键进行时间调节和功能选择,数码管根据不同功能进行相应的显示。
实验总结:通过本次实验,我掌握了多功能数字钟电路的设计原理和实现方法,并且了解了数码管显示、按键输入、时钟频率控制等相关知识。
实验过程中,我发现电路连接正确性对功能实现起到关键作用,同时合理编写程序也是确保功能正常的重要环节。
通过实验,我对数字电路的设计和实现有了一定的了解,并且培养了动手实践和解决问题的能力。
多功能数字闹钟电路设计实验报告
多功能数字闹钟电路设计实验报告
实验目的:设计一个多功能数字闹钟电路,能够显示时间、设定并响起闹铃。
实验原理:本实验采用数字集成电路实现数字显示和闹铃功能。
数字显示部分采用BCD到七段数码管解码器74LS47和共阴
七段数码管进行实现,闹铃部分采用555定时器集成电路作为发生器,通过驱动蜂鸣器发出声音。
实验仪器:多功能数字闹钟电路实验箱、数字集成电路
74LS47、七段数码管、555定时器集成电路、蜂鸣器、电源、
示波器等。
实验步骤:
1. 按照电路图连接电路。
将74LS47连接到七段数码管,将
555定时器连接到蜂鸣器和电路中相应的电源和地线。
2. 上电并调节电路供电电压。
3. 设定时间。
通过拨动开关和按钮进行时间的设定。
4. 切换闹钟状态。
通过开关切换闹钟的开启和关闭状态。
5. 监测闹钟时间。
借助示波器调整闹钟时间的精度。
6. 监测闹钟声音。
确认蜂鸣器发出的声音符合要求。
实验结果:实验中,我们成功设计并调试出了一个多功能数字闹钟电路。
通过拨动开关和按钮可以设定时间,并且可以通过切换开关来设置闹钟的开启和关闭状态。
实验中监测到的闹钟时间和声音都符合预期要求。
结论:通过本次实验,我们成功设计了一个多功能数字闹钟电路,实现了时间显示和闹铃功能。
实验结果显示该电路的性能良好,具有实用价值。
在实验中我们也学到了关于数字集成电路和定时器集成电路的使用和调试方法。
数字逻辑课程设计实验报告多功能数字钟
数字逻辑课程设计实验报告——多功能数字钟学院:计算机科学技术与通信工程学院班级:0501姓名:白璐学号:30506030182007年1月24 日多功能数字钟课程设计实验报告一.实验目的:1.学会应用数字系统设计方法进行电路设计;2.进一步提高MAX+plus II 10.0 BASELINE软件的开发应用能力;3.培养学生书写综合实验报告的能力。
二.实验要求:1.根据实验任务,选择最佳设计方案,综合运用MAX+plus II 10.0 BASELINE软件的各种设计方法设计出层次分明、结构清楚、电路优化、VHDL语言描述简洁的完整设计文件。
通过仿真直至下载来验证设计的正确性。
三.实验任务及要求1.能进行正常的时、分、秒计时功能(1)用M6M5做24小时计数器的显示器;(2)用M4M3做60分钟计数器的显示器;(3)用M2M1做60秒钟计数器的显示器。
2.能利用实验系统上的按键实现“校时”、“校分”功能(1)按下“SA”键时,计时器迅速递增,并按24小时循环,计满23小时后再回00;(2)按下“SB”键时,计时器迅速递增,并按60分钟循环,计满59分钟后再回00;但不向高位进位。
(3)按下“SC”键后,秒清零。
要求按下“SA”和“SB”均不会产生数字跳变(“SA”、“SB”按键是有抖动的,必须地“SA”、“SB”进行消抖处理, 消抖电路用D触发器构成。
原理:一个触发器CP(64HZ)内,屏蔽所有的抖动脉冲)。
(4)计时(24进制计数器),计分(60进制计数器)、计秒(60进制计数器)模块可由10进制计数器连接构成,也可用VHDL语言完成(可以参考教材P341,例8.2.1 多功能电子钟的设计)。
10进制计数器需自己设计(用VHDL语言,与所做实验74160计数器相同),不能调用系统库。
(5)其他如分频电路、提供报时控制信号、闹时电路等模块用VHDL语言实现。
3.能利用实验板上的扬声器作整点报时(1)当计时到达59’50”、51”、52”、53”、54”、55”、56”、57”、58”、59”鸣叫,鸣叫声频可定为500HZ;(2)到达00分00秒时为最后一声整点报时。
《多功能数字钟》EDA实验报告
《EDA课程设计》实验报告多功能数字钟姓名:学号:联系方式:成绩:1.摘要在当代,随着人类社会进入到高度发达的信息化社会。
信息技术的发展起着越来越大的作用,它几乎涉及到我们日常生活的每个领域,可以说要衡量一个当今社会的发展文明程度信息化技术的发展程度是一个非常重要的指标.众所周知,信息化社会的发展离不开电子信息技术产品的开发、产品品质的提高和改善。
电子信息产品随着科学技术的进步,其电子器件和设计方法更新、换代的速度快的惊人,几乎是日新月异。
然而实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。
为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。
目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
由于基于PLD的EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益提高。
EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时为24小时小时制,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。
总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块,时、分、秒计数和校时程序模块、数据选择器程序模块、显示程序模块和例化程序模块.并且使用QUARTUS II软件进行电路波形仿真,下载到EDA实验箱进行验证。
作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。
多功能数字钟实验
实验名称:多功能数字钟的设计实验名称4-2线优先级编码器加减十进制计数器用FPGA器件和EDA技术实现多功能数字钟的设计实验任务及要求一、4-2线译码器(一)、设计要求:1、用Verilog HDL编写一个4线2线优先编码器。
2、用实验板上的发光二极管或译码显示电路显示结果。
(二)、设计分析:1、优先编码器:允许同时输入两个以上的有效编码信号。
当同时输入几个有效编码信号时,优先编码器能按预先设定的优先级别,只对其中优先权最高的一个进行编码。
2、4线-2线优先编码器:根据轻重缓急,规定好这些控制对象允许操作的先后次序,即优先级别。
识别这类请求信号的优先级别并进行编码的逻辑部件称为优先编码器。
4线-2线优先编码器的功能表如下:(三)、源代码://****** 4-2线译码器******module Yimaqi_42(In,out_coding);input[3:0]In;output[1:0]out_coding;wire[3:0]In;reg[1:0]out_coding;always@(In)begincasez(In)4'b1???:out_coding=2'b11;4'b01??:out_coding=2'b10;4'b001?:out_coding=2'b01;4'b000?:out_coding=2'b00;//default:out_coding=2'b00;endcaseendEndmodule(四)、仿真波形二、十进制加减可逆计数器(一)、设计要求:1、用Verilog HDL编写一个十进制加减可逆计数器。
2、用实验板上的发光二极管或译码显示电路显示结果。
(二)、源代码://****** 十进制加减计数器******module counter (Q,CP,control);input CP,control;output [3:0] Q;reg [3:0] Q;always @(posedge CP)begincase(control)1'b1: if( Q > 4'd8) Q = 4'd0;else Q = Q + 1'd1;1'b0: if( Q < 4'd1) Q = 4'd9;else Q = Q - 1'd1;endcaseendendmodule(三)、仿真波形三、多功能数字钟的设计基本功能∙以数字形式显示时、分、秒的时间;∙小时计数器为同步24进制;∙要求可以手动校时、校分。
多功能数字钟实验报告
电子系统设计创新实验报告题目多功能数字钟的设计学生姓名严娅叶帅殷玉杰学生学号101234153 101234158 101234161专业名称电子信息工程指导教师肖永军2012年12月18 日设计要求:1. 设计一个数字钟,要求准确计时,以数字形式显示时、分的时间。
2. 小时的计时要求12进制(要另加电路指示上午还是下午)或24进制,分要求为60进制。
3. 具有时间校正功能。
4. 扩展具有秒显示和秒校时功能。
摘要数字钟已经成为人们日常生活中不可缺少的必需品,广发应用于家庭及办公室等公共场所,给人们的生活、学习、工作及娱乐带来了极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使得数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用方便,但鉴于单片机的定时器功能也可以完成数字钟的设计,因此进行数字的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器等),再配以相应的软件,达到制作简易数字钟的目的。
硬件部分采用了单片机原理实验室的实验箱进行合理接线调试;软件部分通过keil进行了C程序的修改编译,protues 软件仿真等。
最终在实验箱上实现了与仿真结果相同的实际效果。
时钟电路复位电路AT89C51数码管显示时间校对按键(1)系统的复位电路任何含有计算机的系统,在启动运行时都需要复位,在外界的干扰下出现程序跑飞或者进入死循环的状况时,需要人为低进行复位操作,恢复正常状态。
因此,手动复位是微机子系统的一个基本功能要求。
复位电路如下图1所示:该复位电路由R1和开关K组成,当开关K断开时,单片机RST 端则为高电平,而当开关K1闭合时,RST端接地,变为低电平,此时单片机复位。
eda多功能数字钟实验报告
eda多功能数字钟实验报告EDA多功能数字钟实验报告一、引言数字钟是现代生活中常见的一种时间显示工具,其准确性和便携性使其成为人们生活中不可或缺的一部分。
本实验旨在设计并制作一款多功能数字钟,通过EDA(电子设计自动化)软件进行模拟和仿真,验证其功能和性能。
二、设计原理1. 时钟电路:采用CMOS(互补金属氧化物半导体)技术设计时钟电路,包括时钟发生器、计数器和显示器。
时钟发生器产生稳定的方波信号,计数器根据方波信号进行计数,显示器将计数结果以数字形式显示出来。
2. 功能模块:多功能数字钟除了显示时间外,还应具备日期显示、闹钟设置、温度检测等功能。
为实现这些功能,需要添加相应的模块,如时钟芯片、温度传感器、闹钟电路等。
三、电路设计1. 时钟电路设计:根据设计原理,使用EDA软件进行电路设计,选择合适的元器件和连接方式。
通过仿真验证电路的工作稳定性和准确性。
2. 功能模块设计:根据需求,添加相应的功能模块。
时钟芯片用于精确计时和日期显示,温度传感器用于检测环境温度并显示,闹钟电路用于设置闹钟时间并触发报警。
四、电路实现1. 元器件选取:根据电路设计需求,选择合适的元器件。
时钟芯片应具备高精度和稳定性,温度传感器应具备高灵敏度和准确度,闹钟电路应具备可调节和触发功能。
2. 电路布局:将选取的元器件按照电路设计进行布局,注意元器件之间的连接和布线,避免干扰和短路。
3. 电路连接:根据电路设计进行元器件之间的连接,注意连接的正确性和稳定性。
五、仿真与测试1. 仿真验证:使用EDA软件进行电路仿真,检查电路的稳定性和准确性。
通过仿真结果对电路进行调整和优化,确保其正常工作。
2. 功能测试:对多功能数字钟进行功能测试,包括时间显示、日期显示、温度检测和闹钟设置等。
通过测试结果对电路进行调整和改进,确保其功能的完善和可靠性。
六、实验结果与分析经过仿真和测试,多功能数字钟实现了准确的时间显示、日期显示、温度检测和闹钟设置等功能。
多功能数字钟设计实验报告
P南昌大序《数字电路与逻辑设计实验》实验报告题目数字钟电路设计学院:信息工程学院系电子信息工程专业:__________________________________班级:_____________________________________学号:_____________________________________学生姓名:____________________________________同组同学:_______________________________________指导教师:________________________________递交日期:__________________________多功能数字钟设计一、实验目的1、综合应用数字电路知识,提高逻辑电路设计能力;2、学习使用protel或Altium designer进行电子电路的原理图设计、印制电路板设计:3、学习电路板制作、安装、调试技能和设计流程;4、了解数码管,译码器,555定时器及以下中规模器件的逻辑功能和使用方法。
二、设计任务和设计要求1、设计一多功能数字钟并进行仿真和PCB板制作。
2、基本功能:准确计时,以数字形式显示时、分、秒的时间。
3、扩展功能:校正时间,定时控制,正点报时。
三、设计方案1、数字钟设计方案基本框图如下整点报时闹钟扩展电路 (I)... '2、各模块设计原理 1. 时的设计:时的计数以24小时为周期,按通常的习惯,24小时计数器的计数序列为00, 01,…, 22, 23, 00,…,即当计数到23小时59分59秒时,再来一个秒脉冲,计数器就进到00 时00分00秒。
这样,可利用反馈置数或反馈清零法进行二十四进制计数,本实验采用 74LS161进行设计。
2. 分、秒的设计:分和秒计数器都是模3仁60的计数器。
计数规律为00, 01,…,58, 59, 00,…。
它们 的个位都是十进制,而十位则是六进制。
多功能数字钟实验报告
多功能数字钟实验报告基地班级:设计人:设计时间:指导老师:目录多功能数字钟实验报告 .......................................................................... - 1 -一、实验任务及要求................................................................... - 3 -1.基本功能............................................................................ - 3 -2.拓展功能............................................................................ - 3 -二、实验条件............................................................................. - 3 -1.软件 .................................................................................. - 3 -2.开发板............................................................................... - 3 -三、电路的设计过程................................................................... - 4 -1.工作原理与组成框图......................................................... - 4 -2.单元电路设计................................................................... - 4 - 模块(1)计时与调时电路 ................................................. - 7 -模块(2)12-24小时转换电路:....................................... - 11 -模块(3)显示电路:....................................................... - 12 -模块(4)报时电路:....................................................... - 14 -模块(5)闹钟电路:....................................................... - 17 - 3.总体仿真波形.................................................................. - 24 -四、调试过程............................................................................ - 28 -1. 调试步骤............................................................................ - 30 -2. 调试中遇到的问题及解决办法.............................................. - 30 -3. 最后观察到的实验结果........................................................ - 31 -五、实验的收获、体会与改进建议.............................................. - 32 -一、实验任务及要求用FPGA器件和EDA技术实现多功能数字钟的设计1.基本功能以数字形式显示时、分、秒的时间;小时计数器为同步24进制;要求手动校时、校分和自动校时、校分。
多功能数字钟实习报告——西南交通大学
西南交通大学课程设计报告多功能数字钟设计任务及要求课程设计——多功能数字钟1.设计任务:设计一个多功能数字钟,实现以下功能基本要求:(1).时间的显示与设置(2).闹钟,闹钟提示音为音乐(3).日期的显示与设置(4).秒表2.设计说明(1)SW1功能键用来选择不同的功能模式:•1号功能:时间正常显示•2号功能:时间的调整与设置•3号功能:闹钟的设置与查看•4号功能:日期的正常显示•5号功能:日期的调整与设置•6号功能:秒表功能(2)SW2主要用于闹钟设置、时间的调整与设置、日期的调整与设置中的位置选择按钮,与功能键SW1配合使用,具体功能如下:•2号功能模式,即时间的调整与设置时,用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于调整键SW3在特定位置进行调整。
•3号功能模式,即闹钟的设置与查看时,用作时、分、秒的移位,按一下,将会实现“时-分-秒”的依次移位,便于调整键SW3在特定位置进行调整。
•5号功能模式,即日期的调整与设置时,用作年、月、日的移位,按一下,将会实现“年-月-日”的依次移位,便于调整键SW3在特定位置进行调整。
(3)SW3主要用于闹钟设置、时间调整与设置、日期调整与设置中的调整按钮。
与功能键SW1配合使用,具体功能如下:•2号功能模式,即时间的调整与设置时,用作时、分、秒数字的调整,按一下,将会使得当前调整键SW2选择的位置数字增加1。
•3号功能模式,即闹钟的设置与查看时,用作时、分、秒数字的调整,按一下,将会使得当前调整键SW2选择的位置数字增加1。
•5号功能模式,即日期的调整与设置时,用作年、月、日数字的调整,按一下,将会使得当前调整键SW2选择的位置数字增加1。
(4)3.提示•显示部分可采用动态数码管显示•为避免损坏器件,可编程器件的输入和数码管的输入前需要接入几百欧的电阻限流。
•按键消抖:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
多功能数字钟设计实验报告
多功能数字钟设计实验报告多功能数字钟设计实验报告一、引言数字钟是一种常见的时间显示设备,其简洁明了的显示方式受到了广泛的欢迎。
然而,随着科技的不断发展,人们对于数字钟的功能要求也越来越高。
本实验旨在设计一款多功能数字钟,以满足人们对于时间显示设备的更多需求。
二、设计原理1. 时间显示:数字钟应能准确地显示当前的时间,包括小时、分钟和秒钟。
为了实现精确的时间显示,我们采用了基于晶体振荡器的时钟电路,并结合数码管显示技术,使得时间能够以数字形式直观地呈现。
2. 日期显示:除了时间显示外,数字钟还应具备日期显示的功能。
我们通过添加一个实时时钟模块,可以获取当前的日期信息,并通过数码管显示出来。
3. 闹钟功能:为了提醒用户重要的时间节点,我们在数字钟中加入了闹钟功能。
用户可以设置闹钟的时间,并在到达设定时间时,数字钟会发出声音或震动来提醒用户。
4. 温湿度显示:为了更好地满足用户的需求,我们还在数字钟中添加了温湿度显示功能。
通过接入温湿度传感器,数字钟可以实时监测当前的温度和湿度,并将其显示在数码管上。
5. 其他功能:除了以上功能外,我们还可以根据用户需求进行扩展,如倒计时功能、闪烁效果等。
三、实验步骤1. 硬件设计:根据设计原理,我们需要选择合适的元器件进行电路的搭建,包括晶体振荡器、数码管、实时时钟模块、温湿度传感器等。
2. 电路连接:根据电路原理图,将各个元器件按照正确的连接方式进行连接,确保电路的正常工作。
3. 程序编写:通过编写合适的程序代码,实现数字钟的各项功能。
包括时间显示、日期显示、闹钟功能、温湿度显示等。
4. 调试测试:在完成硬件连接和程序编写后,我们需要对数字钟进行调试测试,确保各项功能的正常运行。
可以通过模拟不同的时间、设置不同的闹钟时间等来测试数字钟的稳定性和准确性。
5. 优化改进:根据实际测试结果,我们可以对数字钟进行优化改进,提高其性能和稳定性。
例如,优化显示效果、增加功能扩展等。
多功能数字时钟实验报告
重庆交通大学开放性实验报告(A类)项目名称:多功能数字钟电路设计专业班级:电子2班学生姓名:***小组成员:何聪、范瑞目录多功能数字时钟设计 (3)摘要 (3)1.系统原理框图 (4)2.单元电路设计与仿真 (5)2.1时间脉冲产生电路 (5)2.2时间计数器电路 (6)2.3 十二与二十四小时的切换 (8)2.4校时电路 (8)2.5报时电路 (9)2.6电路总图 (9)3.PCB板的制作 (10)3.1 原理图的绘制 (10)3.2 PCB的制作 (11)3.3 PCB图 (12)4.心得与体会 (12)附录原件清单 (13)附件1 仿真电路图........................................... 错误!未定义书签。
附件2 电路原理图........................................... 错误!未定义书签。
附件3 PCB图................................................ 错误!未定义书签。
多功能数字时钟设计摘要数字电子钟实际上是一个对标准频率(1Hz)进行计数的计数电路。
由振荡电路形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果以“时”、“分”、“秒”的数字显示出来。
秒计数器电路计满60 后触发分计数器电路,分计数器电路计满60 后触发时计数器电路,当计满24 小时后又开始下一轮的循环计数。
一般由振荡电路、计数器、数码显示器等几部分组成。
振荡电路:主要用来产生时间标准信号,由NE555 组成的多谐振电路产生,但是因为时钟的精度主要取决于时间标准信号的频率及稳定度,所以一般采用石英晶体振荡器。
分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。
计数器:有了“秒”信号,则可以根据60 秒为 1 分,24 小时为1 天的进制,分别设定“时”、“分”、“秒”的计数器,分别为60 进制,60 进制,24 进制计数器,并输出一分,一小时的进位信号。
实验三 实用多功能数字钟
实验三实用多功能数字钟一:实验目的:1) 进一步学习更复杂的EDA熟练项目设计,更的掌握VHDL语言设计。
2) 学习动态数码管的VHDL编程。
3) 更加熟练计时显示、进位和校时的编程方法。
二:实验要求:用Verilog设计一个多功能的数字钟。
(1)计时功能:包括时、分、秒的计时;(2)定时与闹钟功能:能在设定的时间发出闹铃声;(3)校时功能:对时分秒能手动调整以校准时间;(4)整点报时功能:每逢整点,产生“嘀嘀嘀滴—嘟”四短一长的报时音。
三:多功能数字钟源代码:(1)clock 模块module clock (clk50M,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1, led_minu0,led_sec1,led_sec0,alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec); input clk50M,mode,turn,change,mreset;output alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec;output [7:0] led_hour1;output [7:0] led_hour0;output [7:0] led_minu1;output [7:0] led_minu0;output [7:0] led_sec1;output [7:0] led_sec0;reg [1:0] modestate;wire nowmode;wire ischecking;assign {nowmode,ischecking}=modestate;always@(negedge mode)begincase(modestate)2'b00: modestate<=2'b10;2'b10: modestate<=2'b01;2'b01: modestate<=2'b00;default:modestate<=2'b00;endcaseendwire reset,clk_1hz;switch #(8) rmjitter (clk50M,mreset,reset);clk50Mto1 gen1hz(clk50M,clk_1hz);wire [2:0] selcode;bitsel seldecoder (nowmode,ischecking,turn,selcode,reset);wire [3:0] clocktime0,clocktime1,clocktime2,clocktime3,clocktime4,clocktime5; wire clockalarmon;wire [2:0] counterselcode;assign counterselcode=(modestate==2'b01)?selcode:3'b000;counter_time clock_time(clk_1hz,counterselcode,~change,clocktime5,clocktime4, clocktime3,clocktime2,clocktime1,clocktime0,clockalarmon,reset);wire [3:0] alarmtime0,alarmtime1,alarmtime2,alarmtime3;wire alarmon;alarm_time alarm_time(clk_1hz,nowmode,selcode[2:1],change,{clocktime5,clocktime4,clocktime3,clocktime2,clocktime1,clocktime0},{alarmtime3,alarmtime2,alarmtime1,alarmtime0},alarmon,reset);wire voiceout;alarm alarmvoice(clk50M,{clockalarmon,alarmon},voiceout,reset);assign {ld_hour,ld_min,ld_sec}=(ischecking||nowmode)?selcode:3'b000;assign alert=voiceout;reg [3:0] showout2,showout3,showout4,showout5;led led5(showout5,1'b1,led_hour1);led led4(showout4,1'b0,led_hour0);led led3(showout3,1'b1,led_minu1);led led2(showout2,1'b0,led_minu0);led led1(clocktime1,1'b1,led_sec1);led led0(clocktime0,1'b1,led_sec0);alwaysbegin if (nowmode)begin showout5=alarmtime3;showout4=alarmtime2;showout3=alarmtime1;showout2=alarmtime0;endelse beginshowout5=clocktime5;showout4=clocktime4;showout3=clocktime3;showout2=clocktime2;endendassign ld_alert=nowmode;assign ld_check=ischecking;Endmodule********************************************************************* ********************************************************************* (2)alarm_time模块module alarm_time(clk_1hz,enable,sel,inc,basetime,alarmouttime,alarm_on,reset); input clk_1hz,enable,inc,reset;input [1:0] sel;input [4*5-1:0] basetime;output reg alarm_on;output [4*4-1:0] alarmouttime;reg [3:0] hour1,hour0,minu1,minu0;always @(posedge inc or posedge reset)begin if(reset){hour1,hour0,minu1,minu0}<=16'h0;else beginif(enable)beginif(sel==2'b10)begin if ({hour1,hour0}==8'h23) {hour1,hour0}<=8'h00;else if (hour0==9)begin hour0<=0;hour1<=hour1+1'b1; endelse hour0<=hour0+1'b1;endelse if (sel==2'b01)begin if ({minu1,minu0}==8'h59) {minu1,minu0}<=8'h00;else if (minu0==4'h9)beginminu0<=4'h0;minu1<=minu1+4'h1;endelse minu0<=minu0+4'h1;endendendendalwaysbeginif(({hour1,hour0,minu1,minu0}==basetime[(4*5-1):4])&&(basetime[3:0]<2)) alarm_on=1'b1;else alarm_on=1'b0;endassign alarmouttime={hour1,hour0,minu1,minu0};Endmodule********************************************************************* ********************************************************************* (3)Alarm模块module alarm(clk50M,alarmon,alarmout,reset);input [1:0] alarmon;input clk50M,reset;output reg alarmout;reg [15:0] counter_1k;wire clk_1k;assign clk_1k=counter_1k[15];always @(posedge clk50M)begin if (counter_1k==50000) counter_1k<=0;else counter_1k<=counter_1k+1'b1;endwire ddd_du_out,ddd_out;sound_ddd_du ddd_du(clk_1k,alarmon[1],ddd_du_out);sound_ddd ddd(clk_1k,alarmon[0],ddd_out);alwaysbegin if (!reset)begin if(alarmon[0]==1'b1)alarmout=ddd_out;else if (alarmon==2'b10) alarmout=ddd_du_out;else alarmout=0;end else alarmout=0;endEndmodule********************************************************************* ********************************************************************* (4)sound_ddd模块module sound_ddd(clk_1k,on,out);parameter soundspace=300;parameter shortstopspace=200;parameter longstopspace=500;input clk_1k,on;output reg out;reg sound;always@(posedge clk_1k)begin sound<=~sound;endreg [10:0] mscount;always@(posedge clk_1k)begin if (mscount==(soundspace*3+shortstopspace*2+longstopspace-1))mscount<=0;else mscount<=mscount+1'b1;endalways@(negedge clk_1k)begin if(on)begin if((mscount>=0)&&(mscount<soundspace)) out<=sound;else if ((mscount>=soundspace)&&(mscount<(soundspace+shortstopspace))) out<=0;else if((mscount>=(soundspace+shortstopspace))&&(mscount<(soundspace+shortstopspace )+soundspace))out<=sound;else if((mscount>=(soundspace+shortstopspace)+soundspace)&&(mscount<(soundspace+s hortstopspace)*2))out<=0;else if((mscount>=(soundspace+shortstopspace)*2)&&(mscount<((soundspace+shortstopsp ace)*2+soundspace)))out<=sound;else out<=0;endelse out<=0;endendmodule********************************************************************* ********************************************************************* (5)sound_ddd_du模块module sound_ddd_du(clk_1k,on,out);parameter soundspace=300;parameter shortstopspace=200;parameter longstopspace=600;input clk_1k,on;output reg out;reg sound_di,sound_du;always@(posedge clk_1k) sound_di<=~sound_di;always@(posedge sound_di) sound_du<=~sound_du;reg[11:0] mscount;always@(posedge clk_1k)begin if(on)begin if(mscount<(soundspace+shortstopspace)*3+longstopspace+10) mscount<=mscount+1'b1;endelse mscount<=0;endalways@(negedge clk_1k)begin if(on)begin if((mscount>=0)&&(mscount<soundspace))out<=sound_di;else if ((mscount>=soundspace)&&(mscount<(soundspace+shortstopspace)))out<=0;else if((mscount>=(soundspace+shortstopspace))&&(mscount<(soundspace+shortstopspace )+soundspace))out<=sound_di;else if((mscount>=(soundspace+shortstopspace)+soundspace)&&(mscount<(soundspace+s hortstopspace)*2))out<=0;else if((mscount>=(soundspace+shortstopspace)*2)&&(mscount<((soundspace+shortstopsp ace)*2+soundspace)))out<=sound_di;else if((mscount>=(soundspace+shortstopspace)*2+soundspace)&&(mscount<(soundspace +shortstopspace)*3))out<=0;else if((mscount>=(soundspace+shortstopspace)*3)&&(mscount<((soundspace+shortstopsp ace)*3+longstopspace)))out<=sound_du;else out<=0;end endendmodule********************************************************************* ********************************************************************* (6)counter_time模块module counter_time(clk_1hz,check,inc,hour1,hour0,minu1,minu0,sec1,sec0, alarmout,reset);input clk_1hz,inc,reset;input [2:0] check;output [3:0] hour1,hour0,minu1,minu0,sec1,sec0;output reg alarmout;reg clk_1hz_md;wire [6:0] carryclk;reg [5:0] incplus;wire [5:0] carry;wire [3:0] adderout0,adderout1,adderout2,adderout3,adderout4,adderout5;wire [3:0] timerout0,timerout1,timerout2,timerout3,timerout4,timerout5; hexcounter counter_sec0(carryclk[0],reset,4'd9,4'b0,timerout0,carry[0]); hexcounter counter_sec1(carryclk[1],reset,4'd5,4'b0,timerout1,carry[1]); hexcounter counter_minu0(carryclk[2],reset,4'd9,4'b0,timerout2,carry[2]);hexcounter counter_minu1(carryclk[3],reset,4'd5,4'b0,timerout3,carry[3]);wire [3:0] hour0max;assign hour0max=(timerout5==4'h2)?(4'h3):(4'h9);hexcounter counter_hour0(carryclk[4],reset,hour0max,4'b0,timerout4,carry[4]); hexcounter counter_hour1(carryclk[5],reset,4'd2,4'b0,timerout5,carry[5]);assign carryclk[0]=clk_1hz_md|incplus[0];assign carryclk[1]=carry[0]|incplus[1];assign carryclk[2]=carry[1]|incplus[2];assign carryclk[3]=carry[2]|incplus[3];assign carryclk[4]=carry[3]|incplus[4];assign carryclk[5]=carry[4]|incplus[5];alwaysbegin case (check)3'b001: begin clk_1hz_md=0;incplus={5'b00000,inc};end3'b010: begin clk_1hz_md=0;incplus={3'b000,inc,2'b00};end3'b100: begin clk_1hz_md=0;incplus={1'b0,inc,4'b0000};enddefault:begin incplus=6'b000000;clk_1hz_md=clk_1hz;endendcase endalwaysbegin if ((timerout3==0)&&(timerout2==0)&&(timerout1<2)) alarmout=1;else alarmout=0;endassign hour1=timerout5; assign hour0=timerout4;assign minu1=timerout3; assign minu0=timerout2;assign sec1=timerout1; assign sec0=timerout0;Endmodule********************************************************************* ********************************************************************* (7)Hexcounter模块(时、分、秒均用此模块)module hexcounter(clk,set,max,setdata,dataout,carryout);input clk,set;input [3:0] max,setdata;output carryout;output[3:0] dataout;reg[3:0] counter;reg carrybit;assign carryout=carrybit;assign dataout=counter;always@(posedge clk or posedge set)begin if (set)begin counter<=setdata;carrybit<=0;endelse begin if((counter==max)||(counter>max))begin counter<=0;carrybit<=1;endelse begin counter<=counter+1'b1;carrybit<=0;endend endendmodule********************************************************************* ********************************************************************* (8)clk50Mto1模块(产生50MHZ的时钟输入)module clk50Mto1(clk50M,clk1hz);input clk50M;output clk1hz;reg [25:0] counter_1hz;assign clk1hz=counter_1hz[25];always @(posedge clk50M)begin if(counter_1hz==50000000) counter_1hz<=0;else counter_1hz<=counter_1hz+1'b1;endEndmodule********************************************************************* ********************************************************************* (9)Led模块(LED显示模块)module led(datain,dotin,ledout);parameter INWIDTH=4;parameter OUTWIDTH=8;input [INWIDTH-1:0] datain;input dotin;output [OUTWIDTH-1:0] ledout;reg [OUTWIDTH-2:0] dataout;wire dotout;assign ledout[OUTWIDTH-1:1]=dataout;assign ledout[0]=dotout;assign dotout=dotin;always begin case (datain)0: dataout<=7'b1000000; 1: dataout<=7'b1111001;2: dataout<=7'b0100100; 3: dataout<=7'b0110000;4: dataout<=7'b0011001; 5: dataout<=7'b0010010;6: dataout<=7'b0000010; 7: dataout<=7'b1111000;8: dataout<=7'b0000000; 9: dataout<=7'b0010000;10: dataout<=7'b0001000; 11: dataout<=7'b0000011;12: dataout<=7'b1000110; 13: dataout<=7'b0100001;14: dataout<=7'b0000110; 15: dataout<=7'b0001110;default :dataout<=7'b1000000;endcaseendendmodule********************************************************************* ********************************************************************* (10)开关模块module switch(clk,keyin,keyout);parameter COUNTWIDTH=8;wire clk_use;input clk,keyin;output reg keyout;reg [COUNTWIDTH-1:0] counter;assign clk_use=counter[COUNTWIDTH-1];always@(posedge clk) counter<=counter+1'b1;always@(posedge clk_use) keyout<=keyin;endmodule********************************************************************* ********************************************************************* (11)Bitsel模块module bitsel(alarmmode,checkmode,sel,selcode,reset);input alarmmode,checkmode,sel,reset;output reg [2:0] selcode;reg [2:0] check_code;reg [1:0] alarm_code;always@(negedge sel or posedge reset)begin if (reset) check_code<=3'b000;else begincase (check_code)3'b000: check_code<=3'b001;3'b001: check_code<=3'b010;3'b010: check_code<=3'b100;3'b100: check_code<=3'b001;default:check_code<=3'b000;endcaseend endalways @(negedge sel or posedge reset)begin if (reset) alarm_code<=2'b00;else begincase(alarm_code)2'b00: alarm_code<=2'b01;2'b01: alarm_code<=2'b10;2'b10: alarm_code<=2'b01;default:alarm_code<=2'b00;endcaseendendalwaysbegin if(alarmmode^checkmode)begin if (checkmode) selcode=check_code;else selcode={alarm_code,1'b0}; endelse selcode=3'b000;endendmodule四:仿真图分和秒计数器模块仿真波形如下:从仿真波形可知,当计数到59时,下一个时钟上升沿到来时就清零了,并且产生进位信号时计数器模块仿真波形如下:定点报时模块仿真波形:六、设计心得与体会通过本次设计我初步了解并掌握了使用Verilog HDL语言来设计实现数字电路,了解Verilog HDL语言与原理图设计的联系及区别,并更加了解了电子系统设计这门课程,也认识到自己的不足。
多功能数字钟设计实验报告
班级:生物医学工程141班姓名:刘玉奔学号:6103413018 设计性实验项目名称多功能数字钟(一)实验目的1:学习综合且较复杂数字系统设计;2:学习多层次、多模块数字系统设计;3:学习数码管扫描显示电路设计;(二)设计要求完成设计、仿真、调试、下载、硬件测试等环节,在型EDA实验装置上由简单到复杂实现多功能数字钟功能,具体要求如下:1、数码管扫描显示时、分、秒;2、具有正常计时和调时、调分、调秒等校时功能;3、经设置应具有整点报时功能;(三)主要仪器设备1、微机1台2、QuartusII集成开发软件1套3、EDA实验装置1套(四)实验步骤1:确定多功能数字钟的设计模块2:分模块原理图与代码设计3:各模块仿真核实4:实行综合设计5:综合设计仿真6:下载验证7:总结归纳(五)实验数据包括以下几个模块:多路分频(VHDL生成),模60计数器(秒),模60计数器(分),模24计数器(时),模7计数器(日)8个数码管显示(7路有效数据),调时,准点报时A:原理图:图(1):包括分(counter60),时(counter24),调时(adjusttime),日(zscount7)模块图(2):包括多路分频(fenpin),秒(count60),数码管显示(zsdisplay),准点报时(准点报时),控制端(COUNTR),时钟源(1KHz),调分(ADHM),调时(ADJH),调日(ADJD),检测输出(DAY,HH,HL,MH,ML,SH,SL),段显(SEG[6..0]),片选(CS[7..0]),报时(BAOSHI)。
图(3)zsdisplay内部结构原理图:B:各模块仿真:多路分频:输入CLK=1KHz,输出CLK1Hz,CLK2Hz,CLK100Hz,CLK500Hz。
解释:CLK为接入的系统时钟,CLK1Hz用于调分,调日,CLK2Hz用于调时,CLK100Hz,CLK500Hz用于低高音的准点报时。
多功能数字钟(EDA设计)实验报告
多功能数字钟一、实验原理分析通过晶振产生的50MHz的脉冲,用分频器进行分频产生1Hz的脉冲信号,即作为时钟的1s的信号进行计数。
秒钟每计数60秒后产生进位使分钟显示加1,分钟满60循环至0。
为实现手动校准时间功能,可以对分和秒计数器进行加减。
为实现校准时间时候的闪烁,对数码管使用消隐,把数码管的接地端口接一个脉冲信号。
在实验过程中,要注意很多细节,比如进行按键消抖,手动调整时间时不会进位。
二、逻辑分析三、功能模块分析功能模块包括分频模块,时间计数及校准模块,数码管译码显示模块、判决模块和消抖模块1.分频模块该电路由多个70LS90经过分频将由晶振产生的50MHz分频为1Hz方波,供后续时钟电路使用。
这一模块是整个电路的基础。
2.时间计数及校准模块该模块连接至分频模块的信号输出端,以分频模块产生的1Hz 方波作为基础。
1Hz方波与秒同步,以秒为基础,分别实现电子钟中,分与时的运转,即1分钟=60秒,1小时=60分钟的循环运转。
为了修正电子钟在运行过程中产生的一些误差或其他认为错误,另设置校准功能,可以对电子钟的计时进行调整。
其中,此模块的逻辑部分需Verilog语言实现并进行封装。
此模块用到3个十进制计数器、2个六进制计数器和1个三进制计数器。
3.数码管译码显示模块本电子钟采用数码管来显示,可以简单、直观地表现出确切的时间,实现其他配套功能。
且数码管易于操作。
此模块中有四个数码管,每两个数码管分别显示小时与分钟。
由上一模块,即时间计数及校准模块中的时间计数器产生的数值,将其对应的七段码直接传送至相应的数码管译码显示。
4.判决模块该电路判决信号连接至开关,当开关选中数码管某位后,经过判决器令改为停止计数,并开始1秒闪烁,按动按键可实现手动调整。
5.消抖模块通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合▉设计□创新实验日期:10.26_ 实验成绩:实验三:多功能数字钟的设计一、实验目的1、了解数字钟的工作原理。
2、进一步熟悉用V HDL 语言编写驱动七段码管显示的代码。
3、掌握V HDL 编写中的一些小技巧。
二、实验原理多功能数字钟应该具有的功能有:显示时-分-秒、整点报时、小时和分钟可调等基本功能。
首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的作用下进行,这样每来一个时钟信号,秒增加1秒,当秒从59秒跳转到00秒时,分钟增加1分,同时当分钟从59 分跳转到00分时,小时增加1小时,但是需要注意的是,小时的范围是从0~23 时。
在实验中为了显示的方便,由于分钟和秒钟显示的范围都是从0~59,所以可以用一个3位的二进制码显示十位,用一个四位的二进制码(BCD 码)显示个位,对于小时因为它的范围是从 0~23,所以可以用一个 2 位的二进制码显示十位,用4位二进制码(BCD 码)显示个位。
实验中由于七段码管是扫描的方式显示,所以虽然时钟需要的是 1Hz 时钟信号,但是扫描确需要一个比较高频率的信号,因此为了得到准确的1Hz 信号,必须对输入的系统时钟进行分频。
对于整点报时功能,用户可以根据系统的硬件结构和自身的具体要求来设计。
本实验设计的是当进行整点的倒计时5秒时,让L ED 来闪烁进行整点报时的提示。
三、实验内容本实验的任务就是设计一个多功能数字钟,要求显示格式为小时-分钟-秒钟,整点报时,报时时间为5秒,即从整点前5秒钟开始进行报时提示,LED 开始闪烁,过整点后,停止闪烁。
系统时钟选择时钟模块的 10KHz,要得到 1Hz时钟信号,必须对系统时钟进行 10,000 次分频。
调整时间的的按键用按键模块的S1和S2,S1调节小时,每按下一次,小时增加一个小时,S2调整分钟,每按下一次,分钟增加一分钟。
另外用S8 按键作为系统时钟复位,复位后全部显示00-00-00。
实验箱中用到的数字时钟模块、按键开关、LED、数码管与 FPGA 的接口电路,以及数字时钟源、按键开关、LED、数码管与F PGA 的管脚连接在以前的实验中都做了详细说明,这里不在赘述。
四、实验预测结果与现象当设计文件加载到目标器件后,按动“模式”按键使单8字数码管显示“0”,将数字信号源模块的时钟选择为10KHz,数码管开始显示时间,从 00-00-00 开始。
在整点的前5秒的时候,LED 灯模块的 LED1-LED5 开始闪烁。
一旦超过整点,LED停止显示。
按动按键开关的S1、S2小时和分钟开始步进,进行时间的调整。
按下按键开关的S3,显示恢复到00-00-00 重新开始显示时间。
按下k1键改变时间模式,k1=0为24小时制,k1=1为12小时制.五、实验程序----------------------------------------------------------------------------------------------------------------- Title:多功能数字钟-- 参考自网上-- 共分为5个进程-- Data: 2012-10-26-------------------------------------- 进程P1,-- 实现功能为分频。
分别为计数频率和调时频率:-- clk为输入10khz频率,clk1hz、clk10hz为分频后输出频率-- 输入时钟clk,输出分频时钟clk1hz,clk10hzlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity p1 isport(clk: in std_logic;clk1hz:out std_logic);end p1;---------------------------------------------------architecture behave of p1 issignal Clk_Count1 : std_logic_vector(13 downto 0);beginprocess(clk)beginif(Clk'event and Clk='1') thenif(Clk_Count1<10000) thenClk_Count1<=Clk_Count1+1;elseClk_Count1<="00000000000001";end if;end if;end process;Clk1Hz<=Clk_Count1(13);end behave;---------------------------------------------------------------------------------------------------------------------- -- 进程P2-- 实现功能为复位、调时-- 输入分频时钟clk1hz,复位键rst=0时,复位,调时脉冲s1,调分脉冲s2。
-- hour10~sec1为计数当前状态输入-- hour_10~sec_1为调时输出状态;作为计数模块的输入;-- k2为状态控制位,当k2=1时,说明调时模块工作,此时计数模块停止计时,k2=0时,调时模块不工作,此时计数模块照常工作。
-- k1为计时模制控制位,当k1=1时,一天为12小时,k1=0时,一天为24小时。
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity p2 isport( clk1hz:in std_logic;rst :in std_logic;s1,s2:in std_logic;k1:in std_logic;k2:buffer std_logic;hour10,hour1,min10,min1,sec10,sec1:in integer range 0 to 9;hour_10,hour_1,min_10,min_1,sec_10,sec_1 :buffer integer range 0 to 9);end p2;---------------------------------------------architecture behave of p2 isbeginprocess(clk1hz,Rst,s1,s2,k1)beginif(rst='0' or s1='0' or s2='0') then -- 当调时模块中rst,s1,s2有一位有效,则计数模块停止,调时模块的输出作为计数模块的输入。
k2<='1';elsek2<='0';end if;if(Clk1Hz'event and Clk1Hz='1') thenif(Rst='0') thenSEC_1<=0;SEC_10<=0;MIN_1<=0;MIN_10<=0;HOUR_1<=0;HOUR_10<=0;elsif(S1='0') then -- 调节小时。
if(hour_1=9) thenhour_1<=0;hour_10<=hour_10+1;elsif(k1='0' and hour_10=2 and hour_1=3) thenhour_1<=0;hour_10<=0;elsif(k1='1'and hour_10=1 and hour_1=1) thenhour_1<=0;hour_10<=0;elsehour_1<=hour_1+1;end if;elsif(S2='0') then --调节分钟if(min_1=9) thenmin_1<=0;if(min_10=5) thenmin_10<=0;elsemin_10<=min_10+1;end if;elsemin_1<=min_1+1;end if;elsehour_10<=hour10;hour_1<=hour1;min_10<=min10;min_1<=min1;sec_10<=sec10;sec_1<=sec1;end if;end if;end process;end behave;-- 进程p3-- 实现功能为计时library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity p3 isport( Clk1hz : in std_logic; -- 时钟输入k2 : in std_logic; -- 状态标志,当rst、s1、s2都1时为0,否则为1k1 : in std_logic ; -- 时模可变输入信号,当k1=1时,一天12小时,k1=0时,一天为24小时hour_10,hour_1 : in integer range 0 to 9;min_10,min_1 : in integer range 0 to 9;sec_10,sec_1 : in integer range 0 to 9 ;hour1,hour10 : buffer integer range 0 to 9;min10,min1 : buffer integer range 0 to 9;sec10,sec1 : buffer integer range 0 to 9);end p3;------------------------------------------------------architecture behave of p3 isbeginprocess(clk1hz)beginif(k2='1')then -- 当k2=1时,则调时模块p2工作,将调时后的计数状态送给当前计数值sec1<=sec_1;sec10<=sec_10;min1<=min_1;min10<=min_10;hour1<=hour_1;hour10<=hour_10;Else -- 当k2=0时,p2调时模块不工作,此时计数模块p3按正常分频计时if(Clk1hz'event and Clk1hz='1') thenif(sec1=9) thensec1<=0;if(sec10=5) thensec10<=0;if(min1=9) thenmin1<=0;if(min10=5) then -- 分为60进制min10<=0;if(hour1=9) thenhour1<=0;hour10<=hour10+1;elsif(k1='0' and hour10=2 and hour1=3) then -- 当k1=0时,一天24小时hour1<=0;hour10<=0;elsif(k1='1' and hour10=1 and hour1=1)then --当k1=1时,一天12小时hour1<=0;hour10<=0;elsehour1<=hour1+1;end if;elsemin10<=min10+1;end if;elsemin1<=min1+1;end if;elsesec10<=sec10+1;end if;elsesec1<=sec1+1;end if;end if;end if;end process;end behave;---------------------------------------------------------------------------------------------------------------------- -- 进程P4-- 实现功能为整点报时library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity p4 isport(clk1hz:in std_logic; -- 输入时钟信号led:out std_logic_vector(3 downto 0); -- led灯控制信号,作报时用min10,min1,sec10,sec1:in integer range 0 to 9 -- 实现整点报时,59分55秒开始);end p4;-----------------------------------------------------------architecture behave of p4 issignal led_count : std_logic_vector(2 downto 0);signal led_display : std_logic_vector(3 downto 0);beginprocess(Clk1hz)beginif(Clk1hz'event and Clk1hz='1') thenif(min10=5 and min1=9 and sec10=5 and sec1>3) then -- 在59分5秒开始提示led_Count<=led_Count+1;elseled_count<="000";end if;end if;end process;process(led_count)begincase (led_count) iswhen "000"=>led_display<="0000";when "001"=>led_display<="1111";when "010"=>led_display<="0111";when "011"=>led_display<="0011";when "100"=>led_display<="0001";when "101"=>led_display<="1111";when others=>led_display<="0000";end case;led<=led_display;end process;end behave;---------------------------------------------------------------------------------------------------------------- -- 进程P5-- 实现功能为数码管动态扫描显示library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity p5 isport(Clk : in std_logic; -- 输入时钟脉冲SEG_SEL : buffer std_logic_vector(2 downto 0); -- 数码管位选信号hour10,hour1,min10,min1,sec10,sec1:in integer range 0 to 9;Display : out std_logic_vector(6 downto 0) -- 七段显示码);end p5;----------------------------------------------------------architecture behave of p5 issignal Disp_Temp : integer range 0 to 15;signal Disp_Decode : std_logic_vector(6 downto 0);beginprocess(seg_sel)begincase (seg_sel+1) iswhen "000"=>Disp_Temp<=HOUR10;when "001"=>Disp_Temp<=HOUR1;when "010"=>Disp_Temp<=10;when "011"=>Disp_Temp<=MIN10;when "100"=>Disp_Temp<=MIN1;when "101"=>Disp_Temp<=10;when "110"=>Disp_Temp<=SEC10;when "111"=>Disp_Temp<=SEC1;end case;end process;process(Clk)beginif(Clk'event and Clk='1') then --扫描累加seg_sel<=seg_sel+1;Display<=Disp_Decode;end if;end process;process(Disp_Temp) --数码管显示转换begincase Disp_Temp iswhen 0=>Disp_Decode<="0111111"; --0when 1=>Disp_Decode<="0000110"; --1when 2=>Disp_Decode<="1011011"; --2when 3=>Disp_Decode<="1001111"; --3when 4=>Disp_Decode<="1100110"; --4when 5=>Disp_Decode<="1101101"; --5when 6=>Disp_Decode<="1111101"; --6when 7=>Disp_Decode<="0000111"; --7when 8=>Disp_Decode<="1111111"; --8when 9=>Disp_Decode<="1101111"; --9when 10=>Disp_Decode<="1000000"; ---when others=>Disp_Decode<="0000000"; --全灭end case;end process;end behave;六、设计步骤1、将五个模块程序保存在一个工程目录下,分别进行编译,成功后在将其分别生成原理图模块,如图一所示,再在原工程目录下新建一个bdf文件,取名为epx19,保存后按图二所示连接各模块图一图二2、功能仿真(1)、K1=时,一天为12小时制,即计时到11:59:59秒后变为00:00:00,如下图所示(2)、K1=0时为一天24小时,即计时到23:59:59秒后变为00:00:00,如下图所示(3)当s1=0时,调时,且k2=1,表明计时模块停止工作,此时设置k1=0,为24小时制,而当s1=1;s2=1;rst=1时k2=0,此时hour10直接赋值给hour_10,hour1直接赋值给hour_1,图中hour_10与hour_1的值在k2=0时均变为1,分别与hour10,hour1当前值相类似,其余类似。