1、四路智能抢答器电路数字电路与自动化课程设计报告 题目: 四路智能抢答器电路班级: 姓名: 学号: 小组成员: 日期: 201012-26一、设计目的(3)二、设计要求。.。(3)三、方案论证及比较(4)四、设计原理(5)五、硬件制作及调试(6)六、设计小结(7)七、参考书目。.。(8)一、设计目的1、通过课程设计,对数字逻辑的基本内容有进一步的了解,特别是时序逻辑电路的设计。能把所学到的数字逻辑理论知识进行实践,操作.2、提高动手能力的同时对常用的集成芯片有一定的了解,在电路设计方面有感性的认识。3、另外还要掌握电路原理和分析电路设计流程,每个电路的设计都要有完整的设计流程。这样才能在分析电路
2、有良好的思路,便于找出错的原因。二、设计要求设计一个4路智能抢答器,具体设计要求如下:1、抢答器同时供4名选手,分别用4个按钮S1 S4表示。2、设置一个系统清除和抢答控制开关S,该开关由主持人控制。3、抢答器具有锁存及显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时二极管发出红灯提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。4、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如25秒)。当主持人启动“开始”键后,定时器进行减计时。5、选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主
3、持人将系统清除为止。6、 如果定时时间已到,无人抢答,本次抢答无效,系统报警灯并禁止抢答,定时显示器上显示00.7、抢答器具有暂停功能,当暂停时选手禁止抢答。 三、方案论证及比较设计的方案有以下几种:1、电路选用优先编码器 74LS148 、锁存器 74LS373 和74LS48译码器来完成.该电路主要完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键,其按键操作无效。再由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74ls47译码器和2个7段数码管即相关电路组成。两块74LS192实现减法计数,然后通
4、过译码器显示到数码管上,其时钟信号由时钟产生电路提供.2、方案二:各路选手抢答后产生的高低电平直接经过优先编码电路,然后经过锁存器(74LS279)、译码电路到七段数码管的同时,由555定时器秒脉冲产生电路产生的秒脉冲驱动定时电路工作,主持人开关通过控制电路来实现对整体电路的调节。四、设计原理1抢答器和显示电路 设计电路如图1所示。电路选用优先编码器 74LS148 、锁存器 74LS373 和74LS48译码器来完成。该电路主要完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号(显示电路采用七段数字数码显示管);二是禁止其他选手按键,其按键操作无效。工作
5、过程:开关S置于”清除端时,锁存器的LE端输入为“1,停止工作.当开关S置于”开始时,抢答器处于等待工作状态,74LS373的LE端为“0”,当有选手将抢答按键按下时(如按下S5),LE端变为“1”将数据锁存。在经过优先编码器和译码器将数据输入数码管显示。如有再次抢答需由主持人将S开关重新置“清除”然后再进行下一轮抢答.2。 定时电路该部分主要由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74ls47译码器和2个7段数码管即相关电路组成。具体电路如图2所示.两块74LS192实现减法计数,然后通过译码器显示到数码管上,其时钟信号由时钟产生电路提供。当主持人拨到“
6、开始”时,计数器开始减法计数工作,并将时间显示在数码显示管上,当有人抢答时,停止计数并显示此时的倒计时时间;如果没有人抢答,且倒计时到“0”时,输出低电平到时序控制电路,控制报警电路报警,同时以后选手抢答无效.555的3端输出的脉冲的频率为f =0。7C(r1+2r2) ,结合我们的实际经验及考虑到元器件的成本,我们选择的电阻值为R1=2K,R2=20K,C=33uF,代入到上式中即得 .3。 时序控制电路时序控制电路是抢答器设计的关键,它要完成以下三项功能:(1)主持人将控制开关拨到“开始”位置时,抢答电路和定时电路进入正常抢答工作状态.(2)当参赛选手按动抢答键时,二极管灯亮,抢答电路和定
7、时电路停止工作.(3)当设定的抢答时间到,无人抢答时,二极管灯亮,同时抢答电路和定时电路停止工作。电路如图3五、硬件制作及调试硬件制作:先仿真电路实验后,再将电路进行排版设计电路的接法及放置。等全部的安排工作都做好了后就进行电路的焊接工作,焊电路的时候先不要全部一起焊出来,先一部分一部分焊,然后对焊好的先进行调试,看其是否能不能正常工作,如果能够正常工作就进行下一部分电路的焊接;如果不能让正常工作则对其进行检查,直到电路可以用为止。完成了对每一部分电路的单独焊接并且都可以用后,再将每一部分电路进行连接,使其成为完整的电路。调试:再焊电路的过程中出现过定时电路不能进行准时的定时,然后对其进行了调
8、试及其检查是555定时器没接好,然后将其接好了后再试试了下就可以用了。实物图如图:六、设计小结经过两个星期的共同努力,我们终于完成了数字电子技术课设。虽然时间不长,但是在这个过程中我得到了很多东西.因为以前没有做过这一方面的课设,所以,一开始看到这个题目的时候感觉有点不知所措,不知道要从什么地方开始做。经过老师的指导后,我和另一位同学开始查资料、讨论。在这个过程中,我们有冲突、争论、矛盾,但经过商量我们找到了最好的方法,同时也收获了友谊.在这几日里,我们经历了阶段性成功的狂喜、测试失败后的绝望、陷入困境时的不知所措,重新投入的振作。我们培养出了无及伦比的默契和深厚的友谊。通过本次实验,最大的收
9、获就是把书本及实践结合在一起,提高动手能力了.学到了很多东西,懂得了团队合作的真正意义,对我以后的学习和工作帮助很大。这次课设能够顺利的完成,我非常感谢帮助我的同学和老师。感谢老师的指导!感谢同学的热心帮助!谢谢!七、参考书目1、XX网站 2、电子芯片资料网 3、数字电子技术基础图1 抢答和显示电路图 图2 定时电路图 3 (一)抢答鉴别模块 1、VHDL源程序library ieee;-抢答鉴别模块use ieee。std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdjb is port(rst,clk2:in std_lo
10、gic; s0,s1,s2,s3:in std_logic; states:buffer std_logic_vector(3 downto 0);tmp:out std_logic);end qdjb;architecture one of qdjb issignal st:std_logic_vector(3 downto 0);beginp1:process(s0,rst,s1,s2,s3,clk2) begin if rst=0 then tmp=0;st=0000; elsif clk2event and clk2=1 then if (s0=1 or st(0)=1)and not
11、( st(1)=1 or st(2)=1 or st(3)=1 ) then st(0)=1; end if ; if (s1=1 or st(1)=1)and not( st(0)=1 or st(2)=1 or st(3)=1 ) then st(1)=1; end if ; if (s2=1 or st(2)=1)and not( st(0)=1 or st(1)=1 or st(3)=1 ) then st(2)=1; end if ; if (s3=1 or st(3)=1)and not( st(0)=1 or st(1)=1 or st(2)=1 ) then st(3)=1;
12、end if ;tmp=s0 or s1 or s2 or s3;end if ;end process p1;p2:process(states(0),states(1),states(2),states(3)) begin if (st=”0000) then states=”0000; elsif (st=”0001) then states=0001”;elsif (st=0010) then states=0010; elsif (st=0100) then states=0011;elsif (st=1000”) then states=”0100; end if; end pro
13、cess p2;end one;2、仿真图:(二)计时模块 1、VHDL源程序library ieee;use ieee.std_logic_1164。all;use ieee.std_logic_unsigned.all;entity js is port(clk,rst,s,stop:in std_logic; warn:out std_logic; ta,tb:buffer std_logic_vector(3 downto 0));end js;architecture one of js issignal co:std_logic;beginp1:process(clk,rst,s,
14、stop,ta) begin if rst=0 or stop=1 then ta=”0000”; elsif clkevent and clk=1 then co=0; if s=1 then if ta=0000 then ta=1001”;co=1; else ta=ta-1; end if; end if; end if;end process p1;p2:process(co,rst,s,stop,tb) begin if rst=0 or stop=1 then tb=”0010; elsif coevent and co=1 then if s=1 then if tb=0000
15、” then tb=”0011; else tb=tb1; end if; end if; end if;end process p2;2、仿真图(三)数据选择模块1、VHDL源程序library ieee;use ieee。std_logic_1164.all;use ieee。std_logic_unsigned.all;use ieee。std_logic_arith.all;entity sjxz is port (a,b,c: in std_logic_vector(3 downto 0);clk2,rst: in std_logic; s: out std_logic_vector
16、(1 downto 0); y: out std_logic_vector(3 downto 0) ); end sjxz;architecture body_chooser of sjxz is signal count: std_logic_vector (1 downto 0); begin s=”10)then count=00; else countyy=c; when others=null; end case; end PROCESS; end body_chooser;2、仿真图(四)报警模块1、VHDL源程序LIBRARY IEEE;USE IEEE。STD_LOGIC_11
17、64。ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALARM ISPORT(CLK,I:IN STD_LOGIC; Q:OUT STD_LOGIC);END ALARM;ARCHITECTURE BEHAVE OF ALARM IS SIGNAL WARN:STD_LOGIC; SIGNAL N:INTEGER RANGE 0 TO 20;BEGIN Q= WARN; PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF I=0 THEN WARN =0; ELSIF(I=1AND N=19)THEN WAR
18、N =NOT WARN; N=N+1; ELSE WARN =0; END IF; END IF;END PROCESS;END BEHAVE;2、仿真图(五)译码模块1、VHDL源程序LIBRARY IEEE;USE IEEE。STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YMQ IS PORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END YMQ;ARCHITECTURE ART OF YMQ ISBE
19、GIN PROCESS(AIN4) BEGIN CASE AIN4 IS WHEN ”0000=DOUT7DOUT7=0110000; 1 WHEN ”0010=DOUT7DOUT7=”1111001”; -3 WHEN 0100”=DOUT7=”0110011; -4 WHEN ”0101”=DOUT7=”1011011”; -5 WHEN ”0110=DOUT7=1011111; -6 WHEN 0111=DOUT7=1110000; -7 WHEN ”1000=DOUT7=”1111111; 8 WHEN ”1001”=DOUT7DOUT7=”0000000; END CASE; END
20、 PROCESS;END ARCHITECTURE ART;2、仿真图(六)分频模块1、VHDL源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164。ALL;USE IEEE。STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED。ALL;ENTITY clkdiv ISPORT(clk2 : IN STD_LOGIC;clk16 : OUT STD_LOGIC);END clkdiv;ARCHITECTURE rtl OF clkdiv ISSIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0)
21、;BEGINPROCESS(clk2)BEGINIF (clk2event AND clk2=1) THENIF(count=”1111”) THENCount =0000”;ELSECount = count +1;END IF ;END IF ;END PROCESS;PROCESS(clk2)BEGINIF (clk2event AND clk2=1) THENIF(count=1111) THENclk16 = 1;ELSEclk16 k,states=states_out);u2:js port map(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:ymq port map(ain4=y_out,DOUT7=ledout);u5:alarm port map(clk2,i=s,q_out);end bhv;2、仿真图
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1