智能八路抢答器的设计.doc

上传人:飞****2 文档编号:63965858 上传时间:2022-11-27 格式:DOC 页数:28 大小:236KB
返回 下载 相关 举报
智能八路抢答器的设计.doc_第1页
第1页 / 共28页
智能八路抢答器的设计.doc_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《智能八路抢答器的设计.doc》由会员分享,可在线阅读,更多相关《智能八路抢答器的设计.doc(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、物理与电子工程学院 课程设计 题 目: 智能八路抢答器的设计 专 业: 班 级: 姓 名: 学号: 实验地点: 物理与电子工程学院 指导老师: 成 绩: ( 2010.07 )智能八路抢答器的设计物理与电子工程学院 指导老师: 1 引 言电子产品在生活中有着极其广泛的应用,包括计算机、数字通信、智能仪器仪表、自动控制及航天等领域中。这些给人们带来了生活,工作等方面带来了极大的方便。电子产品的发展,使得这门课程对于我们来说是很有必要学好。在这次的电子产品的制作中,本人制作八路智能抢答器。抢答器在比赛等场合中不可缺少的设备。智力竞赛是一种生动活泼的教育形式和方法,它通过抢答和必答等方式引起参赛者和

2、观众的兴趣,并在短时间内(如30秒等),增加人们的科学知识和生活知识。进行智力抢答时,一般分为若干组,主持人对各个组提出问题,有必答题和抢答题两种。答题有时间限制,若在规定时间内未能回答问题,则发出超时警告。对抢答题,要准确判断那组优先,并予以指示和鸣叫(如响铃等)。回答正确与否,由主持人判别并进行加分和减分,成绩结果通过电子装置显示1.1 设计内容 用单片机设计并实现智能八路抢答器。1.2 设计要求1. 复习编码器、十进制加/减计数器的工作原理,设计可预置时间的定时电路分析与设计时序控制电路。画出定时抢答器的整机逻辑电路图,掌握智力抢答器的工作原理及其设计方法,并对各种元器件的功能和应用有所

3、了解。并能对其在电路中的作用进行分析。了解电路设计流程的原理图。明白每个电路的设计流程。1.3 系统主要功能 1.3.1基本功能1. 设计一个智能竞赛抢答器,可同时供8个选手或8个代表队参加比赛,他们的编号分别是A,B,C,D,E,F,G,H,各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是STATES0、STATES1、STATES2、STATES3、STATES4、STATES5、S STATES6、STATES7。2. 给节目主持人设置一个控制开关,用来控制系统的清零(编号显示数码管灭灯)和抢答的开始。3. 抢答器具有数据锁存和显示的功能。抢答开始后,若有选手按动抢答开关按钮,编号

4、立即锁存,并在LED数码管上显示选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。优先抢答选手的编号一直保持到主持人将系统清零为止。1.3.2扩展功能1. 抢答器具有定时抢答的功能,且一次的抢答时间由主持人设定。当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响。2. 参赛选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间(如30s),并保持到主持人将系统清零为止。如果定时抢答时间已到,但没有选手抢答,本次抢答无效,系统将短暂报警并封锁输入电路,禁止选手超时后抢答,时间显示器上并显示00。

5、3. 当参赛选手在回答问题后主持人根据回答内容和回答是否有效并最终给出无效、加分、减分三种情况(每个参赛选手初始分为100分每加分或减分的单位都是10分)2 硬件设计2.1原理图图2-1 八路抢答器原理图2.2主要元件功能说明2.2.1抢答鉴别模块其主要的程序如下:PORT(CLR: IN STD_LOGIC; A,B,C,D,E,F,G,H:IN STD_LOGIC; 八人或八组抢答按键 X:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); 给选择器一个组别输入信号 STATES:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);给计分器一个输入信号 zub

6、ie:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);显示抢答组别号 SOUND:OUT STD_LOGIC);声音输出信号END ENTITY QDJB; ARCHITECTURE QDJB_ARC OF QDJB IS定义八个变量根据输入信号将其赋给输出 CONSTANT W1: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W2: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W3: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W4: STD_LOGIC_VEC

7、TOR(7 DOWNTO 0):=; CONSTANT W5: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W6: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W7: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W8: STD_LOGIC_VECTOR(7 DOWNTO 0):=; BEGIN PROCESS(CLR,A,B,C,D,E,F,G,H) IS BEGINIF CLR=1 THEN STATES=;清零有效输出全部赋零X(0)=0;X(1)=0;X(2)=0;X(3)=

8、0;X(4)=0;X(5)=0;X(6)=0;X(7)=0; ELSIF (A=1AND B=0AND C=0AND D=0AND E=0AND F=0AND G=0AND H=0) THENX(0)=1;X(1)=0;X(2)=0;X(3)=0;X(4)=0;X(5)=0;X(6)=0;X(7)=0; STATES=W1; SOUND=1;zubie=0001;A抢答成功把W1赋给输出声音响起 组别号显示为1。 ELSIF (A=0AND B=1AND C=0AND D=0AND E=0AND F=0AND G=0AND H=0) THENX(0)=0;X(1)=1;X(2)=0;X(3)=

9、0;X(4)=0;X(5)=0;X(6)=0;X(7)=0; STATES=W2; SOUND=1;zubie=0010;B抢答成功把W2赋给输出声音响起 组别号显示为2。 ELSIF (A=0AND B=0AND C=1AND D=0AND E=0AND F=0AND G=0AND H=0) THENX(0)=0;X(1)=0;X(2)=1;X(3)=0;X(4)=0;X(5)=0;X(6)=0;X(7)=0; STATES=W3; SOUND=1;zubie=0011;C抢答成功把W3赋给输出声音响起 组别号显示为3。 ELSIF (A=0AND B=0AND C=0AND D=1AND

10、E=0AND F=0AND G=0AND H=0) THENX(0)=0;X(1)=0;X(2)=0;X(3)=1;X(4)=0;X(5)=0;X(6)=0;X(7)=0; STATES=W4; SOUND=1;zubie=0100;D抢答成功把W4赋给输出声音响起 组别号显示为4。 ELSIF (A=0AND B=0AND C=0AND D=0AND E=1AND F=0AND G=0AND H=0) THENX(0)=0;X(1)=0;X(2)=0;X(3)=0;X(4)=1;X(5)=0;X(6)=0;X(7)=0; STATES=W5; SOUND=1;zubie=0101;E抢答成功

11、把W5赋给输出声音响起 组别号显示为5。 ELSIF (A=0AND B=0AND C=0AND D=0AND E=0AND F=1AND G=0AND H=0) THENX(0)=0;X(1)=0;X(2)=0;X(3)=0;X(4)=0;X(5)=1;X(6)=0;X(7)=0; STATES=W6; SOUND=1;zubie=0110;F抢答成功把W6赋给输出声音响起 组别号显示为6。 ELSIF (A=0AND B=0AND C=0AND D=0AND E=0AND F=0AND G=1AND H=0) THENX(0)=0;X(1)=0;X(2)=0;X(3)=0;X(4)=0;X

12、(5)=0;X(6)=1;X(7)=0; STATES=W7; SOUND=1;zubie=0111;G抢答成功把W7赋给输出声音响起 组别号显示为7。 ELSIF (A=0AND B=0AND C=0AND D=0AND E=0AND F=0AND G=1AND H=1) THENX(0)=0;X(1)=0;X(2)=0;X(3)=0;X(4)=0;X(5)=0;X(6)=0;X(7)=1; STATES=W8; SOUND=1;zubie=1000;H抢答成功把W8赋给输出声音响起 组别号显示为8。它的功能是鉴别八组(A,B,C,D,E,F,G,H,)中是那组抢答成功并且把抢答成功的组别号

13、输出给动态扫描并用译码器在数码管上显示相应的组别号(用阿拉伯数字表示)。它上面设置一个主持人开关清零键(CLR)其主要功能是当一轮成功抢答完后或抢答无效后主持人按下清零键(CLR)后数码管显示最初状态“0”。其代码程序仿真结果如图所示 图4-2 抢答鉴别波形仿真2.2.2倒计时模块源程序如下所示:IF CLR=0 THEN当清零有效的时候HH:=0011;清零时赋初始值30秒LL:=0000;ELSEIF CLKEVENT AND CLK=1THEN IF EN=0THEN 使能有效的时候当倒计时为00的时候声音响起IF LL=0 AND HH=0 THEN SOUND=1; ELSIF LL

14、=0 THEN 当个位为0时十位减1个位变成9LL:=1001; HH:=HH-1; ELSE LL:=LL-1; 如果个位不为0时十位不变个位减1END IF; ELSE SOUND=1; HH:=0011; LL:=0000;它的功能:是如果一组抢答成功,主持人给出判断并给出使能信号使倒计时开始计时如果计时到30秒的时候声音就会响起给主持人提供信息说明抢答队员已经超过了规定的时间,主持人会根据自己的主观意愿宣部此次抢答有效或无效。总的来说倒计时起到规定参赛者的起到时间并起到给主持人提示的作用。倒计时的设计思想:倒计时需要用两个数码管显示,其中一个数码管显示十位(HH)另一个显示个位(LL)

15、,它们都用二进制表示,当参赛者抢答成功时,主持人给出是否有效,如果有效就把使能信号赋高电平,倒计时开始工作,当时钟脉冲(clk)有效的时候倒计时就开始计时,当个位变成零的时候程序就会使十位减1并且个位变成9,如果个位没有变成零的时候个位在时钟脉冲上升沿的时候自动减1,十位保持不变。倒计时的仿真波形如下图所示:图4-3 倒计时模块波形仿真2.2.3计分选择模块2.2.3.1计分模块程序: BEGIN IF (clkEVENT AND clk=1) THEN IF RST=1 THEN每个参赛选手用三个数码管显示分别为百位、十位、个位,当复位有效的时候给每个选手赋初始分100分 cnt_1h=00

16、01;cnt_1m=0000; cnt_1l=0000; cnt_2h=0001;cnt_2m=0000; cnt_2l=0000; cnt_3h=0001;cnt_3m=0000; cnt_3l=0000; cnt_4h=0001;cnt_4m=0000; cnt_4l=0000; cnt_5h=0001;cnt_5m=0000; cnt_5l=0000; cnt_6h=0001;cnt_6m=0000; cnt_6l=0000; cnt_7h=0001;cnt_7m=0000; cnt_7l=0000; cnt_8h=0001;cnt_8m=0000; cnt_8l=0000;ELSIF

17、CHOS= THEN当参赛选手A抢答成功为1其他不成功为0的时候 if add=1 then当加分有效的时候 IF cnt_1m=1001 THEN cnt_1m=0000;当十位为9的时候变成0 IF cnt_1h=1001 THEN cnt_1h=0000;当百位为9的时候变成0 ELSE cnt_1h=cnt_1h+1;如果百位不为9的时候就在百位加1 END IF; ELSE cnt_1m=cnt_1m+1;如果十位不为9的时候就在十位加1 END IF; elsif jian=1 then如果减分有效的时候 IF cnt_1m=0000 THEN cnt_1m=1001;cnt_1h

18、=cnt_1h-1; .如果十位为0的时候就把十位变成9并且百位上减1 ELSE cnt_1m=cnt_1m-1; 如果十位不为0的时候就在十位上减1,而百位与个位上保持不变 END IF; END IF; ELSIF CHOS= THEN 当参赛选手B抢答成功为1其他不成功为0的时候 if add=1 then IF cnt_2m=1001 THEN cnt_2m=0000; IF cnt_2h=1001 THEN cnt_2h=0000; ELSE cnt_2h=cnt_2h+1; END IF; ELSE cnt_2m=cnt_2m+1; END IF; elsif jian=1 the

19、n IF cnt_2m=0000 THEN cnt_2m=1001;cnt_2h=cnt_2h-1; ELSE cnt_2mmark_h=mark_1h;mark_m=mark_1m;mark_lmark_h=mark_2h;mark_m=mark_2m;mark_lmark_h=mark_3h;mark_m=mark_3m;mark_lmark_h=mark_4h;mark_m=mark_4m;mark_lmark_h=mark_5h;mark_m=mark_5m;mark_lmark_h=mark_6h;mark_m=mark_6m;mark_lmark_h=mark_7h;mark_m=

20、mark_7m;mark_lmark_h=mark_8h;mark_m=mark_8m;mark_lmark_h=1111;mark_m=1111;mark_lDOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=;如果输入信号不是上面几种情况则数码管不显示。把译码器生成模块如下图所示:图4-5 译码器模块译码器的主要功能:其主要功能就是把各个模块的输入的不同信号经过译码成BCD码然后直接在数码管上显示,更能给观众一个准确、简明的数字。2.2.5动态扫描介绍数码管显示一般分为静态显示和动态显示两种驱动方式。动态显示驱动:数码管动态显示接

21、口是应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a、b、c、d、e、f、g的同名端连在一起,另外为每个数码管的公共极COM(地线端)增加位选通控制电路,位选通由各自独立的I/O线控制,当输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于对位选通COM(地线端)端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM(地线端)端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的

22、余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。为了使动态扫描能够正常的工作因此我们要提供相应的频率通过学习我们知道1hz是我们需要得要的频率而开发板上是12mhz因此我们要通过分频来得到,我们要得到指定那位数码管显示相应的数字我们还必须要加个未选和段选两个小模块,因此动态扫描需要分频、未选、段选三部分组成。2.2.5.1分频模块主要程序如下面所示:port(clk:in std_logic;clk40k,clk1:out std_logic);end

23、fpq;architecture behav of fpq is定义d1、d2为信号signal d1:std_logic;signal d2:std_logic;beginp1:process(clk)variable q1:integer range 0 to 299;定义一个q1为整数变量其整数范围为0299。beginif clkevent and clk=1 then当时钟脉冲在上升沿并且时钟脉冲有效的时候。if q1299 then q1:=q1+1;d1=0; 如果q1小于299时那么在时钟脉冲上升沿的时候q1就自动加1并且d1等于0。else d1=1;q1:=0; 如果q1等

24、于299的时候那么d1就等于1并且同时把q1等于0。end if;end if; 把最终的d2赋值给clk1。clk40k=d1;end process;p2:process(d1)variable q2:integer range 0 to 39999; 定义一个q2为整数变量其整数范围为03999。beginif d1event and d1=1 then 当上个程序d1在上升沿并且有效的时候。if q239999 then q2:=q2+1;d2=0; 如果q2小于3999时那么在d1上升沿的时候q2就自动加1并且d2等于0。else d2=1;q2:=0; 如果q2等于3999的时候那

25、么d2就等于1并且同时把q2等于0。end if;end if;clk1ddddddd=0000;当输入信号为其他的情况的时候就把0这个数值付给输出。end case;将段选生成模块为图4-7段选模块2.2.5.3位选计数模块位选计数的主要程序为: process(clk)beginif clkevent and clk=1 then当时钟脉冲的上升沿到来的并且有效的时候。if q=101 then如果q等于5的时候。q=000;然后就把q等于0。else qqqqqqqq=;当计数输入信号为其他情况的时候数码管全部都不亮。2.2.6锁存模块锁存模块的主要程序:signal dn1,dn2,d

26、n3:std_logic; 定义dn1,dn2,dn3为信号。beginprocess(oe,clr)beginif clr=1 then当清零有效时。dn1=0;dn2=0;dn3=0; 清零有效把输出全部赋值为0。elsif oe=1 the当反馈信号有效时dn1=dn1;dn2=dn2;dn3=dn3; 将输出信号一直保持下去。else dn1=d1;dn2=d2;dn3=d3; 如果反馈信号无效的时候就把输入赋给输出。反馈模块成为为:process(d1,d2,d3)beginif d1=1 or d2=1 or d3=1 then q=1; else q=0;将他们生成模块如下图所示

27、:图4-8锁存器模块他们的仿真波形为:3.2 程序清单5 结束语无论是设计通讯、消费、计算机或工业应用,MAX器件都能够为成本和功率受限的控制通道应用提供所需的功能。MAX更低的价格,更低的功率和更大的容量使其成为复杂控制应用的理想方案,包括以往不可能在CPLD中实现的 新应用。MAX采用了全新CPLD体系结构,比以往的MAX器件有重大改进、价格减半、功耗降至十分之一、容量增加四倍、性能增加二倍。这些优势允许设计者将多个控制应用集成到单个器件中。如图所示,主要的控制通道功能可分为四类:I/O扩张、接口桥接、上电顺序和系统配置。MAX器件基于0.18um Flash工艺,是即用型和非易失器件,成

28、本不到上一代MAX器件的功能和封装。 参考文献1潘松、黄继业。EDA技术实用教程。北京:科学出版社,20022杨刚 李雷.数字电子技术基础教程M.北京:科技出版社,20013赵立民。可编程逻辑器与数字系统设计。北京:机械工业出版社,2003全部源程序抢答鉴别模块LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY QDJB IS PORT(CLR: IN STD_LOGIC; A,B,C,D,E,F,G,H:IN STD_LOGIC; X:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); STATES:OUT STD_LOGIC_

29、VECTOR(7 DOWNTO 0); zubie:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); SOUND:OUT STD_LOGIC);END ENTITY QDJB; ARCHITECTURE QDJB_ARC OF QDJB IS CONSTANT W1: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W2: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W3: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W4: STD_LOGIC_VECTOR(7 DO

30、WNTO 0):=; CONSTANT W5: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W6: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W7: STD_LOGIC_VECTOR(7 DOWNTO 0):=; CONSTANT W8: STD_LOGIC_VECTOR(7 DOWNTO 0):=; BEGIN PROCESS(CLR,A,B,C,D,E,F,G,H) IS BEGINIF CLR=1 THEN STATES=;X(0)=0;X(1)=0;X(2)=0;X(3)=0;X(4)=0;X(5)=0;X(

31、6)=0;X(7)=0; ELSIF (A=1AND B=0AND C=0AND D=0AND E=0AND F=0AND G=0AND H=0) THEN X(0)=1;X(1)=0;X(2)=0;X(3)=0;X(4)=0;X(5)=0;X(6)=0;X(7)=0; STATES=W1; SOUND=1;zubie=0001; ELSIF (A=0AND B=1AND C=0AND D=0AND E=0AND F=0AND G=0AND H=0) THEN X(0)=0;X(1)=1;X(2)=0;X(3)=0;X(4)=0;X(5)=0;X(6)=0;X(7)=0; STATES=W2; SOUND=1;zubie=0010; ELSIF (A=0AND B=0AND C=1AND D=0AND E=0AND F=0AND G=0AND H=0) THEN X

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com