4X4鍵盤掃描c語言程式詳解?

4X4鍵盤掃描c語言程式詳解

工具/原料

電腦

keill

方法/步驟

4X4鍵盤掃描,按下按鍵每個按鍵,在數碼管上顯示0~F

4X4鍵盤掃描c語言程式詳解

#include "reg51.h"//包含標頭檔案,一般情況不需要改動,標頭檔案包含特殊功能暫存器的定義

4X4鍵盤掃描c語言程式詳解

#define uint unsigned int

#define uchar unsigned char

4X4鍵盤掃描c語言程式詳解

uint key;

uchar smg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f

,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F

uchar shuzu[4][4]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};/*陣列(00)(01)(02)(03)

(10)(11)(12)(13)

(20)(21)(22)(23)

(30)(31)(32)(33)*/

4X4鍵盤掃描c語言程式詳解

/******************************************************************/

/* 延時函式宣告 */

/******************************************************************/

/*void mdelay(uint t)

{

uchar n;

for(;t>0;t--)

for(n=0;n<125;n++)

{;}

}*/

/*大約一毫秒的延時函式*/

void mdelay(uint t)

{

uchar n;

while(t--)

{

for(n=0;n<123;n++)

{;}

}

}

4X4鍵盤掃描c語言程式詳解

/******************************************************************/

/* 主函式 1 */

/******************************************************************/

void main()

{

uchar hang,lie;

P2=0x00;

while(1)

{

P3=0x0f; //行掃描

key=P3;

if(key!=0x0f)//檢測是否有按鍵按下

{

mdelay(100);//去抖動

key=P3;

4X4鍵盤掃描c語言程式詳解

if(key!=0x0f)

{

switch(key)//行按鍵選擇

{

case 0x0e: hang=0; break;

case 0x0d: hang=1; break;

case 0x0b: hang=2; break;

case 0x07: hang=3; break;

}

}

}

P3=0xf0; //列掃描

key=P3;

4X4鍵盤掃描c語言程式詳解

if(key!=0xf0)//檢測是否有按鍵按下

{

mdelay(100);//去抖動

key=P3;

if(key!=0xf0)

{

switch(key)//列按鍵選擇

{

case 0x70: lie=0; break;

case 0xb0: lie=1; break;

case 0xd0: lie=2; break;

case 0xe0: lie=3; break;

}

}

}

P0=smg[shuzu[hang][lie]];

}

}

4X4鍵盤掃描c語言程式詳解

本經驗只供參考,如有不足,還請見諒。。

相關問題答案