当前位置: 首页 > news >正文

51单片机 05 矩阵键盘

嘻嘻,LCD在RC板子上可以勉强装上,会有一点歪。

一、矩阵键盘

在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式;采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。(IO口默认高电平1)

代码在文件夹中。我改了LCD代码的延时问题。

MatrixKey.c代码

#include <STC89C5xRC.H>
#include "Delay.h"unsigned char MatrixKey()
{// 按列扫描unsigned char KeyNumber=0;P1=0xFF;P13=0x00;if(P17==0) {Delay(20);while(P17==0);Delay(20);KeyNumber=1;}if(P16==0) {Delay(20);while(P16==0);Delay(20);KeyNumber=5;}if(P15==0) {Delay(20);while(P15==0);Delay(20);KeyNumber=9;}if(P14==0) {Delay(20);while(P14==0);Delay(20);KeyNumber=13;}P1=0xFF;P12=0x00;if(P17==0) {Delay(20);while(P17==0);Delay(20);KeyNumber=2;}if(P16==0) {Delay(20);while(P16==0);Delay(20);KeyNumber=6;}if(P15==0) {Delay(20);while(P15==0);Delay(20);KeyNumber=10;}if(P14==0) {Delay(20);while(P14==0);Delay(20);KeyNumber=14;}P1=0xFF;P11=0x00;if(P17==0) {Delay(20);while(P17==0);Delay(20);KeyNumber=3;}if(P16==0) {Delay(20);while(P16==0);Delay(20);KeyNumber=7;}if(P15==0) {Delay(20);while(P15==0);Delay(20);KeyNumber=11;}if(P14==0) {Delay(20);while(P14==0);Delay(20);KeyNumber=15;}P1=0xFF;P10=0x00;if(P17==0) {Delay(20);while(P17==0);Delay(20);KeyNumber=4;}if(P16==0) {Delay(20);while(P16==0);Delay(20);KeyNumber=8;}if(P15==0) {Delay(20);while(P15==0);Delay(20);KeyNumber=12;}if(P14==0) {Delay(20);while(P14==0);Delay(20);KeyNumber=16;}return KeyNumber;
}

main.c代码

#include <STC89C5xRC.H>
#include "Delay.h"
#include "LCD1602.h"unsigned char KeyNum;void main()
{LCD_Init();LCD_ShowString(1,1,"HelloRain");while(1){KeyNum=MatrixKey();if(KeyNum) LCD_ShowNum(2,1,KeyNum,2);}
}

二、矩阵键盘密码锁

main.c

#include <STC89C5xRC.H>
#include "Delay.h"
#include "LCD1602.h"
#include "MatrixKey.h"unsigned char KeyNum;
unsigned int password,count;void main()
{LCD_Init();LCD_ShowString(1,1,"PassWord:");while(1){KeyNum=MatrixKey();if(KeyNum) {if(KeyNum<=10) //s1-s10按下,输入密码 {if(count<4){password*=10; //密码左移password+=KeyNum%10; count++;LCD_ShowNum(2,1,password,4);}}else if(KeyNum==11) {if(password==2345){LCD_ShowString(1,14,"OK ");password=0;count=0;LCD_ShowNum(2,1,password,4);}else {LCD_ShowString(1,14,"ERR");password=0;count=0;LCD_ShowNum(2,1,password,4);}}else if(KeyNum==12){password=0;count=0;LCD_ShowNum(2,1,password,4);}}}
}

相关文章:

51单片机 05 矩阵键盘

嘻嘻&#xff0c;LCD在RC板子上可以勉强装上&#xff0c;会有一点歪。 一、矩阵键盘 在键盘中按键数量较多时&#xff0c;为了减少I/O口的占用&#xff0c;通常将按键排列成矩阵形式&#xff1b;采用逐行或逐列的“扫描”&#xff0c;就可以读出任何位置按键的状态。&#xf…...

SSRF 漏洞利用 Redis 实战全解析:原理、攻击与防范

目录 前言 SSRF 漏洞深度剖析 Redis&#xff1a;强大的内存数据库 Redis 产生漏洞的原因 SSRF 漏洞利用 Redis 实战步骤 准备环境 下载安装 Redis 配置漏洞环境 启动 Redis 攻击机远程连接 Redis 利用 Redis 写 Webshell 防范措施 前言 在网络安全领域&#xff0…...

kubernetes学习-配置管理(九)

一、ConfigMap &#xff08;1&#xff09;通过指定目录&#xff0c;创建configmap # 创建一个config目录 [rootk8s-master k8s]# mkdir config[rootk8s-master k8s]# cd config/ [rootk8s-master config]# mkdir test [rootk8s-master config]# cd test [rootk8s-master test…...

python 语音识别

目录 一、语音识别 二、代码实践 2.1 使用vosk三方库 2.2 使用SpeechRecognition 2.3 使用Whisper 一、语音识别 今天识别了别人做的这个app,觉得虽然是个日记app 但是用来学英语也挺好的,能进行语音识别,然后矫正语法,自己说的时候 ,实在不知道怎么说可以先乱说,然…...

一文速览DeepSeek-R1的本地部署——可联网、可实现本地知识库问答:包括671B满血版和各个蒸馏版的部署

前言 自从deepseek R1发布之后「详见《一文速览DeepSeek R1&#xff1a;如何通过纯RL训练大模型的推理能力以比肩甚至超越OpenAI o1(含Kimi K1.5的解读)》」&#xff0c;deepseek便爆火 爆火以后便应了“人红是非多”那句话&#xff0c;不但遭受各种大规模攻击&#xff0c;即便…...

[mmdetection]fast-rcnn模型训练自己的数据集的详细教程

本篇博客是由本人亲自调试成功后的学习笔记。使用了mmdetection项目包进行fast-rcnn模型的训练&#xff0c;数据集是自制图像数据。废话不多说&#xff0c;下面进入训练步骤教程。 注&#xff1a;本人使用linux服务器进行展示&#xff0c;Windows环境大差不差。另外&#xff0…...

1. Kubernetes组成及常用命令

Pods(k8s最小操作单元)ReplicaSet & Label(k8s副本集和标签)Deployments(声明式配置)Services(服务)k8s常用命令Kubernetes(简称K8s)是一个开源的容器编排系统,用于自动化应用程序的部署、扩展和管理。自2014年发布以来,K8s迅速成为容器编排领域的行业标准,被…...

linux下ollama更换模型路径

Linux下更换Ollama模型下载路径指南   在使用Ollama进行AI模型管理时&#xff0c;有时需要根据实际需求更改模型文件的存储路径。本文将详细介绍如何在Linux系统中更改Ollama模型的下载路径。 一、关闭Ollama服务   在更改模型路径之前&#xff0c;需要先停止Ollama服务。…...

本地Ollama部署DeepSeek R1模型接入Word

目录 1.本地部署DeepSeek-R1模型 2.接入Word 3.效果演示 4.问题反馈 上一篇文章办公新利器&#xff1a;DeepSeekWord&#xff0c;让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm1001.2014.3001.5501https://blog.csdn.net/qq…...

【自学笔记】Git的重点知识点-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Git基础知识Git高级操作与概念Git常用命令 总结 Git基础知识 Git简介 Git是一种分布式版本控制系统&#xff0c;用于记录文件内容的改动&#xff0c;便于开发者追踪…...

[EAI-028] Diffusion-VLA,能够进行多模态推理和机器人动作预测的VLA模型

Paper Card 论文标题&#xff1a;Diffusion-VLA: Scaling Robot Foundation Models via Unified Diffusion and Autoregression 论文作者&#xff1a;Junjie Wen, Minjie Zhu, Yichen Zhu, Zhibin Tang, Jinming Li, Zhongyi Zhou, Chengmeng Li, Xiaoyu Liu, Yaxin Peng, Chao…...

实现数组的扁平化

文章目录 1 实现数组的扁平化1.1 递归1.2 reduce1.3 扩展运算符1.4 split和toString1.5 flat1.6 正则表达式和JSON 1 实现数组的扁平化 1.1 递归 通过循环递归的方式&#xff0c;遍历数组的每一项&#xff0c;如果该项还是一个数组&#xff0c;那么就继续递归遍历&#xff0c…...

登录认证(5):过滤器:Filter

统一拦截 上文我们提到&#xff08;登录认证&#xff08;4&#xff09;&#xff1a;令牌技术&#xff09;&#xff0c;现在大部分项目都使用JWT令牌来进行会话跟踪&#xff0c;来完成登录功能。有了JWT令牌可以标识用户的登录状态&#xff0c;但是完整的登录逻辑如图所示&…...

pytorch实现门控循环单元 (GRU)

人工智能例子汇总&#xff1a;AI常见的算法和例子-CSDN博客 特性GRULSTM计算效率更快&#xff0c;参数更少相对较慢&#xff0c;参数更多结构复杂度只有两个门&#xff08;更新门和重置门&#xff09;三个门&#xff08;输入门、遗忘门、输出门&#xff09;处理长时依赖一般适…...

Word List 2

词汇颜色标识解释 词汇表中的生词 词汇表中的词组成的搭配、派生词 例句中的生词 我自己写的生词&#xff08;用于区分易混淆的词&#xff0c;无颜色标识&#xff09; 不认识的单词或句式 单词的主要汉语意思 不太理解的句子语法和结构 Word List 2 英文音标中文regi…...

机器学习常用包numpy篇(四)函数运算

目录 前言 一、三角函数 二、双曲函数 三、数值修约 四、 求和、求积与差分 五、 指数与对数 六、算术运算 七、 矩阵与向量运算 八、代数运算 九、 其他数学工具 总结 前言 Python 的原生运算符可实现基础数学运算&#xff08;加减乘除、取余、取整、幂运算&#…...

CSS in JS

css in js css in js 的核心思想是&#xff1a;用一个 JS 对象来描述样式&#xff0c;而不是 css 样式表。 例如下面的对象就是一个用于描述样式的对象&#xff1a; const styles {backgroundColor: "#f40",color: "#fff",width: "400px",he…...

TCP 丢包恢复策略:代价权衡与优化迷局

网络物理层丢包是一种需要偿还的债务&#xff0c;可以容忍低劣的传输质量&#xff0c;这为 UDP 类服务提供了空间&#xff0c;而对于 TCP 类服务&#xff0c;可以用另外两类代价来支付&#xff1a; 主机端采用轻率的 GBN 策略恢复丢包&#xff0c;节省 CPU 资源&#xff0c;但…...

面经--C语言——内存泄漏、malloc和new的区别 .c文件怎么转换为可执行程序 uart和usart的区别 继承的访问权限总结

文章目录 内存泄漏预防内存泄漏的方法&#xff1a; malloc和new的区别.c文件怎么转换为可执行程序uart和usart的区别继承的访问权限总结访问控制符总结1. **public**:2. **protected**:3. **private**:继承类型&#xff1a; 内存泄漏 内存泄漏是指程序在运行时动态分配内存后&…...

Denavit-Hartenberg DH MDH坐标系

Denavit-Hartenberg坐标系及其规则详解 6轴协作机器人的MDH模型详细图_6轴mdh-CSDN博客 N轴机械臂的MDH正向建模&#xff0c;及python算法_mdh建模-CSDN博客 运动学3-----正向运动学 | 鱼香ROS 机器人学&#xff1a;MDH建模 - 哆啦美 - 博客园 机械臂学习——标准DH法和改进MDH…...

5分钟玩转OpenClaw:nanobot镜像云端体验与本地调试对比

5分钟玩转OpenClaw&#xff1a;nanobot镜像云端体验与本地调试对比 1. 为什么需要对比云端与本地两种体验方式 作为一个长期折腾AI工具的开发者&#xff0c;我最近在测试OpenClaw时遇到了一个典型困境&#xff1a;是直接在本地电脑安装全套环境&#xff0c;还是先用云端沙盒快…...

Java 面试八股文(全网最全20w字)

一、Java 基础知识 1、Object 类相关方法 getClass 获取当前运行时对象的 Class 对象。hashCode 返回对象的 hash 码。clone 拷贝当前对象&#xff0c; 必须实现 Cloneable 接口。浅拷贝对基本类型进行值拷贝&#xff0c;对引用类型拷贝引用&#xff1b;深拷贝对基本类型进行…...

SEO_详解SEO优化的完整工作流程与执行要点

<h2>SEO优化的重要性</h2> <p>在当前数字化时代&#xff0c;网站的可见度和流量直接关系到企业的市场竞争力。搜索引擎优化&#xff08;SEO&#xff09;作为提升网站在搜索引擎中排名的关键手段&#xff0c;其重要性不言而喻。SEO不仅能帮助企业吸引更多的自…...

智能高效的离线OCR解决方案:Umi-OCR从基础到进阶的全方位应用指南

智能高效的离线OCR解决方案&#xff1a;Umi-OCR从基础到进阶的全方位应用指南 【免费下载链接】Umi-OCR Umi-OCR: 这是一个免费、开源、可批量处理的离线OCR软件&#xff0c;适用于Windows系统&#xff0c;支持截图OCR、批量OCR、二维码识别等功能。 项目地址: https://gitco…...

Illustrator批量替换实战指南:用ReplaceItems释放设计效率

Illustrator批量替换实战指南&#xff1a;用ReplaceItems释放设计效率 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 你是不是经常在Illustrator中遇到这样的场景&#xff1a;需要…...

2025年雀魂Mod工具终极指南:从痛点分析到实践探索

2025年雀魂Mod工具终极指南&#xff1a;从痛点分析到实践探索 【免费下载链接】majsoul_mod_plus 雀魂解锁全角色、皮肤、装扮等&#xff0c;支持全部服务器。 项目地址: https://gitcode.com/gh_mirrors/ma/majsoul_mod_plus 在雀魂游戏体验中&#xff0c;你是否曾因角…...

Electron应用自动更新全解析:如何用electron-updater搭建私有更新服务器(附Vue2示例)

Electron应用私有化自动更新体系构建指南 当你的Electron应用从开发阶段进入生产环境&#xff0c;如何确保用户始终使用最新版本&#xff1f;本文将带你从零构建一套企业级私有更新体系&#xff0c;涵盖服务端部署策略、客户端配置优化以及用户体验设计三大核心模块。 1. 更新服…...

告别预编译固件:手把手教你从零构建Pico PC RK3588S的Ubuntu 20.04根文件系统

深度定制RK3588S开发板&#xff1a;从零构建Ubuntu 20.04根文件系统的完整指南 当拿到一块全新的Pico PC RK3588S开发板时&#xff0c;许多开发者会发现厂商仅提供了预编译的固件包。这种"黑盒"模式虽然能快速启动设备&#xff0c;却严重限制了系统级定制的可能性。…...

Cadence IC617实战:VerilogA vs analogLib搭建全差分放大器,哪个更适合你?

Cadence IC617实战&#xff1a;VerilogA与analogLib全差分放大器设计深度对比 在模拟IC设计领域&#xff0c;全差分放大器作为基础构建模块&#xff0c;其实现方式直接影响设计效率和仿真精度。Cadence IC617作为行业标准工具&#xff0c;提供了VerilogA和analogLib两种截然不同…...

别再只用Unity做游戏了!用Game4Automation PRO插件,手把手教你搭建一条虚拟生产线(附PLC连接避坑指南)

跨界开发者的工业仿真指南&#xff1a;用Unity打造虚拟生产线全流程 当游戏开发者遇上工业自动化&#xff0c;会碰撞出怎样的火花&#xff1f;Unity作为全球最流行的游戏引擎之一&#xff0c;早已突破了娱乐产业的边界。今天&#xff0c;我们将探索如何利用Game4Automation PRO…...