国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

51單片機設計16個按鍵的矩陣鍵盤

這篇具有很好參考價值的文章主要介紹了51單片機設計16個按鍵的矩陣鍵盤。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

首先如圖所示導入各個元器件,并連線。

51單片機設計16個按鍵的矩陣鍵盤

因為P3口連接著矩陣鍵盤,所以上來要先付個初值,從高位到低位H0,H1,H2,H3,L0,L1,L2,L3的值是11110000,高位全是1,低位全是0,十六進制就是0xF0,也就是P3=0xF0。如果有按鍵按下了,肯定就不是這個值了。

比如說:

第一行789+中的任何一個按下,H0的高電平就會被拉低,P3口就變成了01110000, P3=0x70

第二行中的456-任何一個被按下,H1的高電平也會被拉低,P3口就變成了10110000, P3=0xB0

第三行中的123X任何一個被按下,H2的高電平也會被拉低,P3口就變成了11010000, P3=0xD0

第四行中的%0.÷任何一個被按下,H3的高電平也會被拉低,P3口就變成了11100000, P3=0xE0

上面是行都檢查完了,下面檢查列,檢查列之前先把P3口設置成00001111,所有的列上的低位端口都設置成1,行上的端口都設置成0,也就是把P3賦初值為0x0f

然后再去檢查每一列:

第一列中的741%任何一個被按下,L0的高電平都會被拉低,P3口就變成了00000111, P3=0x07

第二列中的8520任何一個被按下,L1的高電平都會被拉低,P3口就變成了00001011, P3=0x0B

第三列中的963.任何一個被按下,L2的高電平都會被拉低,P3口就變成了00001101, P3=0x0D

第四列中的+-X÷任何一個被按下,L3的高電平都會被拉低,P3口就變成了00001110, P3=0x0E

這樣就能確定到底是哪一個按鍵被按下了,比如說按下的是7鍵,首先P3=0xf0,檢查值有變化了就先保存下來,比如說是0x70,再把P3=0x0f,再檢查P3的值有沒有變化,如果有變化了,也要保存下來比如說是0x07,這會7鍵按下的值就是0x70+0x07=0x77,這樣每一個鍵都會有一個固定的值,需要自己來編碼,因為接線畫圖有不一樣的地方,編碼都會有變化的。

0到9的按鍵值就為:

{0xd7, 0xeb, 0xdb, 0xbb, 0xed, 0xdd, 0xdb, 0xee, 0xde, 0xbe}

51單片機設計16個按鍵的矩陣鍵盤

下面編寫c程序,每行都有注釋。主要給自己看。


#include"reg52.h"
char duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};  // 段碼,也是就是數碼管要顯示的0到9的值
char s[]={0xd7, 0xeb, 0xdb, 0xbb, 0xed, 0xdd, 0xbd, 0xee, 0xde, 0xbe}; // 所有按鍵的值
unsigned int num=0;    // 定義要顯示的數字變量

void delay(unsigned int n){             // 延時函數
    unsigned int i=0, j=0;
    for(i=0; i<n; i++){
        for(j=0; j<120; j++);
    }
}

void key_scan(){
    unsigned int i=0;
    unsigned char temp0=0, temp1=0, temp=0;    // 定義3個變量存放按鍵接口的值
    P3=0xf0;            //  P3口賦初值
    if(P3 != 0xf0){     //  如果P3不等于初值了,證明有按鍵被按下了
        delay(20);               // 延時20毫秒去抖
        temp0 = P3;             //  保存現在P3的值
        P3 = 0x0f;            // P3口再次賦初值,用來檢查列,這里不用擔心檢查不到,單片機還是很快的。
        if(P3 != 0x0f){       // 如果P3不等于初值了,證明有按鍵被按下了
            temp1 = P3;              //  保存現在P3的值
        }
    }
    temp = temp0 + temp1;            // 鍵值= 第一次保存的值+ 第二次保存的值
    for(i=0; i<10; i++){              // 循環(huán)10次
        if(s[i]==temp){               //  把數組s中的每一個值和現在的鍵值比對,如果一樣就是現在的第幾個數字
            num=i;                          //就把num值設成i值
        }
    }

}

void display(){
    P2 = ~duan[num];     // P2口接的數碼管顯示段的第num個數字,正好是按下的按鍵的那個數字。
    
}

void main(){
    while(1){
        key_scan();    // 檢測按鍵按下的是幾的函數
        display();    //顯示函數,用來顯示按下的是數字幾
    }
}

把hex文件導入proteus中仿真就能實現從0到9的按鍵并且數碼管上會顯示0到9這10個數字。

51單片機設計16個按鍵的矩陣鍵盤

proteus中接線要認真不然會有看著圓點在線上,實際一放大就不在的現象,也就是根本沒接上,會帶來很多麻煩事。

最近從網上買了一個4X4的矩陣鍵盤,其接口定義要理清了關系,不然會出錯的,特此記錄一下。

51單片機設計16個按鍵的矩陣鍵盤

今天在弄proteus時發(fā)現了一個矩陣鍵盤,特此記錄一下,當時要是知道有這個東西就不用搞那么多的button了,一個矩陣鍵盤就搞定了,多簡單?。】纯磮D片吧!

51單片機設計16個按鍵的矩陣鍵盤

查找的方法也很簡單搜索時輸入KEYPAD就可以了,從旁邊選就好了。這就是proteus中導入矩陣鍵盤的方法。

51單片機設計16個按鍵的矩陣鍵盤文章來源地址http://www.zghlxwxcb.cn/news/detail-447299.html

到了這里,關于51單片機設計16個按鍵的矩陣鍵盤的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 51單片機--矩陣鍵盤

    一、接線(4×4) 將16個鍵盤排成4行4列,第一行將每個按鍵的一端連接在一起構成行線,第一列將每個按鍵的另一端連接在一起構成列線,所以共有4行4列8根線,連接到單片機的GPIO口。 二、原理 總體來說檢測該鍵對應IO口是否為低電平。 1、檢測時,先將一行設為低電平,其

    2024年02月11日
    瀏覽(19)
  • 51單片機矩陣鍵盤

    51單片機矩陣鍵盤

    目錄 前言 一、矩陣鍵盤掃描 二、LCD1602顯示矩陣鍵盤鍵值 三、趣味小項目——密碼鎖 總結 ? ? ? ? ?矩陣鍵盤的原理很淺顯易懂,不涉及任何寄存器,就是純線路連接。 ? ? ? ? 矩陣鍵盤的內部接線圖如下: ????????不難看出其組成就是多個獨立按鍵彼此相連形成,在

    2024年02月08日
    瀏覽(19)
  • 51單片機:數碼管和矩陣按鍵

    51單片機:數碼管和矩陣按鍵

    目錄 一:動態(tài)數碼管模塊 1:介紹 ?2:共陰極和共陽極 A:共陰極 B:共陽極 C:轉化表 ?3:74HC138譯碼器 4:74HC138譯碼器控制動態(tài)數碼管(位選) 5:數碼管顯示完整代碼 6:74HC573鎖存器 A:基本點 B:原理圖介紹 c:74HC573控制數碼管代碼 二:矩陣按鍵模塊 1:介紹 2:原理圖 ?3:矩陣按鍵代碼 ??????

    2024年02月15日
    瀏覽(26)
  • 嵌入式51單片機04-矩陣按鍵系列

    嵌入式51單片機04-矩陣按鍵系列

    一、矩陣按鍵基礎知識 矩陣按鍵工作原理 : 逐行掃描 :通過高四位輪流輸出低電平來對矩陣鍵盤進行掃描,當低四位接收到的數據不全為1的時候,說明有按鍵按下,然后通過判斷低四位數據中哪一位為零來判斷哪一個按鍵被按下。 逐列掃描 :通過低四位輪流輸出低電平來

    2024年02月07日
    瀏覽(49)
  • 【51單片機】矩陣按鍵實現數碼管顯示

    【51單片機】矩陣按鍵實現數碼管顯示

    閑的沒事看一看玩一玩········· 矩陣按鍵 數碼管是一種導體發(fā)光器件,其基本單元是發(fā)光二極管。按發(fā)光二極管單元連接方式可分為共陽極數碼管和共陰極數碼管 共陰極數碼管是指將所有發(fā)光二極管的陰極接到一起形成共陰極的數碼管,共陰極的數碼管在應用時將公共

    2024年02月02日
    瀏覽(24)
  • 51單片機——矩陣按鍵實驗,小白講解,相互學習

    51單片機——矩陣按鍵實驗,小白講解,相互學習

    矩陣按鍵介紹: ????????獨立按鍵與單片機連接時,每一個按鍵都需要單片機的一個I/O 口,若某單片機系統需較多按鍵,如果用獨立按鍵便會占用過多的I/O 口資源.單片機系統中I/O 口資源往往比較寶貴,當用到多個按鍵時為了減少I/O 口引腳,引入了矩陣按鍵。 ??????

    2024年02月12日
    瀏覽(21)
  • 51單片機入門——矩陣鍵盤(附51代碼)

    51單片機入門——矩陣鍵盤(附51代碼)

    硬件如圖非常簡單,將一個4*4的矩陣鍵盤的8個管腳引到端子上,在連接到8個I/O口上,ARRAY_H代表著行,ARRAY_L代表著列,當行與列的電平都置低的時候,就選中的相應的矩陣按鍵,比如當s1按下時,ARRAY_H1會置低,其他ARRAY_H給高電平,那么選中的就是第一行,然后到列,ARRAY_

    2024年02月11日
    瀏覽(23)
  • 51單片機——數碼管、按鍵、矩陣按鍵C語言入門編程

    51單片機——數碼管、按鍵、矩陣按鍵C語言入門編程

    目錄 數碼管: 1.靜態(tài)數碼管:第二位數碼管顯示0 2.動態(tài)數碼管:每一位數碼管依次顯示對應位數 按鍵: 1.獨立按鍵:按下按鍵對應LED亮滅 矩陣按鍵: 1.矩陣按鍵:按下的每個按鍵,數碼管顯示對應鍵碼 ???????? 數碼管按段數可分為七段數碼管和八段數碼管,八段數碼管

    2024年01月23日
    瀏覽(23)
  • 51單片機(六)矩陣鍵盤和矩陣鍵盤密碼鎖

    51單片機(六)矩陣鍵盤和矩陣鍵盤密碼鎖

    ?? 專欄簡介:本專欄記錄了從零學習單片機的過程,其中包括51單片機和STM32單片機兩部分;建議先學習51單片機,其是STM32等高級單片機的基礎;這樣再學習STM32時才能融會貫通。 ?? 專欄適用人群 :適用于想要從零基礎開始學習入門單片機,且有一定C語言基礎的的童鞋

    2024年02月04日
    瀏覽(26)
  • 51單片機實現按鍵、鍵盤的功能,五面拿下阿里飛豬offer

    51單片機實現按鍵、鍵盤的功能,五面拿下阿里飛豬offer

    } /******************************************************************************* 函 數 名 : main 函數功能 : 主函數 輸 入 : 無 輸 出 : 無 *******************************************************************************/ void main() { led=0; while(1) { keypros(); //按鍵處理函數 } } 矩陣鍵盤代碼 /************************************

    2024年04月11日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包