EDA4人抢答器设计报告(范文大全)

时间:2019-05-14 21:02:42下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《EDA4人抢答器设计报告》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《EDA4人抢答器设计报告》。

第一篇:EDA4人抢答器设计报告

四人抢答器

一、设计任务:

l、设计用于竞赛的四人抢答器,功能如下:(1)有多路抢答器,台数为四;

(2)具有抢答开始后20秒倒计时,20秒倒计时后无人抢答显示超时,并报警;(3)能显示超前抢答台号并显示犯规警报;(4)能显示各路得分,并具有加、减分功能;

2、系统复位后进入抢答状态,当有一路抢答键按下时,该路抢答信号将其余各路抢答封锁,同时铃声响,直至该路按键松开,显示牌显示该路抢答台号。

3、用VHDL语言设计符合上述功能要求的四人抢答器,并用层次设计方法设计该电路

二、设计思路:

将该任务分成三个模块进行设计,分别为:抢答器鉴别模块、抢答器计时模块、抢答器记分模块,最后是撰写顶层文件。

1、抢答器鉴别模块:

在这个模块中主要实现抢答过程中的抢答功能,并能对超前抢答进行警告,还能记录无论是正常抢答还是朝前抢答者的台号,并且能实现当有一路抢答按键按下时,该路抢答信号将其余个绿抢答封锁的功能。其中有四个抢答信号a、b、c、d;抢答使能信号en;抢答状态显示信号states;警报时钟信号clk2;系统复位信号rst;超前警报信号ring。

2、抢答器计时模块:

在这个模块中主要实现抢答过程中的计时功能,在有抢答开始后进行20秒的倒计时,并且在20秒倒计时后无人抢答显示超时并报警。其中有抢答时钟信号clk;系统复位信号rst;抢答使能信号en;抢答状态显示信号states;无人抢答警报信号warn;计时中止信号stop;计时十位个位信号tb,ta。

3、抢答器记分模块:

在这个模块中主要是给四个抢答信号记分,并给每个抢答信号预置5分,当抢答并答对时加1分,答错减1分,没有获得抢答保持不变。其中有抢答时钟信号clk;系统复位信号rst;抢答使能信号en;抢答状态显示信号states;记分加减信号add(add=‘1’时为加,add=‘0’时为减);四个信号的得分显示信号a_out,b_out,c_out,d_out。

4、顶层文件:

在这个模块中是对前三个模块的综合编写的顶层文件。

三、具体实施:

1、本设计的实现电路图:

2、本设计的源程序:

library ieee;--抢答鉴别模块 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qdjb is

port(clk2,en,rst:in std_logic;

a,b,c,d:in std_logic;

ring:out std_logic;

states:out downto 0));end qdjb;architecture one of qdjb is signal sinor,ringf,tmp:std_logic;signal cnt:std_logic_vector(5 downto 0);begin sinor<=a or b or c or d;p1:process(a,rst,b,c,d,tmp)

begin

if rst='1' then

tmp<='1';states<=“0000”;

elsif tmp='1' then

if a='1' then

states<=“0001”;tmp<='0';

elsif b='1' then

states<=“0010”;tmp<='0';

elsif c='1' then

states<=“0011”;tmp<='0';

elsif d='1' then

states<=“0100”;tmp<='0';

else tmp<='1';states<=“0000”;

end if;

end if;end process p1;p2rocess(clk2,en,rst,cnt)

begin

if rst='1' then

cnt<=“000000”;ringf<='0';

elsif clk2'event and clk2='1' then

if en='0' and sinor='1' then

if cnt<“111111” then

ringf<=not ringf;cnt<=cnt+1;

else ringf<='0';

end if;

end if;

end if;end process p3;ring<=ringf;end one;

library ieee;--抢答器计时模块 use ieee.std_logic_1164.all;std_logic_vector(3 use ieee.std_logic_unsigned.all;entity js is

port(clk,rst,en,stop:in std_logic;

warn:buffer std_logic;

ta,tb:buffer std_logic_vector(3 downto 0));end js;architecture one of js is signal co:std_logic;begin p1:process(clk,rst,en,stop,ta)

begin

if rst='1' or stop='1' then

ta<=“0000”;

elsif clk'event and clk='1' then

co<='0';

if en='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,en,stop,tb)

begin

if rst='1' or stop='1' then

tb<=“0010”;

elsif co'event and co='1' then

if en='1' then

if tb=“0000” then tb<=“0010”;

else tb<=tb-1;

end if;

end if;

end if;end process p2;p3:process(rst,ta,tb)

begin

if rst='1' then

warn<='0';

elsif ta=“0000” and tb=“0000” then

warn<='1';

else warn<='0';

end if;end process p3;end one;

library ieee;--抢答器记分模块 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jf is

port(clk,rst,en,add:in std_logic;

states:in std_logic_vector(3 downto 0);

a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0));end jf;

architecture one of jf is begin

p2:process(clk,rst,add,states,a_out,b_out,c_out,d_out)

begin

if(rst='1')then

a_out<=“0101”;b_out<=“0101”;c_out<=“0101”;d_out<=“0101”;

elsif en='1'then

if clk'event and clk='1' then

case states is

when “0001”=>

if add='1' then

if a_out=“1111” then

a_out<=“0000”;

else a_out<=a_out+1;

end if;

elsif add='0' then

if a_out=“0000” then

a_out<=“0000”;

else a_out<=a_out-1;

end if;

end if;

when “0010”=>

if add='1' then

if b_out=“1111” then

b_out<=“0000”;

else b_out<=b_out+1;

end if;

elsif add='0' then

if b_out=“0000” then

b_out<=“0000”;

else b_out<=b_out-1;

end if;

end if;

when “0011”=>

if add='1' then

if c_out=“1111” then

c_out<=“0000”;

else c_out<=c_out+1;

end if;

elsif add='0' then

if c_out=“0000” then

c_out<=“0000”;

else c_out<=c_out-1;

end if;

end if;

when “0100”=>

if add='1' then

if d_out=“1111” then

d_out<=“0000”;

else d_out<=d_out+1;

end if;

elsif add='0' then

if d_out=“0000” then

d_out<=“0000”;

else d_out<=d_out-1;

end if;

end if;

when others=>

a_out<=a_out;b_out<=b_out;c_out<=c_out;d_out<=d_out;

end case;

end if;

end if;

end process p2;end one;

library ieee;--抢答器顶层文件 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qiangda is

port(clk,clk2,en,a,b,c,d,add,stop,rst:in std_logic;

ring,alarm:out std_logic;

ta,tb:buffer std_logic_vector(3 downto 0);

states:buffer std_logic_vector(3 downto 0);

a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0));end qiangda;

architecture bhv of qiangda is component qdjb is

port(clk2,en,rst:in std_logic;

a,b,c,d:in std_logic;

ring:out std_logic;

states:out std_logic_vector(3

downto 0));end component;component js is

port(clk,rst,en,stop:in std_logic;

warn:buffer std_logic;

ta,tb:buffer std_logic_vector(3 downto 0));end component;

component jf is

port(clk,rst,en,add:in std_logic;

states:in downto 0);

a_out,b_out,c_out,d_out:buffer std_logic_vector(3 downto 0));end component;signal cnt:std_logic_vector(3 downto 0);std_logic_vector(3

begin

u1:qdjb port map(clk2,en,rst,a,b,c,d,ring,states);u2:js port map(clk,rst,en,stop,alarm,ta,tb);u3:jf;end bhv;

port

map(clk,rst,en,add,states,a_out,b_out,c_out,d_out)

四、结果分析:

(一)、软件分析:

1、抢答器鉴别模块:

编译报告:

仿真结果:

2、抢答器计时模块:

编译报告:

仿真结果:

3、抢答器记分模块:

编译报告:

仿真结果:

4、抢答器顶层模块:

编译报告:

仿真结果:

顶层文件的RTL级:

管脚锁定图:

(二)、硬件分析:

五、参考文献:

第二篇:FPGA抢答器设计报告

Vb开办上海电力学院

课程设计报告

信息工程系

抢答器设计报告

一、设计目的:

本课程的授课对象是电子科学与技术专业本科生,是电子类专业的一门重要的实践课程,是理论与实践相结合的重要环节。

本课程有助于培养学生的数字电路设计方法、掌握模块划分、工程设计思想与电路调试能力,为以后从事各种电路设计、制作与调试工作打下坚实的基础

二、实验器材和工具软件:

PC机一台、QuartusII软件、DE2板。

三、设计内容:

(1)抢答器可容纳四组12位选手,每组设置三个抢答按钮供选手使

用。

(2)电路具有第一抢答信号的鉴别和锁存功能。在主持人将系统复位并发出抢答指令后,蜂鸣器提示抢答开始,时显示器显示初始时间并开始倒计时,若参赛选手按抢答按钮,则该组指示灯亮并用组别显示器显示选手的组别,同时蜂鸣器发出“嘀嘟”的双音频声。此时,电路具备自锁功能,使其它抢答按钮不起作用。

(3)如果无人抢答,计时器倒计时到零,蜂鸣器有抢答失败提示,主持人可以按复位键,开始新一轮的抢答。

(4)设置犯规功能。选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮和显示出犯规组号,且蜂鸣器报警,主持人可以终止抢答执行相应惩罚。

(5)抢答器设置抢答时间选择功能。为适应多种抢答需要,系统设有10秒、15秒、20秒和3O秒四种抢答时间选择功能。

四、设计具体步骤:

首先把系统划分为组别判断电路模块groupslct,犯规判别与抢答信号判别电路模块fgqd,分频电路模块fpq1,倒计时控制电路模块djs,显示时间译码电路模块num_7seg模块,组别显示模块showgroup模块这六个模块,各模块设计完成后,用电路原理图方法将各模块连接构成系统。

各模块功能及代码:

1、组别判别模块

(1)功能:可容纳四组12位选手,每组设置三个抢答按钮供选手使用。若参赛选手按抢答按钮,则输出选手的组别。此时,电路具

signal rst : std_logic;begin

h<=“0000” when(a=“000” and b=“000” and c=“000” and d=“000”)else

“0001” when(a/=“000” and b=“000” and c=“000” and d=“000”)else

“0010” when(a=“000” and b/=“000” and c=“000” and d=“000”)else

“0100” when(a=“000” and b=“000” and c/=“000” and d=“000”)else

“1000” when(a=“000” and b=“000” and c=“000” and d/=“000”)else

“0000”;process

begin

wait on clock until rising_edge(clock);

if clr='1' then

rst<='1';

g<=“0000”;

end if;

if h/=“0000” then

if rst='1' then

g<=h;

rst<='0';

end if;

end if;

end process;

end behave_groupslct;

2、犯规判别与抢答信号判别模块

(1)功能:若参赛选手在主持人按开始键之后按抢答按钮,则使该组指示灯亮并输出选手的组别,同时蜂鸣器发出响声。

选手在主持人按开始键之前抢答,则认为犯规,犯规指示灯亮并输出犯规组号,且蜂鸣器报警。

(2)原理:c[3..0]接组别判别模块的g[3..0],即此时c为按键组别的信息。go接主持人的“开始”按键。由于无论是在正常情况还是犯规情况下按下按键,都必须显示按键的组别且蜂鸣器响,所以将c的值给hex以输出按键组别,且在有按键按下(c/=“0000”)时输出fm为‘1’,否则为‘0’。若在开始之前有按键按下时,即go='0'且c/=“0000”,输出ledfg为‘1’,否则为‘0’。若在开始之后有按键按下,将c的值给led,使该组指示灯亮,开始之前led输出“0000”。

(3)程序代码:

library ieee;

use ieee.std_logic_1164.all;

entity fgqd is port(c:in std_logic_vector(3 downto 0);

go:in std_logic;

hex:out std_logic_vector(3 downto 0);

led:out std_logic_vector(3 downto 0);

ledfg,fm:out std_logic);

end fgqd;

architecture behave_fgqd of fgqd is begin);end djs;

architecture behave_djs of djs is begin

process(clock,aclr,s)

begin

if(aclr='1')then

if(s=“00”)then

q<=“01010”;

elsif(s=“01”)then

q<=“01111”;

elsif(s=“10”)then

q<=“10100”;

else

q<=“11110”;

end if;

else

if rising_edge(clock)then

if en='1' then

q<=q-1;

if(q=“00000” and grpsl=“0000”)then

time0<='1';

else

time0<='0';

end if;

end if;

end if;

end if;

end process;end behave_djs;

4、分频器模块

(1)功能:实现50MHz—1Hz的分频,为倒计时模块提供时钟。

(2)程序代码

library ieee;

use ieee.std_logic_1164.all;

entity fpq1 is port(clkin :in std_logic;

clkout:out std_logic);end fpq1;

architecture behave_fpq1 of fpq1 is constant N: Integer:=24999999;signal Counter:Integer RANGE 0 TO N;signal Clk: Std_Logic;begin

process(clkin)

begin

if rising_edge(clkin)then--每计到N个(0~n-1)上升沿,输出信号翻转一次

if Counter=N then

Counter<=0;

Clk<=NOT Clk;

else

Counter<= Counter+1;

end if;

end if;

end process;clkout<= Clk;end behave_fpq1;

5、时间显示译码器

(1)功能:将时间信息在7段数码管上显示。

(2)程序代码

library ieee;

use ieee.std_logic_1164.all;

entity num_7seg is port(c:in std_logic_vector(4 downto 0);

hex:out std_logic_vector(13 downto 0));

end num_7seg;

architecture behave_num_7seg of num_7seg is begin

with c(4 downto 0)select

hex<= “10000001000000” when “00000” ,--“0”

“10000001111001” when “00001” ,--“1”

“10000000100100” when “00010” ,--“2”

“10000000110000” when “00011” ,--“3”

“10000000011001” when “00100” ,--“4”

“10000000010010” when “00101” ,--“5”

“10000000000010” when “00110” ,--“6”

“10000001111000” when “00111” ,--“7”

“10000000000000” when “01000” ,--“8”

“10000000010000” when “01001” ,--“9”

“11110011000000” when “01010” ,--“10”

“11110011111001” when “01011” ,--“11”

“11110010100100” when “01100” ,--“12”

“11110010110000” when “01101” ,--“13”

“11110010011001” when “01110” ,--“14”

“11110010010010” when “01111” ,--“15”

“11110010000010” when “10000” ,--“16”

“11110011111000” when “10001” ,--“17”

“11110010000000” when “10010” ,--“18”

“11110010010000” when “10011” ,--“19”

“01001001000000” when “10100” ,--“20”

“01001001111001” when “10101” ,--“21”

“01001000100100” when “10110” ,--“22”

“01001000110000” when “10111” ,--“23”

“01001000011001” when “11000” ,--“24”

“01001000010010” when “11001” ,--“25”

“01001000000010” when “11010” ,--“26”

“01001001111000” when “11011” ,--“27”

来。然后就是将选出的组别锁存。将按下按键的组别赋给一内部信号“h”(没有按键按下时h=“0000”),当复位键按下时(clr=‘1’)输出g=“0000”并且将另一内部信号rst置1。当复位后(rst=‘1’)有按键按下时将h的值给输出信号g,并且将标志信号rst清零。这样就实现最快按键组别锁存功能。

六、心得体会

通过此次设计,我掌握了数字电路的设计方法,尤其是模块划分、工程设计思想与电路调试能力,都有了一定的提高。为以后从事各种电路设计、制作与调试工作打下坚实的基础。

第三篇:74LS148四路抢答器设计报告

目录

1.设计任务和要求…………………………………….3 2.设计方案…………………………………………….3 2.1 设计思路………………………………………3 2.2 设计原理………………………………………4 2.3 实现功能………………………………………4 3.硬件设计…………………………………………….5 3.1 各功能电路连线图……………………………5 3.2 框图和说明……………………………………6 4.软件设计…………………………………………….7 5.小结………………………………………………….8 6.参考文献…………………………………………….9

设计任务与要求

1.1 可同时供四名选手参赛,其编号分别是1-4,各用一个抢答按钮,按钮的编号和选手的编号相对应,给节目主持人设置一控制开关,用于控制系统的清零(编号显示数码管灭灯)抢答的开始。

1.2

抢答器具有数据锁存和显示的功能,抢答开始后,若有选手按抢答按钮,其编号立即所存,并在数码管上显示该选手的编号,同时封锁输入电路,禁止其他选手抢答。优先抢答选手的编号一直保持到主持人主持人将系统清零为止。设计方案 2.1 设计思路 2.1.1 在给定

5V直流电源电压的条件下设计一个可以容纳四组参赛者的抢答器,每组设定一个抢答按钮供参赛者使用。

2.1.2 设置一个系统清零和抢答控制开关K(该开关由主持人控制),当开关K被按下时,抢答开始(允许抢答),打开后抢答电路清零。

2.1.3 抢答器具有一个抢答信号的鉴别、锁存及显示功能。即有抢答信号输入(参赛者的开关中任意一个开关被按下)时,锁存相应的编号,并在LED数码管上显示出来,同时扬声器发生声响。此时再按其他任何一个抢答器开关均无效,优先抢答选手的编号一直保持不变,直到主持人将系统清除为止。

2.1.4 开关K按下后,系统清零,由主持人发令,开始抢答。2.2 设计原理

2.2.1原理图

2.2.2 设计原理

接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置“开始“状态,宣布”开始“抢答器工作。选手在抢答时,抢答器完成:优先判断、编号锁存、编号显示、亮灯提示。如果再次抢答必须由主持人再次操作”清除“和”开始"状态开关。

2.3 实现功能

一是选手按抢答按钮,其编号立即所存,并在数码管上显示该选手的编号。二是封锁输入电路,禁止其他选手抢答。

三是优先抢答选手的编号一直保持到主持人主持人将系统清零为止。硬件设计

3.1本课程设计,需要用集成电路:

74LS148,74LS279,74LS48和五个开关及其他元件,3.2各功能电路接线图

电路连线图

3.2 框图和说明

3.2.1 元器件

74LS48管脚图

74LS148真值表

74LS148功能介绍

在优先编码器电路中,允许同时输入两个以上编码信号。不过在设计优先编 码器时,已经将所有的输入信号按优先顺序排了队。在同时存在两个或两个以上输入信号时,优先编码器只按优先级高的输入信号编码,优先级低的信号则不起作用。74148是一个八线-三线优先级编码器。3.2.3 说明:

当主持人控制开关S按下时,RS触发器的R端均为“0”,4个触发器输出1Q-4Q全部为零,同时74LS148的选通输入端EI=0,使之处于工作状态,此时锁存电路不工作。当主持人将开关“S”抬起时,优先编码器处于工作状态,即抢答器处于等待工 5 作状态,等待信号输入端信号输入,当有选手按下时,比如“S0”按下时,74LS148的输出Y2Y1Y0=000, 经RS锁存后,BI=1,74LS279处于工作状态,4Q3Q2Q=A2A1A0=000,经74LS48译码后,显示器显示“0”.软件设计

4.1 优先编码器工作原理

74LS148工作原理:该编码器有8个信号输入端,3个二进制码输出端。此外,电路还设置了输入使能端EI,输出使能端EO和优先编码工作状态标志GS。当EI=0时,编码器工作;而当EI=1时,则不论8个输入端为何种状态,3个输出端均为高电平,且优先标志端和输出使能端均为高电平,编码器处于非工作状态。这种情况被称为输入低电平有效,输出也为低电来有效的情况。当EI为0,且至少有一个输入端有编码请求信号(逻辑0)时,优先编码工作状态标志GS为0。表明编码器处于工作状态,否则为1。由功能表可知,在8个输入端均无低电平输入信号和只有输入0端(优先级别最低位)有低电平输入时,A2A1A0均为111,出现了输入条件不同而输出代码相同的情况,这可由GS的状态加以区别,当GS=1时,表示8个输入端均无低电平输入,此时A2A1A0=111为非编码输出;GS=0时,A2A1A0=111表示响应输入0端为低电平时的输出代码(编码输出)。EO只有在EI为0,且所有输入端都为1时,输出为0,它可与另一片同样器件的EI连接,以便组成更多输入端的优先编码器。从功能表不难看出,输入优先级别的次为7,6,„„,0。输入有效信号为低电平,当某一输入端有低电平输入,且比它优先级别高的输入端无低电平输入时,输出端才输出相对应的输入端的代码。小结

本学期第十五周我们进行了电子技术课程设计,我们用一周的时间进行了资料查找和实体设计,然后认真写了设计说明。

本电路由锁存器,编码器,数码管等构成,实现各项锁存,清零等功能。总结如下: 优点:电路功能原理清晰,各项功能均达到了要求,显示准确,反 应灵敏,无竞争冒险现象,基本满足了普通竞赛的抢答要求。缺点:如果长按住按钮不放,主持人清零后将能获得抢答权。改进:可以更改促发器的类型,如使用jk触发器代替,则长按无效,或者在抢答端添加一个发光二极管,当有人作弊,二极管就会亮,从而阻止选手长按按钮的缺陷。心得体会:通过这次课程设计,我对于74L系列有了更深的了解,知道功能表后,一切芯片都能得心应手。而且,知道了抢答器的设计方法,以后可以设计任何多人抢答器。同时实物的制作也提升了我的动手能力,实践能力得到了一定的锻炼。在摸索该如何设计电路使之实现所需功能的过程中,培养了我的设计思维,增强了动手能力。在改进电路的过程中,同学们共同探讨,最后的电路已经比初期设计有了很大提高。在让我体会到了设计电路的艰辛的同时,更让我体会到成功的喜悦和快乐,加深了我对设计方面的兴趣。理论与实践得到了很好的结合。参考文献

1.童师白,华成英.模拟电子技术基础,第三版.北京:高等教育版社,2001 2.阎石.数字电子技术基础,第四版.北京:高等教育版社,1998 3.吕思忠,《数子电路实验与课程设计》 哈尔滨工业大学出版社 4.郑家龙,《集成电子技术基础教程》 高等教育出版社 5.高吉祥《电子技术基础实验与课程设计》 电子工业出版社 6.《数字电路应用300例》 中国电力出版社

第四篇:DIY八路抢答器设计报告总结

课程设计报告

一、课题名称

设计题目

八路抢答器设计

I

数字八路抢答器

二、设计任务

1、设计一个八路抢答器,要求具有抢答功能,电路基本要求内含蜂鸣器、显示器等;

2、画出抢答器的电路原理图,分析各部分电路的工作原理;

3、.抢答组数分为八组,序号分别为S0 ~ S7,优先抢答者按动本组按键,组号立即在LED显示器上显示,同时封锁住其他组的按键信号。

4、系统设置外部清除键,按动清除键,LED显示器自动清零灭灯。

三、技术指标

1、设计8组参赛的抢答器,每组设置一个抢答按钮.2、电路具有第一抢答信号鉴别与锁存功能,抢答成功后,显示组别,发出声音.四、设计报告

根据要求撰写设计报告

II

一、任务分析

二、设计方案

三、电路设计

四、实物图

五、调试

《八路抢答器设计》

一、任务分析

八路抢答器功能描述如下:

1、涵盖抢答自锁、灯光指示、暂停复位、电子音乐报声等功能

2、工作模式:手控

3、面板上设有组号,显示清晰,同步显示,互不干扰。

4、积木式结构,1—8组任意连接。

5、具有抢答声音提示。共用的喇叭中发出优美的电子音乐声

抢答器工作流程描述

选手抢答-> 发出声响、显示组号-> 抢答声讯-> 主持人复位

1.抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S1 ~ S8 2.设置一个系统清除和抢答控制开关S,该开关由主持人控制。

3.抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示,同时扬声器发出报警声响提示。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

抢答器硬件描述

该电路由直流稳压电源、抢答器、LED数码管组成。

抢答器电路主要由各路的抢答器按键、开关二极管、晶闸管、发光二极管及一个三极管和扬声器B1 组

成LED数码管的每一笔划都是对应一个字母表示 DP是小数点.CD4511是一个用于驱动共阴极 LED(数码管)显示器的 BCD 码—七段码译码器,特点:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动LED显示器

其中CD4511 各管脚功能如下:

BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态是怎么样的,七段数码管都会处于消隐也就是不显示的状态。

LE:锁定控制端,当LE=0时,允许译码输出。LE=1时译码器是锁定保持状态,译码器输出被保持在LE=0时的数值。

LT:3脚是测试信号的输入端,当BI=1,LT=0 时,译码输出全为1,不管输入 DCBA 状态如何,七段均发亮全部显示。它主要用来检测数7段码管是否有物理损坏。

A1、A2、A3、A4、为8421BCD码输入端。

a、b、c、d、e、f、g:为译码输出端,输出为高电平1有效。

二、设计方案

1、设计目的

在电视和学校中我们会经常看到一些智力抢答的节目,如果要是让抢答者用举手等方法,主持人很容易误判,会造成抢答的不公平,比赛中为了准确、公正、直观地判断出第一抢答者,所设计的抢答器通常由数码显示、灯光、音响等多种手段指示出第一抢答者。为了使这种不公平不发生,只有靠电子产品的高准确性来保障抢答的公平性。

2、方案

方案一:采用数字电路

定时抢答器的总体框图如图所示,它由主体电路和扩展电路两部分组成。主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答。扩展电路完成定时抢答的功能。

定时抢答器的工作过程是:接通电源时,节目主持人将开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯,当节目主持人宣布“抢答开始”,同时将控制开关拨到“开始”位置,扬声器给出声响提示,抢答器处于工作状态。抢答器要完成以下四项工作:

①优先编码电路立即分辨出抢答者的编号,并由锁存器进行锁存,然后由译码显示电路显示编号;

②扬声器发出短暂声响,提醒节目主持人注意;

③控制电路要对输入编码电路进行封锁,避免其他选手再次进行抢答;

④控制电路要保持到主持人将系统清零为止。当选手将问题回答完毕,主持人操作控制开关,使系统回复到禁止工作状态,以便进行下一轮抢答。

方案二:采用单片机

当主持人宣布抢答开始的时候,按下开始按钮,此时电路进入抢答状态,选手的输入采用了扫描式的输入,之后把相应的信息送往单片机,再由单片机输出到显示输出电路中。此时有人第一按下相应的抢答按钮,经过单片机的控制选择,在八段显示器上显示相应的号码,并锁存,同时禁止其他按钮的输入。

方案三〈采用PLC 当主持人打开启动开关后,在设定时间TO 内,如果某组抢先按下抢答按钮,则驱动音效电路①发出声响,指示灯LI亮,并且在8段数码管显示器上显示出抢答成功的组号,此时电路实现互锁,其他组再按下抢答按钮为无效;如果在时间TO内,无人应答,则驱动音效电路②发出声响,指示灯L2亮,表示抢答者均放弃该题;在抢答成功后,主持人打开限时开关SW2,启动计时器,在设定的时间TI 内回答有效,当到达设定时间TI时,驱动音效电路③,指示灯L3亮,表示答题时间到。

3、方案选择 通过上面的方案比较,数字电路的制作方案比较容易实现,并且在原理方面也是比较简单,所以我选择采用第一种方案来完成抢答器电路。

4、设计系统功能 基本功能:

(1)同时供8名选手比赛,分别用8个按钮S0 ~ S7表示。

(2)设置一个系统清除和抢答控制开关S,该开关由主持人控制。

(3)抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,扬声器发出声响提示,并在七段数码管上显示选手号码。选手抢答实行优先锁存,优先抢答选手的编号一直保持到主持人将系统清除为止。

三、电路设计

四、实物图

五、调试

在调试中出现了一个问题,就是CD4511不能锁存,最后在吧R15那个电阻直接取消了就成功了

第五篇:4路抢答器设计程序

#include

unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,//0~f显示表

0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};unsigned char code table0[]={0xf1,0xf2,0xf4,0xf8};

//P2口位选

unsigned char code table2[]={0xef,0xdf,0xbf,0x7f};

//P3口送行信号 unsigned char display[]={0,0,0,0};//显示位 void sw1();

//子函数申明 void sw2();void sw3();void sw4();void xianshi();void init();unsigned char temp,num2,x,x1,x2,a,count;

//变量声明 int num,num1;unsigned char key;unsigned char i,j;sbit P3_4=P3^4;sbit P3_5=P3^5;sbit P3_6=P3^6;sbit P3_7=P3^7;sbit k1=P1^0;

//位申明(时间加)sbit k2=P1^1;

//位申明(时间减)sbit k3=P1^2;

//位申明(开始)sbit k4=P1^3;

//位申明(复位)sbit sp=P1^4;

//蜂鸣器 sbit l1=P1^5;

//LED显示 sbit l2=P1^6;

//LED显示

void delay(unsigned char z)

//延时1ms子函数 {

unsigned char x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);}

void init()

//初始化子函数 { a=0;TMOD=0x01;

//定时器T0工作方式设定

TH0=(65536-10000)/256;//装初值

TL0=(65536-10000)%256;EA=1;

//开定时器T0 ET0=1;

if(k1==0)

//判断时间加K1是否按下

{

delay(5);

//延时躲过抖动

if(k1==0)

//再次确认是否按下K1

{

num++;

//时间自加1

if(num==99)

//如果时间num=99,清零num

{

num=0;

}

num2=num;

//将num值赋值给num2

while(k1==0);//等待K1松手

}

}

if(k2==0)

//判断时间减K2是否按下

{

delay(5);

//延时躲过抖动

if(k2==0)

//再次确认是否按下K2

{

num--;

//时间自减1

if(num==-1)//如果时间num=-1,赋值num=99

{

num=99;

}

num2=num;//将num值赋值给num2

while(k2==0);//等待K2松手

}

}

if(k3==0)

//判断开始按钮K3是否按下

{

delay(5);

//延时躲过抖动

if(k3==0)//再次确认是否按下K3

{

x++;

//自加1

if(x==2)//假如x=2,清零x

{

x=0;

}

}

} }

void keyboad()

//按键检测子函数 { while(1)

{

P3=0xff;

//读引脚前需写入高电平

P3_4=0;

//置第一行线为低

temp=P3;

//P3口信息送入temp中

temp=temp & 0x0f;//屏蔽高四位,保留低四位

if(temp!=0x0f)//判断:假如列线有不为高的时候,执行if循环体

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;//判断是哪个键按下

switch(temp)

{

case 0x0e: //第一行第四个按下

{delay(5);num1=4;l2=0;xianshi();} //第一行第一个键按下

break;

case 0x0d:

//第一行第三个按下

{delay(5);num1=3;l2=0;xianshi();}

break;

case 0x0b:

//第一行第二个按下

{delay(5);num1=2;l2=0;xianshi();}

break;

case 0x07: //第一行第一个按下

{delay(5);num1=1;l2=0;xianshi();} break;//第一行第一个键按下

}

}

}

P3=0xff;

P3_5=0;

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

{delay(5);num1=8;l2=0;xianshi();} break;

case 0x0d:

{delay(5);num1=7;l2=0;xianshi();} break;

case 0x0b:

{delay(5);num1=6;l2=0;xianshi();} break;

case 0x07:

{delay(5);num1=5;l2=0;xianshi();} break;

}

}

}

P3=0xff;

P3_6=0;

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

{delay(5);num1=12;l2=0;xianshi();} break;

case 0x0d:

{delay(5);num1=11;l2=0;xianshi();} break;

case 0x0b:

{delay(5);num1=10;l2=0;xianshi();} break;

case 0x07:

{delay(5);num1=9;l2=0;xianshi();} break;

//第二行第四个键按下//第二行第三个键按下//第二行第二个键按下//第二行第一个键按下//第三行第四个键按下//第三行第三个键按下//第三行第二个键按下//第三行第一个键按下

}

}

}

P3=0xff;

P3_7=0;

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

delay(5);//延时躲过抖动

temp=P3;

temp=temp & 0x0f;

if(temp!=0x0f)

{

temp=P3;

temp=temp & 0x0f;

switch(temp)

{

case 0x0e:

{delay(5);num1=16;l2=0;xianshi();} break;

case 0x0d:

{delay(5);num1=15;l2=0;xianshi();} break;

case 0x0b:

{delay(5);num1=14;l2=0;xianshi();} break;

case 0x07:

{delay(5);num1=13;l2=0;xianshi();} break;

}

temp=P3;

P0=table[key];

}

}

} }

void xianshi(){

TR0=0;

//停止定时计数

num=0;

//倒计时num清零

sp=1;

//成功抢答,蜂鸣器叫

delay(100);

//延时一段时间

sp=0;

//关蜂鸣器

//第四行第四个键按下//第四行第三个键按下//第四行第二个键按下//第四行第一个键按下

while(1)

{

for(a=0;a<4;a++)//显示部分位选

{

delay(5);

P2=table0[a];

P0=table[display[a]];

}

display[0]=num/10;

//倒计时显示0

display[1]=num%10;

display[2]=num1/10;

//显示抢答者号

display[3]=num1%10;

if(k4==0)

//判断复位键K4是否按下

{

num=num2;

//num2值赋值给num

num1=0;

//清零抢答者号显示

TR0=1;

//启动定时器TO

l1=1;

//D1,D2关闭

l2=1;

return;

}

} }

void main()

//主函数 {

l1=1;

//D1,D2关闭

l2=1;

sp=0;//初始化蜂鸣器

x=0;

num=num2=30;

//赋初值

while(1)

{

if(x==1)

//开始键按下

{

delay(5);

TR0=1;

//启动定时

while(1)

{

keyboad();//调用按键检测子函数

if(k4==0)//判断复位键是否按下

{

l1=1;//D1,D2关闭

l2=1;

delay(5);

num=num2;//倒计时时间30秒赋值给num

TR0=1;//启动定时器T0

}

}

}

else

//开始键没有按下

{

for(a=0;a<4;a++)

//显示部分位选

{

delay(5);

P2=table0[a];

P0=table[display[a]];

}

display[0]=num/10;//倒计时显示0

display[1]=num%10;

display[2]=num1/10;

//显示抢答者号

display[3]=num1%10;

init();

//初始化

}

} }

void time0()interrupt 1 //定时器T0中断 {

TH0=(65536-10000)/256;

//重装初值

TL0=(65536-10000)%256;count++;

//中断次数记录

if(k4==0)

//复位键K4检测

{

num=num2;

TR0=1;

num1=0;

return;

}

for(a=0;a<4;a++)

{

delay(10);

P2=table0[a];

P0=table[display[a]];

} display[0]=num/10;

//倒计时显示0

display[1]=num%10;

display[2]=num1/10;//显示抢答者号

display[3]=num1%10;

if(count==100)

//1秒定时是否已到

{

count=0;

//清零记录

num--;

//显示倒计时自减一

if(num<6)

//倒计时倒数6秒,D2亮,蜂鸣器报警

{

l1=~l1;

sp=1;

delay(100);

sp=0;

if(num==0)

//倒计时为0,D2亮,蜂鸣器报警

{

l1=0;

sp=1;delay(200);sp=0;

delay(100);

sp=1;delay(200);sp=0;

delay(100);

sp=1;delay(200);sp=0;

}

if(num==0)

{

while(1)

{

xianshi();

//调用延时子函数

if(k4==0)//假如复位键按下

{

l1=1;

//D1,D2灭

l2=1;

num=num2;//30秒倒计时赋值给num

TR0=1;//启动定时器T0

return;

}

}

}

} } x2++;if(x2==4){

x2=0;} P3=table2[x2];

//分别给行线送低电?

下载EDA4人抢答器设计报告(范文大全)word格式文档
下载EDA4人抢答器设计报告(范文大全).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    基于aduino的抢答器设计

    /*QIANG DA QI disigned by ckj2012/12/8*/ int d[4]={7,12,2,6};//shuju boolean ds[4]={0,0,0,0};//si ge jie kou de shujuint lt=3;//ceshi shuruduan int bi=4;//xiaoy......

    抢答器设计心得(精选五篇)

    回顾上一周课程设计的时间,收获了很多,也付出了很多,周一至周二主要熟悉ewb软件的操作使用,学会仿真,周三至周四是看书查找资料,对相关元器件做一些了解,并把元器件布好线,以待焊接,......

    plc s7-200抢答器报告

    西门子PLC S7-200智力竞赛抢答器模拟报告 - 1西门子PLC S7-200智力竞赛抢答器模拟报告 - 3①1号选手抢答到后I0.0闭合,辅助继电器M0.0得电,所以常闭开关M0.0断开,常开触点M0.0......

    八路智力竞赛抢答器设计实验报告

    数字电子技术课程设计 题 目: 姓 名: 专 业: 班 级: 学 号: 指导教师: 八路智力竞赛抢答器设计 电子科学与技术 122班 20 年 月 日 安徽科技学院理学院 安徽科技学......

    基于51单片机的抢答器设计[最终定稿]

    1. 系统设计 1.1设计要求 1、 需要自己设计电路并焊接电路板。 2、 基本要求:有一个主持人控制开关和6路抢答按扭,当主持人允许抢答时才能进行抢答操作,并用一个数码管显示抢答......

    八路抢答器实训报告

    八路抢答器实训报告 八路抢答器实训报告 姓名:张伟康 学号:1401020044 班级:电信方向八路抢答器实训报告 一 报告要求 根据实验原理和实验器材设计所需要的电路模型,完成实验......

    土木工程毕业实习日志(设计类)ed

    毕业实习日志(设计类) 前言: 即将踏入社会,面对竞争激烈的社会环境,社会实践对我们即将毕业的学生来说是必不可少的重要环节。通过这次毕业实习,把理论和实践相结合,更好地了解和学......

    开题报告-基于PLC控制的知识竞赛抢答器设计

    开题报告电气工程及自动化基于PLC控制的知识竞赛抢答器设计一、综述本课题国内外研究动态,说明选题的依据和意义无论国内抑或是国外,在很多公开竞争场合中,都要求有公正的竞争......