zoukankan      html  css  js  c++  java
  • 51、52单片机使用矩阵键盘

    为了学习矩阵键盘,先做个小小的实验目标 : 按下矩阵键盘后 ,数码管显示按下的是第几键。

    我的矩阵键盘是4X4的,操作原理是先检测按下的键是哪行。再确定是哪列。这样就能识别是按的哪个键了。

    首先看电路图,确定键盘是连CPU的哪个针。我的开发板上是连接的P1,具体是P10~P17,八个针对应逻辑的8位。

     (此处省略,直接贴代码)

    #include<reg52.h>
    void delay(int n);
    void juzhen(void);
    char duanxuan[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
    0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
    char keyveluetonumber[17]={0X0,0x77,0x7B,0X7D,0X7E,0XB7,0XBB,0XBD,0XBE,
    0XD7,0XDB,0XDD,0XDE,0XE7,0XEB,0XED,0XEE};
    int keyvelue=0;

    int main(){
    int j=0;
    P2=0XFF;
    while(1){
    juzhen();
    P0=duanxuan[keyvelue];
    }
    }


    void juzhen(void){
    int a=0,i;
    char tempkey;
    P1=0xf0;
    if(P1!=0Xf0){
    delay(10);
    if(P1!=0Xf0){
    tempkey=P1;
    P1=0X0f;
    tempkey|=P1;

    for(i=1;i<=16;i++){ /*下面switch的优化代码 */
    if(keyveluetonumber[i]==tempkey) {
    keyvelue=i ;
    break;
    }
    }
    /* switch(tempkey){ //这个switch的对应关系更直观,但这么编程太2了,
    所以用数组提前把下标和元素做好映射,直接查询即可。
    不省时间,但省程序员的精力。

    case 0x77 : keyvelue=1;break;
    case 0x7B : keyvelue=2;break;
    case 0X7D : keyvelue=3;break;
    case 0X7E : keyvelue=4;break;
    case 0XB7 : keyvelue=5;break;
    case 0XBB : keyvelue=6;break;
    case 0XBD : keyvelue=7;break;
    case 0XBE : keyvelue=8;break;
    case 0XD7 : keyvelue=9;break;
    case 0XDB : keyvelue=10;break;
    case 0XDD : keyvelue=11;break;
    case 0XDE : keyvelue=12;break;
    case 0XE7 : keyvelue=13;break;
    case 0XEB : keyvelue=14;break;
    case 0XED : keyvelue=15;break;
    case 0XEE : keyvelue=16;break;
    }
    */

    }

    }


    return ;
    }
    void delay(int n){ //简陋的延时函数
    int i;
    while(n--)
    for(i=110;i>0;i--);
    }

  • 相关阅读:
    Anaconda+Vscode+opencv3环境打造
    关于AXI4-Stream Infrastucture IP的学习
    Xilinx的License问题
    IOBUF的使用
    Vscode的学习
    关于ZYNQ 7 processing system IP的设置导出与导入
    使用zynq verification IP进行系统验证
    使用AXI Verifcation IP进行系统验证
    MIG IP学习笔记
    Git的GUI工具sourcetree的使用
  • 原文地址:https://www.cnblogs.com/cnnnnnn/p/8617994.html
Copyright © 2011-2022 走看看