找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3042|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于矩陣鍵盤的檢測

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:70481 發(fā)表于 2014-12-16 17:55 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
現(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仿真圖


仿真文件下載:
代碼.zip (38.88 KB, 下載次數(shù): 27)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表