SOGO論壇
  登入   註冊   找回密碼
查看: 1210|回覆: 2
列印 上一主題 下一主題

[問題求助] 8951程式求解 [複製連結]

Rank: 2

狀態︰ 離線
跳轉到指定樓層
1
發表於 2011-9-14 01:04:24 |只看該作者 |倒序瀏覽
最近自己在看書學8051程式

都是自己看實習練習

想請問如何寫4*4鍵盤去控制LCM?
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 5Rank: 5

數位硬體勳章

狀態︰ 離線
2
發表於 2011-9-15 17:18:12 |只看該作者
本帖最後由 Jackchen00 於 2011-9-15 17:36 編輯

大大
首先你必須先將鍵盤及LCM的介面搞清楚
4x4的鍵盤基本上都是用掃描的方式讀取
也就是說需要4IN+4OUT的接腳
你可以用一個PORT來處理鍵盤的掃描
將該PORT設定成4IN/4OUT的模式
然後設計一個timer來輪流掃描/讀取鍵盤值
例如  P0.0~0.3讀取,P0.4~0.7掃描

令     P0 = 0xef;//設初始值
         if ((P0 | 0xf0) != 0xff)  //如果 P0 | 0xf0 的值不等於 0xff 表示有第一排的按鍵被按下
         {
            .....//判斷是哪一個按鍵
         }  
當timer time-up時(以T0或T1計時產生中斷)
令    P0 = 0xdf;
         if ((P0 | 0xf0) != 0xff)  //如果 P0 | 0xf0 的值不等於 0xff 表示有第二排的按鍵被按下
      {
            .....//判斷是哪一個按鍵
      }  
下一次的中斷
再令  P0 = 0xbf;
         if ((P0 | 0xf0) != 0xff)  //如果 P0 | 0xf0 的值不等於 0xff 表示有第三排的按鍵被按下
     {
          .....//判斷是哪一個按鍵
     }  
下一次的中斷
再令  P0 = 0x7f;
         if ((P0 | 0xf0) != 0xff)  //如果 P0 | 0xf0 的值不等於 0xff 表示有第四排的按鍵被按下
     {
          .....//判斷是哪一個按鍵
     }  
四個動作循環,就可讀出16個按鍵了
當然程式中還得加上debounce及判斷按鍵是否放開的程式
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

總評分: 威望 + 2   查看全部評分

狀態︰ 離線
3
發表於 2011-9-30 17:43:23 |只看該作者
LCM 有很多種,網上也有很多code ,鍵盤掃瞄因為有時序動作在,所以概念要先通,需要甚麼幫忙再回應好了
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-27 07:28

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部