導航:首頁 > 操作系統 > 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單片機四路電子搶答器相關的資料

熱點內容
pythonsin函數圖像 瀏覽:329
身體不好當程序員 瀏覽:274
mount命令作用 瀏覽:220
畫江湖之不良人黑白無常雙修刪減 瀏覽:754
朵唯手機如何加密 瀏覽:504
安卓雙清指的什麼 瀏覽:177
phpredis所有keys 瀏覽:988
朋友賣房要解壓嗎 瀏覽:108
sar命令安裝 瀏覽:169
安卓怎麼看我自己去過哪裡 瀏覽:283
演算法分析里log沒有底數嗎 瀏覽:222
伺服器卡頓怎麼連接 瀏覽:957
手機拍照文件夾自動生成 瀏覽:788
瀏覽器如何運行在伺服器端 瀏覽:790
collinux 瀏覽:449
日本歐美韓國推理片電影大分享 瀏覽:615
怎麼下載香港app游戲 瀏覽:217
加密貨幣或迎來新的上漲趨勢 瀏覽:827
電腦桌面的文件夾怎麼發的 瀏覽:194
linuxkangle 瀏覽:150