有关edade数字钟Word格式.docx
- 文档编号:22442153
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:16
- 大小:142.27KB
有关edade数字钟Word格式.docx
《有关edade数字钟Word格式.docx》由会员分享,可在线阅读,更多相关《有关edade数字钟Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
由外界输入的CLKCAN信号作为MUX6_1SCAN的选择控制信号,然后再将选出的一组BCD码送至七段译码显示器进行译码。
译码每输出结果同时送至6个LED数码管的a、b、c、d、e、f7个段,至于哪个数码管能够显示,取决于扫描控制信号SEL的输出结果,即SEL选择哪个数码管,那个数码管就点亮。
本设计采用动态扫描显示,每次仅仅点亮1个数码管,各个数码管轮流被扫描点亮,如果扫描的速度足够快,由于人眼存在视觉暂留现象,就看不出闪烁。
开始工作时,先从6组BCD数据中选出一组,通过7段译码器译码后输出,然后选出下一组数据译码输出。
数据选择的时序和顺序由6个进制计数器SEL控制,与此同时,MUX6_1SCAN产生选通信号。
模块WEEK和WEEKDISP为星期(7进制)计数模块和显示模块,当时间为23:
59:
59时,一个秒脉冲过来,使时间为00:
00:
00并产生一个星期进位信号,星期计数器驱动。
顶层电路原理图01
三、数字钟各模块的VHDL源程序设计
以下是数字钟各模块的VHDL程序及部分主要模块的仿真波形。
(1)秒计数器的源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYsecondIS
PORT(clk,reset:
INSTD_LOGIC;
sec1,sec2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
carry:
OUTSTD_LOGIC);
ENDsecond;
ARCHITECTURErt1OFsecondIS
SIGNALsec1_t,sec2_t:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk,reset)
BEGIN
IFreset='
1'
THEN
sec1_t<
="
0000"
;
sec2_t<
ELSIFclk'
eventANDclk='
IFsec1_t="
1001"
IFsec2_t="
0101"
ELSE
=sec2_t+1;
ENDIF;
图02秒计数器
=sec1_t+1;
AND
sec2_t="
carry<
='
0'
sec1<
=sec1_t;
sec2<
=sec2_t;
ENDPROCESS;
ENDrt1;
(生成模块如图02)
图03秒计数器仿真波
(2)分计数器的源程序
ENTITYminuteIS
min1,min2:
ENDminute;
ARCHITECTURErt1OFminuteIS
SIGNALmin1_t,min2_t:
min1_t<
min2_t<
IFmin1_t="
IFmin2_t="
图04分计数器
=min2_t+1;
=min1_t+1;
min2_t="
min1<
=min1_t;
min2<
=min2_t;
(生成模块如图04)
图05的分计数器仿真波形
(3)时计数器的源程序
ENTITYhourIS
hour1,hour2:
ENDhour;
ARCHITECTURErt1OFhourIS
SIGNALhour1_t:
SIGNALhour2_t:
hour1_t<
hour2_t<
IFhour1_t="
0011"
hour2_t="
0010"
IFhour2_t="
=hour2_t+1;
=hour1_t+1;
图06时计数器
hour1<
=hour1_t;
hour2<
=hour2_t;
图07时计数器仿真波形
(生成模块如图06)
(4)星期计数器的源程序
ENTITYweekIS
week:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDweek;
ARCHITECTURErt1OFweekIS
SIGNALweek_t:
week_t<
IFweek_t="
0111"
0001"
=week_t+1;
图08星期计数器
week<
=week_t;
(生成模块如图08)
(5)扫描六选一多路选择器的源程序
ENTITYmux6_1scanIS
PORT(clkscan,reset:
in1,in2,in3:
INSTD_LOGIC_VECTOR(3DOWNTO0);
in4,in5,in6:
data:
sel:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDmux6_1scan;
ARCHITECTURErt1OFmux6_1scanIS
SIGNALcount:
STD_LOGIC_VECTOR(2DOWNTO0);
PROCESS(clkscan,reset)
count<
000"
ELSIFclkscan'
eventAND
clkscan='
IFcount="
101"
ELSEcount<
=count+1;
PROCESS(count)
图10MUX6_1SCAN
CASEcountIS
WHEN"
=>
data<
=in1;
001"
=in2;
010"
=in3;
011"
=in4;
100"
=in5;
WHENothers=>
=in6;
ENDCASE;
ENDPROCESS;
sel<
=count;
(生成模块如图10)
图11扫描六选一多路选择器
(6)LED扫描控制模块源程序
ENTITYdecoder3_6IS
PORT(i:
INSTD_LOGIC_VECTOR(2DOWNTO0);
o:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
ENDdecoder3_6;
ARCHITECTUREbehavOFdecoder3_6IS
PROCESS(i)
CASEiIS
o<
000001"
000010"
000100"
001000"
010000"
100000"
WHENOTHERS=>
000000"
ENDbehav;
(7)七段译码显示源程序
SEGMENT7模块是BCD7段译码器,完成BCD码向7段显示码的变换作用。
ENTITYsegment7IS
PORT(data:
dout:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDsegment7;
ARCHITECTUREbehavOFsegment7IS
PROCESS(data)
CASEdataIS
dout<
0111111"
0000110"
1011011"
1001111"
0100"
1100110"
1101101"
0110"
1111101"
0100111"
1000"
1111111"
1101111"
XXXXXXX"
(8)星期显示源程序
ENTITYweekdispIS
PORT(d:
q:
ENDweekdisp;
ARCHITECTUREbehavOFweekdispIS
PROCESS(d)
CASEdIS
q<
0000000"
(9)硬件连接图
结果及结论:
实现了星期、时、分、秒计时功能,当键MINUTE按下时,分计数器以秒脉冲的速度递增,并按60min循环,即计数到59min后再回00。
心得体会:
经过本次试验,使我具有深刻的体会。
做一个实验要有精密的计划和独立思考的能力。
综合运用所学专业的理论和生产中的实际知识来完成一个项目,从实验中去学习、去进步。
进过此次试验我掌握了数字钟设计的方法和步骤并基本懂得了数字时钟的功能。
也提高了独立思考的能力。
我会再接再厉的……
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有关 edade 数字
![提示](https://static.bdocx.com/images/bang_tan.gif)