矩阵键盘独立接口设计(Keil+Proteus)

news2024/11/26 13:56:48

前言

实验:通过4*4的矩阵键盘,按下某个按钮之后会在数码管上面显示对应的键号。(0~F)

基础操作参考这篇博客:

LED数码管的静态显示与动态显示(Keil+Proteus)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_64066303/article/details/134101256

Keil

实验采用的是共阳极的接法。所以这个二进制的数据里面的元素都是共阳极的。

通过逐行的扫描,假设当前扫描第一行,对应的P1^0~P1^3中有0则说明是该行有键被按下,结合if判断可以确定是哪一列。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
	
sbit L1=P1^0;//定义列
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
//共阳极字符0~F的段码
uchar dis[16]={0xC0,0XF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
uint time;
//延时,放键盘抖动
void delay(uint time);

void main(void){
	uchar temp;
	uchar i;
	while(1){
		P1=0xEF;//行扫描初值1110 1111(扫描P1^4)
		for(i=0;i<4;i++){//逐行为低,按行扫描,一共4行
			if(L1==0)P0=dis[i*4+0];//判断第一列有无键被按下
			if(L2==0)P0=dis[i*4+1];//判断第二列有无键被按下
			if(L3==0)P0=dis[i*4+2];//判断第三列有无键被按下
			if(L4==0)P0=dis[i*4+3];//判断第四列有无键被按下
			delay(500);//延时
			temp=P1;//读入P1口的状态
			temp=temp|0x0F;//将P1^3~P1^0为1
			temp=temp<<1;//左移,准备扫描下一行
			temp=temp|0x0F;
			P1=temp;//为扫描下一行做准备
		}
	}
}				
//软件消除抖动,延时
void delay(uint time){
	uint i;
	for(i=0;i<time;i++);
}

Proteus

相信大家已经轻车熟路了,就直接放原理图了。

所需要的器件

元件名称Proteus关键字
51单片机AT89C51
复位按钮BUTTON
电阻RES
共阳极八位数码管7SEG-MPX1-CA
电源POWER

 

矩阵键盘

总结

继续加油!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1182714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

maven 上传本地jar包到nexus

maven上传命令 mvn deploy:deploy-file -DgroupIdcom.microsoft.sqlserver -DartifactIdsqljdbc4 -Dversion4.0 -Dpackagingjar -DfileC:\java\top-sdk-java-1.0.1-lib\lib\bcprov-jdk16-1.46.jar -Durlhttp://ip:port/repository/maven-releases/ -DrepositoryIdsnapshot…

一个Linux自动备份脚本的示例

一个简单的Linux自动备份脚本的示例&#xff0c;根据需要进行自定义&#xff1a; 请确保按照您的需求修改source_dir和backup_dir为要备份的源目录和备份目录的路径。此脚本使用tar命令创建一个以当前日期命名的压缩备份文件&#xff0c;并在备份完成后检查是否成功。此外&…

vite基础学习笔记:13.Dialog 对话框 (用户注册与登录)

说明&#xff1a;自学做的笔记和记录&#xff0c;如有错误请指正 1. Dialog 对话框组件 目标效果&#xff1a;点击“登录/注册”&#xff0c;弹框 &#xff08;1&#xff09;创建全局组件&#xff0c;在官网中查询代码粘贴 &#xff08;2&#xff09; 注册和使用全局组件 &a…

Android ConstraintLayout

0dp 充满约束 to左侧是控件本身,to右边是约束条件 例如: app:layout_constraintBottom_toBottomOf"id/image_1" app:layout_constraintTop_toBottomOf"id/image_1" 指定权重: app:layout_constraintHorizontal_weight"" app:layout_constra…

[云原生案例2.1 ] Kubernetes的部署安装 【单master集群架构 ---- (二进制安装部署)】

文章目录 1. 常见的K8S安装部署方式1.1 Minikube1.2 Kubeadm1.3 二进制安装部署 2. Kubernetes单master集群架构 ---- &#xff08;二进制安装部署&#xff09;2.1 前置准备2.2 操作系统初始化2.3 部署 docker引擎 ---- &#xff08;所有 node 节点&#xff09;2.4 部署 etcd 集…

cygwin编译redis、nssm配置redis服务

一、总结 本文尝试了redis-7.2.1、redis-7.2、redis-7.0.12、redis-6.2.13&#xff0c;其中redis-7.0.12、redis-6.2.13下载下来后&#xff0c;没有修改redis项目的任何代码&#xff0c;直接在解压后的根目录下执行make命令就可以成功&#xff0c; 结果总结如下&#xff1a; r…

京东数据分析:2023年9月京东笔记本电脑行业品牌销售排行榜

鲸参谋监测的京东平台9月份笔记本电脑市场销售数据已出炉&#xff01; 9月份&#xff0c;笔记本电脑市场整体销售下滑。鲸参谋数据显示&#xff0c;今年9月份&#xff0c;京东平台上笔记本电脑的销量将近59万&#xff0c;环比下滑约21%&#xff0c;同比下滑约40%&#xff1b;销…

RTMP协议详解及Wiresahrk抓包分析

文章目录 前言一、RTMP 简介1、RTMP 介绍2、变种 二、wireshark 抓 RTMP 报文1、搭建 RTMP 服务器2、运行 RTMP 服务器3、打开 wireshark4、ffmpeg 推流5、VLC 拉流 三、RTMP 协议详解1、前言2、总体介绍3、握手4、RTMP Chunk Stream①、message&#xff08;消息&#xff09;②…

人工智能-卷积神经网络之多输入多输出通道

多输入多输出通道 每个图像的多个通道和多层卷积层。例如彩色图像具有标准的RGB通道来代表红、绿和蓝。 但是到目前为止&#xff0c;我们仅展示了单个输入和单个输出通道的简化例子。 这使得我们可以将输入、卷积核和输出看作二维张量。 当我们添加通道时&#xff0c;我们的输…

Qt 项目实战 | 音乐播放器

Qt 项目实战 | 音乐播放器 Qt 项目实战 | 音乐播放器播放器整体架构创建播放器主界面 官方博客&#xff1a;https://www.yafeilinux.com/ Qt开源社区&#xff1a;https://www.qter.org/ 参考书&#xff1a;《Qt 及 Qt Quick 开发实战精解》 Qt 项目实战 | 音乐播放器 开发环…

揭开堆叠式自动编码器的强大功能

一、介绍 在不断发展的人工智能和机器学习领域&#xff0c;深度学习技术因其处理复杂和高维数据的能力而广受欢迎。在各种深度学习模型中&#xff0c;堆叠式自动编码器是一种多功能且功能强大的工具&#xff0c;可用于特征学习、降维和数据表示。本文探讨了堆叠式自动编码器在深…

UE5、CesiumForUnreal实现加载GeoJson绘制单面(Polygon)功能(StaticMesh方式)

文章目录 1.实现目标2.实现过程2.1 实现原理2.1.1 数据读取2.1.2 三角剖分2.1.3 创建StaticMesh2.2 应用测试2.2.1 具体代码2.2.2 蓝图应用测试3.参考资料1.实现目标 通过读取本地GeoJson数据,在UE中以StaticMeshComponent的形式绘制出面数据,支持Editor和Runtime环境,GIF动…

高压放大器能够在哪里使用呢

高压放大器是一种重要的电子设备&#xff0c;可以在许多不同的领域和应用中使用。下面西安安泰将详细介绍高压放大器的应用。 医学影像&#xff1a;高压放大器在医学影像领域具有广泛的应用。医学影像设备&#xff08;如X射线机、CT扫描仪等&#xff09;需要高压来产生足够的能…

通俗理解repartition和coalesce区别

官方的解释 reparation 返回一个具有恰好numPartitions分区的新RDD。 可以增加或减少此RDD中的并行级别。在内部,reparation会使用shuffle来重新分发的数据。 如果要减少此RDD中的分区数量,请考虑使用coalesce,这样可以避免执行shuffle。 coalesce 返回一个新的RDD,该RDD被…

nginx--install

1. ubuntu 1.1 下载并解压依赖 每个包去各自官网下载 stable 版就行。 tar xzvf nginx-1.24.0.tar.gz tar xzvf openssl-3.1.4.tar.gz tar xzvf pcre2-10.42.tar.gz tar xzvf zlib-1.3.tar.gz1.2 配置及安装 参数含义详见 nginx 官网 cd nginx-1.24.0./configure --pre…

11 抽象向量空间

抽象向量空间 向量是什么函数什么是线性推论向量空间 这是关于3Blue1Brown "线性代数的本质"的学习笔记。 向量是什么 可以是一个箭头&#xff0c;可以是一组实数&#xff0c;即一个坐标对。 箭头在高维&#xff08;4维&#xff0c;甚至更高&#xff09;空间&…

免费音效素材,不能错过这6个网站

找免费音效素材&#xff0c;那必须要上这6个网站&#xff0c;热门音效、BGM都能免费下载&#xff0c;赶紧收藏起来。 1、菜鸟图库 https://www.sucai999.com/audio.html?vNTYwNDUx 菜鸟图库是一个综合性素材网站&#xff0c;站内涵盖设计、图片、办公、视频、音效等素材。其中…

【23真题】Easy!速成120两个月够了!

今天分享的是23年广西科技809的信号与系统试题及解析。 本套试卷难度分析&#xff1a;本套试题内容难度中等偏下&#xff0c;题量不大&#xff0c;考察的知识点很基础。所有的知识点都出现在它应该出现的地方&#xff0c;无任何偏难怪&#xff0c;非常常规的试卷&#xff01;个…

经典OJ题:链表中的倒数第K个节点

题目&#xff1a; 输入一个链表&#xff0c;输出该链表中倒数第k个结点。 题源&#xff1a;链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com) 方法一&#xff1a;暴力求解法 可以线统计链表的节点个数&#xff0c;然后用链表节点的个数减去K&#xff0c;得出倒数第K个节点…

【EI会议征稿】第四届智慧城市工程与公共交通国际学术会议(SCEPT 2024)

第四届智慧城市工程与公共交通国际学术会议&#xff08;SCEPT 2024&#xff09; 2024 4th International Conference on Smart City Engineering and Public Transportation 第四届智慧城市工程与公共交通国际学术会议&#xff08;SCEPT 2024&#xff09;将于2024年1月26-28日…