51单片机按键识别与LED显示(显示0-9的数字)

2023-11-18

实验内容:单片机外接10个按键,编号为0-9,编程实现任意按键则LED显示对应数字

一、硬件电路原理图?

1.共阴共阳两种不同的方式

 2.数码管显示表

 3.矩阵键盘介绍

矩阵键盘是 单片机 外部设备中所使用的排布类似于矩阵键盘组。 矩阵式结构的键盘显然比直接法要复杂一些,识别也要复杂一些,列线通过电阻接正电源,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。 中文名 矩阵键盘 外文名 Matrix keyboard 本 质 类似于矩阵键盘组 适 用 单片机外部设备中所使用 识别方法 矩阵 的 键盘 比直接法要复杂一些 作 用 切换中控式HDMI矩阵信号源 目录 1 组成结构 2 识别方法 3 矩阵键盘实验 组成结构 编辑 播报 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成 矩阵 形式。 在矩阵键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接

工作原理:读取第1行(列)→读取第2行(列) →读取第3行(列) → ……,然后快速循环这个过程,最终实现所有按键同时检测的效果。就以逐行扫描为例: 当给P17,P16,P15,P14赋值0111时P17被选中,读取P13,P12,P11,P10的值判断哪个按键被按下。如果S1按下了那么P13就等于0,如果S2按下了那么P12就等于0...
逐列扫描:当给P13,P12,P11,P10赋值0111时P13被选中,读取P17,P16,P15,P14的值判断哪个按键被按下。如果P17,P16,P15,P14为0111 则P17选中S1按下,如果P17,P16,P15,P14为1011,则S5按下.
 

 

二、程序代码

#include<regx52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
//数码管段码表 0123456789;
unsigned char Table[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
				        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};	

void Delay(unsigned int x)//延时函数
{
	unsigned char i,j;
	for(i=x;i>0;i--)  ;
	for(j=114;j>0;j--);
}

unsigned char MatrixKey()//按列扫描
{                         
	unsigned char KeyNumber=0;
	
	P1=0xFF;P1_3=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=1;} //显示数字0,keynumber是指段码表table对应的序号
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=5;}//显示数字4
	if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=9;}//显示数字8
	
	P1=0xFF;P1_2=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=2;}//显示数字2
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=6;}//显示数字5
	if(P1_5==0){Delay(20);while(P1_5==0);Delay(20);KeyNumber=10;}//显示数字9

	P1=0xFF;P1_1=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=3;}//显示数字2
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=7;}//显示数字6
	
	P1=0xFF;P1_0=0;
	if(P1_7==0){Delay(20);while(P1_7==0);Delay(20);KeyNumber=4;}//显示数字3
	if(P1_6==0){Delay(20);while(P1_6==0);Delay(20);KeyNumber=8;}//显示数字7
	
	return KeyNumber;
}
 
void Xian_Shi(KeyNum)
{
		P2_4=1;P2_3=1;P2_2=1;//位选,选中LED8
		P0=Table[KeyNum-1];	//数字的首元素为Table[0];
		Delay(1);
}
 			
void main()
{
	while(1)
	{
		unsigned char KeyNum=MatrixKey();//不断循环扫描
		if(KeyNum)	//判断是否有按键按下,如果有就显示					
		{
			Xian_Shi(KeyNum);		
		}	
	}		
}

硬件连接方式

 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机按键识别与LED显示(显示0-9的数字) 的相关文章

  • 2.4.2QT之comboBox下拉框

    2 4 2QT之comboBox下拉框 文章目录 2 4 2QT之comboBox下拉框 前言 2 4 2 1 QComboBo 常用的成员函数 2 4 2 2QComboBox 常用的槽函数 2 4 2 3QComboBox 常用的信号
  • 批量上传文件到服务器中,如何批量上传文件到云服务器

    如何批量上传文件到云服务器 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 将文件上传至Linux服务器一般会采用WinS
  • JAVA: quakus程序运行

    mvnw compile quarkus dev
  • Select type&partitions (2)—mysql执行计划(四十八)

    前面说了explain的table是表名 显示在前面的代表驱动表 正常select会出现不同的id 但如果子查询本来是两个select 但被优化成连接查询 就会导致是相同的id union查询会出现临时表 id为null 这个临时表作用于去

随机推荐

  • 连杆坐标系的规定

    z0是沿着关节轴1的方向 一般l0的坐标轴与l1的坐标轴相同 故 两个关节轴间的距离为0 角度为0 即初始 a 和 为0 建立连杆坐标系的步骤 1 找出各关节轴 并标出 或画出 这些轴线的延长线 在下面的步骤2至步骤5中 仅考虑两个相邻的轴
  • 【uni-app报错】选择地址:fail the api need to be declared in the requiredPrivateInfos field in app/ext.json

    uni app报错 errMsg chooseAddress fail the api need to be declared in the requiredPrivateInfos field in app json ext json 笔
  • 多个C语言代码文件编译示例

    多个C语言代码文件编译示例 多个C语言文件的编译在实际项目中会遇到 是模块化编程的重要体现 是必须要学习的 我们先学习一个简单的例子 我们要实现一个加法和减法操作 将加法和减法看成两个独立的功能 头文件和源文件是分离的 方便给其他开发人员使
  • jquery-ui sortable详解

    该插件的用途 使用鼠标重新排列列表或网格中的元素 helper 这个小伙子 总结的不错 Note In order to sort table rows the tbody must be made sortable not the tab
  • Log4j2自定义插件实现自定义日志打印功能(脱敏/加密)

    文章目录 1 自定义appender插件 2 log4j2 xml配置 3 参数说明 1 定义标签 Plugin 2 定义标签参数或子元素 PluginFactory 4 获取容器中对象 5 Mybatis 设置日志打印实现为Log4j2I
  • RuoYi-spring-boot修改项目名称

    前言 若依是个不错的框架 想用若依框架来做项目 需要修改下项目名称为自定义的名称 比如school 1 找到硬盘对应的位置把名称改成我自定义的名称school 同时把路径也换成school 2 修改所有pom xml文件 1 总pom xm
  • 2.3.3 Servlet, 生命周期, 体系结构, xml配置, 请求和响应对象, 转发与重定向, ServletContext共享数据

    目录 一 Servlet概述 二 Servlet快速入门 2 1 案例需求 编写一个普通的java类 通过浏览器可以访问 2 2 servlet执行原理 三 Servlet生命周期 3 1 生命周期相关 3 1 1 思想介绍 3 1 2 代
  • osgEarth的Rex引擎原理分析(一一六)地理数据坐标系分类

    目标 一一五 中的问题203 地理数据的坐标系一般有两大类 一是地理坐标系 GCS 是经纬度单位的椭球坐标系 二是投影坐标系 PCS 是平面直角坐标系 投影坐标系 PCS 的定义一般会包含两方面的定义信息 1 基准面 Datum 与GCS相
  • 各种系统框架图简介(转载)

    原文出处 http space itpub net 6517 viewspace 609654 1 Spring 架构图 Spring 是一个开源 框架 是为了解决企业 应用程序开发复杂性而创建的 框架的主要优势之一就是其分层架构 分层架构
  • dubbo整合nacos没有注册成功

    这里大家整合的时候一定要注意dubbo3 0的版本 nacos整合的话要是2 0以上的版本 不然就会出现服务注册不上的情况 下面是nacos的下载地址 推荐大家使用这一个 还是比较主流的 Nacos 快速开始
  • 红帽6虚拟机安装流程

    红帽虚拟机的安装流程 redhat6 本篇文章将会带大家完整的安装linux红帽虚拟机 傻瓜式配置红帽虚拟机 超详细安装流程 1 下载好所需要的镜像文件 并且放在一个固定的文件夹中 如果没有iso文件 评论一下 发给你 2 打开虚拟机创建新
  • Typora软件的安装以及Typora中相应主题的拷贝和安装(网页下载到安装目录,安装Typora必看)

    1 首先 进入Typora官方中文网站 Typora官方中文网站 https typoraio cn 2 下载相应版本的Typora软件 直接进行安装即可 3 进入Typora软件 打开 主题 可以看到基本的主题 4 下载更多好看的Typo
  • MongoDB的安装与基本使用

    首先 得从MongoDB官网下载到对应操作系统的数据库安装包 MongoDB官网 https www mongodb com MongoDB下载地址 https www mongodb com download center communi
  • python中idx函数_python 常用函数、内置函数清单

    文章内容摘自 http www cnblogs com vamei 1 type 查询变量的类型 例 gt gt gt a 10 gt gt gt print a 10 gt gt gt print type a 2 dir 查询一个类或者
  • maven本地仓库配置

    来配置一下maven本地仓库 第一步 下载到官网下载maven包 下载地址 http maven apache org download cgi 第二步 找个盘符创建个文件夹将将下载的maven报放进去 然后将下载的包解压了 第三步 配置M
  • 树莓派3B+使用镜像烧录安装系统与配置教程(入门向)

    设备 Raspberry 3B 开发板一块 显示屏 台式计算机或笔记本电脑 显示屏 HDMI转VGA线或HDMI线或USB视频采集卡 千万不要用HDMI线从树莓派直接连接到显卡的HDMI口或者笔记本的HDMI口 轻则平安无事 重则电脑CPU
  • React移动端项目-02

    一些不实装功能的静态页面 底部导航栏 问答 页面 目标 实现问答页面的静态结构和样式 操作步骤 将资源包的样式拷贝到 pages Question 目录下 然后在该目录下的 index js中编写组件代码 import NavBar fro
  • UVA 1601 The Morning after Halloween - Japan 2007

    include
  • 创建任意程序为系统服务

    网上流传的创建系统服务的方法我看着真麻烦 把我自己弄的很简单的代码共享下 create SERVICENAME bat ECHO OFF sc delete SERVICENAME sc create SERVICENAME start a
  • 51单片机按键识别与LED显示(显示0-9的数字)

    实验内容 单片机外接10个按键 编号为0 9 编程实现任意按键则LED显示对应数字 一 硬件电路原理图 1 共阴共阳两种不同的方式 2 数码管显示表 3 矩阵键盘介绍 矩阵键盘是 单片机 外部设备中所使用的排布类似于矩阵的键盘组 矩阵式结构