51系列--数码管显示的4X4矩阵键盘设计

news2024/11/25 14:45:30

本文介绍基于51单片机的4X4矩阵键盘数码管显示设计(完整Proteus仿真源文件及C代码见文末链接)

一、系统及功能介绍

本设计主控芯片选用51单片机,主要实现矩阵键盘对应按键键值在数码管上显示出来,矩阵键盘是4X4共计16位按键,分别表示0-F这16个字符,数码管是单独的1个8位数码管用于显示对应键值。

二、仿真图如下

使用Proteus软件仿真图如下
在这里插入图片描述

三、源代码

矩阵键盘按键扫描代码

//矩阵键盘扫描
void Keys_Scan()
{
uchar Tmp;
P1=0x0f; //高 4 位置 0,放入 4 行
DelayMS(1);
Tmp=P1^0x0f;//按键后 0f 变成 0000XXXX,X 中一个为 0,3 个仍为 1,通过异或把 3 个 1 变为 0,唯 一的 0 变为 1
switch(Tmp)   //判断按键发生于 0~3 列的哪一列
{
case 1:    KeyNo=0;break; 
case 2:    KeyNo=1;break; 
case 4:    KeyNo=2;break; 
case 8:    KeyNo=3;break;
default:KeyNo=16; //无键按下
}
P1=0xf0;     //低 4 位置 0,放入 4 列
DelayMS(1);
Tmp=P1>>4^0x0f;//按键后 f0 变成 XXXX0000,X 中有 1 个为 0,三个仍为 1;高 4 位转移到低 4 位并 异或得到改变的值
switch(Tmp)   //对 0~3 行分别附加起始值 0,4,8,12
{
case 1:    KeyNo+=0;break; 
case 2:    KeyNo+=4;break; 
case 4:    KeyNo+=8;break; 
case 8:    KeyNo+=12;
}
}

主程序代码如下:

void main()
{
	P0=0x00; BEEP=0; while(1)
	{
		P1=0xf0;
		if(P1!=0xf0) Keys_Scan();   //获取键序号
		if(Pre_KeyNo!=KeyNo)
		{
		P0=~DSY_CODE[KeyNo]; Beep(); Pre_KeyNo=KeyNo;
		}
		DelayMS(100);
	}
}

四、仿真运行视频

51系列--数码管显示的4X4矩阵键盘设计

附完整Proteus仿真资料+C程序代码资料

链接:https://pan.baidu.com/s/1PizDINBl7e4Wkr2YvCUJ0A?pwd=ejep
提取码:ejep

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

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

相关文章

Apipost一键压测参数化功能详解

最近更新中Apipost对UI页面进行了一些调整,另外一键压测功能支持参数化!本篇文章将详细介绍这些改动! API调试页面的细节改动 在请求区填入请求参数或脚本时会有相应的标识 如在Query中填入多个参数时上方会展示数量 在预、后执行脚本中写…

机器人中的数值优化之罚函数法

欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 L2-Penalty Method 1.1等式约束 1.2不等式约束 2 L1-Penalty Method 3 Barrier Method …

并发编程大杀器,京东多线程编排工具asyncTool

一、简介 并发编程大杀器,京东多线程编排工具asyncTool,可以解决任意的多线程并行、串行、阻塞、依赖、回调的并行框架,可以任意组合各线程的执行顺序,带全链路执行结果回调。多线程编排一站式解决方案。 二、特点 多线程编排&am…

数据结构学习 Leetcode72 编辑距离

关键词:动态规划 最长公共子序列 题目: 思路: 这题我虽然做出来了但是还是有点迷糊。首先,这道题一定是和最长公共子序列相似的。 所以往最长公共子序列方向思考,考虑的它的状态和转移方程以及边界。 状态和转移方…

PAT乙级 1025 反转链表

给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4;如果 K 为 4,则输出应该为 4→3→2→1→5→6,即…

web自动化上传文件

1,web 自动化文件上传不要太简单 熟悉 web 自动化测试的大佬应该都懂,当采用 js 调用原生控件进行文件上传的时候,最常用的是使用 pywin32 等系统交互库。 当看到 pywin32 那丑陋的 api 封装只能爆粗口。就为了输入一个文件地址,…

微生信 -- 0代码科研绘图,助力发高分文章

1,粘贴数据,一键出图 www.bioinformatics.com.cn微生信云平台以220多款在线绘图、分析模块为基础,致力于0代码在线分析数据,0代码在线绘制科研图片。让不会编写代码的科研工作者,贴贴数据,点点鼠标就能够进…

大模型中的LM-BFF

LM-BFF paper: 2020.12 Making Pre-trained Language Models Better Few-shot Learners Prompt: 完形填空自动搜索prompt Task: Text Classification Model: Bert or Roberta Take Away: 把人工构建prompt模板和标签词优化为自动搜索 LM-BFF是陈丹琦团队在20年底提出的针对…

基于yolov2深度学习网络的血细胞检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1YOLOv2算法原理 4.2 YOLOv2网络结构 4.3 血细胞检测算法实现 数据集准备 数据预处理 网络训练 模型评估与优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MAT…

Unity中Shader裁剪空间推导(透视相机到裁剪空间的转化矩阵)

文章目录 前言一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化1、观察空间(右手坐标系、透视相机)2、裁剪空间(左手坐标系、且转化为了齐次坐标)3、屏幕空间(把裁剪坐标归一化设置)4、从观察空…

Java学习——设计模式——结构型模式1

文章目录 结构型模式代理模式适配器模式 结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来…

开关量信号隔离器在水泥厂的应用

安科瑞 崔丽洁 摘要:在水泥厂生产过程中,需要皮带与提升机进行运输物料,回转下料器进行投放物料。其中涉及大量电动机相关的机械运动,对这些机械运动状态进行检测,可以及时发现问题避免造成事故。针对机械位置检测&…

前端图片适配不同屏幕方案

预备知识: 设备独立像素,以下图的iphone12 Pro为例,390*844表示的就是设备独立像素(DIP),也可以理解为CSS像素 物理像素(设备像素),就是屏幕的分辨率,显示屏就是由一个个物理像素…

基于EMD的滚动轴承故障诊断算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1EMD的基本原理 固有模态函数(IMF) 筛分过程 4.2 基于EMD的滚动轴承故障诊断算法 信号预处理 EMD分解 特征提取 故障诊断 5.算法完整程序工程 1.算法运行效…

Python爱心光波完整代码

文章目录 环境需求完整代码详细分析环境需求 python3.11.4PyCharm Community Edition 2023.2.5pyinstaller6.2.0(可选,这个库用于打包,使程序没有python环境也可以运行,如果想发给好朋友的话需要这个库哦~)【注】 python环境搭建请见:https://want595.blog.csdn.net/arti…

3d导入模型怎样显示原本材质---模大狮模型网

要在导入3D模型时保留原本的材质,您可以尝试以下方法: 导入前检查文件格式:确保您所使用的3D软件支持导入模型的文件格式。不同的软件对文件格式的支持有所差异,选择正确的文件格式可以更好地保留原始材质。 使用正确的材质库&am…

pip freeze 导出的requirements.txt文件含有 @file

使用 pip freeze > requirements.txt 导出的文件中含有 file:// 使用这个文件在其他环境下安装就会出现 找不到路径的错误 原因是这种方法生成的文件只能用于本地环境,无法供他们使用 使用以下方式生成文件 解决:pip list --formatfreeze …

【数据库系统概论】第6章-关系数据库理论

真别看吧,抄ppt而已啊 文章目录 6.1 引言6.2 规范化6.2.1 函数依赖6.2.2 码6.2.3 范式(Normal Form)6.2.4 BC范式6.2.5 规范化小结 6.1 引言 我们有这样一张表: but 为啥这样设计呢?由此引出怎样设计一个关系数据库…

C++的多继承和虚继承

目录 多继承的定义和用法定义多继承多继承中派生类对象的内存布局访问基类成员多继承带来的问题 虚继承虚继承的语法虚继承对象的内存布局虚继承中的构造虚继承的缺点 多继承的定义和用法 C支持多继承,即一个派生类可以有多个基类。 很多时候,单继承就…

Spring boot:3.X + Security OAuth2 自定义登录页面、登出后跳转到登录页

本文描述了基于 Spring Oauth2 的 code 模式&#xff0c;实现登陆同时授权、自定义登录界面、登出页面的功能。 1.Maven依赖&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactI…