多功能数字钟
- 格式:doc
- 大小:54.50 KB
- 文档页数:10
多功能数字钟课程设计
1 多功能数字钟课程设计
多功能数字钟课程设计是一个实验探索类的课程,它在激发学生
学习热情和强化学生的发明能力的同时,兼顾他们在电子信息技术领
域的技能训练。
2 课程背景
该课程的背景主要来自近几年电子信息技术的飞快发展和日新月
异的变化,在21世纪,科技的发展发展不断推动着社会的发展。
因此,人们对信息技术人才的要求越来越多,技术和工程人才岗位也在变得
越来越多,而这背后便是科技发展需要更多深入的研究和精深的工程
技术。
3 课程介绍
本课程的主要内容包括:数字信号与系统、单片机编程、数字电
路设计、数字技术应用研究等。
主要让学生掌握多功能数字钟的基本
原理,能够设计制作出各种功能现代化的多功能数字钟。
学生可以在
课堂上讨论各种电子信息工程技术,并根据自己的喜好来实现功能,
比如加入计算温度、日期显示、天气消息显示等功能,同时还可以学
习一些单片机编程语言,拿实际的案例来研究各种电子元器件的组装
和工程设计的流程,从而加深自身的科技能力和创新思维。
4 课程目标
该课程目标旨在培养学生具有独立创新思维、独立完成科技领域及其他领域复杂问题研究解决过程的能力,培养跨学科合作精神,在学习电子信息工程技术的基础上,增强学生在团队合作和沟通能力上的综合素质,提高学生的科技竞技能力,增强学生的社会责任感。
多功能数字钟-电子设计
第一步实现多功能数字钟的基本功能,包括显示当前时间和设置定时
功能。
为了实现这一功能,我们需要使用一个定时器,以实现每秒钟更新
一次时间并显示在LCD屏上,同时实现定时功能。
第二步用一个按钮来切换显示当前时间和定时时间。
为了实现这一功能,我们需要在LCD屏上显示当前时间和定时时间,当按钮按下时,可以
改变当前时间和定时时间的显示。
第三步加入计时功能,使用者可以设置一个计时时间,当计时结束时,会有一个提醒和发出报警声。
为了实现这一功能,我们需要使用一个计数器,计算出时间差,当到达设定的计时时间时,发出报警声或者显示一个
提醒。
第四步增加闹钟功能,使用者可以设置一个闹钟时间,当达到闹钟时
间时,会有一个提醒和发出报警声。
为了实现这一功能,我们需要在指定
的时间段内,获取当前时间,通过一个实时检查程序,来实现闹钟功能,
当到达时间时,发出报警声或者显示一个提醒。
第五步加入天气预报功能,使用者可以查询当前城市的天气情况,以
及未来三天的天气预报。
为了实现这一功能,我们需要使用一个API来获
取天气情况,并将获取的信息在LCD屏上显示出来,方便使用者查询。
电子技术课程设计多功能数字钟学院:专业、班级:姓名:学号:指导老师:2008年12月目录1、设计任务与要求 (2)2、总体框图 (2)3、选择器件 (2)4、功能模块 (3)(1)时钟记数模块 (3)(2)整点报时驱动信号产生模块 (6)(3)八段共阴扫描数码管的片选驱动信号输出模块 (7)(4)驱动八段字形译码输出模块 (9)5、总体设计电路图 (10)(1)仿真图 (10)(2)电路图 (11)(3)管脚图 (11)6、设计心得体会 (12)一、设计任务与要求1、具有时、分、秒记数显示功能,以24小时循环计时。
2、要求数字钟具有清零、调节小时、分钟功能。
3、具有整点报时,整点报时的同时LED灯花样显示。
二、总体框图多功能数字钟总体框图如下图所示。
它由时钟记数模块(包括hour、minute、second 三个小模块)、驱动8位八段共阴扫描数码管的片选驱动信号输出模块(seltime)、驱动八段字形译码输出模块(deled)、整点报时驱动信号产生模块(alart)。
系统总体框图三、选择器件网络线若干/人、共阴八段数码管6个、蜂鸣器、hour(24进制记数器)、minute(60进制记数器)、second(60进制记数器)、alert(整点报时驱动信号产生模块)、seltime(驱动8位八段共阴扫描数码管的片选驱动信号输出模块)、deled(驱动八段字形译码输出模块)。
四、功能模块多功能数字钟中的时钟记数模块、驱动8位八段共阴扫描数码管的片选驱动信号输出模块、驱动八段字形译码输出模块、整点报时驱动信号产生模块。
(1) 时钟记数模块:<1.1>该模块的功能是:在时钟信号(CLK)的作用下可以生成波形;在清零信号(RESET)作用下,即可清零。
VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour isport(clk,reset:in std_logic;daout:out std_logic_vector(5 downto 0));end entity hour;architecture fun of hour issignal count:std_logic_vector(5 downto 0);begindaout<=count;process(clk,reset)beginif(reset='0') thencount<="000000";elsif(clk' event and clk='1') thenif(count(3 downto 0)="1001") thenif(count<16#24#) thencount<=count+7;else count<="000000";end if;elsif(count<16#23#) thencount<=count+1;else count<="000000";end if;end if;end process;end fun;<1.2>VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute isport(clk,clk1,reset,sethour:in std_logic;enhour:out std_logicdaout:out std_logic_vector(6 downto 0));end entity minute;architecture fun of minute issignal count:std_logic_vector(6 downto 0); begindaout<=count;process(clk,reset,sethour)beginif(reset='0') thencount<="0000000";elsif(sethour='0') thenenhour<=clk1;elsif(clk' event and clk='1') thenif(count(3 downto 0)="1001") thenif(count<16#60#) thenif(count="1011001") thenenhour<='1';count<="0000000"; else count<=count+7;end if;elsecount<="0000000";end if;elsif(count<16#60#) thencount<=count+1;enhour<='0';elsecount<="0000000";end if;end if;<1.3>VHDL程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY second ISPORT(clk,reset,setmin:IN STD_LOGIC;enmin:OUT STD_LOGIC;daout:out std_logic_vector(6 downto 0)); END entity second;ARCHITECTURE fun OF second ISSIGNAL count:STD_LOGIC_VECTOR(6 downto 0); BEGINdaout<=count;process(clk,reset,setmin)beginif(reset='0') thencount<="0000000";elsif(setmin='0')thenenmin <=clk;elsif(clk'event and clk='1')thenif(count(3 downto 0)="1001")thenif(count<16#60#)thenif(count="1011001")thenenmin<='1';count<="0000000";ELSE count<=count+7;end if;elsecount<="0000000";end if;elsif(count<16#60#)thencount<=count+1;enmin<='0';elsecount<="0000000";end if;end if;end process;END fun;(2)整点报时驱动信号产生模块该模块功能:在时钟信号(CLK)的作用下可以生成波形,SPEAK输出接扬声器,以产生整点报时发声。
eda多功能数字钟实验报告
《EDA多功能数字钟实验报告》
摘要:
本实验通过对EDA多功能数字钟的组装和测试,探索了数字钟的功能和性能。
实验结果表明,EDA多功能数字钟具有精准的时间显示、多种闹铃设置、温度
和湿度监测等功能,是一款实用且性能稳定的数字钟产品。
引言:
数字钟作为现代生活中不可或缺的家居用品,其功能和性能一直备受关注。
本
次实验选择了EDA多功能数字钟作为研究对象,旨在通过对其组装和测试,深
入了解数字钟的各项功能和性能指标。
实验方法:
1. 组装数字钟:按照产品说明书,将数字钟的各个部件进行组装,并确保连接
牢固。
2. 功能测试:测试数字钟的时间显示、闹铃设置、温度和湿度监测等功能。
3. 性能测试:对数字钟的时间精准度、闹铃响铃声音、温度和湿度监测准确度
等进行测试。
实验结果:
1. 时间显示:数字钟的时间显示精准,误差在1秒以内。
2. 闹铃设置:数字钟支持多组闹铃设置,响铃声音清晰、音量适中。
3. 温度和湿度监测:数字钟的温湿度监测准确度高,与实际环境温湿度相符合。
讨论:
通过本次实验,我们发现EDA多功能数字钟具有精准的时间显示、多种闹铃设
置、温度和湿度监测等功能,性能稳定,符合用户对数字钟的基本需求。
同时,数字钟的组装和操作也相对简单,适合家庭使用。
结论:
EDA多功能数字钟是一款实用且性能稳定的数字钟产品,能够满足用户对数字
钟的基本需求。
在未来的生活中,数字钟将继续扮演重要的角色,为人们的生
活提供便利。
致谢:
感谢实验中提供支持和帮助的老师和同学们。
多功能数字钟电路设计1设计内容简介数字钟是一个简单的时序组合逻辑电路,数字钟的电路系统主要包括时间显示,脉冲产生,报时,闹钟四部分。
脉冲产生部分包括振荡器、分频器;时间显示部分包括计数器、译码器、显示器;报时和闹钟部分主要由门电路构成,用来驱动蜂鸣器。
2设计任务与要求Ⅰ以十进制数字形式显示时、分、秒的时间。
Ⅱ小时计数器的计时要求为“24翻1”,分钟和秒的时间要求为60进位。
Ⅲ能实现手动快速校时、校分;Ⅳ具有整点报时功能,报时声响为四低一高,最后一响为整点。
Ⅴ具有定制控制(定小时)的闹钟功能。
Ⅵ画出完整的电路原理图3主要集成电路器件计数器74LS162六只;74LS90三只;CD4511六只;CD4060六只;三极管74LS191一只;555定时器1只;七段式数码显示器六只,74LS00 若干;74LS03(OC) 若干;74LS20 若干;电阻若干,等4设计方案数字电子钟的原理方框图如图(1)所示。
该电路由秒信号发生器、“时,分,秒”计数器、译码器及显示器、校时电路、整点报时电路、闹钟定时等电路组成。
秒信号产生器决定了整个计时系统的精度,故用石英晶体振荡器加分频器来实现。
将秒信号送入“秒计时器”,“秒计时器”采用六十进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用六十进制计数器,每60分钟,发出一个“时脉冲”,该信号经被送到“时计数器”作为“时计数器”的时钟脉冲,而“时计数器”采用二十四进制计数器,实现“24翻1”的计数方式,可实现对一天二十四小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态通过七段式显示译码器译码,通过刘伟LED 七段显示器显示出来。
整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后触发一音频发生器实现整点报时,定时电路与此类似。
校时电路是用“时”、“分”、“秒”显示数5电路设计5.1秒信号发生器秒信号发生器是数字钟的核心部分,它的精度和稳定度决定了数字钟的质量,通常用晶体整荡器产生的脉冲经过整形、分频获得1 Hz的秒脉冲。
文献综述(周波电子信息工程 04021026528)1.多功能数字钟的工作原理随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求.现代的数字钟不仅需要数字电路技术而且需要模拟电路技术和单片机技术,增加了数字钟的功能.其电路可以由实时时钟模块、环境温度检测模块、人机接口模块、报警模块等部分组成。
利用软件编程尽量做到硬件电路简单稳定,减小电磁干扰和其他环境干扰,充分发挥软件编程的优点,减小因元器件精度不够引起的误差,但是数字钟还是可以改进和提高如选用更精密的元器件。
但与机械式时钟相比已经具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。
数字钟是采用数字电路实现对月,日,时,分,秒。
数字显示的计时装置,工作时,振荡器产生频率稳定的高频脉冲信号,作为数字钟的时间基准,再经过分频器分频,得到标准秒脉冲.秒脉冲送入计数器进行计数,秒计数器满60后向分计数器进位,分计数器计满60后向小时进位,而小时计数器按照“24翻1”规律计天数,日计数器可按照“30翻1”规律计月,月则为12进制.计数器的输出分别经译码器送显示器显示。
计时出现误差可用校时电路予以校准,而当计时达到整点时系统会发出四低一高的鸣叫,最后一声恰为整点。
广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义2.钟表的发展历史人类究竟从何时开始,有了“时间”的概念?人类的远祖最早从天明天暗知道时间的流逝。
大约六千年前,“时钟”第一次登上人类历史的舞台:日晷在巴比伦王国诞生了。
多功能电子数字钟设计数字钟在日常生活中最常见, 应用也最广泛。
本文主要就是设计一款数字钟, 以89C52单片机为核心, 配备液晶显示模块、时钟芯片、等功能模块。
数字钟采用24小时制方式显示时间, 定时信息以及年月日显示等功能。
文章的核心主要从硬件设计和软件编程两个大的方面。
硬件电路设计主要包括中央处理单元电路、时钟电路、人机接口电路、信号处理电路、执行电路等几部分组成。
软件用C语言来实现, 主要包括主程序、键盘扫描子程序、时间设置子程序等软件模块。
关键词单片机液晶显示器模块数字钟一硬件电路设计及描述;1.MCS-51单片机单片机是在一块硅片上集成了各种部件的微型计算机。
这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。
8051单片机的结构特点有以下几点: 8位CPU;片内振荡器及时钟电路; 32根I/O线;外部存储器ROM和RAM;寻址范围各64KB;两个16位的定时器/计数器; 5个中断源, 2个中断优先级;全双工串行口。
定时器/计数器8051内部有两个16位可编程定时器/计数器, 记为T0和T1。
16位是指他们都是由16个触发器构成, 故最大计数模值为2 -1。
可编程是指他们的工作方式由指令来设定, 或者当计数器来用, 或者当定时起来用, 并且计数(定时)的范围也可以由指令来设置。
这种控制功能是通过定时器方式控制寄存器TMOD来完成的。
在定时工作时, 时钟由单片机内部提供, 即系统时钟经过12分频后作为定时器的时钟。
技术工作时, 时钟脉冲由TO和T1输入。
中断系统8051的中断系统允许接受五个独立的中断源, 即两个外部中断申请, 两个定时器/计数器中断以及一个串行口中断。
外部中断申请通过INTO和INT1(即P3.2和P3.3)输入, 输入方式可以使电平触发(低电平有效), 也可以使边沿触发(下降沿有效)。
2.8051的芯片引脚如图1-2所示VCC: 供电电压。
多功能数字钟设计实验报告院系:电子与通信工程学院:郭世康班级:1301学号:U202113639指导教师:唐祖平一、实验目标掌握可编程逻辑器件的应用开发技术——设计输入、编译、仿真和器件编程熟悉EDA软件使用掌握Verilog HDL设计方法分模块、分层次数字系统设计二、实验容要求根本功能能显示小时、分钟、秒钟〔时、分用显示器,秒用LED〕能调整小时、分钟的时间提高要求任意闹钟;〔1分〕小时为12/24进制可切换〔1分〕报正点数〔几点钟LED闪烁几下〕〔1分〕三、实验条件Xilinx工程环境,win7操作系统,BASYS2实验板。
四、实验设计1.设计分析数字钟大体上由2个60进制计数器,1个24进制计数器构成,中间有数据选择器进展连接。
为实现提高功能,还需12进制计数和整点判断模块。
下列图为数字钟层次构造图。
2. 实验原理振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,再经分频器输出标准秒脉冲。
秒计数器计满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按24或12进制规律计数。
计数器的输送译码显示电路,即可显示出数码〔即时间〕。
计时出现误差时可以用校时电路进展校时和校分。
小时显示〔12\24〕切换电路、仿电台报时、定时闹钟为扩展电路,只有在计时主体电路正常运行的情况下才能进展功能扩展。
本实验采用Verilog HDL进展描述,然后用FPGA/CPLD实现,使用部50MHz 晶振作为时钟电路。
3. 逻辑设计实现上述功能的Verilog HDL 程序如下。
实现根本功能的程序分为两层次四个模块,底层有3个模块构成,即6进制计数器模块,10进制计数器模块和24进制计数器模块,顶层有一个模块,他调用底层的3个模块完成数字中的计时功能。
moduletimeclock(Hour,Minute,Second,CP,nCR,EN,Adj_Min,Adj_Hour,number,Light,clk,temp,c hange,AMTM,dingdong);output [7:0] Hour,Minute,Second;output [3:0] Light,temp;output [6:0] number;output clk,AMTM,dingdong;//clk为分频之后的时钟信号,频率为1Hz,AMTM为24进制转换12进制时说明上下午的变量,dingdong为整点报时时的闪烁信号。
电子综合设计多功能数字钟报告报告内容如下:一、设计目的和原理多功能数字钟是一种能够显示时间,并具有闹钟、计时、倒计时等功能的电子设备。
本设计的目的是通过FPGA实现一个多功能数字钟的功能,以实现时间的显示和闹钟的设置功能。
二、设计方案和实现1.硬件设计方案:本设计使用FPGA作为主控芯片,使用七段数码管作为显示器,通过与FPGA的IO口连接来实现时间的显示功能。
同时,使用按键作为输入进行功能的选择和设置。
2.硬件连接:将FPGA的IO口连接到七段数码管的控制端,通过IO口输出相应的数字信号来控制数码管的亮灭。
将按键连接到FPGA的IO口,通过IO口输入按键的信号。
此外,还需要连接一个晶振电路来提供时钟信号。
3.软件设计方案:本设计使用VHDL语言进行程序设计,通过状态机来实现多功能数字钟的功能。
具体实现包括时间的显示、闹钟的设置和启动、计时和倒计时功能的实现。
通过按键的输入来切换不同的状态,实现不同功能的切换和设置。
4.软件实现具体步骤:(1)定义状态机的状态,包括时间显示、闹钟设置、计时和倒计时等状态。
(2)在时间显示状态下,通过FPGA的IO口输出相应的数字信号来控制七段数码管的亮灭,实现时间的显示。
(3)在闹钟设置状态下,通过按键的输入来设置闹钟时间,并将设置好的时间保存在寄存器中。
(4)在计时和倒计时状态下,通过按键的输入来实现计时和倒计时功能,并通过七段数码管的显示来实时显示计时和倒计时的时间。
以下为本设计的完整程序代码:```vhdl--时钟频率--定义状态signal state : state_type;--定义时钟、按键和数码管信号signal clk : std_logic;signal key : std_logic_vector(1 downto 0);signal seg : std_logic_vector(6 downto 0);--闹钟时间寄存器signal alarm_hour_reg : std_logic_vector(5 downto 0);signal alarm_min_reg : std_logic_vector(5 downto 0);--计时和倒计时寄存器signal count_up_reg : std_logic_vector(23 downto 0); signal count_down_reg : std_logic_vector(23 downto 0); signal count_down_flag : std_logic := '0';beginclock : processbeginwhile true loopclk <= '0';wait for 10 ns;clk <= '1';wait for 10 ns;end loop;end process;key_scan : process(clk)beginif rising_edge(clk) thenkey <= key_scan_func; -- 按键扫描函数end if;end process;fsm : process(clk, key)beginif rising_edge(clk) thencase state isif key = "10" then -- 第一个按键按下state <= set_alarm;elsif key = "01" then -- 第二个按键按下state <= count_up;end if;when set_alarm =>seg <= set_alarm_func; -- 闹钟设置函数if key = "00" then -- 两个按键同时按下elsif key = "01" then -- 第一个按键按下state <= count_up;end if;when count_up =>seg <= count_up_func; -- 计时函数if key = "00" then -- 两个按键同时按下elsif key = "10" then -- 第二个按键按下state <= count_down;count_down_flag <= '1';end if;when count_down =>seg <= count_down_func; -- 倒计时函数if key = "00" then -- 两个按键同时按下count_down_flag <= '0';elsif key = "01" then -- 第一个按键按下state <= count_up;count_down_flag <= '0';end if;end case;end if;end process;--数码管信号和显示模块的连接display : entity work.seg_displayport mapclk => clk,seg => segend architecture;```四、总结与展望通过FPGA实现多功能数字钟的设计,在硬件和软件的配合下,实现了时间的显示和闹钟的设置功能。
多功能数字钟多功能数字钟是一种具有多种功能的现代化钟表。
它不仅能够显示准确的时间,还可以实现其他实用的功能,使人们的生活更加方便和舒适。
下面将介绍它的几个主要功能。
首先,多功能数字钟能够准确显示时间。
它采用数字显示屏,清晰明了,无论白天还是晚上,都能够清楚地读取时间。
显示屏上通常有四个或六个数字,分别代表小时和分钟,而且还有一个显示秒数的功能。
这样,我们可以通过一眼就知道现在的具体时间,无需再查看手机或手表。
其次,多功能数字钟可以设置多个闹钟。
人们可以根据自己的需要,设置不同的闹钟,以满足不同的时间要求。
比如,可以设置一个早上的闹钟来叫醒自己,还可以设置一个晚上的闹钟来提醒自己休息。
这样,我们不仅能够准时起床,还能够提高工作和生活的效率。
此外,多功能数字钟还可以用作倒计时器。
我们可以根据自己的需要,设置倒计时的时间,比如煮饭、做家务或者做运动。
当时间到达设定值时,多功能数字钟会发出警报声提醒我们。
这样,我们就不用担心忘记时间,可以更好地掌控自己的时间安排。
多功能数字钟还具有温度和湿度显示功能。
它可以显示当前的室内温度和湿度,帮助我们了解室内的环境条件。
通过这个功能,我们可以根据温湿度的变化,进行合理的调控,提高室内的舒适度。
最后,多功能数字钟还可以充当夜灯。
在夜晚,我们可以通过多功能数字钟的设置,将其调整为柔和的灯光状态,提供足够的照明。
这样,我们不用开启强光的灯具,仍然可以看清楚周围的环境,不会打扰到他人的休息。
综上所述,多功能数字钟拥有准确显示时间、设置多个闹钟、使用倒计时器、显示温湿度以及充当夜灯等多种实用功能。
它是一种方便、实用并且综合性很强的钟表,能够满足人们的不同需求,提高生活的便利性和舒适度。
实验十一多功能数字钟一、实验目的1.学习系统设计方法;2. 设计并实现一个数字钟。
二、设计要求1.正常模式时,采用24小时制。
不但显示时、分、秒,而且有上、下午显示。
用A表示上午,P表示下午。
2.手动校准电路。
按动时校准键HOUR,将电路置于校时状态,则计时电路可用手动方式校准,每接一下校时键,时钟计数器加1;按动分方式键MINT,将电路置于校分状态,以同样方式手动校分。
3.整点报时。
仿中央人民广播电台整点报时信号,从59分50秒起每隔2秒钟发出一次低音(512Hz)“嘟”信号(信号鸣叫持续时间1秒,间隙1秒,连续5次,到达整点(00分00秒时),发一次高音(1024 HZ)“哒”信号(信号持续时间l秒。
4.闹时功能。
接下置闹方式键CKSET,使电路工作于预置状态,此时显示器与时钟脱开,而与预置计数器相连,利用前面手动校时、校分方式进行预置,预置后回到正常模式。
当计时计至预置的时间时,蜂鸣器发出闹钟信号,时间为一分钟,闹铃信号可以用开关键CLOSE“止闹”。
正常情况下此开关键释放。
三、设计提示1.数字钟的功能实际上是对秒信号计数。
实验板上可提供不同的时钟信号,分频后可产生秒时钟。
数字钟在结构上可分为两个部分:计数器和显示器。
计数器又可分为秒计数器、分计数器和小时计数器。
秒计数器和分钟计数器由6进制和10进制计数器构成,小时计数器较复杂,需要设计一个24(或12)个状态的状态机实现。
显示电路用6位扫描数码显示器,它的扫描时钟可以使用1KHz或10kHz时钟。
分钟和小时的调整用两个按键开关实现。
秒输入信号用底板上时钟信号分频后得到。
2.闹铃信号与准点报时信号可取自实验板上的振荡信号1024Hz 和2048 Hz。
3.校时、校分信号可用实验板上的振荡信号128Hz分频到8Hz 后做为快速调整时钟输入。
校时时每按一次键可以伴以短促的音响。
4.时、分、秒显示之间,可利用数码管中的小数点区分,在正常计时情况下,分、秒之间的小数点也可闪动。
5.设计方框图如下图所示:附录十:多功能数字钟设计的VHDL描述1、通用计数器的VHDL描述LIBRARY ieee;USE ieee.std_logic_1164.all;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter ISGENERIC( count_value: INTEGER:=9);PORT(clk,clr,en : IN STD_LOGIC;co : OUT STD_LOGIC;count : OUT INTEGER RANGE 0 TO count_value); END counter;ARCHITECTURE a OF counter ISSIGNAL cnt : INTEGER RANGE 0 TO count_value; BEGINPROCESS (clk)BEGINIF clr = '1' THENcnt <= 0;ELSIF (clk'EVENT AND clk = '1') THENIF en = '1' THENIF cnt = count_value THENcnt <= 0;ELSEcnt <= cnt + 1;END IF;END IF;END IF;END PROCESS;co<=’1’ when cnt= count_value and en = ‘1’ else ‘0’;count <= cnt;END a;2、数字钟的VHDL描述LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;entity TIMER isPORT(scanclk,reset_in,adj_h_in,adj_m_in,set,close: in std_logic;led_out: out std_logic_vector(6 downto 0);scan_out: out integer range 0 to 5;sound_out: out std_logic;point_out: out std_logic );end entity;architecture rtl of TIMER ISsignal scan: integer range 0 to 5;signal clk1s: std_logic;signal sound,sound1,sound2,sound3: std_logic;signal reset,adj_h,adj_m: std_logic;signal c_h_en, c_mh_en, c_ml_en, c_sh_en : std_logic;signal c_h_en1, c_ml_en1 : std_logic;signal c_mh_en1 : std_logic;signal s_h_en, s_mh_en, s_ml_en : std_logic;signal enable,disable: std_logic;signal s_mh,c_mh,mh,sh: integer range 0 to 5;signal cnt: std_logic_vector( 10 downto 0);signal dy : std_logic;signal hh,hl,ml,sl: integer range 0 to 9;signal s_ml,c_ml: integer range 0 to 9;signal c_h,s_h,h: integer range 0 to 11;signal hex: integer range 0 to 10;signal led: STD_LOGIC_VECTOR (6 downto 0);component counter ISGENERIC( count_value: INTEGER);PORT( clk,clr,en : IN STD_LOGIC;co : OUT STD_LOGIC;count : OUT INTEGER RANGE 0 TO count_value);END component;BEGIN----------------- counter part -------------------generat_1s_clock: PROCESS (scanclk)BEGINIF (scanclk'EVENT AND scanclk = '1') THENcnt <= cnt + 1;END IF;clk1s <= cnt(10);END PROCESS;PROCESS (clk1s,reset)BEGINIF reset = '1' THENdy<='0';ELSIF (clk1s'EVENT AND clk1s = '1') THENdy <= not dy;END IF;END PROCESS;enable<='1';disable<='0';reset<=not reset_in;adj_m<=not adj_m_in;adj_h<=not adj_h_in;CNT1S: countergeneric map( count_value => 9)portmap(clk=>CLK1s,clr=>reset,en=>enable,co=>c_sh_en,count=>sl);CNT10S: countergeneric map( count_value => 5)portmap(clk=>clk1s,clr=>reset,en=>c_sh_en,co=>c_ml_en1,count=>sh );CNT1M: countergeneric map( count_value => 9)portmap(clk=>clk1s,clr=>disable,en=>c_ml_en,co=>c_mh_en1,count= >c_ml);CNT10M: countergeneric map( count_value => 5)portmap(clk=>clk1s,clr=>disable,en=>c_mh_en,co=>c_h_en1,count=> c_mh);CNT_H: countergeneric map( count_value => 11)port map(clk=>clk1s,clr=>disable,en=>c_h_en,count=>c_h);SET1M: countergeneric map( count_value => 9)portmap(clk=>clk1s,clr=>disable,en=>s_ml_en,co=>s_mh_en,count=> s_ml);SET10M: countergeneric map( count_value => 5)port map(clk=>clk1s,clr=>disable,en=>s_mh_en,count=>s_mh);SET_H: countergeneric map( count_value => 11)port map(clk=>clk1s,clr=>disable,en=>s_h_en,count=>s_h);s_ml_en <= set and adj_m;s_h_en <= set and adj_h;c_ml_en <= (not set and adj_m) or (c_ml_en1 and c_sh_en);c_mh_en <= (c_mh_en1 and c_ml_en);c_h_en <= (not set and adj_h) or (c_h_en1 and (c_ml_en1 andc_sh_en));----------------- compare part -------------------sound1 <= cnt(0) when s_ml=c_ml and s_mh=c_mh and s_h=c_h else '0';sound2 <= scanclk when c_ml=0 and c_mh=0 and sh=0 and sl=0 and clk1s='1' else '0';sound3 <= cnt(0) when c_ml=9 and c_mh=5 and sh=5 and dy='0' and clk1s='1' else '0';sound<=sound1 or sound2 or sound3;sound_out <= sound when close = '0' else '0';----------------- select part -------------------hh<=1 when h>=10 else 0;hl<=(h-0) when h<10 else (h-10);h<=c_h when set = '0' else s_h;mh<=c_mh when set = '0' else s_mh;ml<=c_ml when set = '0' else s_ml;----------------- display part -------------------process (scanclk)beginif scanclk'event and scanclk='1' thenif scan = 5 thenscan<=0;elsescan <= scan + 1;end if;end if;end process;with scan selecthex<=hh when 5,hl when 4,mh when 3,ml when 2,sh when 1,sl when others;with scan selectpoint_out <='0' when 5,clk1s when 4,'0' when 3,clk1s when 2,'0' when 1,'0' when others;led_out<= NOT led;scan_out<=scan;with hex selectled<= "1111001" when 1, --1"0100100" when 2, --2"0110000" when 3, --3"0011001" when 4, --4"0010010" when 5, --5"0000010" when 6, --6"1111000" when 7, --7"0000000" when 8, --8"0010000" when 9, --9"1000000" when 0, --0"1111111" when others; end rtl;。