单片机矩阵式键盘扫描程序
单片机矩阵键盘判断某个按键按下
这是我第一次发表文章,关于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来表示。
如对你学习有帮助可以关注一下新人,一起加油!!!
单片机矩阵式键盘扫描程序相关推荐
- 一个51单片机的键盘扫描程序,算法简单有效
一个51单片机的键盘扫描程序,算法简单有效 发一个51单片机的键盘扫描程序,算法简单有效 再给大家分享一个不错按键程序(来 ...
- c语言键盘驱动程序,c语言键盘扫描程序
描述 c语言键盘扫描程序 4*4键盘扫描C语言程序 /* 4x4矩阵键盘的扫描程序 测试通过*/ #includesbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2= ...
- 基于FPGA的键盘扫描程序的设计
在现代电子「业的控制电路中,键盘扫描和显示电路时系统的调试和设置有着重要 的作用.随着EDA技术的发展,基于FPGA的扫描键盘因其结构简单,能有效防止机 械键盘按键抖动带来的数据错误等优点在许多电子设 ...
- 4x3矩阵键盘扫描法c语言,4X4矩阵键盘扫描程序
4X4矩阵键盘扫描程序 4X4矩阵键盘扫描: 1. 4根行线的GIO均设为Output,根列线的GIO均设为Input: 2. 4根行线的GIO分别置为0111.1011.1101.1110,读逐一读 ...
- 汇编语言:矩阵式键盘扫描实验
要求: 利用4x4矩阵键盘和一个LED数码管构成简单的输入显示系统,实现对键盘的扫描和LED数码管的显示键盘按下键的键号.共有4x4个按键和一个数码管,16个按键的键号分别对应十六进制数字:0~F.单 ...
- 51单片机矩阵键盘扫描及使用方法
一.矩阵键盘简介 矩阵键盘,也称矩阵按键,是为了节约单片机IO口占用所引入的一种外设. (图片截取至普中A2开发板原理图) (图片截取至普中A2开发板实物图) 我们知道,一个独立按键需要1个IO口.但 ...
- 4*4按键扫描程序c语言,【资料】单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...
;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...
- 4x4矩阵键盘扫描c语言程序,单片机4*4矩阵键盘扫描程序(c语言+汇编语言2个版本)...
;4X4矩阵键盘程序.主要原理为扫描键盘矩阵时,每次只有一行电平拉低.在逐次扫描拉低的这些行的同时,去读那些列的电平. ;被拉低的行上,按下的键对应的列的电平为0 ,其它为1. 用左移位的指令,在进位 ...
- 单片机4x4矩阵键盘c语言,求一个单片机4X4矩阵键盘扫描程序,C语言的。
满意答案 lfm630228 2013.05.08 采纳率:50% 等级:12 已帮助:8260人 uchar code KeyCodeTable[]= { 0x11,0x12,0x14,0x1 ...
最新文章
- “六成应用开发不需要程序员”喜提热搜背后,RPA 会抢饭碗吗?
- android 应用程序分析之settings,Android 应用程序分析之Settings
- 跟着 Github 学习 Restful HTTP API 的优雅设计
- 【GAN优化外篇】详解生成模型VAE的数学原理
- SAP Spartacus content page url的硬编码列表 - Page Label
- C#中创建文件并追加内容和换行
- 测试框架之testng使用
- 如何组织软件模块的代码结构?
- 安装程序无法创建新的系统分区 服务器,安装程序无法创建新的系统分区怎么办...
- 从零开始搭建自己的vue组件库——01创建
- 中职学计算机专业考本科难吗,国际本科难不难(中职考本科难不难)
- java pdf合并_如何实用Java实现合并、拆分PDF文档
- 节假日查询,一个简单很暴力的idea
- 【Eureka】eureka的搭建注册(新手搭建,大佬见谅)
- mysql 报错Incorrect string value: '\xF0\x9F\x98\x84' 解决方案
- Bayesian Learning via Stochastic Gradient Langevin Dynamics
- ios应用在设置网络权限为wifi和数据后会被还原为关闭
- 自治,甲骨文继续领先的开始?
- 计算机故障声音,不同的电脑故障声音分别是什么意思【详解】
- android美食app设计图,基于位置的Android美食地图应用的设计与实现