导航:首页 > 操作系统 > 基于单片机的8路抢答器

基于单片机的8路抢答器

发布时间:2023-03-26 12:19:30

1. 求51单片机的控制的八路抢答器的程序

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,#0FH
MOV R2,#0AH
MOV TMOD,#11H
MOV TH0,#0F0H
MOV TL0,#0FFH
MOV TH1,#3CH
MOV TL1,#0B0H;50ms为一次溢出中断
SETB EA
SETB ET0
SETB ET1
SETB EX0
SETB EX1
CLR OK
CLR RING
SETB TR1
SETB TR0
;=====查询程序=====
START: MOV R5,#0BH
MOV R4,#0BH
MOV R3,#0BH
ACALL DISPLAY
JB P1.0,NEXT
ACALL DELAY
JB P1.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询
ACALL BARK;按键发声
MOV A,R1
MOV R6,A;送R1->R6,因为R1中保存了抢答时间
SETB OK;抢答标志位,用于COUNT只程序中判断是否查询抢答
MOV R3,#0AH;抢答只显示计时,灭号数
AJMP COUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT: JNB P1.1,FALSE1
JNB P1.2,FALSE2
JNB P1.3,FALSE3
JNB P1.4,FALSE4
JNB P1.5,FALSE5
JNB P1.6,FALSE6
AJMP START
;=====非法抢答处理程序=====
FALSE1: ACALL BARK
MOV R3,#01H
AJMP ERROR
FALSE2: ACALL BARK
MOV R3,#02H
AJMP ERROR
FALSE3: ACALL BARK
MOV R3,#03H
AJMP ERROR
FALSE4: ACALL BARK
MOV R3,#04H
AJMP ERROR
FALSE5: ACALL BARK
MOV R3,#05H
AJMP ERROR
FALSE6: ACALL BARK
MOV R3,#06H
AJMP ERROR
;=====INT0(抢答时间R1调整程序)=====
INT0SUB:MOV A,R1
MOV B,#0AH
DIV AB
MOV R5,A
MOV R4,B
MOV R3,#0AH
ACALL DISPLAY
JNB P3.2,INC0;P3.2为+1s键,如按下跳到INCO
JNB P3.3,DEC0;P3.3为-1s键,如按下跳到DECO
JNB P1.7,BACK0;P1.7为确定键,如按下跳到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.2,INC1
JNB P3.3,DEC1
JNB P1.7,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
;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====
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 P1.7,QUIT;如按下停止键退出
ACALL DISPLAY
JB OK,ACCOUT;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)
AJMP RECOUNT
ACCOUT: JNB P1.1,TRUE1
JNB P1.2,TRUE2
JNB P1.3,TRUE3
JNB P1.4,TRUE4
JNB P1.5,TRUE5
JNB P1.6,TRUE6
AJMP RECOUNT
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
;=====犯规抢答程序=====
ERROR: MOV R0,#00H
MOV TH1,#3CH
MOV TL1,#0B0H
MOV 34H,R3;犯规号数暂存与(34H)
HERE: MOV A,R0
CJNE A,#0AH,FLASH;0.5s向下运行->灭并停响
CLR RING
MOV R3,#0AH
MOV R4,#0AH
MOV R5,#0AH;三灯全灭
AJMP CHECK1
FLASH: CJNE A,#14H,CHECK1;下面系1s的情况,响并显示号数并清R0,重新计
SETB RING
MOV R0,#00H
MOV R3,34H;取回号数
MOV R5,#0BH
MOV R4,#0BH;显示FF和号数
AJMP CHECK1
CHECK1: JNB P1.7,QUIT1
ACALL DISPLAY
AJMP HERE
QUIT1: CLR RING
CLR OK
AJMP START
;=====显示程序=====
;入口参数:R5,R4,R3存入的分别为第一,二,三为数码所显示的位码
;出口参数:无
DISPLAY:MOV DPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#01H
MOV P0,A
ACALL DELAY
MOV DPTR,#DAT2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#02H
MOV P0,A
ACALL DELAY
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#04H
MOV P0,A
ACALL DELAY
RET
DAT1: DB 00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H
;"灭","1","2","3","4","5","6","7","8","9","灭","F"
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
;=====延时(显示和去抖动用到)=====
DELAY: MOV 32H,#12H
LOOP: MOV 33H,#0AFH
LOOP1: DJNZ 33H,LOOP1
DJNZ 32H,LOOP
RET
;=====发声程序=====
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

2. 如何设计基于单片机的多功能8路抢答器

八路抢答器的设计

摘要

本文介绍了一种采用数字电路制作的多功能数显抢答器,它主要采用了74系列的常用集成电路,它除了具有基本的抢答功能之外,还具有定时报警的功能,和数显的功能,当抢答开始后,系统会自动倒计时,并且时间是可以预设的,期间有人抢答的话系统会停止计时,如果期间没人抢答,系统会有短暂的报警,提示抢答结束。

关键字

单片机、PLC、抢答、报警、数显

一、 设计目的

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

二、 方案

制作抢答器可以用好多的方法,可以用单片机来完成,它的功能强大制作简单,并且外围的元件也很少;也可以用PLC来实现,他的制作也是比较简单;还可以用我们学过的EDA技术来制作;最后也可以用数字电路来实现,它的原理比较简单,集成块的价格也比较便宜且很容易购买,与我们学完的〈〈数字电路〉〉联系紧密,能将我们所学知识用于实际,对巩固所学知识有重要意义,用了一些成型电路,如NE555标准秒脉冲电路等,使总体方案易于实现。

方案一〈采用数字电路〉

1、原理方框图

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

图1

图1所示的定时抢答器的工作过程是:接通电源时,节目主持人将开关置于“清除”位置,抢答器处于禁止工作状态,编号显示器灭灯,定时显示器显示设定的时间,当节目主持人宣布“抢答开始”,同时将控制开关拨到“开始”位置,扬声器给出声响提示,抢答器处于工作状态,定时器倒计时。当定时时间到,却没有选手抢答时,系统报警,并封锁输入电路,禁止选手超时后抢答。当选手在定时时间内按动抢答键时,抢答器要完成以下四项工作:

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

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

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

④控制电路要使定时器停止工作,时间显示器上显示剩余的抢答时间,并保持到主持人将系统清零为止。当选手将问题回答完毕,主持人操作控制开关,使系统回复到禁止工作状态,以便进行下一轮抢答。

方案二〈采用单片机〉

1、原理方框图

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

(图2)

方案三〈采用PLC〉

1、原理方框图

此电路的功能如图3所示,当主持人打开启动开关后,在设定时间TO 内,如果某组抢先按下抢答按钮,则驱动音效电路①发出声响,指示灯LI亮,并且在8段数码管显示器上显示出抢答成功的组号,此时电路实现互锁,其他组再按下抢答按钮为无效;

如果在时间TO内,无人应答,则驱动音效电路②发出声响,指示灯L2亮,表示抢答者均放弃该题;

在抢答成功后,主持人打开限时开关SW2,启动计时器,在设定的时间TI 内回答有效,当到达设定时间TI时,驱动音效电路③,指示灯L3亮,表示答题时间到。

(图3)

三、 方案选择

方案比较
数字电路
单片机
PLC

制作难度

一般
一般

实现难度
一般



价格

一般


电路原理
简单
一般
一般

设计难度
简单

一般

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

四、 设计系统功能

1.基本功能:

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

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

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

2.扩展功能:

(1)抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动"开始"键后,定时器进行减计时。

(2)参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。在这段(3)如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

五、 各部分单元电路的设计

(1)抢答器的主体电路设计

抢答电路的功能有两个:一是能分辨出选手按键的先后,并锁存优先抢答者的编号,供译码显示电路用;二是要使其他选手的按键操作无效。选用优先编码器74148和DFF锁存器可以完成上述功能,其电路组成如图4所示。其工作原理是:当主持人控制开关处于“清除”位置时,RS触发器的端为低电平,输出端(4Q~1Q)全部为低电平。于是74LS48的 =0,显示器灭灯;74148的选通输入端 =0,74LS148处于工作状态,此时锁存电路不工作。当主持人开关拨到“开始”位置时,优先编码电路和锁存电路同时处于工作状态,即抢答器处于等待工作状态,等待输入端 7... 0输入信号,当有选手将键按下时(如按下S5),74LSl48的输出=010, =0,经RS锁存器后,CTR=l, =1,74LS279处于工作状态,4Q3Q2Q=101,经74LS48译码后,显示器显示出“5”。此外,CTR=1,使74l48的端为高电平,74LSl48处于禁止工作状态,封锁了其它按键的输入。当按下的键松开后,74LSl48的为高电平,但由于CTR维持高电平不变,所以74LSl48仍处于禁止工作状态,其它按键的输入信号不会被接收。这就保证了抢答者的优先性以及抢答电路的准确性。当优先抢答者回答完问题后,由主持人操作控制开关S,使抢答电路复位,以便进行下一轮抢答。

(图4)

74LS148为8线-3线优先编码器,表1为其功能表。

表1 74LS148的功能真值表

(2)定时电路设计

原理及设计:该部分主要由555定时器秒脉冲产生电路、十进制同步加减计数器74LS192减法计数电路、74LS48译码电路和2个7段数码管即相关电路组成。具体电路如图5所示。两块74LS192实现减法计数,通过译码电路74LS48显示到数码管上,其时钟信号由时钟产生电路提供。74192的预置数控制端实现预置数,由节目主持人根据抢答题的难易程度,设定一次抢答的时间,通过预置时间电路对计数器进行预置,如果要设置为30S,就可以在计数器的预置数控制端输入00110000。时钟脉冲由秒脉冲电路提供。按键弹起后,计数器开始减法计数工作,并将时间显示在共阴极七段数码显示管上,当有人抢答时,停止计数并显示此时的倒计时时间;如果没有人抢答,且倒计时时间到时,输出低电平到时序控制电路,控制报警电路报警,同时以后选手抢答无效。具体电路如图5所示。

(图5)

秒脉冲产生电路:秒脉冲由NE555提供,它的的3端输出的脉冲的频率为

,结合我们的实际经验及考虑到元器件的成本,我们选择的电阻值为R1=15K,R2=68K,C=10uF,代入到上式中即得,即秒脉冲。

(3)报警电路的设计

采用555定时器和三极管构成的报警电路如图6所示。其中555构成多谐振荡器,振荡频率

其输出信号经三极管推动扬声器。PR为控制信号,当PR为高电平时,多谐振荡器工作,当PR为低电平的时候,电路停振。

(图6)

(4)时序控制电路设计

与门G1 的作用是控制时钟信号CP的放行与禁止,门G2的作用是控制74LS148的输入使能端(即图二中的5端)。图7的工作原理是:主持人控制开关从"清除"位置拨到"开始"位置时,来自于图2中的74LS279的输出 1Q,即CTR=0,经G3反相,输出为1,则NE555产生的时钟信号CP能够加到74LS192的CPD时钟输入端,定时电路进行递减计时。同时,在定时时间未到时,则"定时到信号"为 1,门G2的输出 =0,使 74LS148处于正常工作状态。当选手在定时时间内按动抢答按键时,CTR=1,经G3反相,输出为0,封锁 CP信号,定时器处于保持工作状态;同时,门G2的输出 =1,74LS148处于禁止工作状态。当定时时间到时,则"定时到信号"为0,/ST=1,74LS148处于禁止工作状态,禁止选手进行抢答。同时,门G1处于关门状态,封锁时钟CP信号,使定时电路保持00状态不变,此次抢答结束。

(图7)

集成单稳态触发器74LS121用于控制报警电路及发声的时间(其功能表见表2),具体原理如下:主要由555时钟电路(用于控制报警声音频率)、蜂鸣器即相关的延时电路和控制电路组成。单稳态触发器74121通过信号/Ys、BO2、S控制报警与否和报警时间,555时钟电路产生脉冲时钟。在规定的时间有人抢答时,/Ys由1跳变到0,74121有状态2,即Q输出暂态高电平,蜂鸣器连续发声报警,持续时间为 =2.15秒;如果在规定时间内无人抢答,BO2由1跳变到0,74121有状态1,Q输出暂态高电平,蜂鸣器连续发声报警持续时间为
结合图6所示报警电路,分析 计算如下: 。取C=100uF, R=25K,。有=2.15秒。(原理图见图8)

(图8)

表2 74121功能表

(6) 电源电路

电源电路采用三端集成线性稳压集成块,L7805CV,因为它的外围电路比较简单,并且工作比较稳定,很适合74系列的集成块。它的稳压精度为2%,工作电流1.5A,封装为TO-220(A),工作温度也很不错,并且具有过温保护和短路保护,最大输入电压为35V,能对电路的长时间工作有很大的保障。(具体电路见图9)

(图9)

六、 总结

毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。下面我对整个毕业设计的过程做一下简单的总结。

第一,接到任务以后进行选题。选题是毕业设计的开端,选择恰当的、感兴趣的题目,这对于整个毕业设计是否能够顺利进行关系极大。好比走路,这开始的第一步是具有决定意义的,第一步迈向何方,需要慎重考虑。否则,就可能走许多弯路、费许多周折,甚至南辕北辙,难以到达目的地。因此,选;题时一定要考虑好了。

第二,题目确定后就是找资料了。查资料是做毕业设计的前期准备工作,好的开端就相当于成功了一半,到图书馆、书店、资料室去虽说是比较原始的方式,但也有可取之处的。总之,不管通过哪种方式查的资料都是有利用价值的,要一一记录下来以备后用。

第三,通过上面的过程,已经积累了不少资料,对所选的题目也大概有了一些了解,这一步就是在这样一个基础上,综合已有的资料来更透彻的分析题目。

第四,有了研究方向,就应该动手实现了。其实以前的三步都是为这一步作的铺垫。

通过这次设计,我对数字电路设计中的逻辑关系等有了一定的认识,对以前学的数字电路又有了一定的新认识,温习了以前学的知识,就像人们常说的温故而知新嘛,但在设计的过程中,遇到了很多的问题,有一些知识都已经不太清楚了,但是通过一些资料又重新的温习了一下数字电路部分的内容。在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。

在此要感谢我的指导老师,感谢老师给我这样的机会锻炼。在整个毕业设计过程中我懂得了许多东西,也培养了我独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我充分体会到了在创造过程中的探索的艰难和成功的喜悦。虽然这个项目还不是很完善,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。

3. AT89C51单片机8路抢答器的代码怎么写,急用,求解答

#include<reg51.h>
#defineucharunsignedchar
uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbitrstkey=P2^2;
sbitspeaker=P2^0;
voiddelay(uchara)
{
uchari,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
uchari,key;
P2=0xff;
while(1)
{
i=0;
P1=table[i];
while(1)
{
key=P3;
if(key!=0)break;
}
switch(key)
{
case0x01:i=1;break;
case0x02:i=2;break;
case0x04:i=3;break;
case0x08:i=4;break;
case0x10:i=5;break;
case0x20:i=6;break;
case0x40:i=7;break;
case0x80:i=8;break;
default:break;
}
P1=table[i];//显示按下抢答器的号
P0=key;//显示按下键号的LED
while(1)
{
if(rstkey==0)break;//主持人按下复位键则重新开始
speaker=~speaker;//否则蜂鸣器报警
delay(250);
}
}
}

4. 求基于单片机的八路抢答器设计,要用到74LS47N和共阳led,求电路图和程序(最好是C),加急!!

#include<reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

sbitkai=P2^2;

sbitting=P2^3;

sbithao1=P1^0;

sbithao2=P1^1;

sbithao3=P1^2;

sbithao4=P1^3;

sbithao5=P1^4;

sbithao6=P1^5;

sbithao7=P1^6;

sbithao8=P1^7;

sbitwela=P2^1;

sbitdela=P2^0;

sbitP2_6=P2^6;

sbitP2_7=P2^7;

ucharcodetable[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x40};

uchara,a1,num,shi,ge,hao,

aa,num1,flag1,flag2,flag3,flag4,

flag5,flag6,flag7,flag8,flag9,flag10;

voiddisplay(ucharhao,ucharaa,ucharshi,ucharge);

voidinit();

voiddelay(uintz);

voidkeyscan();

voidmain()

{

init();

while(1)

{

keyscan();

if(flag1==1)

{

display(hao,10,shi,ge);

}

else

{

display(hao,10,0,0);

}

}

}

voiddelay(uintz)

{

uintx,y;

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

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

}

voidkeyscan()

{

if(kai==0)

{

delay(5);

if(kai==0)

{

while(!kai);

hao=0;

num=30;

shi=3;

ge=0;

TR0=1;

flag1=1;

P2_7=0;

P2_6=1;

}

}

if(ting==0)

{

delay(5);

if(ting==0)

{

while(!ting)

{

a=0;

num=30;

num1=0;

hao=0;

shi=3;

ge=0;

TR0=0;

TR1=0;

flag1=0;

P2_6=0;

P2_7=1;

P3=0xff;

}

}

}

if(flag1==1)

{

if(hao==0&&hao1==0)

{

delay(5);

if(hao1==0)

{

while(!hao1);

P2_6=1;

P2_7=1;

P3=0xfe;

flag2=1;

shi=0;

ge=0;

hao=1;

TR1=1;

TR0=0;

}

}

if(hao==0&&hao2==0)

{

delay(5);

if(hao2==0)

{

flag3=1;

while(!hao2);

P2_6=1;

P2_7=1;

P3=0xfd;

shi=0;

ge=0;

hao=2;

TR0=0;

TR1=1;

}

}

if(hao==0&&hao3==0)

{

delay(5);

if(hao3==0)

{

flag4=1;

while(!hao3);

P2_6=1;

P2_7=1;

P3=0xfb;

shi=0;

ge=0;

TR0=0;

TR1=1;

hao=3;

}

}

if(hao==0&&hao4==0)

{

delay(5);

if(hao4==0)

{

flag5=1;

while(!hao4);

P2_6=1;

P2_7=1;

P3=0xf7;

shi=0;

ge=0;

TR0=0;

TR1=1;

hao=4;

}

}

if(hao==0&&hao5==0)

{

delay(5);

if(hao5==0)

{

flag6=1;

while(!hao5);

P2_6=1;

P2_7=1;

P3=0xef;

shi=0;

ge=0;

TR0=0;

TR1=1;

hao=5;

}

}

if(hao==0&&hao6==0)

{

delay(5);

if(hao6==0)

{

flag7=1;

while(!hao6);

P2_6=1;

P2_7=1;

P3=0xdf;

shi=0;

ge=0;

hao=6;

TR0=0;

TR1=1;

}

}

if(hao==0&&hao7==0)

{

delay(5);

if(hao7==0)

{

flag8=1;

while(!hao7);

P2_6=1;

P2_7=1;

P3=0xbf;

shi=0;

ge=0;

hao=7;

TR0=0;

TR1=1;

}

}

if(hao==0&&hao8==0)

{

delay(5);

if(hao8==0)

{

flag9=1;

while(!hao8);

P2_6=1;

P2_7=1;

P3=0x7f;

shi=0;

ge=0;

hao=8;

TR0=0;

TR1=1;

}

}

if(!hao==0)

{

if(flag2==1)

{

if(hao1==0)

{

delay(5);

if(hao1==0)

{

TR1=0;

}

}

}

if(flag3==1)

{

if(hao2==0)

{

delay(5);

if(hao2==0)

{

TR1=0;

}

}

}

if(flag4==1)

{

if(hao3==0)

{

delay(5);

if(hao3==0)

{

TR1=0;

}

}

}

if(flag5==1)

{

if(hao4==0)

{

delay(5);

if(hao4==0)

{

TR1=0;

}

}

}

if(flag6==1)

{

if(hao5==0)

{

delay(5);

if(hao5==0)

{

TR1=0;

}

}

}

if(flag7==1)

{

if(hao6==0)

{

delay(5);

if(hao6==0)

{

TR1=0;

}

}

}

if(flag8==1)

{

if(hao7==0)

{

delay(5);

if(hao7==0)

{

TR1=0;

}

}

}

if(flag9==1)

{

if(hao8==0)

{

delay(5);

if(hao8==0)

{

TR1=0;

}

}

}

}

}

}

voiddisplay(ucharhao,ucharaa,ucharshi,ucharge)

{

P0=0xff;

wela=1;

P0=0xfe;

wela=0;

P0=0;

dela=1;

P0=table[hao];

dela=0;

delay(5);

P0=0xff;

wela=1;

P0=0xfd;

wela=0;

P0=0;

dela=1;

P0=table[aa];

dela=0;

delay(5);

P0=0xff;

wela=1;

P0=0xfb;

wela=0;

P0=0;

dela=1;

P0=table[shi];

dela=0;

delay(5);

P0=0xff;

wela=1;

P0=0xf7;

wela=0;

P0=0;

dela=1;

P0=table[ge];

dela=0;

delay(5);

}

voidinit()

{

TMOD=0X11;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

ET1=1;

num=30;

num1=0;

a1=0;

a=0;

shi=3;

ge=0;

flag1=0;

P2_6=0;

}

voidtimer0()interrupt1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

a++;

if(a==18)

{

a=0;

num--;

if(num==0)

{

num=0;

TR0=0;

}

shi=num/10;

ge=num%10;

}

}

voidtimer1()interrupt3

{

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

a1++;

if(a1==18)

{

a1=0;

num1++;

if(num1==60)

{

P3=0xff;

P2_6=0;

P2_7=1;

TR1=0;

}

shi=num1/10;

ge=num1%10;

}

}

5. 单片机八人抢答器程序设计

;------------------------------------------
KAI BIT P3.7 ;开始
;------------------------------------------
ORG 0000H
JMP START
START:
;----------------------;下面是清零(复位)
MOV P0, #0C0H ;显示0
MOV P2, #255 ;熄灯
MOV R4, #0
;----------------------;下面等待按下"开始"键
KAISHI:
JB KAI, KAISHI ;没有按"开始",就循环
CALL DELAY ;延时
JB KAI, KAISHI ;消抖
JNB KAI, $ ;等待释放
;----------------------
MOV P0, #0CH ;显示P
WAIT: ;等待抢答
MOV A, P1
CPL A
JZ WAIT ;继续等待
;----------------------
XS: ;查找选手按键的位置
CPL A
MOV P2, A
JNB ACC.0, J0
JNB ACC.1, J1
JNB ACC.2, J2
JNB ACC.3, J3
JNB ACC.4, J4
JNB ACC.5, J5
JNB ACC.6, J6
; JMP J7
J7: INC R4
J6: INC R4
J5: INC R4
J4: INC R4
J3: INC R4
J2: INC R4
J1: INC R4
J0: INC R4
MOV A, R4
MOV DPTR, #D_TAB
MOVC A, @A + DPTR
MOV P0, A
;----------------------;下面等待按下复位键
W_FW:
JB KAI, W_FW ;没有按,则转
CALL DELAY ;延时
JB KAI, W_FW ;消抖
JNB KAI, $ ;等待释放
JMP START
;------------------------
D_TAB:
DB 0C0H,0F9H,0A4H,0B0H, 99H ;共阳极0-9
DB 92H, 82H,0F8H, 80H, 90H,0BFH ;-
;------------------------------------------
DELAY: ;延时约10ms
MOV R6, #20
DJNZ R7, $
DJNZ R6, $ - 2
RET
;==========================================
END

;以上程序已经调好。

6. 八路抢答器怎么用单片机去实现,它需要哪些功能希望能给我一些实现八路抢答器的清晰思路,我不甚感激!!

八路抢单器,一般而言需要的功能有:抢答按钮(八个),指示灯(至少八个),显示(至少一位数码管),警报提示(蜂鸣器),复位按钮(或开始按钮,由主持人控制)。

扩展功能,倒计时数码显示。

7. 设计一个以单片机为核心的8位竞赛抢答器,要求如下:

8路抢答器,这种题目,在网络上真是泛滥成灾了,随便一搜就能搜到一大堆,有仿真图和程序全部资料的。或者网络文库里也同样可以搜索到,还是毕业论文,更是详细。

下图是一个8路抢答器的仿真图。

8. 怎么设计基于51单片机的八位抢答器课程设计用c语言

你的描述不详:下面我给出方法,自已参考:
1:主持人端有一个单片机设备 且设备有一个或多个按键,单个按键,那么就做成按键复用,如果是多个按键,那就可以按要求设置按键功能和数量。参赛队每队一个设备,如果不方便能过连线来通讯,就采用无线通讯,抢答端只需一个按键按键,同时在按键里或边上用指示灯来指示状诚。
2:逻辑,当主持人按下抢答键时,主持人端设备向8个参赛队发送抢答开始信号数据,参赛队8个设备向主持端应答,判断收到应答后,开始计时10秒,某一队按下按键时,这队会向主持端发送本队的编号即可,说到这里,后面的基本上都是一样的原理,就是收发数据,应答,判断数据类型和功能。即可达到你的要求。

9. 求51单片机的8路抢答器,在普中开发板上实现

单片机源程序如下:

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define WHO P0
sbit player1=P1^0;
sbit player2=P1^1;
sbit player3=P1^2;
sbit player4=P1^3;
sbit Ensure=P3^7;
sbit beep=P1^6;
sbit LSA=P3^2;
sbit LSB=P3^3;
sbit LSC=P3^4;
uchar state=0;
uchar ssec=0;
uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar OUT[]={0x71,0x77,0x38,0x38};
void delay(uint time)
{
uint x,y ;
for(x=time;x>0;x--)
for(y=130;y>0;y--);
}
void Delay2(uint i)
{
while(i--);
}
void Show(uchar content[])
{
uchar i;
for(i=0;i<4;i++)
{
switch(i) //位选,选择点亮的数码管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//显示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//显示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//显示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//显示第3位
}
P2=content[i];//发送段码
Delay2(100); //间隔一段时间扫描
P2=0x00;//消隐
}
}
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x0D8;
TL0 = 0x0F0;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main()
{
Ensure=1;
while(1)
{
if(player1==0) //玩家1进入抢答状态
{
delay(10); //延时,按键消抖
if(player1==0) //再次判断是否进入抢答状态
{
if(state==0) //前方无人抢答状态
{
InitTimer0();
state=1; //将抢答状态置为1,防止其他玩家抢答
while(!player1) //抢答成功,蜂鸣器发声
{
beep=~beep;
delay(1);
}
WHO=table[1]; //数码管显示抢答成功的玩家编号
}
}
}
if(player2==0) //以下结构类似于玩家1
{
delay(10);
if(player2==0)
{
if(state==0)
{
InitTimer0();
state=1;
while(!player2)
{
beep=~beep;
delay(1);
}
WHO=table[2];
}
}
}
if(player3==0)
{
delay(10);
if(player3==0)
{
if(state==0)
{
InitTimer0();
state=1;
while(!player3)
{
beep=~beep;
delay(1);
}
WHO=table[3];
}
}
}
if(player4==0)
{
delay(10);
if(player4==0)
{
if(state==0)
{
InitTimer0();
state=1;
while(!player4)
{
beep=~beep;
delay(1);
}
WHO=table[4];
}
}
}
}
}
void Timer0() interrupt 1
{
TH0=(65536-45872)/255; //给定时器赋初值,定时50ms
TL0=(65536-45872)%255;
ssec++;
if(Ensure)
{
if(ssec>=100) //5s
{
EA=0;
while(1)
Show(OUT);
}
}
else
{
delay(10);
if(Ensure==0)
{
while(!Ensure);
Ensure=0;
if(ssec>=100)
{
EA=0;
}
}
}
}

阅读全文

与基于单片机的8路抢答器相关的资料

热点内容
jsp嵌入java代码 浏览:161
Python中Windows字体颜色 浏览:692
n7笔记app哪个好 浏览:415
kindle用什么app好 浏览:719
方舟加密服务器怎么进 浏览:60
传文件夹太慢 浏览:218
基于单片机的仓库 浏览:377
央企直营朔源码燕窝 浏览:340
日本校园老师电影 浏览:65
买黄金首饰上什么app 浏览:452
共享pdf 浏览:343
老武侠电影,是一个女的用乳房打人,名字 浏览:649
pythonsocket库 浏览:401
缉魂130分钟台湾完整版 浏览:688
wifi电视一般需要什么app 浏览:526
怎样保护自己的id密码加密 浏览:244
韩剧女主手上带个铃铛 浏览:374
南充云服务器 浏览:984
哪个网站下载源码不要钱 浏览:739
筹码源码指标公式股旁网 浏览:403