数字逻辑设计及应用课程设计报告自动打铃器Word格式文档下载.docx
- 文档编号:16822403
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:18
- 大小:4.03MB
数字逻辑设计及应用课程设计报告自动打铃器Word格式文档下载.docx
《数字逻辑设计及应用课程设计报告自动打铃器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数字逻辑设计及应用课程设计报告自动打铃器Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
下面为48分频电路:
下面为1000分频电路:
2.2秒计数电路
用两片74160模10计数器设计一个模60计数器,当计数值为59时,下一个时钟信号给计数器置数0。
(1)秒计数的CLK时钟端用分频后的1hz输入。
(2)秒十位的sec[6]取非后输出用于分计数的进位脉冲。
(3)Clear输入用于清零端信号输入。
(4)输出sec[7..0]作为秒计数器的值。
仿真波形如下:
2.3分计数电路
用两片74160模10计数器设计一个模60分计数器,当计数值为59时,因为要考虑到秒计时电路,所以还要输入一个当秒为59的信号,这样下一个时钟信号才能给计数器置数0。
电路图如下:
2.4小时计数电路
用两片74160以置数法设计一个模24计数器作为小时计数器电路。
当秒计时为59,分计时为59时且小时计数为23时给置数端一个低电平信号置数.
2.5动态数码显示电路
如上模块图,这个大的动态数码显示电路模块又分为4个小模块,分别为24选4MUX,显示译码器,计数器,译码器74138。
基本原理如下,由一个模6的计数器产生的3位信号输入到24选4MUX和译码74138上,分别选出4位BCD码,和8位译码器中的6位。
BCD码通过显示译码器得到7位接到数码管的7段上。
因为整个模块为动显,所以计数器的时钟信号需要输入1khz。
2.6时钟校分电路
通过在计时电路钟添加附加电路来实现校分电路功能
K1=1,K2=0,K3=1时设定时钟分钟,给时钟分钟模块的低位使能端一个高电平,同时再通过非门后给置零端一个信号,当分钟走到59时候置零,从而不会出现在校分的时候出现走到60或者之后的数字。
K1=0,K2=0,K3=0时设定时钟小时,设计的原理和分钟类似,条件改变了,当走到23的时候置零。
2.7时钟清零电路
给计时电路的6个74160的清零端接到一个开关上控制就行。
2.8闹钟模块
闹钟模块共有六路闹钟设定和时间比较模块,实现六路定时打铃。
2.8.1闹钟设定
闹钟的设定又一个模60计数器和一个模24计数器构成。
K1=1,K2=1,K3=0时设定闹钟分钟,原理和时钟校分电路一样。
给闹钟分钟的低位使能端一个高电平,同时再通过非门后给置零端一个信号,当分钟走到59时候置零,从而不会出现在校分的时候出现走到60或者之后的数字。
K1=0,K2=1,K3=1时设定闹钟小时,设计的原理和分钟类似,条件改变了,当走到23的时候置零。
2.8.2时间比较
将时钟的分钟和小时BCD码和闹钟的分钟和小时的BCD码输入到比较模块中,通过比较器得到信号,输给蜂鸣器,达到闹钟的效果。
四.设计结论
通过仿真,最终证明此设计能正常的工作,实验过程中,大多数问题在自己的仿真调试下都得到了解决,培养了独立思考解决问题的习惯。
学会了电路的故障排查,学会了怎样从问题出发,找到问题的根源,然后用相应的方法来解决问题。
培养了严谨细心认真的品质。
有些问题,看起来特别小,比如闹铃电路中模6计数器设计时误把“与非门”用成了“与门”,导致了无法正常的模6计数。
但这些小的细节直接影响着实验的质量与结果。
让我更加深刻地懂得了做任何事都要注意细节。
附录:
VHDL程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityszzis
port(clk:
instd_logic;
clk1:
md1:
md2:
instd_logic_vector(1downto0);
speak:
outstd_logic;
dout:
outstd_logic_vector(6downto0);
selout:
outstd_logic_vector(2downto0));
endszz;
architectureoneofszzis
signalsel:
std_logic_vector(2downto0);
signalhou1:
std_logic_vector(3downto0);
signalhou2:
signalmin1:
signalmin2:
signalseth1:
signalseth2:
signalsetm1:
signalsetm2:
signalsec1:
signalsec2:
signalh1:
signalh2:
signalm1:
signalm2:
signals1:
signals2:
-------------------------------------------------
begin
----------------------------------------------计数
choice:
process(clk1)
ifclk1'
eventandclk1='
1'
then
ifsel="
101"
sel<
="
000"
;
else
=sel+1;
endif;
endprocesschoice;
-----------------------------------------------小时十位
h110:
process(clk,hou2,min1,min2,sec1,sec2,md1,md2)
ifclk'
eventandclk='
if(hou1="
0010"
andhou2="
0011"
)and(min1="
0101"
andmin2="
1001"
)and(sec1="
andsec2="
)
hou1<
0000"
elsifhou1="
andhou2="
andmd1='
0'
andmd2="
01"
then--当时间为23点且处于校时状态时
elsif(hou2="
and(min1="
))or(hou2="
=hou1+1;
endprocessh110;
-----------------------------------------------小时个位
h220:
process(clk,min1,min2,sec1,sec2,md1,md2,hou1)
)then
hou2<
elsifhou2="
)or(hou1="
--md<
='
elsif((min1="
))or(md1='
=hou2+1;
--speak<
=clk;
endprocessh220;
-----------------------------------------------分钟十位
m110:
process(clk,min2,sec1,sec2,md1,md2)
if(min1="
min1<
elsifmin1="
andmin2="
and(md1='
00"
)then
elsif(min2="
and(sec1="
))or(min2="
=min1+1;
--endif;
endprocessm110;
----------------------------------------------分钟个位
m220:
process(clk,sec1,sec2,md1,md2)
ifmin2="
min2<
elsifmin2="
else
if(sec1="
)or(md1='
=min2+1;
endprocessm220;
---------------------------------------------秒十位
s110:
process(clk)
if(sec1="
sec1<
elseifsec2="
then
=sec1+1;
endprocesss110;
--------------------------------------------秒个位
s220:
ifsec2="
sec2<
elsesec2<
=sec2+1;
endprocesss220;
-------------------------------------------时间设置小时部分
sethour1:
process(clk,seth2)
ifseth1="
andseth2="
seth1<
elsifseth2="
=seth1+1;
endprocesssethour1;
-------------------------------------------
sethour2:
process(clk,md1,md2,seth1)
if(seth1="
)orseth2="
seth2<
elsifmd1='
=seth2+1;
endprocesssethour2;
-------------------------------------------时间设置分钟部分
setmin1:
process(clk,setm2)
ifsetm1="
andsetm2="
setm1<
elsifsetm2="
=setm1+1;
endprocesssetmin1;
----------------------------------------------
setmin2:
process(clk,md1,md2)
ifsetm2="
setm2<
=setm2+1;
endprocesssetmin2;
--------------------------------------------
--------------------------------------------闹铃
speaker:
process(clk1,hou1,hou2,min1,min2)
ifseth1=hou1andseth2=hou2andsetm1=min1andsetm2=min2then
speak<
=clk1;
elsespeak<
endprocessspeaker;
disp:
process(sel,md1,hou1,hou2,min1,min2,sec1,sec2,seth1,seth2,setm1,setm2)
selout<
caseh1is
when"
=>
dout<
0111111"
0001"
0000110"
1011011"
whenothers=>
1000000"
endcase;
elsifsel="
001"
caseh2is
1001111"
0100"
1100110"
1101101"
0110"
1111101"
0111"
0000111"
1000"
1111111"
1101111"
whenothers=>
010"
casem1is
011"
casem2is
100"
cases1is
cases2is
ifmd1='
then---------------计时时间显示和设置模式
h1<
=hou1;
h2<
=hou2;
m1<
=min1;
m2<
=min2;
s1<
=sec1;
s2<
=sec2;
-----------闹铃时间现实和设置模式
=seth1;
=seth2;
=setm1;
=setm2;
1111"
endprocessdisp;
------------------------------------------
end
one;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 逻辑设计 应用 课程设计 报告 自动 打铃