原理:

16个键盘,通过八个引脚就可以控制,高四位控制行,低四位控制列。

代码:

#include <reg51.h>#define  SMG P0      //宏定义数码管
#define KEY P1      //宏定义矩阵键盘typedef unsigned char u8;
typedef unsigned int u16;u8 sum;                        //定义一个全局变量,用来保存按键的值u8 SMG_Code[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0xff};  //数码管显示的内容void delay(u16 i)
{while(i--);
}   void KEY_J(void)        //矩阵键盘函数
{   u8 a=0;                    //定义了一个局部变量KEY=0x0f;               //当我定义0x0f,意味着我就开始了列扫描,从高位到底位if(KEY!=0x0f)       //之前定义了KEY=0x0f,如果有变化,那应该是有按键被按下{delay(1000);//正常消抖if(KEY!=0x0f){switch(KEY)//这里就有意思了,因为这里要判断哪一列按键被按下,按键一边是低电平,连通之后,高电平会被拉低,所以引脚会变成低电平,对应找出来就知道是哪一列{case 0x07:sum=1;break;case 0x0b:sum=2;break;case 0x0d:sum=3;break;case 0x0e:sum=4;break;}KEY=0xf0;  //列扫描完毕,现在开始行扫描switch(KEY)//按照顺序,被按下的引脚会变成低电平,依次来判断哪一行被按下。{case 0x70:sum=sum;break; //第一行得到的数就是第几列case 0xb0:sum=sum+4;break;//第二行得到的数就是第几列加4,后面每加一行,数加4。case 0xd0:sum=sum+8;break;case 0xe0:sum=sum+12;break;}}}//不加也可以,但是加了更加稳定while((a<50)&&(KEY!=0xf0))  //检测按键松手检测,就是说当你一直按着这个按键,超过0.05秒会进行下一次执行,或者你松开也执行下面的。{delay(100);a++;}
}void main(void)
{while(1){KEY_J();                      //调用矩阵键盘函数SMG=SMG_Code[sum];   //数码管显示}
}

运行结果:

按一个对应的显示一个。

51单片机基础之矩阵键盘4X4相关推荐

  1. 基于51单片机的带矩阵键盘指纹密码电子锁原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶显示功能界面 2.支持添加/删除/搜索指纹,更改密码 3.支持指纹和密码开锁 4.采用DC002作为电源接口可直接输入5V给整个 ...

  2. 51单片机复习:矩阵键盘

    行列式扫描 如P10到P17 首先高四位为低电压,低四位为高电压,然后高四位为高电压,低四位 为低电压 则 起初高位低压,当按下某个按键时,那个线路与低位相接的电路被接通,所以下面为高压的低位也变成低 ...

  3. 6位密码锁的c语言编程,51单片机4*3矩阵键盘6位密码锁c语言程序

    满意答案 #include #include #define uchar unsigned char uchar key; int i=0; char b[4]={'0','0','0','0'};/ ...

  4. 51单片机 c语言 yl236,基于亚龙YL236单片机设备的矩阵键盘程序设计.doc

    基于亚龙YL236单片机设备的矩阵键盘程序设计.doc 基于亚龙YL236单片机设备的矩阵键盘程序设计 摘 要矩阵键盘在单片机技能大赛题目中基本是必备模块,连接贯穿整个题目的设计完成.本文介绍了基于亚 ...

  5. (五)51单片机基础——矩阵键盘

    矩阵键盘介绍: 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式 采用逐行或逐列的"扫描",就可以读出任何位置按键的状态 扫描: 数码管扫描(输出扫描) 原 ...

  6. 4x4矩阵键盘扫描c语言程序,单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...

    ;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...

  7. 【单片机实验】矩阵键盘

    实验五 矩阵键盘 一.实验目的 1.掌握矩阵键盘的硬件电路原理和软件编程方法: 2.掌握利用数码管显示矩阵键盘键值的编程方法. 二.实验说明 本实验提供了一个4X4小键盘,开始先将4行置一,4列置零, ...

  8. 单片机STC89C52RC实现矩阵键盘(汇编语言版)

    单片机型号:STC 89C52RC 引脚如图: 接线方法:4X4矩阵键盘,每行接P3.0-P3.3引脚,每列接P3.4-P3.7引脚,8个LED发光二极管接P1.0-P1.7,用于显示当前按下的键盘序 ...

  9. 设计分享|单片机4*4矩阵键盘控制LED灯

    目录 具体实现功能 设计介绍 51单片机简介 设计思路 设计内容 仿真图(protues8.7) 程序(Keil5) 具体实现功能 4*4矩阵键盘控制LED显示,第一个按键控制一个LED点亮,第二个按 ...

最新文章

  1. 在Windows server 中搭建sftp服务器(快速)
  2. 【数字信号处理】傅里叶变换性质 ( 序列傅里叶变换共轭对称性质 | x(n) 分解为实部序列与虚部序列 | 实部傅里叶变换 | 虚部傅里叶变换 | 共轭对称傅里叶变换 | 共轭反对称傅里叶变换 )
  3. windows下spark开发环境配置
  4. jsf netbeans_NetBeans Java EE技巧9:从数据库创建JSF应用程序
  5. php 网页 透明背景图片,php 处理透明背景的图片时的问题
  6. Vmware 连接局域网通过桥接方式
  7. Hexo Reload in new Mac
  8. Postman工具(环境变量与全局变量)
  9. CPDA数据分析师:为什么Python在数据科学方面超越R和SQL?
  10. 详解机器学习中的梯度消失、爆炸原因及其解决方法
  11. linux常用命令及通过浏览器访问linux文件功能
  12. GitHub网站的主题设置
  13. Spring声明式事务配置管理方法
  14. scrapy-splash安装使用
  15. java 命令 线程栈_JVM调试常用命令——jstack命令与Java线程栈(1)
  16. [IOS APP]曾仕强演说精选-有声系列
  17. Eigen关于稀疏矩阵
  18. 使您的软件运行起来: 防止缓冲区溢出
  19. 微信公众号认证开具深圳电子普通发票查询方法。
  20. 485之隔离电源引起的问题

热门文章

  1. 给网站开发者推荐18个在线手册,值得收藏
  2. 关于面试的一些总结,仅供参考,希望大家指正投入学习
  3. 腾讯视频客服在哪找 如何联系腾讯视频人工客服2019
  4. 按键精灵 网页操作插件
  5. 道通转债,微芯转债,博22转债上市价格预测
  6. 西藏拉萨某知名大饭店
  7. 在线网络考试系统源码
  8. 百度2021第二季度总营收314 亿
  9. Gym - 100203A Ariel 暴力+位运算
  10. 渗透测试-burp suite实战