隨着科學技術的發展和普及,各種各樣的競賽越來越多,其中搶答器的作用也越來越重要。本文設計出以STC89C52RC單片機爲核心的八路搶答器。
所需元器件如下:
STC89C52RC芯片 *1
10K電阻 *1
200Ω電阻 *7
10uF 電解電容 *1
22pF 瓷片電容 *2
12MHz晶振 *1
按鍵 *10
單位7段數碼管 *1
74LS08 *1
74LS21 *1
代碼如下:
#include<reg52.h>
#define uint unsigned int
#define uchar signed char
sbit kai_key=P3^7; //定義裁判開始按鍵
void delay(uint x) //延時函數
{
uchar i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void main() //主函數
{
IT0=1; //設置外部中斷0邊沿觸發方式
EX0=1; //設置中斷允許位
P1=0xff; //P1端口各位寫“1”
P0=0x76; //初始化數碼管,顯示字型“H”
while(1)
{
if(kai_key==0) //判斷裁判開始鍵是否按下
{
delay(50); //延時去抖
if(kai_key==0)//判斷裁判開始鍵是否按下
{
while(kai_key==0)//等待按鍵鬆開
EA=1; //開外部中斷
P0=0x3f; //數碼管顯示“0”
}
}
}
}
void qdq_int0(void)interrupt 0 using 1
{
uchar key;
EA=0; //關外部中斷
key=(P1&0xff); //讀取按鍵
switch(key) //根據鍵值顯示相應鍵號
{
case 0xfe: P0=0x06;break;
case 0xfd: P0=0x5b;break;
case 0xfb: P0=0x4f;break;
case 0xf7: P0=0x66;break;
case 0xef: P0=0x6d;break;
case 0xdf: P0=0x7d;break;
case 0xbf: P0=0x07;break;
case 0x7f: P0=0x7f;break;
}
}
仿真電路圖如下: