六路抢答器设计.docx

上传人:b****5 文档编号:7218083 上传时间:2023-05-11 格式:DOCX 页数:17 大小:209.59KB
下载 相关 举报
六路抢答器设计.docx_第1页
第1页 / 共17页
六路抢答器设计.docx_第2页
第2页 / 共17页
六路抢答器设计.docx_第3页
第3页 / 共17页
六路抢答器设计.docx_第4页
第4页 / 共17页
六路抢答器设计.docx_第5页
第5页 / 共17页
六路抢答器设计.docx_第6页
第6页 / 共17页
六路抢答器设计.docx_第7页
第7页 / 共17页
六路抢答器设计.docx_第8页
第8页 / 共17页
六路抢答器设计.docx_第9页
第9页 / 共17页
六路抢答器设计.docx_第10页
第10页 / 共17页
六路抢答器设计.docx_第11页
第11页 / 共17页
六路抢答器设计.docx_第12页
第12页 / 共17页
六路抢答器设计.docx_第13页
第13页 / 共17页
六路抢答器设计.docx_第14页
第14页 / 共17页
六路抢答器设计.docx_第15页
第15页 / 共17页
六路抢答器设计.docx_第16页
第16页 / 共17页
六路抢答器设计.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

六路抢答器设计.docx

《六路抢答器设计.docx》由会员分享,可在线阅读,更多相关《六路抢答器设计.docx(17页珍藏版)》请在冰点文库上搜索。

六路抢答器设计.docx

六路抢答器设计

1问题描述

1.1设计任务

设计制作一个可容纳六组参赛队的智力竞赛抢答器,每组设置一个抢答按钮供抢答者使用。

电路具有第一抢答信号的鉴别和锁存功能。

1.2设计要求

要求确定第一个输入的抢答信号,并保持该信号不变,同时使后输入的信号无效。

在发出“抢答开始命令”后开始计时,经过规定的抢答时间后若没有人抢答,就发出“抢答时间到”信号,并锁定输入电路,使各路抢答信号无法再输入。

设置计分电路,开始时每组预置为100分或其他,答对一次加10分,答错减10分(可选)。

2设计思想

课程设计此次课程设计有点难度,刚开始是一直都没有设计思路,后来通过在网上收集资料,参考一些比较成功的设计思路。

慢慢就有了一些自己的想法以及思路的形成。

我设计的智力竞赛抢答器可同时供6名选手或6个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、,各用一个抢答按钮,按钮的编号与选手的编号是相对应的,分别是S1、S2、S3、S4、S5、S6;给节目主持人设置二个控制按钮开关,用来控制系统的清零和抢答的开始抢答器具有程序存储、数据锁存和显示功能,抢答开始后,若有选手按动抢答按钮,编号立即锁存,并在数码管上显示出选手的编号,同时蜂鸣器给出音响提示,此外,要封锁输入电路,禁止其他选手抢答,优先抢答选手的编号一直保持到主持人将系统清零为止如果想调节抢答时间或答题时间,按"抢答时间调节"键或"答题时间调节"键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"加1s"键,如果想减一秒按一下"-1s"键,时间就会显示改变后的时间,调整范围为0s~99s,0s时再减1s会跳到99,99s时再加1s会变到0s,主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时(预设15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设10s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。

倒数时间到小于5s会每秒响一下提示音。

 如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按下“抢答开始开关”进入下次抢答计时。

如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,显示器上不断闪烁FF和犯规号数并响个不停,直到按下"停止"键为止。

有想过设计记分系统但程序太过于复杂,在我的能力之外,因此只能有以上粗陋的设计思路。

我相信还有很大的发展的空间需要我们去完善,去扩展。

 

3电路原理与电路图

3.1电路原理图:

图3.1硬件电路图

3.2电路原理和过程说明

电路工作原理和过程说明:

上图是硬件电路图应用单片机实现了六路抢答的功能,89c51是性能很好的单片机运用了单片机的各个接口的原理。

其中p1.1到p1.6是抢答开关的接口,p1.0是开始按键的接口,p1.7是停止按键的接口。

只要一按下开始键电路就会开始倒计时,然后选手就开始抢答,在LED显示器上显示选手的编号以及时间的倒计时,但在规定时间的后5s还没回答出就会发出警告的声音。

当有选手犯规时则显示选手的编号同时发出报警的声音。

4流程图与仿真结果

4.1系统原理

如图2.2所示:

 

图2.2系统原理图

说明:

系统原理图是根据单片机的功能和不同的程序而设计的一个模块,能够反应系统的工作原理。

让你在没看到元件之前就先知道运用的范围,给人初步的认知。

此系统原理图简单明了,分为三大部分有系统初始化模块、按键模块(非法抢答模块、正确抢答模块、调整抢答时间、调整回答时间)、数码显示模块。

 

4.2程序流程图

 

 

否否

 

是是是

 

 

图2.1流程图

 

说明:

开始键按下,进入抢答倒计时,要是有人抢答则开始回答问题。

如果没人抢答则且倒计时间到则按超时处理。

要是在没有开始就有人抢答则按犯规处理,并结束此次抢答进入下一次抢答。

 

4.3仿真结果及说明

说明:

当按下PIAY键时出现如下图所示的起始现象。

这段由主持人控制,其可以进行清零和抢答开始的控制。

图4.1

说明:

按下开始开关即为抢答时间倒计时15S,此时间可以随意设置。

如图4.2所示但在截图之前已经过去了2s

图4.2

 

说明:

当按下开始键后选手就可以抢答,下图4.3显示的是一号选手正确抢答,回答时间为10s开始倒计时。

对选手的序号进行锁存显示器显示其序号。

证明其数据锁存、显示功能正常。

图4.3

说明:

当按下开始键后选手就可以抢答,下图4.4显示的是五号选手正确抢答,回答时间为10s开始倒计时。

图4.4

说明:

回答时间可以调整下图4.5为按下回答时间调整开关时间从15加到60S

图4.5

说明:

当有选手犯规会出现如图4.6所示情况,显示犯规选手的编号并且不停的跳动发出报警的声音

图4.6

 

5设计总结

课程设计很有挑战性也很有难度,我在这次课程设计中花费了很多的时间和精力。

从开始选择课题到最后的成型阶段遇到了很多的困难。

但在其中收获的遇到的困难要多的多,因此还是非常乐意去将课程搞好。

在这次课程设计中申老师给了我很多的建议和帮助,在开始根本没有思路的时候我第一反应就是问老师,老师在第一时间给了我答复。

模型的建立需要一段时间的研究,这就是体现我们组员的合作精神的时候了,每个人都把自己的想法说出来然后进行讨论。

在老师的要求下我们达成了一致,就是在共同设计的基础上要有所不同。

在遇到问题时我们就会在网上或通过电话联系争取在老师规定的时间内做好。

对有些我们不知道的东西我们很主动的联系老师,比喻我在选择仿真器件的时候不知道哪些功能要全面一些。

在选择单片机的类型方面遇到了一些难题,因为不同的单片机的功能不完全相同。

比喻89c51就要比80c51要强很多,所以必须得考虑好该使用那些器件。

我觉得什么事情都的自己去花心思才能得到自己想要的结果,你只有自己全心的去做了是不会让老师失望的。

总的来说这次课程设计我收获了很多东西,使我的动手能力有了极大的提高,也让我在考虑问题的多样性方面更加全面。

我个人认为这次课程设计是成功的,让我明白了只要自己能够坚持去做一件事,并且有多学多问的习惯没有什么事是做不到的。

加之老师的帮助以及同学之间的合作,我觉得只要自己想去做就一定会完成的。

我觉得人生在世是需要很多帮助的,单凭自己一个人是不会过的很好的。

当我们帮助别人或被帮助时我们都的怀着一颗感谢的心。

在这次课程设计中我要感谢我的指导老师申寿云老师,申老师是一个非常负责的老师,值得信任。

同时也很感谢给过我帮助的同学,要不是你们的帮助我是很难完成这次课程设计的,谢谢你们的帮助和支持。

参考文献

[1]李建忠.单片机原理及应用.西安电子科技大学出版社,2008

[2]张迎新.单片机初级教程——单片机基础.北京航空航天大学出版社,2006[3]张俊谟.单片机中级教程-----原理与应用.北京航空航天大学出版社,2006

附录

程序设计源代码:

OKEQU20H    ;抢答开始标志位;将P1口与P2口互换,P3.0-P1.0,P3.1-P1.7

       RINGEQU22H  ;响铃标志位

       ORG0000H

       AJMPMAIN

       ORG0003H

       AJMPINT0SUB

       ORG000BH

       AJMPT0INT

       ORG0013H

       AJMPINT1SUB

       ORG001BH

       AJMPT1INT

       ORG0040H

;主程序

MAIN:

  MOVR1,#0FH   ;初设抢答时间为15s

       MOVR2,#0AH   ;初设答题时间为10s

       MOVTMOD,#11H ;设置未定时器/模式1

       MOVTH0,#0F0H

       MOVTL0,#0FFH ;越高发声频率越高,越尖

       MOVTH1,#3CH

       MOVTL1,#0B0H ;50ms为一次溢出中断

       SETBEA

       SETBET0

       SETBET1

       SETBEX0

       SETBEX1      ;允许四个中断,T0/T1/INT0/INT1

       CLROK

       CLRRING

       SETBTR1

       SETBTR0      ;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了

;=====查询程序=====

START:

 MOVR5,#0BH

       MOVR4,#0BH

       MOVR3,#0BH

       ACALLDISPLAY ;未开始抢答时候显示FFF

       JBP1.0,NEXT  ;ddddddd

       ACALLDELAY

       JBP1.0,NEXT  ;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

       ACALLBARK    ;按键发声

       MOVA,R1

       MOVR6,A      ;送R1->R6,因为R1中保存了抢答时间

       SETBOK       ;抢答标志位,用于COUNT只程序中判断是否查询抢答

       MOVR3,0AH    ;抢答只显示计时,灭号数

       AJMPCOUNT    ;进入倒计时程序,"查询有效抢答的程序"在COUNT里面

NEXT:

  JNBP1.1,FALSE1

       JNBP1.2,FALSE2

       JNBP1.3,FALSE3

       JNBP1.4,FALSE4

       JNBP1.5,FALSE5

       JNBP1.6,FALSE6

       AJMPSTART

;=====非法抢答处理程序=====

FALSE1:

ACALLBARK    ;按键发声

       MOVR3,#01H

       AJMPERROR

FALSE2:

ACALLBARK

       MOVR3,#02H

       AJMPERROR

FALSE3:

ACALLBARK

       MOVR3,#03H

       AJMPERROR

FALSE4:

ACALLBARK

       MOVR3,#04H

       AJMPERROR

FALSE5:

ACALLBARK

       MOVR3,#05H

       AJMPERROR

FALSE6:

ACALLBARK

       MOVR3,#06H

       AJMPERROR

;=====INT0(抢答时间R1调整程序)=====

      INT0SUB:

MOVA,R1

      MOVB,#0AH

      DIVAB

      MOVR5,A

      MOVR4,B

      MOVR3,#0AH

      ACALLDISPLAY   ;先在两个时间LED上显示R1

      JNBP3.4,INC0   ;P3.4为+1s键,如按下跳到INCO

      JNBP3.5,DEC0   ;P3.5为-1s键,如按下跳到DECO

      JNBP1.7,BACK0  ;P3.1为确定键,如按下跳到BACKO

      AJMPINT0SUB

INC0:

 MOVA,R1

      CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99了,R1就置0,重新加起。

      MOVR1,#00H

      ACALLDELAY1

      AJMPINT0SUB

ADD0:

 INCR1

      ACALLDELAY1

      AJMPINT0SUB

DEC0:

 MOVA,R1

      JZSETR1        ;如果R1为0,R1就置99,

      DECR1

      ACALLDELAY1

      AJMPINT0SUB

SETR1:

MOVR1,#63H

      ACALLDELAY1

      AJMPINT0SUB

BACK0:

RETI

;=====INT1(回答时间R2调整程序)=====

INT1SUB:

      MOVA,R2

      MOVB,#0AH

      DIVAB

      MOVR5,A

      MOVR4,B

      MOVR3,#0AH

      ACALLDISPLAY

      JNBP3.4,INC1

      JNBP3.5,DEC1

      JNBP1.7,BACK1

      AJMPINT1SUB

INC1:

 MOVA,R2

      CJNEA,#63H,ADD1

      MOVR2,#00H

      ACALLDELAY1

      AJMPINT1SUB

ADD1:

 INCR2

      ACALLDELAY1

      AJMPINT1SUB

DEC1:

 MOVA,R2

      JZSETR2

      DECR2

      ACALLDELAY1

      AJMPINT1SUB

SETR2:

MOVR2,#63H

      ACALLDELAY1

      AJMPINT1SUB

BACK1:

RETI

;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====

COUNT:

MOVR0,#00H    ;重置定时器中断次数

      MOVTH1,#3CH

      MOVTL1,#0B0H  ;重置定时器

RECOUNT:

      MOVA,R6       ;R6保存了倒计时的时间,之前先将抢答时间或回答时间R6

      MOVB,#0AH

      DIVAB         ;除十分出个位/十位

      MOV30H,A      ;十位存于(30H)

      MOV31H,B      ;个位存于(31H)

      MOVR5,30H     ;取十位

      MOVR4,31H     ;取个位

      MOVA,R6

      SUBBA,#07H

      JNCLARGER     ;大于5s跳到LARGER,小于等于5s会提醒

      MOVA,R0

      CJNEA,#0AH,FULL;1s中0.5s向下运行

      CLRRING

      AJMPCHECK

FULL:

 CJNEA,#14H,CHECK;下面系1s的情况,响并显示号数并清R0,重新计

      SETBRING

      MOVA,R6

      JZQUIT         ;计时完毕

      MOVR0,#00H

      DECR6          ;一秒标志减1

      AJMPCHECK

LARGER:

      MOVA,R0

      CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"

      DECR6          ;计时一秒R6自动减1

      MOVR0,#00H

CHECK:

JNBP1.7,QUIT   ;如按下停止键退出

      ACALLDISPLAY

      JBOK,ACCOUT    ;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

      AJMPRECOUNT

ACCOUT:

JNBP1.1,TRUE1

      JNBP1.2,TRUE2

      JNBP1.3,TRUE3

      JNBP1.4,TRUE4

      JNBP1.5,TRUE5

      JNBP1.6,TRUE5

      AJMPRECOUNT

QUIT:

 CLROK         ;如果按下了"停止键"执行的程序

      CLRRING

      AJMPSTART

;=====正常抢答处理程序=====

TRUE1:

ACALLBARK     ;按键发声

      MOVA,R2

      MOVR6,A       ;抢答时间R2送R6

      MOVR3,#01H

      CLROK         ;因为答题的计时不再查询抢答,所以就锁了抢答

      AJMPCOUNT

TRUE2:

ACALLBARK;

      MOVA,R2

      MOVR6,A

      MOVR3,#02H

      CLROK

      AJMPCOUNT

TRUE3:

ACALLBARK;

      MOVA,R2

      MOVR6,A

      MOVR3,#03H

      CLROK

      AJMPCOUNT

TRUE4:

ACALLBARK;

      MOVA,R2

      MOVR6,A

      MOVR3,#04H

      CLROK

      AJMPCOUNT

TRUE5:

ACALLBARK;

      MOVA,R2

      MOVR6,A

      MOVR3,#05H

      CLROK

      AJMPCOUNT

TRUE6:

ACALLBARK;

      MOVA,R2

      MOVR6,A

      MOVR3,#06H

      CLROK

      AJMPCOUNT

;=====犯规抢答程序=====

ERROR:

MOVR0,#00H

      MOVTH1,#3CH

      MOVTL1,#0B0H

      MOV34H,R3        ;犯规号数暂存与(34H)

HERE:

 MOVA,R0

      CJNEA,#0AH,FLASH ;0.5s向下运行->灭并停响

      CLRRING

      MOVR3,#0AH

      MOVR4,#0AH

      MOVR5,#0AH       ;三灯全灭

      AJMPCHECK1

FLASH:

CJNEA,#14H,CHECK1;下面系1s的情况,响并显示号数并清R0,重新计

      SETBRING

      MOVR0,#00H

      MOVR3,34H        ;取回号数

      MOVR5,#0BH

      MOVR4,#0BH       ;显示FF和号数

      AJMPCHECK1

CHECK1:

JNBP1.7,QUIT1

      ACALLDISPLAY

      AJMPHERE

QUIT1:

CLRRING

      CLROK

      AJMPSTART

;=====显示程序=====

DISPLAY:

      MOVDPTR,#DAT1    ;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,

      MOVA,R5

      MOVCA,@A+DPTR

      MOVP2,#01H

      MOVP0,A

      ACALLDELAY

      MOVDPTR,#DAT2

      MOVA,R4

      MOVCA,@A+DPTR

      MOVP2,#02H

      MOVP0,A

      ACALLDELAY

      MOVA,R3

      MOVCA,@A+DPTR

      MOVP2,#04H

      MOVP0,A

      ACALLDELAY

      RET

DAT1:

DB00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;"灭","1","2","3","4","5","6","7","8","9","灭","F"

DAT2:

DB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;第一个为零,其他与上相同,因为十位如果为零显示熄灭

;====加减时间延时(起到不会按下就加N个数)======

DELAY1:

MOV35H,#08H

LOOP0:

 ACALLDISPLAY

       DJNZ35H,LOOP0

       RET

;=====延时(显示和去抖动用到)=====

DELAY:

 MOV32H,#12H

LOOP:

  MOV33H,#0AFH

LOOP1:

 DJNZ33H,LOOP1

       DJNZ32H,LOOP

       RET

;=====发声程序=====

BARK:

  SETBRING

       ACALLDELAY1

       ACALLDELAY1

       CLRRING   ;按键发声

       RET

;=====TO溢出中断(响铃程序)=====

T0INT:

 MOVTH0,#0ECH

       MOVTL0,#0FFH

       JNBRING,OUT;

       CPLP3.6  ;RING标志位为1时候P3.6口不短取反使喇叭发出一定频率的声音

OUT:

   RETI

;=====T1溢出中断(计时程序)=====

T1INT:

 MOVTH1,#3CH

       MOVTL1,#0B0H

       INCR0

       RETI

       END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2