當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]/****************************************鍵盤_不采用定時(shí)器_不延時(shí)特點(diǎn):按鍵在松手后有效,靈敏度高,消耗資源少,運(yùn)行效率高獨(dú)立鍵盤為:K01=P2^4;K02=P2^5;K03=P2^6;K04=P2^7;矩陣鍵盤為:行(上到下)_P2.3_P2.2_P2.

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

鍵盤_不采用定時(shí)器_不延時(shí)

特點(diǎn):
按鍵在松手后有效,靈敏度高,消耗資源少,運(yùn)行效率高

獨(dú)立鍵盤為:K01=P2^4;K02=P2^5;K03=P2^6;K04=P2^7;
矩陣鍵盤為:行(上到下)_P2.3_P2.2_P2.1_P2.0
列(左到右)_P2.7_P2.6_P2.5_P2.4

提供的操作函數(shù):

//獨(dú)立鍵盤.無按鍵動作時(shí)其返回值num_key=0,否則返回按鍵號num_key
extern unsigned char keyboard_self();

//矩陣鍵盤.無按鍵動作時(shí)其返回值num_key=0,否則返回按鍵號num_key****檢測高四位
extern unsigned char keyboard_matrix();

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

.
 

先看獨(dú)立鍵盤(和矩陣鍵盤的算法一樣)
-----------------------------------------------------------------------
#include
#include

//獨(dú)立鍵盤.無按鍵動作時(shí)其返回值num_key=0,否則返回按鍵號num_key
extern unsigned char keyboard_self()
{
unsigned char num_key=0;//按鍵號
unsigned char temp=0;//用于讀取P2線上按鍵值
static unsigned char temp_code=0;//保存按鍵值
static unsigned char num_check=0;//低電平有效次數(shù)
static unsigned char key_flag=0;//按鍵有效標(biāo)識

temp=P2&0xF0;//讀取P2線數(shù)據(jù)

if(temp!=0xF0)//低電平判斷
{
num_check++;
if(num_check==10)//連續(xù)10次(10ms)低電平有效,則認(rèn)為按鍵有效
{
key_flag=1;//使能按鍵有效標(biāo)識
temp_code=temp;//保存按鍵值
}
}
else//松手時(shí)判斷
{
num_check=0;

if(key_flag==1)//按鍵有效
{
key_flag=0;

switch(temp_code)//讀取按鍵號
{
case 0xE0: num_key=1;
break;
case 0xD0: num_key=2;
break;
case 0xB0: num_key=3;
break;
case 0x70: num_key=4;
break;
}
}
}

return(num_key);
}
 

現(xiàn)在是矩陣鍵盤的
-----------------------------------------------------------------------
#include
#include

//矩陣鍵盤.無按鍵動作時(shí)其返回值num_key=0,否則返回按鍵號num_key****檢測高四位
extern unsigned char keyboard_matrix()
{
unsigned char num_key=0;//按鍵號
unsigned char temp=0;//讀取P2口線數(shù)據(jù)
static unsigned char temp_code=0;//用于保存按鍵值
static unsigned char temp_circle=0xFE;//保存P2線上的循環(huán)掃描值
static unsigned char num_check=0;//低電平計(jì)數(shù)
static unsigned char key_flag=0;//按鍵有效標(biāo)識

P2=temp_circle;//0xFX
temp=P2;//讀取P2口線數(shù)據(jù)
if(temp!=temp_circle)//有按鍵動作
{
num_check++;//低電平計(jì)數(shù)|逢低電平加1
if(num_check==10)//連續(xù)10次(10ms)低電平有效
{
key_flag=1;//按鍵有效標(biāo)識置1
temp_code=temp;//保存按鍵值
}
}
else//松手OR無按鍵動作,此時(shí)應(yīng)該改變掃描線
{
num_check=0;
if(key_flag==1)//按鍵有效判斷
{
key_flag=0;
switch(temp_code)//讀取按鍵號
{
//P2^0線
case 0xEE: num_key=1;
break;
case 0xDE: num_key=2;
break;
case 0xBE: num_key=3;
break;
case 0x7E: num_key=4;
break;
//P2^1線
case 0xED: num_key=5;
break;
case 0xDD: num_key=6;
break;
case 0xBD: num_key=7;
break;
case 0x7D: num_key=8;
break;
//P2^2線
case 0xEB: num_key=9;
break;
case 0xDB: num_key=10;
break;
case 0xBB: num_key=11;
break;
case 0x7B: num_key=12;
break;
//P2^3線
case 0xE7: num_key=13;
break;
case 0xD7: num_key=14;
break;
case 0xB7: num_key=15;
break;
case 0x77: num_key=16;
break;
}
}
temp_circle=_crol_(temp_circle,1);//改變掃描線
if(temp_circle==0xEF)
{
temp_circle=0xFE;
}
}
return(num_key);//返回按鍵號
}

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

未按鍵時(shí),掃描線一直變化。
長按鍵時(shí),掃描線不變化,使得該行按鍵變成了獨(dú)立按鍵,這樣的掃描效率極高。
如當(dāng)按下P2.0線上的某個(gè)鍵時(shí),程序?qū)呙璧竭@個(gè)鍵,而后掃描線不變化,
當(dāng)鍵盤程序連續(xù)10次進(jìn)入時(shí)檢測到10次按鍵有效,直到松手后掃描線才變化

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉