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

[程式設計] 請問要加入可輸入溫度值的矩陣鍵盤要如何寫? [複製連結]

Rank: 4

數位軟體勳章

狀態︰ 離線
1
發表於 2013-10-21 19:18:49 |顯示全部樓層
提供一個 4*4 keypad 掃描程式,供參考!先模仿別人怎樣寫程式,融會貫通 。
  1. unsigned char keypad()                        // 讀取 4 X 4 小鍵盤的按鍵   副程式
  2. {
  3.         unsigned char value;                        // keypad 輸入值
  4.         unsigned char scanline[] = {0xfe,0xfd,0xfb,0xf7};                // 掃描線  1110   1101   1011   0111
  5.         unsigned char col,row,temp;        // 宣告行列變數
  6.         value = 0xff;                                        // 設定鍵盤初始值
  7.         for(row=0 ; row<4 ; row++)                // 列掃描 4 次
  8.         {
  9.                 P1 = scanline[row];                        // 輸出掃描線
  10.                 temp = P1 & 0xf0;                        // 讀取偵測線          左nibble
  11.                 if(temp != 0xf0)                         // 有某一個按鍵被按到           有按鍵輸入
  12.                 {
  13.                         os_wait2(K_TMO,1);                // debounce 10 mS
  14.                         if(temp != 0xf0)
  15.                         {
  16.                                 for(col=0 ; col<4 ; col++)        // 行掃描 4 次
  17.                                 {
  18.                                         if(temp == ((scanline[col] & 0x0f) << 4))                // 左移 4 bit                  右 nibble
  19.                                         {
  20.                                                 value = row * 4 + col;                                                // 計算鍵值公式
  21.                                                 while((P1 & 0xf0) != 0xf0);                                // 等待按鍵放開
  22.                                         }
  23.                                 }
  24.                         }
  25.                 }
  26.         }
  27.         return value;                                        // 傳回按鍵值 0 ~ 15 ,無按鍵輸入傳回 0xff
  28. }
複製代碼
已有 1 人評分威望 收起 理由
紅塵孤鳥 + 2 感謝您熱心幫助會員解決問題,論壇需要您的.

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

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


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

GMT+8, 2024-5-4 17:22

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