单片机矩阵键盘判断某个按键按下

这是我第一次发表文章,关于51单片机矩阵式键盘逐行逐列扫描是否有按键按下,以及把键号显示用七段数码管显示出来的程序,分享如下。

矩阵键盘

51单片机

数码管显示

程序代码如下

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned intvoid delay1(int x)   //延时程序
{uint i,j;
for(i=0;i<123;i++)for(j=0;j<x;j++);
}uchar led[]={0x00,0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0X77,0X7C,0X39,0X5e,0X79,0X71};  //显示数值的段码
unsigned int num[]={0xee,0xed,0xeb,0xe7,0xde,0xdd,0xdb,0xd7,0xbe,0xbd,0xbb,0xb7,0x7e,0x7d,0x7b,0x77}; //每个按键对应的P1口值
unsigned char hang[]={0xef,0xdf,0xbf,0x7f};   //扫描每行时对应P1口值
uchar key_scan()        //扫描函数
{uchar a,i,n;for(a=0;a<4;a++)  //循环四次,对应四行{P1=hang[a];     //第一行赋值if(P1!=hang[a])  //消抖{delay1(100);if(P1!=hang[a])  //再次确定该行是否有键按下,如果有就不是因为键盘抖动引起的{for(i=0;i<4;i++)  //如果是该行有键按下,是哪一列的键?判断一下{if(P1==num[4*a+i])   //如果是该列的键按下,输出改键键号{n=4*a+i+1;  //赋值键号}       }}}}return n;  //把按键号返给主函数
}main()      //主函数
{P2=0XFE;  //给共阴极数码管的公共端置0while(1){P0=led[key_scan()];  //把得到的按键号的段码送到P0口。通过数码管显示出来}
}

最终效果

按下0号键
按下1号键

按下15号键


10——15号键是显示A-F,因为一位七段数码管只能显示0-9,10-15就用十六进制的A-F来表示。

如对你学习有帮助可以关注一下新人,一起加油!!!

单片机矩阵式键盘扫描程序相关推荐

  1. 一个51单片机的键盘扫描程序,算法简单有效

    一个51单片机的键盘扫描程序,算法简单有效 发一个51单片机的键盘扫描程序,算法简单有效                                        再给大家分享一个不错按键程序(来 ...

  2. c语言键盘驱动程序,c语言键盘扫描程序

    描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /*  4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...

  3. 基于FPGA的键盘扫描程序的设计

    在现代电子「业的控制电路中,键盘扫描和显示电路时系统的调试和设置有着重要 的作用.随着EDA技术的发展,基于FPGA的扫描键盘因其结构简单,能有效防止机 械键盘按键抖动带来的数据错误等优点在许多电子设 ...

  4. 4x3矩阵键盘扫描法c语言,4X4矩阵键盘扫描程序

    4X4矩阵键盘扫描程序 4X4矩阵键盘扫描: 1. 4根行线的GIO均设为Output,根列线的GIO均设为Input: 2. 4根行线的GIO分别置为0111.1011.1101.1110,读逐一读 ...

  5. 汇编语言:矩阵式键盘扫描实验

    要求: 利用4x4矩阵键盘和一个LED数码管构成简单的输入显示系统,实现对键盘的扫描和LED数码管的显示键盘按下键的键号.共有4x4个按键和一个数码管,16个按键的键号分别对应十六进制数字:0~F.单 ...

  6. 51单片机矩阵键盘扫描及使用方法

    一.矩阵键盘简介 矩阵键盘,也称矩阵按键,是为了节约单片机IO口占用所引入的一种外设. (图片截取至普中A2开发板原理图) (图片截取至普中A2开发板实物图) 我们知道,一个独立按键需要1个IO口.但 ...

  7. 4*4按键扫描程序c语言,【资料】单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...

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

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

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

  9. 单片机4x4矩阵键盘c语言,求一个单片机4X4矩阵键盘扫描程序,C语言的。

    满意答案 lfm630228 2013.05.08 采纳率:50%    等级:12 已帮助:8260人 uchar code KeyCodeTable[]= { 0x11,0x12,0x14,0x1 ...

最新文章

  1. “六成应用开发不需要程序员”喜提热搜背后,RPA 会抢饭碗吗?
  2. android 应用程序分析之settings,Android 应用程序分析之Settings
  3. 跟着 Github 学习 Restful HTTP API 的优雅设计
  4. 【GAN优化外篇】详解生成模型VAE的数学原理
  5. SAP Spartacus content page url的硬编码列表 - Page Label
  6. C#中创建文件并追加内容和换行
  7. 测试框架之testng使用
  8. 如何组织软件模块的代码结构?
  9. 安装程序无法创建新的系统分区 服务器,安装程序无法创建新的系统分区怎么办...
  10. 从零开始搭建自己的vue组件库——01创建
  11. 中职学计算机专业考本科难吗,国际本科难不难(中职考本科难不难)
  12. java pdf合并_如何实用Java实现合并、拆分PDF文档
  13. 节假日查询,一个简单很暴力的idea
  14. 【Eureka】eureka的搭建注册(新手搭建,大佬见谅)
  15. mysql 报错Incorrect string value: '\xF0\x9F\x98\x84' 解决方案
  16. Bayesian Learning via Stochastic Gradient Langevin Dynamics
  17. ios应用在设置网络权限为wifi和数据后会被还原为关闭
  18. 自治,甲骨文继续领先的开始?
  19. 计算机故障声音,不同的电脑故障声音分别是什么意思【详解】
  20. android美食app设计图,基于位置的Android美食地图应用的设计与实现

热门文章

  1. 线性代数:置换、转置矩阵和向量空间
  2. tabIndex的用途
  3. transformer的简要解读(应该都能看懂)
  4. Java中print,printf,println的区别
  5. PhotoSwipe.js 相册展示插件学习
  6. 【0429】散列函数和消息鉴别
  7. 理解监督学习、无监督学习、半监督学习、强化学习
  8. jQuery框架介绍
  9. java交付工程师发展前景,看完没有不懂的
  10. 【蓝桥云课】最大公约数与最小公倍数