SOGO論壇

標題: 8951程式求解 [列印本頁]

作者: lanlin0911    時間: 2011-9-14 01:04:24     標題: 8951程式求解

最近自己在看書學8051程式

都是自己看實習練習

想請問如何寫4*4鍵盤去控制LCM?
作者: Jackchen00    時間: 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及判斷按鍵是否放開的程式
作者: sogot    時間: 2011-9-30 17:43:23

LCM 有很多種,網上也有很多code ,鍵盤掃瞄因為有時序動作在,所以概念要先通,需要甚麼幫忙再回應好了




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM