当前位置:首页 > 单片机 > 正文内容

矩阵键盘程序

haohao2年前 (2023-12-27)单片机143
#include <reg51.h>

#define KEYPAD P2

unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};	//共阳

void delay(void) //10MS
{
    unsigned char data i, j;
    i = 20;
    j = 113;
    do
    {
        while (--j);
    } while (--i);
}


char getKey(){
    char row; //行号
    char column; //列号
    KEYPAD=0xf0; //检测行
    if(KEYPAD==0xf0){ //没检测到按键按下
            return -1;
    }
    delay();
    if(KEYPAD==0xf0){ //消抖
            return -1;
    }
    switch(KEYPAD){
        case 0x70: row=0; break; //第0行被按下
        case 0xb0: row=1; break; //第1行被按下
        case 0xd0: row=2; break; //第2行被按下
        case 0xe0: row=3; break; //第3行被按下
    }
    KEYPAD=0x0f; //检测列
    switch(KEYPAD){
        case 0x07: column=0; break; //第0列被按下
        case 0x0b: column=1; break; //第1列被按下
        case 0x0d: column=2; break; //第2列被按下
        case 0x0e: column=3; break; //第3列被按下
    }
    while(KEYPAD!=0x0f); //等待松手
    return row*4 + column;
}

main(){
    char keyCode;
    while(1){
        keyCode = getKey();
        if(keyCode!=-1){
            P0=seg[keyCode];
        }
    }
}

相关文章

Keil_C51、Proteus下载

Keil C51下载 网盘地址https://cowtransfer.com/s/564c008d42134f Proteus下载 网盘地址https://cowtransfer.com/s...

创建Keil工程及进行仿真的步骤

创建Keil工程及进行仿真的步骤

创建Keil工程(以《led_test》工程为例) 启动Keil软件菜单栏->Project->New uVision Project在合适的位置,手动创建工程文件夹,以《led_tes...