单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1050|回复: 0
打印 上一主题 下一主题
收起左侧

16矩阵键盘扫描程序,懂的拿走

[复制链接]
跳转到指定楼层
楼主
brew9 发表于 2018-10-9 16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
typedef unsigned int u16;
typedef unsigned char u8;

//定义键盘连接的端口,设置键盘编码数组
#define keyboard_px P3
u8 code key_tab[]={0xEE,0xDE,0xBE,0x7E,0xED,0xDD,0xBD,0x7D,0xEB,0xDB,0xBB,0x7B,0xE7,0xD7,0xB7,0x77};

//延时1ms函数(晶振11.0592MHz)
void delay(u16 num)
{
        u16 x,y;
        for(x=num; x>0; x--){for(y=113; y>0; y--);}
}

//扫描函数,获取按键对应的索引值
u8 key_scan(void)
{
        u8 temp1, temp2, i;

        keyboard_px = 0xf0;
        delay(5);

        if(keyboard_px != 0xf0)
        {
                delay(5);
                if(keyboard_px != 0xf0)
                {
                        //获取按键编码
                        temp1 = keyboard_px;
                        keyboard_px = 0x0f;
                        delay(5);
                        temp2 = keyboard_px;
                        temp1 |= temp2;
                       
                        //提取按键编码对应的数码管编码(或者返回i值,用于对其它数组的数值提取)
                        for (i=0; i<16; i++)
                        {
                                if (key_tab[i] == temp1)
                                {
                                        return i;
                                        break;
                                }
                        }
                }
        }else{
                return 0xff;
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51Hei单片机16群 联系QQ:125739409;技术交流QQ群7344883

Powered by 单片机教程网

快速回复 返回顶部 返回列表