四路智能抢答器电路Word文件下载.docx
《四路智能抢答器电路Word文件下载.docx》由会员分享,可在线阅读,更多相关《四路智能抢答器电路Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。
二是禁止其他选手按键,其按键操作无效。
再由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74ls47译码器和2个7段数码管即相关电路组成。
两块74LS192实现减法计数,然后通过译码器显示到数码管上,其时钟信号由时钟产生电路提供。
2、方案二:
各路选手抢答后产生的高低电平直接经过优先编码电路,然后经过锁存器(74LS279)、译码电路到七段数码管的同时,由555定时器秒脉冲产生电路产生的秒脉冲驱动定时电路工作,主持人开关通过控制电路来实现对整体电路的调节。
四、设计原理
1.抢答器和显示电路
设计电路如图1所示。
电路选用优先编码器74LS148、锁存器74LS373和74LS48译码器来完成。
一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号(显示电路采用七段数字数码显示管);
工作过程:
开关S置于"
清除"
端时,锁存器的LE端输入为“1”,停止工作。
当开关S置于"
开始"
时,抢答器处于等待工作状态,74LS373的LE端为“0”,当有选手将抢答按键按下时(如按下S5),LE端变为“1”将数据锁存。
在经过优先编码器和译码器将数据输入数码管显示。
如有再次抢答需由主持人将S开关重新置“清除”然后再进行下一轮抢答。
2.定时电路
该部分主要由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74ls47译码器和2个7段数码管即相关电路组成。
具体电路如图2所示。
当主持人拨到“开始”时,计数器开始减法计数工作,并将时间显示在数码显示管上,当有人抢答时,停止计数并显示此时的倒计时时间;
如果没有人抢答,且倒计时到“0”时,输出低电平到时序控制电路,控制报警电路报警,同时以后选手抢答无效。
555的3端输出的脉冲的频率为f=0.7C(r1+2*r2),结合我们的实际经验及考虑到元器件的成本,我们选择的电阻值为R1=2K,R2=20K,C=33uF,代入到上式中即得。
3.时序控制电路
时序控制电路是抢答器设计的关键,它要完成以下三项功能:
(1)主持人将控制开关拨到“开始”位置时,抢答电路和定时电路进入正常抢答工作状态。
(2)当参赛选手按动抢答键时,二极管灯亮,抢答电路和定时电路停止工作。
(3)当设定的抢答时间到,无人抢答时,二极管灯亮,同时抢答电路和定时电路停止工作。
电路如图3
五、硬件制作与调试
硬件制作:
先仿真电路实验后,再将电路进行排版设计电路的接法及放置。
等全部的安排工作都做好了后就进行电路的焊接工作,焊电路的时候先不要全部一起焊出来,先一部分一部分焊,然后对焊好的先进行调试,看其是否能不能正常工作,如果能够正常工作就进行下一部分电路的焊接;
如果不能让正常工作则对其进行检查,直到电路可以用为止。
完成了对每一部分电路的单独焊接并且都可以用后,再将每一部分电路进行连接,使其成为完整的电路。
调试:
再焊电路的过程中出现过定时电路不能进行准时的定时,然后对其进行了调试及其检查是555定时器没接好,然后将其接好了后再试试了下就可以用了。
实物图如图:
六、设计小结
经过两个星期的共同努力,我们终于完成了数字电子技术课设。
虽然时间不长,但是在这个过程中我得到了很多东西。
因为以前没有做过这一方面的课设,所以,一开始看到这个题目的时候感觉有点不知所措,不知道要从什么地方开始做。
经过老师的指导后,我和另一位同学开始查资料、讨论。
在这个过程中,我们有冲突、争论、矛盾,但经过商量我们找到了最好的方法,同时也收获了友谊。
在这几日里,我们经历了阶段性成功的狂喜、测试失败后的绝望、陷入困境时的不知所措,重新投入的振作。
我们培养出了无与伦比的默契和深厚的友谊。
通过本次实验,最大的收获就是把书本与实践结合在一起,提高动手能力了。
学到了很多东西,懂得了团队合作的真正意义,对我以后的学习和工作帮助很大。
这次课设能够顺利的完成,我非常感谢帮助我的同学和老师。
感谢老师的指导!
感谢同学的热心帮助!
谢谢!
七、参考书目
1、XX网站
2、电子芯片资料网
3、数字电子技术基础
图1抢答和显示电路图
图2定时电路
图3
(一)抢答鉴别模块
1、VHDL源程序
libraryieee;
--抢答鉴别模块
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityqdjbis
port(rst,clk2:
instd_logic;
s0,s1,s2,s3:
states:
bufferstd_logic_vector(3downto0);
tmp:
outstd_logic);
endqdjb;
architectureoneofqdjbis
signalst:
std_logic_vector(3downto0);
begin
p1:
process(s0,rst,s1,s2,s3,clk2)
begin
ifrst='
0'
then
tmp<
='
;
st<
="
0000"
elsifclk2'
eventandclk2='
1'
then
if(s0='
orst(0)='
)andnot(st
(1)='
orst
(2)='
orst(3)='
)thenst(0)<
endif;
if(s1='
orst
(1)='
)andnot(st(0)='
)thenst
(1)<
if(s2='
)thenst
(2)<
if(s3='
)thenst(3)<
tmp<
=s0ors1ors2ors3;
endif;
endprocessp1;
p2:
process(states(0),states
(1),states
(2),states(3))
if(st="
)thenstates<
elsif(st<
0001"
0010"
0100"
0011"
1000"
endif;
endprocessp2;
endone;
2、仿真图:
(二)计时模块
entityjsis
port(clk,rst,s,stop:
warn:
outstd_logic;
ta,tb:
bufferstd_logic_vector(3downto0));
endjs;
architectureoneofjsis
signalco:
std_logic;
process(clk,rst,s,stop,ta)
orstop='
ta<
elsifclk'
eventandclk='
co<
ifs='
ifta="
1001"
co<
elseta<
=ta-1;
endif;
process(co,rst,s,stop,tb)
tb<
elsifco'
eventandco='
iftb="
thentb<
elsetb<
=tb-1;
2、仿真图
(三)数据选择模块
1、VHDL源程序
useieee.std_logic_arith.all;
entitysjxzis
port(a,b,c:
instd_logic_vector(3downto0);
clk2,rst:
instd_logic;
s:
outstd_logic_vector(1downto0);
y:
outstd_logic_vector(3downto0));
endsjxz;
architecturebody_chooserofsjxzis
signalcount:
std_logic_vector(1downto0);
s<
=count;
process(clk2,rst)
if(rst='
)thencount<
00"
elsif(clk2'
)then
if(count>
10"
count<
elsecount<
=count+1;
endif;
casecountis
when"
=>
y<
=a;
01"
=b;
=c;
whenothers=>
null;
endcase;
endPROCESS;
endbody_chooser;
(四)报警模块
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYALARMIS
PORT(CLK,I:
INSTD_LOGIC;
Q:
OUTSTD_LOGIC);
ENDALARM;
ARCHITECTUREBEHAVEOFALARMIS
SIGNALWARN:
STD_LOGIC;
SIGNALN:
INTEGERRANGE0TO20;
BEGIN
Q<
=WARN;
PROCESS(CLK)
BEGIN
IFCLK'
EVENTANDCLK='
THEN
IFI='
THEN
WARN<
ELSIF(I='
ANDN<
=19)THEN
=NOTWARN;
N<
=N+1;
ELSE
ENDIF;
ENDIF;
ENDPROCESS;
ENDBEHAVE;
(五)译码模块
ENTITYYMQIS
PORT(AIN4:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT7:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDYMQ;
ARCHITECTUREARTOFYMQIS
PROCESS(AIN4)
BEGIN
CASEAIN4IS
WHEN"
DOUT7<
1111110"
--0
0110000"
--1
1101101"
--2
1111001"
--3
0110011"
--4
0101"
1011011"
--5
0110"
1011111"
--6
0111"
1110000"
--7
1111111"
--8
1111011"
--9
WHENOTHERS=>
0000000"
ENDCASE;
ENDPROCESS;
ENDARCHITECTUREART;
(六)分频模块
USEIEEE.STD_LOGIC_ARITH.ALL;
ENTITYclkdivIS
PORT(clk2:
INSTD_LOGIC;
clk16:
OUTSTD_LOGIC);
ENDclkdiv;
ARCHITECTURErtlOFclkdivIS
SIGNALcount:
STD_LOGIC_VECTOR(3DOWNTO0);
PROCESS(clk2)
IF(clk2'
eventANDclk2='
)THEN
IF(count="
1111"
Count<
ELSE
=count+1;
ENDIF;
clk16<
='
ENDrtl;
(七)顶层文件
entityqiangdaqiis
port(clk,clk2,s,s0,s1,s2,s3,stop,rst:
n,k,q_out:
m:
outstd_logic_vector(1downto0);
a,b,c,d,e,f,g:
endqiangdaqi;
architecturebhvofqiangdaqiis
componentqdjbis
port(clk2,rst:
s0,s1,s2,s3:
tmp:
states:
outstd_logic_vector(3downto0));
endcomponent;
componentjsis
port(clk,rst,s,stop:
ring,warn:
ta,tb:
componentsjxzis
port(clk2,rst:
s:
a,b,c:
instd_logic_vector(3downto0);
y:
componentymqis
port(ain4:
instd_logic_vector(3downto0);
dout7:
outstd_logic_vector(6downto0));
componentalarmis
port(clk,i:
q:
signalstates_out,ta_out,tb_out,y_out:
signalledout:
std_logic_vector(6downto0);
signalw:
a<
=ledout(6);
b<
=ledout(5);
c<
=ledout(4);
d<
=ledout(3);
e<
=ledout
(2);
f<
=ledout
(1);
g<
=ledout(0);
u1:
qdjbportmap(clk2,rst,s0,s1,s2,s3,tmp=>
k,states=>
states_out);
u2:
jsportmap(clk,rst,s,stop,warn=>
n,ta=>
ta_out,tb=>
tb_out);
u3:
sjxzportmap(clk2=>
clk2,rst=>
rst,a=>
states_out,b=>
ta_out,c=>
tb_out,s=>
m,y_out;
u4:
ymqportmap(ain4=>
y_out,DOUT7=>
ledout);
u5:
alarmportmap(clk2,i=>
s,q_out);
endbhv;