带有校时功能地数字闹钟文档格式.docx
- 文档编号:21897966
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:28
- 大小:1.26MB
带有校时功能地数字闹钟文档格式.docx
《带有校时功能地数字闹钟文档格式.docx》由会员分享,可在线阅读,更多相关《带有校时功能地数字闹钟文档格式.docx(28页珍藏版)》请在冰豆网上搜索。
这就需要扫描电路去扫描计数模块所输出的时间在500HZ脉冲下经过译码器将其译成共阴数码管所对应的二进制数进行显示,最终显示的为24小时时钟。
若有闹钟信号进入时,其闹钟信号经过计数控制有一二进制数经过扫描电路译码电路数码管后,最终显示闹钟时间。
之后闹钟信号无作用后显示时钟信号。
闹钟时间与正常时间相同后外部控制响铃信号控制响铃时间。
外部时间控制信号可控制时间的校验。
三、选择器件
1、pc机一台。
2、CPLD/FPGA适配器板:
标准配置EPF10K10LC84-4接口板,下载接口是数字芯片的下载接口(DIGITALJTAG),主要用于CPLD/FPGA芯片的数据下载。
3、实验箱:
装有七段数码管及蜂鸣器等,七段数码管字形及真值表如下
七段数码管字形如下:
七段数码管真值表如下:
表1七段数码管真值表、
四、功能模块
各个功能模块及作用如下
1)、分频器div_clk模块
其程序如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityclk_divis
port(clk_in:
instd_logic;
div_outa,div_outb:
outstd_logic);
endclk_div;
architectureaofclk_divis
signalfre_na:
integerrange0to50000000;
signalfre_nb:
integerrange0to100000;
signalclk_tmpa:
std_logic;
signalclk_tmpb:
begin
div_outa<
=clk_tmpa;
div_outb<
=clk_tmpb;
process(clk_in)
iffalling_edge(clk_in)then
iffre_na>
49999999then
fre_na<
=0;
clk_tmpa<
=notclk_tmpa;
else
=fre_na+1;
endif;
iffre_nb>
99999then
fre_nb<
clk_tmpb<
=notclk_tmpb;
=fre_nb+1;
endprocess;
enda;
该模块实现的功能是分频。
clk_in输入一个50MHZ的脉冲信号,经过分频器后得到一个1HZ的秒脉冲和一个500HZ的脉冲信号。
2)、秒计时second模块
entitysecondis
port(clk,reset,setmin:
enmin:
outstd_logic;
daout:
outstd_logic_vector(6downto0));
endentitysecond;
architecturefunofsecondis
signalcount:
std_logic_vector(6downto0);
daout<
=count;
process(clk,reset,setmin)
if(reset='
0'
)then
count<
="
0000000"
;
elsif(setmin='
enmin<
=clk;
elsif(clk'
eventandclk='
1'
if(count(3downto0)="
1001"
if(count<
16#60#)then
if(count="
1011001"
='
=count+7;
elsif(count<
=count+1;
after100ns;
endfun;
该模块的功能是秒计时及分校验(置分)。
reset为复位信号低电平有效。
当有时钟信号(秒脉冲)进来后进行加计数,计数为六十进制。
当计数满59后,下一时钟来临后进位信号—enmin输出一个脉冲信号。
当分校验信号setmin有一脉冲信号进来后,enmin有一脉冲信号。
其仿真图为:
3)、分计时minute模块
Libraryieee;
entityminuteis
port(clk,clk1,reset,sethour:
enhour:
outstd_logic;
endentityminute;
architecturefunofminuteis
process(clk,reset,sethour)
elsif(sethour='
enhour<
=clk1;
该模块的功能是分计时及时校验(置时)。
秒进位信号进入clk作为脉冲信号进行计数,计数为六十进制。
当计数满59后,下一时钟来临后进位信号—enhour输出一个脉冲信号。
当分校验信号sethour有一脉冲信号进来后,enhour有一脉冲信号。
4)小时计时hour模块
entityhourIS
port(clk,reset:
INSTD_LOGIC;
outstd_logic_vector(5downto0));
endentityhour;
architecturefunofhouris
std_logic_vector(5downto0);
process(clk,reset)
000000"
16#23#)then
该模块的功能是小时计时。
分进位信号进入clk作为脉冲信号进行计数,计数为二十四进制。
当计数记到二十三,下一个有效脉冲来临后,下一个状态变为零,之后正常计数。
5)、寄存jicun模块
entityjicunis
port(rst,setm,seth:
mo:
outstd_logic_vector(6downto0);
ho:
outstd_logic_vector(5downto0)
);
endjicun;
architectureoneofjicunis
signalm:
signalh:
process(rst,setm)
mo<
=m;
ifrst='
then
if(setm'
eventandsetm='
if(m(3downto0)="
if(m<
if(m="
m<
else
=m+7;
endif;
elsif(m<
=m+1;
elsem<
process(rst,seth)
ho<
=h;
if(seth'
eventandseth='
if(h(3downto0)="
if(h<
if(h="
100011"
h<
=h+7;
elsif(h<
=h+1;
elseh<
endprocess;
endone;
该模块的功能是定时及寄存该闹钟时间。
rst为控制闹钟信号输入,rst=‘0’时setm和seth以脉冲信号计数来置入闹钟时间,当setm和seth不变时将其保存,且可以在rst=‘0’时查看闹钟时间。
其输出信号时和分分别用BCD码表示。
6)、选择时间输出time_show模块
entitytime_showis
port(rst,reset:
setm:
instd_logic_vector(6downto0);
seth:
instd_logic_vector(5downto0);
mi:
hi:
daouth:
outstd_logic_vector(5downto0);
daoutm:
endtime_show;
architectureoneoftime_showis
process(reset,rst,setm)
ifreset='
thendaoutm<
elseifrst='
=mi;
elsifrst='
daoutm<
=setm;
process(reset,rst,seth)
thendaouth<
elseifrst='
=hi;
daouth<
=seth;
该模块的功能是选择显示时间是正常时间还是闹钟时间。
其中setm和seth分别为寄存器输出的闹钟时间,mi和hi分别为正常时钟时间,rst为选择信号,当rst=‘0’是选择闹钟时间作为输出,否则选择时钟时间作为输出。
daouth和daoutm分别为输出信号的时和分
7)、闹钟响时长控制time_control模块
entitytime_controlis
port(a1,b1,c1:
control_out:
endtime_control;
architectureaoftime_controlis
process(a1,b1,c1)
begin
ifa1='
thencontrol_out<
0000011"
elsifb1='
0000100"
elsifc1='
0000101"
elsecontrol_out<
该模块的功能是输入声响时长。
a1,b1,c1三个信号控制蜂鸣器响的时间分别为3s、4s、5s,其中a1优先权最高。
其控制的输出control_out为BCD码作为闹钟模块的秒比较控制蜂鸣器响的时间长度。
8)、闹钟控制naozhong模块
entitynaozhongis
port(setm,mi,ms,q:
seth,hi:
clk:
speaker:
lamp:
outstd_logic_vector(2downto0));
endnaozhong;
architectureoneofnaozhongis
signalspeaker1:
signalspeaker2:
signalcount:
std_logic_vector(1downto0);
signalcount1,count2:
signalh:
std_logic_vector(5downto0);
signalm:
std_logic_vector(6downto0);
speaker<
=speaker1orspeaker2;
m<
speakera:
process(clk)
speaker1<
=count1;
if(clk'
if(mi="
if(ms<
q)then
count1<
;
endprocessspeakera;
speakerb:
process(setm,seth)
speaker2<
=count2;
if((mi=m)and(hi=h))then
if(ms<
q)then
count2<
elsecount2<
endprocessspeakerb;
lamper:
if(rising_edge(clk))then
if(mi="
if(count<
10"
if(count="
00"
elsif(count="
01"
lamp<
010"
100"
count<
elselamp<
000"
endprocesslamper;
该模块实现三个功能:
闹钟、整点报时、花样显示。
闹钟:
闹钟时间时分seth、setm与正常时钟时间时分hi、mi比较,相等且响控信号q<
时钟秒时间ms时蜂鸣器响,由此可控制响的时间长度。
整点报时:
当时钟时间mi为0时即为整点,且响控信号q<
花样显示:
当整点时lamper灯有一花样显示。
9)、扫描seltime模块
useieee.std_logic_arith.all;
entityseltimeis
port(clk1,reset:
sec,min:
hour:
outstd_logic_vector(3downto0);
sel:
outstd_logic_vector(2downto0));
endseltime;
architecturefunofseltimeis
std_logic_vector(2downto0);
sel<
process(clk1,reset)
elsif(clk1'
eventandclk1='
if(count>
101"
casecountis
when"
=>
=sec(3downto0);
when"
001"
daout(3)<
daout(2downto0)<
=sec(6downto4);
=min(3downto0);
011"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 带有 功能 数字 闹钟