|
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png (28.1 KB, 下載次數(shù): 70)
下載附件
2020-5-9 19:07 上傳
單片機源程序如下:
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數(shù)據(jù)類型進(jìn)行聲明定義
typedef unsigned char u8;
sbit k=P2^2; //定義P22口是k
sbit k1=P3^0; //定義P30口是k1
sbit k2=P3^1; //定義P31口是k2
sbit k3=P3^2; //定義P32口是k3
sbit k4=P3^3; //定義P33口是k4
//sbit led1=P1^0; //定義P20口是led
//sbit led2=P1^1; //定義P20口是led
//sbit led3=P1^2; //定義P20口是led
//sbit led4=P1^3; //定義P20口是led
/*******************************************************************************
* 函 數(shù) 名 : delay
* 函數(shù)功能 : 延時函數(shù),i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
/*******************************************************************************
* 函 數(shù) 名 : keypros
* 函數(shù)功能 : 按鍵處理函數(shù),判斷按鍵K1是否按下
*******************************************************************************/
void keypros()
{
u16 i;
if(k==0) //檢測按鍵K是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k==0) //再次判斷按鍵是否按下
{
i=0; //
}
while(!k); //檢測按鍵是否松開
}
if(k1==0) //檢測按鍵K1是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k1==0) //再次判斷按鍵是否按下
{
if(i==0)
{
i=1; //
}
}
while(!k1); //檢測按鍵是否松開
}
if(k2==0) //檢測按鍵K2是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k2==0) //再次判斷按鍵是否按下
{
if(i==0)
{
i=2; //
}
}
while(!k2); //檢測按鍵是否松開
}
if(k3==0) //檢測按鍵K3是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k3==0) //再次判斷按鍵是否按下
{
if(i==0)
{
i=3; //
}
}
while(!k3); //檢測按鍵是否松開
}
if(k4==0) //檢測按鍵K4是否按下
{
delay(1000); //消除抖動 一般大約10ms
if(k4==0) //再次判斷按鍵是否按下
{
if(i==0)
{
i=4; //
}
}
while(!k4); //檢測按鍵是否松開
}
|
-
51hei.png
(1.91 KB, 下載次數(shù): 103)
下載附件
2020-5-9 19:07 上傳
-
-
四人搶答器.zip
2020-5-9 18:06 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
78.56 KB, 下載次數(shù): 55, 下載積分: 黑幣 -5
評分
-
查看全部評分
|