0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

4*4矩陣鍵盤的工作原理

CHANBAEK ? 來源:博客園-立冬以東 ? 作者:博客園-立冬以東 ? 2023-02-15 13:52 ? 次閱讀

MCU讀取按鍵是否按下,往往需要進(jìn)行消抖,而消抖措施有很多種, 可以利用電容電路,可以用數(shù)電里學(xué)的觸發(fā)器電路, 這些可以說都是在硬件層面來消抖的。 但是有更簡單便宜的軟件消抖措施。

軟件消抖也分為延時(shí)重采樣和持續(xù)采樣兩種方式。

延時(shí)重采樣就是在采樣到按鍵被按下信號后,延時(shí)約10ms后,再次采樣,如果扔檢測到是按下,則就會判定為按鍵確實(shí)被按下“一次”。

持續(xù)采樣就是當(dāng)采樣到按鍵被按下信號后,在一段時(shí)間內(nèi)連續(xù)檢測,如果一直沒變,則判定為被按下一次。

一個(gè)4*4的矩陣鍵盤的原理就是,四行串聯(lián)在四位IO口,四列串聯(lián)在四位IO口

以上圖解釋,先將PD = 1111 1110 ,即將第一列置低,然后取PD的高四位,若檢測到高四位不是1111,比如是1101,說明第三行雖然一開始是置高的,但是被強(qiáng)制拉低了,所以說明S13鍵被按下了。

然后將PD循環(huán)左移,將第二列置低,以此類推。

這其中還要加上延時(shí)重采樣消抖,就可以進(jìn)行矩陣鍵盤的檢測了。

舉個(gè)栗子

1 #include 52.h>
 2 #include 
 3 
 4 #define uint unsigned int
 5 #define uchar unsigned char
 6 
 7 uchar key = 0;
 8 uchar table[]={
 9     0x3f, 0x06, 0x5b, 0x4f,
10     0x66, 0x6d, 0x7d, 0x07,
11     0x7f, 0x6f, 0x77, 0x7c,
12     0x39, 0x5e, 0x79, 0x71
13 };
14 
15 void init()
16 {
17     P1 = 0x00;
18     P0 = 0x00;
19 }
20 
21 void delayms(uint xms)
22 {
23     uint i, j;
24     for(i = 0; i < xms; i++)
25         for(j = 0; j < 110; j++);
26 }
27 
28 void keys()
29 {
30     uchar temp;
31     uint i;
32     for(i = 0; i < 4; i++){
33         P2 = _crol_(0xfe, i);
34         temp = P2;
35         temp &= 0xf0;
36         if(temp != 0xf0){
37             delayms(10);
38             temp = P2;
39             temp &= 0xf0;
40             if(temp != 0xf0){
41                 switch(temp)
42                 {
43                     case 0xe0 : key = 0+4*i; break;
44                     case 0xd0 : key = 1+4*i; break;
45                     case 0xb0 : key = 2+4*i; break;
46                     case 0x70 : key = 3+4*i; break;
47                 }
48                 while(temp != 0xf0){
49                     temp = P2;
50                     temp &= 0xf0;
51                 }
52             }
53         }
54     }
55 }
56 
57 void display(uchar key)
58 {
59     P1 = table[key];
60 }
61 
62 void main()
63 {
64     init();
65     while(1){
66         keys();
67         display(key);
68     }
69 }

代碼實(shí)現(xiàn)功能是檢測4*4鍵盤,每個(gè)按鍵代表一個(gè)數(shù)字,顯示在屏幕上。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16900

    瀏覽量

    349950
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2773

    瀏覽量

    76543
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1995

    瀏覽量

    61013
  • 矩陣鍵盤
    +關(guān)注

    關(guān)注

    7

    文章

    206

    瀏覽量

    31412
  • 電容電路
    +關(guān)注

    關(guān)注

    1

    文章

    11

    瀏覽量

    3098
收藏 人收藏

    評論

    相關(guān)推薦

    4*4矩陣鍵盤設(shè)計(jì)及源代碼

    4*4矩陣鍵盤設(shè)計(jì)及源代碼 一 實(shí)驗(yàn)?zāi)康? 學(xué)習(xí)使用4X4 掃描鍵盤的設(shè)計(jì)方法;2 實(shí)踐對比按
    發(fā)表于 02-08 16:30 ?472次下載

    4×4矩陣鍵盤識別技術(shù)

    4×4矩陣鍵盤識別技術(shù) 1. 實(shí)驗(yàn)任務(wù) 如圖4.14.2所示,用AT89S51的并行口P1接4×4
    發(fā)表于 04-16 10:26 ?5295次閱讀
    <b class='flag-5'>4</b>×<b class='flag-5'>4</b><b class='flag-5'>矩陣</b>式<b class='flag-5'>鍵盤</b>識別技術(shù)

    4×4矩陣式非編碼鍵盤電路

    4×4矩陣式非編碼鍵盤電路 輸入鍵盤控制電路采用4×4
    發(fā)表于 02-21 15:04 ?4949次閱讀
    <b class='flag-5'>4</b>×<b class='flag-5'>4</b><b class='flag-5'>矩陣</b>式非編碼<b class='flag-5'>鍵盤</b>電路

    4×4矩陣鍵盤工作原理

    發(fā)表于 07-31 10:28 ?9次下載

    4×4矩陣鍵盤工作原理與編程

    發(fā)表于 08-09 16:24 ?31次下載

    基于51單片機(jī)對4*4矩陣鍵盤掃描

    基于51單片機(jī),對4*4矩陣鍵盤掃描,并用7段數(shù)碼管顯示按鍵信息。
    發(fā)表于 11-24 13:55 ?86次下載

    4x4矩陣鍵盤程序及原理圖PCB

    4x4矩陣鍵盤程序及原理圖PCB,供大家下載。
    發(fā)表于 12-21 18:25 ?0次下載

    單片機(jī)新手入門實(shí)例詳解之三_4×4矩陣鍵盤工作原理與編程

    本文介紹了如何在ME300B型51/AVR單片機(jī)學(xué)習(xí)系統(tǒng)上使用數(shù)碼管顯示4X4矩陣鍵盤的鍵值。
    發(fā)表于 03-28 15:23 ?32次下載

    4x4矩陣鍵盤工作原理及掃描程序

    矩陣鍵盤的動(dòng)態(tài)掃描確實(shí)略顯復(fù)雜,不可能就是讀一個(gè)端口數(shù)據(jù),然后馬上就出來結(jié)果。這需要對依次每一行的按鍵進(jìn)行掃描、判斷,然后得出結(jié)果。本文主要介紹了矩陣鍵盤掃描以及
    的頭像 發(fā)表于 02-24 15:30 ?24.1w次閱讀
    <b class='flag-5'>4x4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b><b class='flag-5'>工作原理</b>及掃描程序

    什么是矩陣鍵盤4*4鍵盤的原理軟件設(shè)計(jì)分析

    矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。 在行線
    發(fā)表于 06-26 09:26 ?3.9w次閱讀

    基于51單片機(jī)的4*4矩陣鍵盤字符輸入

    使用4*4矩陣鍵盤和一個(gè)數(shù)碼管在4*4矩陣
    發(fā)表于 06-26 09:56 ?1w次閱讀

    4*4矩陣鍵盤工作原理和實(shí)現(xiàn)的詳細(xì)資料介紹

    在單片機(jī)按鍵使用過程中,當(dāng)鍵盤中按鍵數(shù)量較多時(shí)為了減少端口的占用通常將按鍵排列成矩陣 形式如下圖所示,在矩陣鍵盤中每條水平線和垂直線在交叉處不直接連通而是通過一個(gè)按鍵加以連接,到底這
    發(fā)表于 12-26 08:00 ?151次下載
    <b class='flag-5'>4</b>*<b class='flag-5'>4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>的<b class='flag-5'>工作原理</b>和實(shí)現(xiàn)的詳細(xì)資料介紹

    怎樣連接4×4帶Arduino的矩陣鍵盤以及如何從鍵盤獲取數(shù)據(jù)

    在本教程中,我們將學(xué)習(xí)4×4矩陣鍵盤以及Arduino鍵盤接口的工作原理。
    的頭像 發(fā)表于 07-30 10:16 ?2.4w次閱讀

    4*4矩陣鍵盤驅(qū)動(dòng)程序

    4*4矩陣鍵盤驅(qū)動(dòng)程序
    發(fā)表于 11-15 11:51 ?7次下載
    <b class='flag-5'>4</b>*<b class='flag-5'>4</b><b class='flag-5'>矩陣</b><b class='flag-5'>鍵盤</b>驅(qū)動(dòng)程序

    帶有stm32的宏鍵盤4x4矩陣

    電子發(fā)燒友網(wǎng)站提供《帶有stm32的宏鍵盤4x4矩陣.zip》資料免費(fèi)下載
    發(fā)表于 07-28 14:19 ?5次下載
    帶有stm32的宏<b class='flag-5'>鍵盤</b><b class='flag-5'>4x4</b><b class='flag-5'>矩陣</b>