课程设计电子钟闹铃文档格式.docx

上传人:b****2 文档编号:14630447 上传时间:2022-10-23 格式:DOCX 页数:17 大小:19.72KB
下载 相关 举报
课程设计电子钟闹铃文档格式.docx_第1页
第1页 / 共17页
课程设计电子钟闹铃文档格式.docx_第2页
第2页 / 共17页
课程设计电子钟闹铃文档格式.docx_第3页
第3页 / 共17页
课程设计电子钟闹铃文档格式.docx_第4页
第4页 / 共17页
课程设计电子钟闹铃文档格式.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

课程设计电子钟闹铃文档格式.docx

《课程设计电子钟闹铃文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计电子钟闹铃文档格式.docx(17页珍藏版)》请在冰豆网上搜索。

课程设计电子钟闹铃文档格式.docx

1、顶层文件图:

(见下页)

2、各模块的解释:

(1)、7个输入量clk_1khz、clk_1hz、key_slt、key_alarm、sec_set、min_set、hour_set:

其中clk_1khz为闹铃模块提供时钟,处理后能产生“嘟”、“嘀”和变化的闹铃声音;

clk_1hz为计时模块提供时钟信号,每秒计数一次;

key_slt选择设置对象:

定时或正常时间;

key_alarm能够开启和关闭闹铃;

sec_set、min_set、hour_set用于设置时间或定时,与key_slt相关联。

各按键输出为脉冲信号。

(2)、CNT60_A_SEC模块:

这个模块式将clk_1hz这个时钟信号进行60进制计数,并产生一个分钟的触发信号。

该模块能将当前计数值实时按BCD码的格式输出。

将该输出接到两位LED数码后能时时显示秒的状态。

通过alarm_clk可以选择设置对象为时间还是定时值。

在设置时间模式上,key上的一个输入脉冲可以将clk的输入信号加一。

在设置定时模式上,key上的脉冲只修改定时值,不影响时间脉冲clk的状态。

同时该模块具有两个输出口out_do、out_di来触发整点报时的“嘟”、“嘀”声音。

(3)、CNT60_A_MIN模块:

这个模块式将CNT60_A_SEC的输出信号进行60进制计数,并产生一个时位的触发信号。

将该输出接到两位LED数码后能时时显示分的状态。

同时该模块具有三个输出口out_do、out_di、out_alarm来触发整点报时的“嘟”、“嘀”、闹铃声音。

(4)、CNT24_A_HOUR模块:

这个模块式将CNT60_A_MIN的输出信号做24进制计数。

将该输出接到两位LED数码后能时时显示时的状态。

同时该模块具有一个输出口out_alarm来触发整点报时的闹铃声音。

(5)、PWM_OUT模块:

该模块为PWM产生模块,通过EN可开启和关闭PWM输出。

模块根据CLK信号二分频产生的高低音,并组合,能输出三种声音状态——“嘟”、“嘀”、闹铃。

而该三种声音要被秒、分、时的输出触发才能输出PWM。

(二)系统各个模块的VHDL程序:

(1)、CNT60_A_SEC模块:

程序源代码如下:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitycnt60_a_secis

port(

clk,clr,enb:

instd_logic;

--clk:

时钟输入信号,clr:

清零端,enb:

使能端

key:

--输入按键脉冲,调整闹铃定时或时间

alarm_clk:

--1:

alarm0:

clk--设置模式选择:

闹铃调节模式、时间调节模式

qout_sl:

outstd_logic_vector(3downto0);

--显示输出秒的低位

qout_sh:

--显示输出秒的高位

co:

outstd_logic;

--进位输出,触发分计数模块

out_do:

--在整点报时中输出“嘟”触发信号

out_di:

outstd_logic--在整点报时中输出“嘀”触发信号

);

end;

architectureaofcnt60_a_secis

signalqout2_l:

std_logic_vector(3downto0);

signalqout2_h:

signalalarm_l:

signalalarm_h:

signalclk1,clk2,tclk,aclk,ac_slt:

std_logic;

begin

process(alarm_clk)--当该端口输入一个脉冲时,修改设置模式:

时间调整或闹铃模式切换

ifalarm_clk'

eventandalarm_clk='

1'

then

ifac_slt='

0'

then--如果为定时模式,将改为闹铃模式

ac_slt<

='

;

else

endif;

endif;

endprocess;

process(key,clk,ac_slt)--根据设置模式,处理key上的脉冲信号

ifac_slt='

then--时间调整模式

aclk<

ifclk='

andkey='

then--clk=1则tclk<

=0,通过挖洞方式添加一个脉冲

tclk<

elsifclk='

then--clk=0,则tclk<

=1,产生一个高电平,添加一脉冲

=clk;

elsifac_slt='

then--闹铃调整模式

tclk<

=key;

--key上的脉冲直接修改闹铃定时值

process(tclk,clr,enb)--60进制计数,个位、十位放在两个临时变量中,表示秒的状态

ifclr='

then--clearingworksatthestateofhighvoltage

qout2_l<

="

0000"

qout2_h<

elsiftclk'

eventandtclk='

ifenb='

then--enableworksathighvoltage

ifqout2_l="

1001"

andqout2_h="

0101"

qout2_l<

--afullmodeiscompletedandacarryoutisgenerated

qout2_h<

elsifqout2_l="

qout2_l<

qout2_h<

=qout2_h+1;

else

=qout2_l+1;

--inprocessofcounting

endif;

process(aclk,clr,enb)--修改闹铃的定时值

alarm_l<

alarm_h<

elsifaclk'

eventandaclk='

ifalarm_l="

andalarm_h="

alarm_l<

alarm_h<

elsifalarm_l="

alarm_l<

alarm_h<

=alarm_h+1;

=alarm_l+1;

process(qout2_l,qout2_h,alarm_l,alarm_h,alarm_clk)--产生进位,显示时间或闹铃定时值

begin

ifqout2_l="

co<

else

then--显示时间

qout_sl<

=qout2_l;

qout_sh<

=qout2_h;

else--显示定时值

=alarm_h;

=alarm_l;

process(qout2_l,qout2_h)--根据秒的状态输出“嘟”、“嘀”触发信号

ifqout2_h="

ifqout2_l="

out_do<

elsifqout2_l="

0010"

0100"

0110"

1000"

elsifqout2_h="

out_di<

else

else

out_do<

out_di<

e

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1