日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C51行列键盘扫描程序

發布時間:2024/8/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C51行列键盘扫描程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C51行列鍵盤掃描程序

#i nclude "reg51.h"

void main()

{

unsigned char key;

while(1)

{

?? key=kbscan();?? //鍵盤掃描函數

? delay10ms();? //健消除抖動的延時函數

?

}

}

void delay10ms()

{

??? unsigned char i;

?? for(i=0xff;i>0;i--);

}

?

unsigned char kbscan()

{

? unsigned char sccode,recode;

?P1=0xf0;? //發全“0”行掃描,列線輸入

if(P1&0xf0)!=0xf0)? //有鍵按下

{?

?? delay10ms();?? //延時去抖動

?? if((P1&0xf0)!=0xf0)

{

?? sccode =0xf0;??? //逐行掃描初值

?while((sccodeZ&0x10)!=0)

? {

??? P1=sccode;???? //輸出行掃描碼

?? if((P1&0XF0)!=0XF0)? //本行有鍵按下

{

? ecode=(P1&0xf0)|0xf0;

? return((~sccode)+(~recode);? //返回特征碼

}

?else

? sccode=(sccode<<1)|0x01;? //行掃描碼左移一位

?}

}

}

? return 0;? //無鍵按下,返回0

}

#i nclude <reg51.h>
#define byte unsigned char
#define kbd_port p1
byte code key[16]={0xeb,0xd7,0xdb,0xdd, //0 1 2 3
0xb7,0xbb,0xbd,0x77, //4 5 6 7
0x7b,0x7d,0xe7,0xed, //8 9 - +
0xee,0xde,0xbe,0x7e}; //= * / c
byte k_input(void)
{
static bit k_status; /*鍵盤狀態flag(靜態局部變量) */
byte i,k;
kbd_port=0x0f;
k=kbd_port;
kbd_port=0xff;
kbd_port=k|0xf0;
k=kbd_port;
kbd_port=0xff;
if(k!=0xff)
{
for(i=0;i<16;i++)
{
if(k==key && k_status==0)
{
k_status=1;
return(i);
}
}
}
else
k_status=0;
return(0xff);

* 功  能:4×4鍵盤掃描程序
* 返  回:鍵序號(0~f),0xff表示沒有字符輸入
*
* 硬件連接:p1口(高4位 - 行;低4位 - 列)
* 軟件特點:簡潔高效,無須延時消抖,避免連發

總結

以上是生活随笔為你收集整理的C51行列键盘扫描程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。