?? key.c
字號:
/*===============================================================
程序名稱:單片機行列掃描讀取4x4距陣鍵盤
-----------------------------------------------
( http://www.bluepw.com http://www.bluepw.cn )
Agni 07-SV開發板 4X4鍵盤與單片機接線方式:
P2.0--P2.3為鍵盤列線 P2.4--P2.7為鍵盤行線
注:(1):主芯片AT89S52使用11.0592M晶振
(2):Keil uV3 3.30編譯運行通過
(3):本例程在 Agni 07-EV 開發平臺上成功運行通過
(4):藍極風電子技術網版權所有,只供學習參考,不得應用于商業用途.
==================================================================*/
#include<at89x52.h>
unsigned char code Dig[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //數碼管 0-F 代碼
unsigned char k; //設置全局變量k 為鍵盤的鍵值
void key_delay(void) //延時
{
int t;
for(t=0;t<500;t++);
}
void keyscan(void) //鍵盤掃描函數
{
unsigned char a;
P2 = 0xf0; //鍵盤初始化
if(P2!=0xf0) //有鍵按下?
{
key_delay(); //延時
if(P2!=0xf0) //確認真的有鍵按下?
{
P2 = 0xfe; //使行線P2.4為低電平,其余行為高電平
key_delay();
a = P2; //a作為緩存
switch (a) //開始執行行列掃描
{
case 0xee:k=0;break;
case 0xde:k=1;break;
case 0xbe:k=2;break;
case 0x7e:k=3;break;
default:P2 = 0xfd; //使行線P2.5為低電平,其余行為高電平
a = P2;
switch (a)
{
case 0xed:k=4;break;
case 0xdd:k=5;break;
case 0xbd:k=6;break;
case 0x7d:k=7;break;
default:P2 = 0xfb; //使行線P2.6為低電平,其余行為高電平
a = P2;
switch (a)
{
case 0xeb:k=8;break;
case 0xdb:k=9;break;
case 0xbb:k=10;break;
case 0x7b:k=11;break;
default:P2 = 0xf7; //使行線P2.7為低電平,其余行為高電平
a = P2;
switch (a)
{
case 0xe7:k=12;break;
case 0xd7:k=13;break;
case 0xb7:k=14;break;
case 0x77:k=15;break;
default:break;
}
}
}
break;
}
}
}
}
//********主函數*********************
void main(void)
{
P1=0xff;
while(1)
{
keyscan(); //調用鍵盤掃描函數
switch(k) //查找按鍵對應的數碼管顯示代碼
{
case 0:P0=Dig[0];break;
case 1:P0=Dig[1];break;
case 2:P0=Dig[2];break;
case 3:P0=Dig[3];break;
case 4:P0=Dig[4];break;
case 5:P0=Dig[5];break;
case 6:P0=Dig[6];break;
case 7:P0=Dig[7];break;
case 8:P0=Dig[8];break;
case 9:P0=Dig[9];break;
case 10:P0=Dig[10];break;
case 11:P0=Dig[11];break;
case 12:P0=Dig[12];break;
case 13:P0=Dig[13];break;
case 14:P0=Dig[14];break;
case 15:P0=Dig[15];break;
default:break; //退出
}
}
}
//*************************** end ******************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -