导航:首页 > 操作系统 > 51单片机四路电子抢答器

51单片机四路电子抢答器

发布时间:2022-09-24 06:49:43

① 求proteus单片机c语言程序代码,四路抢答器

能把问题描述清楚看来程序实现对你来说不成问题,我用伪代码给你写出来你自己补充完整即可。
void main()
{
unsigned char key,cont;
bit flag = 0;
初始化IO口;\\关闭红灯点亮绿灯,数码管显示0
while(1)
{
key = P1&0xF;
if(key!=0xF)
{
/*按下的按键相应绿灯关闭*/
LED_G1 = (bit)(key&0x1);
LED_G2 = (bit)(key&0x2);
LED_G3 = (bit)(key&0x4);
LED_G4 = (bit)(key&0x8);
/*按下的按键相应红色LED闪烁*/
for(cont=0;cont<5;cont++)
{
LED_R1 = (~LED_G1)|flag;
LED_R2 = (~LED_G2)|flag;
LED_R3= (~LED_G3)|flag;
LED_R4 = (~LED_G4)|flag;
Delay();//延时
flag = ~flag;
}
关闭所有红色LED并开启所有绿色LED;
}
}
}

注意:代码是允许有同时按下的情况,当然也可以改为不允许同时按下的情况发生,即如果发生同时按下则随便选择一个按键,这样觉得有点不公平。

② 51单片机4路抢答器

编译器把程序编译成HEX档,然后在proteus内把hex档导入单片机就可以仿真了

③ 基于51单片机的抢答器如果有两人同时按下怎么解决呢 比如有四组 当其中一组按下抢答键时 屏蔽其他组

抢答按键无需去抖
理论上同时触发几乎不可能
实际应用中同时触发的概率取决于系统反应速度
速度越快同时触发的概率越低
用MCU中断截获数据的话,大概能识别微秒级别的时间差
用CMOS锁存器可识别纳秒级别的时间差

当有按键被按下的时候,以最快的速度保存各端口状态即可,无需什么屏蔽不屏蔽

④ 求四路抢答器电路原理图

原理图:

工作原理

抢答器由74LS148、74LS279、74LS48组成,LED显示器 开始时,当支持人按钮还未按是,CLR为0,所以输出Q1~Q4为0;

放光二极管全为灭的,当主持人按钮按下时CLR为1,可以输入,谁先抢答,相应的谁的灯亮,利用74LS279和74LS148输出的是cp等于0,锁存其他的,不能使其他的输出。

(4)51单片机四路电子抢答器扩展阅读:

利用51单片机建立四路抢答器

单片机,当然不只是51,51单片机是一种稍通用型的单片机,通过I/O口的定义,可以实现多种控制功能。

抢答器,原理:如果为四路,当其中任一路控下后,其他几路即失效,结果为第一次按下的,可以用数码管或是LED灯来显示,当然这里只是讲原理与编程,具体可以根据抢答器路数及显示方式更改程序即可。

源程序如下:

<div class="blockcode"><blockquote>/*用的是AT89S52开发板,独立按键接口如下,就用这四路。先按下的用LED灯来显示,对应第一个到第四个LED灯,其他再按无效,如果想再次实现,可手动复位单片机*/

#include <reg52.h>

sbit key1=P3^0; //定义按键,根据需要连接线路,如独立按键(4路)

sbit key2=P3^1;

sbit key3=P3^2;

sbit key4=P3^3;

/*void delay(unsigned int cnt) //如果有抖动或是干扰,可以用个小延时去抖

{

while(--cnt);

}*/

void main()

{

bit Flag;

while(!Flag)

{

if(!key1)

{

P1=0xFE;

Flag=1;

}

/*LED灯来显示按下的键,第一个灯,我这里是8位LED灯,即:0111 1111,反过来读数为:1111 1110 即:0xFE *,P1口对应LED灯,给P1赋值*/

else if(!key2)

{

P1=0xFD;

Flag=1;

}

//第二个灯亮

else if(!key3)

{P1=0xFB;Flag=1;}

//第三个灯亮

else if(!key4)

{

P1=0xF7;

Flag=1;

}

//第四个灯亮,意味着第四路首先按下

}

while(Flag); //可以再加个I/O,控制Flag,这样初始化,继续抢答,还可以设计按下时的声音

}

⑤ 51单片机4路抢答器,求大神帮我做一个,急需。要求用汇编语言。还要有protues的仿真图!!!

ORG0000H
JMPBEGIN
ORG0030H
TABLE:;共阴极数码管显示代码表
DB3FH,06H,5BH,4FH,66H;01234
DB6DH,7DH,07H,7FH,6fh;56789
DELAY:MOVR5,#20
LOOP4:MOVR6,#50H;延时20X20ms
LOOP5:MOVR7,#100
DJNZR7,$
DJNZR6,LOOP5
DJNZR5,LOOP4
RET
;---------------------------------------
BEGIN:MOVP2,#0FFH;P2口置高电平,准备接收信号
MOVR4,#0
MOVA,R4;R4位标志值送A寄存器
AGAIN:MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP1,A
LOOP1:MOVA,P3;接收p3口的抢答信号
CPLA
JZLOOP1
LOOP2:RRCA;有人抢答信号则逐次移动判断哪一位抢答
INCR4
JNCLOOP2
;********************
MOVA,R4
CJNEA,#5,LOOP3
LOOP3:
JCLOOP4
MOVR4,#0
SJMPLOOP1
LOOP4:
MOVCA,@A+DPTR;找到相应位显示代码
MOVP1,A
LEDDIS:
MOVA,#0FFH
CLRC
LEDDIS1:
RLCA
DJNZR4,LEDDIS1
MOVP0,A
LOOP3:JNBP2.2,BEGIN;若主持人按下复位信号键,则转向主程序
CPLP2.0;若没按复位信号键,则通过p2.2口给出高低信号驱动蜂鸣器
LCALLDELAY;调用延时子程序
SJMPLOOP3;p2.2口反复间隔0.4s变化,驱动蜂鸣器
END

⑥ 用51单片机做抢答器需要买什么东西

扬声器,单片机最小系统,三级管,以及抢答的按钮,电线若干

⑦ 51单片机 四路抢答器

你好!这抢答器是仿真还是做实物?需要倒计时吗?

⑧ 求大神做一个51单片机的四路抢答器,要汇编程序,电路图,和分析过程,还有4天答辩,

有一个八路的发给你吧,供参考

ORG 0000H

JMP BEGIN

ORG0030H

TABLE: ;共阴极数码管显示代码表

DB 3FH,06H,5BH,4FH,66H;12345

DB 6DH,7DH,07H,7FH ;6789

DELAY: MOV R5,#20

LOOP4: MOV R6,#50H ;延时20X20ms

LOOP5: MOV R7,#100

DJNZ R7,$

DJNZ R6,LOOP5

DJNZ R5,LOOP4

RET

;---------------------------------------

BEGIN: MOV P2,#0FFH ;P2口置高电平,准备接收信号

MOV R4,#0

MOV A,R4 ;R4位标志值送A寄存器

AGAIN: MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV P1,A

LOOP1: MOV A,P3 ;接收p3口的抢答信号

CPL A

JZ LOOP1

LOOP2: RRC A ;有人抢答信号则逐次移动判断哪一位抢答

INC R4

JNC LOOP2

;********************

MOV A,R4

MOVC A,@A+DPTR ;找到相应位显示代码

MOV P1,A

LEDDIS:

MOVA,#0FFH

CLRC

LEDDIS1:

RLCA

DJNZR4,LEDDIS1

MOVP0,A

LOOP3: JNBP2.2,BEGIN;若主持人按下复位信号键,则转向主程序

CPL P2.0 ;若没按复位信号键,则通过p2.2口给出高低信号驱动蜂鸣器

LCALLDELAY ;调用延时子程序

SJMP LOOP3 ;p2.2口反复间隔0.4s变化,驱动蜂鸣器

END


⑨ 51单片机做抢答器,要求如下,需要什么器件

LEDH EQU 30H
LEDL EQU 31H
ORG 0000H
AJMP MAIN
ORG 0003H
SJMP INT_2
ORG 0013H
SJMP INT_1
MAIN:
MOV SP,#60H
MOV A,#0EEH
MOV P2,A
MOV LEDH,#0E0H

MOV LEDL,#0EH

SETB IT0
SETB IT1
SETB EA
SETB EX1
SETB EX0
SJMP $
INT_1:
MOV A,LEDL
SETB C
RLC A
` ANL A,#0FH
ORL A,LEDH
MOV P2,A
JNB ACC.3,INT_1E
MOV LEDL,#0EH
INT_1E:
RETI
INT_2:
MOV A,LEDH
SETB ACC.3
RL A
ANL A,#0F0H
ORL A,LEDL

MOV P2,A
JNB P2.7,INT_2E
MOV LEDH,#0E0H
INT_2E:
RETI
END

⑩ 求MCS-51单片机四路抢答器的c语言程序设计

#include<reg51.h>
#defineuint unsigned int
#defineuchar unsigned char
sbitspeaker = P2^7;
sbit key0 =P1^0;
sbit key1 =P1^1;
sbit key2 =P1^2;
sbit key3 =P1^3;
sbit key4 =P1^4;
sbit key5 =P1^5;
sbit key6 =P1^6;
sbit key7 =P1^7;
ucharled[8]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};

voiddelay_1ms(uint t)
{
uchar m,n;
for(m=t;m>0;m--)
for(n=330;n>0;n--);
}
bitiskeyinput() //判断是否有按键闭合
{
if((P1 & 0xff) ==0xff ) //屏蔽高4位(列线),只检测低4位(行线)
return 0; //没有键闭合,返回0
else
return 1; //有键闭合,返回1
}
ucharkey_identify() //识别键号
{
uchar key;
if( key0==0 )key=0;
if(key1==0 )key=1;
if( key2==0 )key=2;
if( key3==0 )key=3;
if( key4==0 )key=4;
if( key5==0 )key=5;
if( key6==0 )key=6;
if( key7==0 )key=7;
return key; //输出键号
}

voidkeyprocess(uchar keynum)
{
uint i;
P0 = led[keynum];
i=500;
while(i--)
{
speaker = 0;
delay_1ms(10);
speaker = 1;
}
}
void main()
{
uchar keynum;
P0 = 0xFF;
while(1)
{
while (!iskeyinput() ); //如果没有键,则等待
delay_1ms(10); //去除键抖动
if(iskeyinput() ) //当前有按键,需要识别按键并且等待键盘松开
{
keynum= key_identify(); //识别键号
keyprocess(keynum);
while(1); //等待复位
}
}
}

阅读全文

与51单片机四路电子抢答器相关的资料

热点内容
主角可以回到抗战卖军火 浏览:956
会计云课堂文件夹是哪个 浏览:908
日本推理片和欧美推理片哪个好 浏览:446
编程跳转id指令怎么用 浏览:960
苍白贫血作品集txt 浏览:304
红羊打真军电影有哪些 浏览:88
海外悬疑电影推荐 浏览:270
如何查找本机网关ip和dns服务器 浏览:306
电影枪版资源到底在哪里 浏览:339
51单片机必考 浏览:849
pdf背景黑色 浏览:256
0855影视大全在线观看 浏览:527
勾引闺蜜老公在电影院 浏览:553
神秘电影网页链接 浏览:928
重生到一夫多妻的现代世界 浏览:439
彼时曾相伴为什么看不了 浏览:722
漏的多的电影 浏览:240
李采谭合作的男演员 浏览:943
医院云服务器采购 浏览:505
国产经典怀旧敌特老电影 浏览:903