|
現(xiàn)在睡不著,就把以前想到的矩陣鍵盤的檢測分享一下吧,可能已經(jīng)有人想到了,那就算我是無聊吧,F(xiàn)在老師上課講的矩陣鍵盤的檢測都是一行一行或一列一列檢測,代碼比較繁瑣,以4×4的矩陣鍵盤為例(接的IO口為P0),我的想法是一次性將低四位全部為0(P0=0xf0),然后取P0的高四位,第二步將高四位為0(P0=0x0f),取P0的低四位,將兩次的數(shù)值合并即得到鍵值。這個想法我想到之初覺得太好了,但轉(zhuǎn)念一想, 遇到了對單片機內(nèi)部硬件的困惑,將兩個IO口直接相連,其中一個IO口拉低電平,那另一個IO口會怎么樣?是高電平被低電平拉低還是低電平被高電平太高?當(dāng)時不確定,就沒去多想,不過現(xiàn)在我可以說是高電平被低電平拉低,因為我剛剛做過實驗,而且看了書上IO口的硬件組成(有關(guān)場效應(yīng)管的東西)也可以得到相同的結(jié)論。這是仿真做的圖片,另外,用這種方法檢測的另一個好處就是能支持組合鍵的識別。下面是簡單的代碼:
unsigned char get_key_value(void)
{
unsigned char value;
KEY=0xf0;
value=KEY;
KEY=0x0f;
value=value|KEY;
return value;
}
好了 ,睡覺,都沒睡意了。
|
proteus仿真圖
003511zb2v2h1yzegzheeb.png.thumb.jpg (71.86 KB, 下載次數(shù): 84)
下載附件
2014-12-16 17:59 上傳
仿真文件下載:
代碼.zip
(38.88 KB, 下載次數(shù): 27)
2014-12-16 17:55 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|