单片机学习11——矩阵键盘
矩阵键盘:

这个矩阵键盘可以接到P0、P1、P2、P3都是可以的。
使用矩阵键盘是能节省单片机的IO口。

P3.0 P3.1 P3.2 P3.3 称之为行号。
P3.4 P3.5 P3.6 P3.7 称之为列号。
矩阵键盘检测原理:
1、检查是否有键按下;
2、键的抖动处理;
3、查询按下键所在行和列的位置,并对行号和列号译码,得到键值。

#include<reg52.h>#define uchar unsigned char
#define uint unsigned intsbit dula=P2^6;
sbit wela=P2^7;uchar disnum,temp,key;uchar code table_duan[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};void delay(uchar);void main()
{disnum=16;wela=1;P0=0xfe;wela=0;while(1){P3=0xf0;temp=P3;temp=temp&0xf0; //按位与if(temp!=0xf0) //判断是否有按键按下{delay(10);if(temp!=0xf0){temp=P3;temp=temp|0x0f;P3=temp;key=P3;switch(key){case 0xee: disnum=0; break;case 0xde: disnum=1; break;case 0xbe: disnum=2; break; case 0x7e: disnum=3; break; case 0xed: disnum=4; break; case 0xdd: disnum=5; break; case 0xbd: disnum=6; break; case 0x7d: disnum=7; break; case 0xeb: disnum=8; break; case 0xdb: disnum=9; break; case 0xbb: disnum=10; break; case 0x7b: disnum=11; break; case 0xe7: disnum=12; break; case 0xd7: disnum=13; break; case 0xb7: disnum=14; break; case 0x77: disnum=15; break;}} }P0=table_duan[disnum];dula=1;dula=0;}
}void delay(uchar x)
{uchar a, b;for(a=x;a>0;a--){for(b=200;b>0;b--);}
}
使用子模块(函数)的方法:
#include<reg52.h>#define uchar unsigned char
#define uint unsigned intsbit dula=P2^6;
sbit wela=P2^7;uchar disnum,temp,key,num;void delay(uchar);
uchar keyscan();uchar code table_duan[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};void main()
{disnum=16;wela=1;P0=0xfe;wela=0;while(1){num=keyscan();P0=table_duan[num];dula=1;dula=0;}
}uchar keyscan()
{P3=0xf0;temp=P3;temp=temp&0xf0; //按位与if(temp!=0xf0) //判断是否有按键按下{delay(10);if(temp!=0xf0){temp=P3;temp=temp|0x0f;P3=temp;key=P3;switch(key){case 0xee: disnum=0; break;case 0xde: disnum=1; break;case 0xbe: disnum=2; break; case 0x7e: disnum=3; break; case 0xed: disnum=4; break; case 0xdd: disnum=5; break; case 0xbd: disnum=6; break; case 0x7d: disnum=7; break; case 0xeb: disnum=8; break; case 0xdb: disnum=9; break; case 0xbb: disnum=10; break; case 0x7b: disnum=11; break; case 0xe7: disnum=12; break; case 0xd7: disnum=13; break; case 0xb7: disnum=14; break; case 0x77: disnum=15; break;}} }return disnum;
}void delay(uchar x)
{uchar a, b;for(a=x;a>0;a--){for(b=200;b>0;b--);}
}
光看不练,就是眼高手低。多练习才行的。
相关文章:
单片机学习11——矩阵键盘
矩阵键盘: 这个矩阵键盘可以接到P0、P1、P2、P3都是可以的。 使用矩阵键盘是能节省单片机的IO口。 P3.0 P3.1 P3.2 P3.3 称之为行号。 P3.4 P3.5 P3.6 P3.7 称之为列号。 矩阵键盘检测原理: 1、检查是否有键按下; 2、键的抖动处理…...
Java游戏 王者荣耀
GameFrame类 所需图片: package 王者荣耀;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList…...
接口测试场景:怎么实现登录之后,需要进行昵称修改?
在接口测试中有一个这样的场景:登录之后,需要进行昵称修改,怎么实现? 首先我们分别看下登录、昵称修改的接口说明: 以上业务中补充一点,昵称修改,还需要添加请求头Authorization传登录获取的to…...
石油化工专业MR仿真情景教学演练
首先,MR混合现实情景实训教学系统为学生提供了一个高度仿真的学习环境。在这个环境中,学生可以亲自操作设备,进行模拟实验,甚至可以体验到工业事故的模拟情景,从而更好地理解工艺流程的复杂性和安全性。这种沉浸式的学…...
Docker配置Halo搭建个人博客-快速入门
Docker配置Halo搭建个人博客-快速入门 1 官方文档2 安装Halo2.1 创建Halo主目录2.2 远程下载配置文件2.3 编辑配置文件2.4 拉取最新镜像2.6 查看容器2.7 开放服务器的防火墙 3 运行3.1 运行项目3.2 停止项目 4 常见问题4.1 没有权限4.2 ommand netstart not found, did you mea…...
禁止编辑的PPT幻灯片,如何有效保护文件安全?
【幻灯片解密、去除密码、找回密码指南】 具体步骤如下:第一步百度搜索【密码帝官网】,第二步在用户中心上传需要解密的文件即可。 你是否有遇到过打开一个PPT文件却发现它被去除了密码无法编辑的情况?别担心,将为您提供最简单的解…...
优化前端性能
一次在前端面试中问到优化前端性能的方式 一、主要通过两种方式: reflow(回流)和repaint(重绘)。整个在浏览器的渲染过程中(页面初始化,用户行为改变界面样式,动画改变界面样式等)reflow(回流)和repaint(重绘) 会大大影…...
1.1 C语言之入门:使用Visual Studio Community 2022运行hello world
1.1 使用Visual Studio Community 2022运行c语言的hello world 一、下载安装Visual Studio Community 2022 与 新建项目二、编写c helloworld三、编译、链接、运行 c helloworld1. 问题记录:无法打开源文件"stdio.h"2. 问题记录:调试和执行按钮…...
Android NDK开发中常用的gradle配置
文章目录 externalNativeBuild1.配置通用的 CMake 构建选项2.指定 CMakeLists.txt 文件的位置和 CMake 版本 指定ndk版本 externalNativeBuild 下面的gradle代码包含两个externalNativeBuild {} android {defaultConfig {externalNativeBuild {cmake {cppFlags ""}…...
【AUTOSAR-DoIP】通过 DoIP 进行符合 Autosar 的车辆诊断
前言 通信协议 DoIP(互联网协议诊断)可通过以太网、WLAN 和移动通信对系统进行灵活而强大的诊断:无论是车间外的诊断还是车载诊断,以及驾驶时的远程访问。 DoIP 可以通过多种方式使用:现代车辆中的电子控制系统高度互连并执行各种复杂的功能。 Autosar 支持的通信协议 Do…...
GPIO的使用--操作PE02 PE03 PE04实现开关控制灯泡亮灭
效果: 开关控制灯的亮灭 目录 1.找到引脚组别(DEFG) led灯硬件结构 开关硬件结构 2.时钟使能 3.GPIO时钟控制 4.控制实现思路 5. 完整代码 6.视频演示 1.找到引脚组别(DEFG) 开关的引脚组别--E;LED灯的引脚组别--F led灯硬件结构 开关硬件结构…...
【算法萌新闯力扣】:回文链表
力扣题目:回文链表 开篇 今天是备战蓝桥杯的第23天。我加入的编程导航算法通关村也在今天开营啦!那从现在起,我的算法题更新会按照算法村的给的路线更新,更加系统。大家也可以关注我新开的专栏“算法通关村”。里面会有更全面的知…...
php站点伪静态配置(Apache+Linux)
404报错: 404 Not Found nginx/1.15.11 问题解决: 1、Linux location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s/$1 last; } } 2、Apache <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{REQU…...
Figma 插件学习(二)- 常用属性和方法
一. 如何调试figma插件 Plugins > Development > Show/Hide console 打开控制台即可开始调试 二.节点类型 根据不同的节点类型,也是会有不同的方法和属性,介绍几个常用节点类型 1.FrameNode 框架节点是用于定义布局层次结构的容器。它类似于HTM…...
基于Flutter的图片浏览器的实现
一 效果展示: 1. 图片展示: 2.混色,平铺,拉伸,原图展示 二 实验准备: 1.在包结构中创建images包来存放我们用到的图片,在pubspec.yaml中声明路径: 2. 检查虚拟机是否正常运行&…...
STM32-使用固件库新建工程
参考链接: 【入门篇】11-新建工程—固件库版本(初学者必须认认真真看)_哔哩哔哩_bilibili 使用的MCU是STM32F103ZET6 。 这篇参考的是野火的资料,可以在“野火大学堂”或者它的论坛上下载。(我通常是野火和正点原子的资料混着看的…...
商用车量产智能驾驶路径思考
1、商用车量产智能驾驶特点 2、量产自动驾驶路径 3、商用车ADAS法规件 4、高等级自动驾驶...
flink消费kafka限制消费速率
flink版本1.14 别的版本类似 需要速率限制的情况 1.任务异常在停止的时间内大量数据挤压 2.新任务上线需要铺底数据,消费几天前的数据 在不增加内存和并行度的情况下,如果任务启动可能会造成oom,这时需要进行速率限制。 前提 漏桶算法(Leaky Bucket Algorithm): 原…...
搭建Appium工具环境
1、安装Java Development Kit(JDK) 前往Oracle官网下载JDK。 在https://www.oracle.com/java/technologies/javase-jdk11-downloads.html 找到最新版本的JDK。根据操作系统选择适合的版本,并根据指示下载安装程序。 安装JDK。运行下载的安…...
【面经八股】搜广推方向:常见面试题(六)
【面经&八股】搜广推方向:常见面试题(六) 文章目录 【面经&八股】搜广推方向:常见面试题(六)1. Memorization 和 Generalization2. Wide 和 Deep3. Cross-product transformation4. 推荐系统划分5. 线性模型6. Embedding-Based 模型7. 推荐系统工作流程8. Wide P…...
Qwen3.5-2B模型Java环境快速配置与Hello World实例
Qwen3.5-2B模型Java环境快速配置与Hello World实例 1. 前言:为什么选择Java调用Qwen3.5-2B 如果你是一名Java开发者,想要快速体验大语言模型的魅力,这篇教程就是为你准备的。Qwen3.5-2B作为一款轻量级但性能出色的开源模型,非常…...
万象视界灵坛惊艳效果:CLIP-ViT-L/14在低分辨率图像上的鲁棒性语义解析
万象视界灵坛惊艳效果:CLIP-ViT-L/14在低分辨率图像上的鲁棒性语义解析 1. 平台概览与核心价值 万象视界灵坛是一款基于OpenAI CLIP-ViT-L/14模型构建的多模态智能感知平台。不同于传统视觉识别系统的单调界面,这个平台将复杂的语义对齐过程转化为直观…...
基于YOLOv12的零售客流量分析:Vue.js可视化Dashboard开发
基于YOLOv12的零售客流量分析:Vue.js可视化Dashboard开发 你有没有想过,每天进出你店里的顾客,他们到底是怎么走的?哪些货架最受欢迎,顾客停留了多久,又有多少人只是匆匆路过?过去,…...
Spire.Doc转PDF授权限制解析与解决方案
1. Spire.Doc转PDF的三页限制是怎么回事 第一次用Spire.Doc转换PDF时,我盯着生成的3页文档愣了半天——明明50页的Word文件,怎么输出就只剩个开头了?后来查文档才发现,这是未授权版本的硬性限制。就像试用版软件经常会有功能阉割&…...
OpenClaw+千问3.5-9B资料整理术:自动归类学术PDF与笔记
OpenClaw千问3.5-9B资料整理术:自动归类学术PDF与笔记 1. 为什么需要自动化资料整理 作为一名长期与学术文献打交道的科研工作者,我电脑里的PDF文件数量已经突破四位数。每次下载新论文时,手动重命名文件、记录关键信息、整理到对应文件夹的…...
【OpenClaw】测试工程师如何使用 OpenClaw 参与测试流程
测试工程师如何使用 OpenClaw 参与测试流程1.OpenClaw 能帮测试工程师做什么?2.核心能力:Skill 让 AI 具备测试执行能力2.1 API 测试 Skill2.2 浏览器自动化 Skill2.3 数据库操作 Skill3.实战工作流:让 OpenClaw 跑通你的测试流程3.1 工作流 …...
如何通过 proc-macro-workshop 快速掌握 Rust 代码生成技术:终极完整指南
如何通过 proc-macro-workshop 快速掌握 Rust 代码生成技术:终极完整指南 【免费下载链接】proc-macro-workshop Learn to write Rust procedural macros [Rust Latam conference, Montevideo Uruguay, March 2019] 项目地址: https://gitcode.com/gh_mirrors/…...
一篇顶一万篇,很难找到代码这么全的高分文章,WGS、RNA-seq、scRNA-seq、免疫肽组质谱联合分析
🚀科研不掉发,快来这个地表最强的生信神仙网站:中国银河生信云平台👉 立即访问:https://usegalaxy.cn结直肠癌免疫治疗中,多数新抗原筛选仅聚焦编码区,大量潜在靶点被忽略,非编码区能…...
新手入门无人机飞控,别再傻傻分不清PIXHAWK、PX4和APM了
无人机飞控入门指南:PIXHAWK硬件与PX4/APM固件全解析 刚接触无人机DIY的新手,面对琳琅满目的飞控硬件和固件选择时,往往会陷入"PIXHAWK、PX4、APM到底有什么区别"的困惑。这就像第一次组装电脑时分不清CPU和操作系统的关系——硬件…...
SegFormer实战:5分钟搞定ADE20K数据集上的语义分割(附完整代码)
SegFormer实战指南:ADE20K语义分割从零精解 在计算机视觉领域,语义分割技术正经历着前所未有的革新。ADE20K作为场景解析的标杆数据集,包含了150个精细标注的语义类别,成为检验算法实力的试金石。本文将带您深入SegFormer这一轻量…...
