最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

单片机实现八路抢答器论文

来源:动视网 责编:小OO 时间:2025-09-23 06:46:47
文档

单片机实现八路抢答器论文

绪论今天随着科技的不断进步抢答器的制作也更加追求精益求精,人们摆脱了耗费很多元件仅来实现用指示灯和一些电路来实现简单的抢答功能,使第一个抢答的参赛者的编号能通过指示灯显示出来,避免不合理的现象发生。但这种电路不易于扩展,而且当有更高要求是酒无法实现,例如参赛人数的增加。随着数字电路的发展,数字抢答器诞生了,它易于扩展,可靠性好,集成度高,而且费用低,功能更加多样话,是一种高效能的产品。一、设计任务与要求1、抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S5表示。2、设置一个系统清除
推荐度:
导读绪论今天随着科技的不断进步抢答器的制作也更加追求精益求精,人们摆脱了耗费很多元件仅来实现用指示灯和一些电路来实现简单的抢答功能,使第一个抢答的参赛者的编号能通过指示灯显示出来,避免不合理的现象发生。但这种电路不易于扩展,而且当有更高要求是酒无法实现,例如参赛人数的增加。随着数字电路的发展,数字抢答器诞生了,它易于扩展,可靠性好,集成度高,而且费用低,功能更加多样话,是一种高效能的产品。一、设计任务与要求1、抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S5表示。2、设置一个系统清除
绪论

今天随着科技的不断进步抢答器的制作也更加追求精益求精,人们摆脱了耗费很多元件仅来实现用指示灯和一些电路来实现简单的抢答功能,使第一个抢答的参赛者的编号能通过指示灯显示出来,避免不合理的现象发生。但这种电路不易于扩展,而且当有更高要求是酒无法实现,例如参赛人数的增加。随着数字电路的发展,数字抢答器诞生了,它易于扩展,可靠性好,集成度高,而且费用低,功能更加多样话,是一种高效能的产品。

一、设计任务与要求

1、抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0 ~ S5表示。

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

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

4、抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动"开始"键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间0.5秒左右。

5、参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

6、如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00 ,并恢复到FFF。

二、方案设计

该系统采用51系列单片机ATC51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。MCS-51单片机特点如下:

    <1>可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。

<2>单片机有一般电脑所必须的器件,如三态双向总线,串并行的输入及输出引脚,可扩充为各种规模的微电脑系统。

    <3> 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。

三、硬件电路设计

1、 抢答器的电路框图

      如图11、1所示为电路框图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作"开始、停止"状态开关。

图11.1抢答器框图

如图11、1所示为电路框图。其工作原理为:接通电源后,主持人将开关拨到“清除”状态,抢答器处于禁止状态,编号显示器灭灯,定时器显示设定时间;主持人将开关置,“开始”状态,宣布“开始”抢答器工作。定时器倒计时,扬声器给出声响提示。选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次操作“开始、停止”状态开关。

2、单元电路设计

(1)抢答器电路

    参考电路如图11.2所示。该电路完成两个功能:一是分辨出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一

次抢答。

(2)时序控制电路设计

时序控制电路是抢答器设计的关键,它要完成以下功能:

a.主持人将控制开关拨到"开始"位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。                       

b.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。

(3)复位电路的设计

外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。复位电路如下图示:

2.3.3外部震荡电路

外部震荡电路单片机必须在ATC51的驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元,外部震荡电路如下图。

2.3.4报警电路设计

报警电路用于报警,当遇到报警信号时,发出警报。一般喇叭是一种电感性

图11.4报警电路图。51驱动喇叭的信号为各种频率的脉冲。因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。

选手在设定的时间内抢答时,实现:优先判断、编号锁存、编号显示、扬声器提示。当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。如果再次抢答必须由主持人再次*作"清除"和"开始"状态开关。图面是数字抢答器的报警电路图。

其中555构成多谐振荡器,振荡频率fo=1.43/[(RI+2R2)C],其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,反之,电路停振。

四、软件设计

系统防真用到了protuse软件,用keil软件与protuce软件级联可以进行模拟调试,既可以检测方案的正确性,又可以避免实物多次调试。Keil集成调试环境,集成了编缉器、编译器、调试器,支持软件模拟。

1、proteus系统仿真序设计

2、用到了keil软件仿真,界面如下

表1 器件选型方案的详细清单

器件名称规格型号数量
微处理器ATC511
极性电容10uF1
电阻3WTT10K9
电容20PF3
晶振12MHZ1
按钮

三极管

PNP

15

1

共阴4位7段数码管

SMG SM410561K1
扬声器1
3、主程序清单

OK EQU 20H;抢答开始标志位

RING EQU 22H;响铃标志位

ORG 0000H

AJMP MAIN

ORG 0003H

AJMP INT0SUB

ORG 000BH

AJMP T0INT

ORG 0013H

AJMP INT1SUB

ORG 001BH

AJMP T1INT

ORG 0040H

MAIN: MOV R1,#30;初设抢答时间为30s

MOV R2,#60;初设答题时间为60s

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

MOV TH0,#0F0H

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

MOV TH1,#3CH

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

SETB EA

SETB ET0

SETB ET1

SETB EX0

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

CLR OK

CLR RING

SETB TR1

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

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

START: MOV R5,#0BH

MOV R4,#0BH

MOV R3,#0BH

ACALL DISPLAY;未开始抢答时候显示FFF

JB P3.0,NEXT;ddddddd

ACALL DELAY

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

ACALL BARK;按键发声

MOV A,R1

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

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

MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号

MOV R3,#0AH;抢答只显示计时,灭号数

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

NEXT: JNB P1.0,FALSE1

JNB P1.1,FALSE2

JNB P1.2,FALSE3

JNB P1.3,FALSE4

JNB P1.4,FALSE5

JNB P1.5,FALSE6

JNB P1.6,FALSE7

JNB P1.7,FALSE8

AJMP START

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

FALSE1: MOV R3,#01H

AJMP ERROR

FALSE2: MOV R3,#02H

AJMP ERROR

FALSE3: MOV R3,#03H

AJMP ERROR

FALSE4: MOV R3,#04H

AJMP ERROR

FALSE5: MOV R3,#05H

AJMP ERROR

FALSE6: MOV R3,#06H

AJMP ERROR

FALSE7: MOV R3,#07H

AJMP ERROR

FALSE8: MOV R3,#08H

AJMP ERROR

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

INT0SUB:MOV A,R1

MOV B,#0AH

DIV AB

MOV R5,A

MOV R4,B

MOV R3,#0AH

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

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

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

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

AJMP INT0SUB

INC0: MOV A,R1

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

MOV R1,#00H

ACALL DELAY1

AJMP INT0SUB

ADD0: INC R1

ACALL DELAY1

AJMP INT0SUB

DEC0: MOV A,R1

JZ SETR1;如果R1为0, R1就置99,

DEC R1

ACALL DELAY1

AJMP INT0SUB

SETR1: MOV R1,#63H

ACALL DELAY1

AJMP INT0SUB

BACK0: RETI

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

INT1SUB:MOV A,R2

MOV B,#0AH

DIV AB

MOV R5,A

MOV R4,B

MOV R3,#0AH

ACALL DISPLAY

JNB P3.4,INC1

JNB P3.5,DEC1

JNB P3.1,BACK1

AJMP INT1SUB

INC1: MOV A,R2

CJNE A,#63H,ADD1

MOV R2,#00H

ACALL DELAY1

AJMP INT1SUB

ADD1: INC R2

ACALL DELAY1

AJMP INT1SUB

DEC1: MOV A,R2

JZ SETR2

DEC R2

ACALL DELAY1

AJMP INT1SUB

SETR2: MOV R2,#63H

ACALL DELAY1

AJMP INT1SUB

BACK1: RETI

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

REPEAT:MOV A,R2 ;使用锦囊时重新计时

MOV R6,A

CLR RING

COUNT: MOV R0,#00H;重置定时器中断次数

MOV TH1,#3CH

MOV TL1,#0B0H;重置定时器

RECOUNT:MOV A,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

MOV B,#0AH

DIV AB;除十分出个位/十位

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

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

MOV R5,30H;取十位

MOV R4,31H;取个位

MOV A,R6

SUBB A,#07H

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

MOV A,R0

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

CLR RING

AJMP CHECK

FULL: CJNE A,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计

SETB RING

MOV A,R6

JZ QUIT;计时完毕

MOV R0,#00H

DEC R6;一秒标志减1

AJMP CHECK

LARGER: MOV A,R0

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

DEC R6;计时一秒R6自动减1

MOV R0,#00H

CHECK: JNB P3.1,QUIT;如按下停止键退出

JNB OK,CHECKK ;只在回答倒计时才有效

AJMP NEXTT

CHECKK:JNB P3.0,REPEAT ;判断是否使用锦囊

NEXTT: ACALL DISPLAY

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

AJMP RECOUNT

ACCOUT:

MOV A,36H

JNB ACC.0,TRUE1

JNB ACC.1,TRUE2

JNB ACC.2,TRUE3

JNB ACC.3,TRUE4

JNB ACC.4,TRUE5

JNB ACC.5,TRUE6

JNB ACC.6,TZ1

JNB ACC.7,TZ2

AJMP RECOUNT

TZ1:JMP TRUE7

TZ2:JMP TRUE8

QUIT: CLR OK;如果按下了"停止键"执行的程序

CLR RING

AJMP START

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

TRUE1: ACALL BARK

MOV A,R2

MOV R6,A;抢答时间R2送R6

MOV R3,#01H

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

AJMP COUNT

TRUE2:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#02H

CLR OK

AJMP COUNT

TRUE3:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#03H

CLR OK

AJMP COUNT

TRUE4:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#04H

CLR OK

AJMP COUNT

TRUE5:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#05H

CLR OK

AJMP COUNT

TRUE6: ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#06H

CLR OK

AJMP COUNT

TRUE7:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#07H

CLR OK

AJMP COUNT

TRUE8:ACALL BARK

MOV A,R2

MOV R6,A

MOV R3,#08H

CLR OK

AJMP COUNT

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

ERROR: MOV R0,#00H

MOV TH1,#3CH

MOV TL1,#0B0H

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

HERE: MOV A,R0

CJNE A,#06H,FLASH;0.3s向下运行->灭并停响

CLR RING

MOV R3,#0AH

MOV R4,#0AH

MOV R5,#0AH;三灯全灭

AJMP CHECK1

FLASH: CJNE A,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计

SETB RING

MOV R0,#00H

MOV R3,34H;取回号数

MOV R5,#0BH

MOV R4,#0BH;显示FF和号数

AJMP CHECK1

CHECK1: JNB P3.1,QUIT1

ACALL DISPLAY

AJMP HERE

QUIT1: CLR RING

CLR OK

AJMP START

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

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

MOV A,R3

MOVC A,@A+DPTR

MOV P2,#0feH

MOV P0,A

ACALL DELAY2

MOV DPTR,#DAT2

MOV A,R5

MOVC A,@A+DPTR

MOV P2,#0fdH

MOV P0,A

ACALL DELAY2

MOV A,R4

MOVC A,@A+DPTR

MOV P2,#0fbH

MOV P0,A

ACALL DELAY2

RET

DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

;"灭灭

DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H

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

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

DELAY1: MOV 35H,#08H

LOOP0: ACALL DISPLAY

DJNZ 35H,LOOP0

RET

;=====延时4236个机器周期(去抖动用到)=====

DELAY: MOV 32H,#12H

LOOP: MOV 33H,#0AFH

LOOP1: DJNZ 33H,LOOP1

DJNZ 32H,LOOP

RET

;=====延时4236个机器周期(显示用到)=====

DELAY2: MOV 32H,#43H

LOOP3: MOV 33H,#1EH

MOV A,R7 ;每隔60~70个机器周期读一次P1口,全为1时为无效数据,继续读,有一个不为1时,转到正常抢答处理

JNZ AAAA1 ;没读到有效数据时继续转到AAAA1

LOOP2: DJNZ 33H,LOOP2

DJNZ 32H,LOOP3

RET

;=====读抢答按键数据口程序=====

;由于在读抢答数据口的时候,单片机首先进入倒计时程序,再调用显示程序,最后才检测按键口

;然而在检测按键口时动态扫描要调用三次(4ms)延时程序.这样就会导致读数据口出现滞后,造成1号优先最高.8号最低.

;故采用在延时子程序中加了读数据口程序.保证了灵敏度和可靠性

AAAA1: MOV A,P1

CJNE A,#0FFH,AA1 ;当不全为1时的数据为有效数据

AA0: MOV 36H,A ;将有效数据送到36H暂存

AJMP LOOP2

AA1: DEC R7

AJMP AA0

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

BARK: SETB RING

ACALL DELAY1

ACALL DELAY1

CLR RING;按键发声

RET

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

T0INT: MOV TH0,#0ECH

MOV TL0,#0FFH

JNB RING,OUT;

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

OUT: RETI

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

T1INT: MOV TH1,#3CH

MOV TL1,#0B0H

INC R0

RETI

END

五、结论与心得

由于这次的电赛我们选择了用单片机来设计八路抢答器。很多东西都是临时学的,像Proteus仿真软件的使用以及keil软件的使用。而且这些软件都是英文学习起来很吃力。勉强学会了这些软件的初步应用。

通过这次课程设计,我想说:为完成这次课程设计我们确实很辛苦,但苦中仍有乐,和同学们相互帮助,这次的电赛确实很累,然而当喇叭响起使我们心中就不免兴奋,不免激动。以前种种艰辛这时就变成了最甜美的回忆!这次学习给我留下了深刻的印象,使我受益匪浅。总之,在设计过程中学到了许多。作为现代的大学生,如果仅停留在以往的层次上,是远远跟不上时代的步伐,也无法使自己立足在竞争如此激烈的社会里,通过此次实习,看到了自己的水平和差距,学要在今后的学习中又进一步的提高。

文档

单片机实现八路抢答器论文

绪论今天随着科技的不断进步抢答器的制作也更加追求精益求精,人们摆脱了耗费很多元件仅来实现用指示灯和一些电路来实现简单的抢答功能,使第一个抢答的参赛者的编号能通过指示灯显示出来,避免不合理的现象发生。但这种电路不易于扩展,而且当有更高要求是酒无法实现,例如参赛人数的增加。随着数字电路的发展,数字抢答器诞生了,它易于扩展,可靠性好,集成度高,而且费用低,功能更加多样话,是一种高效能的产品。一、设计任务与要求1、抢答器同时供8名选手或8个代表队比赛,分别用8个按钮S0~S5表示。2、设置一个系统清除
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top