1.抢答器同时供4名选手或4个代表队比赛,分别用4个按钮S1 ~ S4表示。
2。设置一个系统清除和抢答控制开关R,该开关由主持人控制。
3. 抢答器具有锁存与显示功能。即选手按动按钮,锁存相应的编号,并在LED数码管上显示, 同时扬声器发出音乐提示。先抢答选手的编号一直保持到主持人将系统清除为止。
4. 抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。当主持人启动"开始"键后,定时器进行减计时,在枪答时间内,选手枪答成功,这时计时器停止计时工作,显示器上显示参赛者的编号,保持到主持人按复位键为止。当规定时间到,仍无人枪答时,本次枪答无效,扬声器报警发出声音,并禁止枪答,计时器显示〃00〃。
åçå¾ï¼
å·¥ä½åç
æ¢çå¨ç±74LS148ã74LS279ã74LS48ç»æï¼LEDæ¾ç¤ºå¨ å¼å§æ¶ï¼å½æ¯æ人æé®è¿æªææ¯ï¼CLR为0ï¼æ以è¾åºQ1~Q4为0ï¼
æ¾å äºæç®¡å ¨ä¸ºççï¼å½ä¸»æ人æé®æä¸æ¶CLR为1ï¼å¯ä»¥è¾å ¥ï¼è°å æ¢çï¼ç¸åºçè°çç¯äº®ï¼å©ç¨74LS279å74LS148è¾åºçæ¯cpçäº0ï¼éåå ¶ä»çï¼ä¸è½ä½¿å ¶ä»çè¾åºã
å©ç¨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ï¼è¿æ ·åå§åï¼ç»§ç»æ¢çï¼è¿å¯ä»¥è®¾è®¡æä¸æ¶ç声é³
}