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

51单片机系列-按键检测原理

🌈个人主页:羽晨同学

💫个人格言:“成为自己未来的主人~”  

独立按键是检测低电平的。

 下面我们来看一张对应的电路原理图:

在这张图当中,P1,P2,P3内部都上拉了电阻,但是P0没有,所以我们要控制P0,需要我们自己加上上拉电阻。

独立按键

接下来,让我们了解一下独立按键的电路原理图。

在这张电路原理图中,加入P31为0的话,就相当于是按下了K1,其他几个按键也是这样子。

接下来,让我们实现一下用独立按键实现晶体管的代码:

#include<stc89c5xrc.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uint num,num1,dis,bm;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void DelayMs(uint c);
void Display(uint shu);
void Nixie(unsigned char Location,Number);
void main()
{while(1){if(P31==0){DelayMs(5);if(P31==0){DelayMs(5);while(!P31){Display(num);DelayMs(5);}P20=~P20;num++;}}if(P30==0){DelayMs(5);if(P30==0){while(!P30)Display(num);P20=~P20;num--;}}}
}
void DelayMs(uint c)
{uint a,b;for(a=c;a>0;a--)for(b=115;b>0;b--);
}
void Display(uint shu)
{while(1){Nixie(3,shu/100);DelayMs(5);Nixie(2,shu/10%10);DelayMs(5);Nixie(1,shu%10);DelayMs(5);}
}
void Nixie(unsigned char Location,Number)
{
switch(Location)//哪个亮
{	case 1:P24=1;P23=1;P22=1;break;//二进制确定位置case 2:P24=1;P23=1;P22=0;break;case 3:P24=1;P23=0;P22=1;break;
}P0=table[Number];//亮什么数字DelayMs(5);//清零消影P0=0x00;
}

矩阵按键扫描

其实和独立按键一样,也是按下去之后置为0

AD采样电压

 使用模拟开关CD4051CD4067

在CD4067的模拟开关中,由OUT这一个进行输入,有A,BC,D四个输出

在CD4051B这个模拟开关中,由COM进行输入,有八个口进行输出

 进行按键检测的专用芯片

用查询法实现独立按键检测

按键在闭合和断开时,接触点存在抖动情况。

抖动的话就会一直翻转,导致结果不正确,所以我们在代码中检测要松开才行

扫描法实现矩阵按键检测

不能同时给两条行电平,一次只能给一条。

好了,本次的文章就到这里了,我们下次再见。 

相关文章:

51单片机系列-按键检测原理

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 独立按键是检测低电平的。 下面我们来看一张对应的电路原理图&#xff1a; 在这张图当中&#xff0c;P1&#xff0c;P2&#xff0c;P3内部都上拉了电阻&#xff0c;但是P0没有&am…...

基于元神操作系统实现NTFS文件操作(五)

1. 背景 本文主要介绍$Root元文件的解析。先介绍元文件的构成及各个部分的结构&#xff0c;然后结合上一篇博文中读取到的元文件内容&#xff0c;对测试磁盘中目标分区的根目录进行展示。 2. $Root元文件解析 &#xff08;1&#xff09;$Root元文件的结构 $Root元文件由两部…...

AutoCAD学习

AutoCAD学习 最基本操作 命令用途说明空格键确认键也可以是重复刚才的命令回车键也是确认键鼠标右键也可以选择确认LINE、L直线命令绘制直线DLI线性尺寸标注DIMLINEAR鼠标滚轮滚动放大缩小视图界面鼠标中键按住移动视图DAL对齐线性标注DIMALIGNED F8 正交模式ORTHOMODE Tab 切换…...

go的一些知识点

一.package 1.新建项目 新建一个itying文件夹&#xff0c;在里面使用命令 就能生成一个go项目。生成一个go.mod 2.调用别的包的代码 按照下面的目录层级生成代码 //clac.go package calcfunc Add(x, y int) int {return x y } func Sub(x, y int) int {return x - y }…...

前端 vue3 对接科大讯飞的语音在线合成API

主要的功能就是将文本转为语音&#xff0c;可以播放。 看了看官方提供的demo&#xff0c;嗯....没看懂。最后还是去网上找的。 网上提供的案例&#xff0c;很多都是有局限性的&#xff0c;我找的那个他只能读取第一段数据&#xff0c;剩下的不读取。 科大讯飞的接口&#xf…...

缺省参数

一、概念 在声明或定义函数时为函数的参数指定一个默认值&#xff0c;调用时&#xff0c;如果对应参数没有传参&#xff0c;则使用其默认值&#xff0c;否则使用指定的实参 void TestFunc(int a 0) {cout<<a<<endl; }int main() {TestFunc(); // 没有传参&am…...

Stable Diffusion绘画 | 来训练属于自己的模型:炼丹启动

经过前面几轮辛苦的准备工作之后&#xff0c;现在开始进入终篇的炼丹环节。 在「上传素材」页面&#xff0c;点击「开始训练」&#xff1a; 可以在「查看进度-进度」中&#xff0c;查看模型训练的整体进度&#xff1a; 求助&#xff01;&#xff01;&#xff01;操作「开始训练…...

08_OpenCV文字图片绘制

import cv2 import numpy as npimg cv2.imread(image0.jpg,1) font cv2.FONT_HERSHEY_SIMPLEXcv2.rectangle(img,(500,400),(200,100),(0,255,0),20) # 1 dst 2 文字内容 3 坐标 4 5 字体大小 6 color 7 粗细 8 line type cv2.putText(img,flower,(200,50),font,1,(0,0,250)…...

【笔记】选择题笔记+数据结构笔记

文章目录 2014 41方法一先序遍历方法二 连通分量是极大连通子图 一个连通图的生成树是一个极小连通子图 无向图的邻接表中&#xff0c;第i个顶点的度为第i个链表中的结点数 邻接表和邻接矩阵对不同的操作各有优势。 最短路径算法: 单源最短路径 已知图G(V,E)&#xff0c;我们…...

浅谈汽车智能座舱如何实现多通道音频

一、引言 随着汽车智能座舱的功能迭代发展&#xff0c;传统的 4 通道、6 通道、8 通道等音响系统难以在满足驾驶场景的需求&#xff0c;未来对于智能座舱音频质量和通道数会越来越高。接下来本文将浅析目前智能座舱如何实现音频功放&#xff0c;以及如何实现多路音频功放方案。…...

系统架构设计师教程 第13章 13.1层次式体系结构概述 笔记

13.1 层次式体系结构概述 分层式体系结构是一种最常见的架构设计方法&#xff0c;能有效地使设计简化&#xff0c;使设计的系统机构清晰&#xff0c;便于提高复用能力和产品维护能力。 层次式体系结构设计是将系统组成一个层次结构&#xff0c;每一层为上层服务&#xff0c;并…...

cnn突破一(先搞定三层反馈神经网络bpnet,c#实现)

惦记cnn很久了&#xff0c;一直搞机器视觉&#xff0c;走不出来&#xff0c;现在megauging已经实现&#xff0c;说明书也写了不少&#xff0c;该突破的突破了&#xff0c;该改进的也改进了&#xff0c;一个心病治好了&#xff0c;有空把人工智能在机器视觉上的延伸&#xff0c;…...

如何创建一个docker,给它命名,且下次重新打开它

1.创建一个新的docker并同时命名 docker run -it --name one ubuntu:18.04 /bin/bash 这时候我们已经创建了一个docker,并且命名为"one" 2.关闭当前docker exit 3.这时docker已经终止了&#xff0c;我们需要使用它要重新启动 docker start one 4.现在可以重新打…...

【D3.js in Action 3 精译_025】3.4 让 D3 数据适应屏幕(中)—— 线性比例尺的用法

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…...

Python的多线程与多进程:并发编程基础与实战

随着计算机硬件的不断发展,现代计算机通常配备多核处理器,使得在程序中同时处理多个任务成为可能。并发编程是提升程序性能、充分利用多核处理器能力的重要技术之一。在Python中,并发编程的实现主要包括多线程、多进程以及异步编程(如asyncio)。然而,由于Python的全局解释…...

HarmonyOS Next应用开发——响应式布局之媒体查询

响应式布局之媒体查询 媒体查询作为响应式设计的核心&#xff0c;在移动设备上应用十分广泛。媒体查询可根据不同设备类型或同设备不同状态修改应用的样式&#xff0c;常用于多屏幕的应用适配。媒体查询常用于下面两种场景&#xff1a; 针对设备和应用的属性信息&#xff08;…...

240 搜索二维矩阵 II

解题思路&#xff1a; \qquad 解这道题最重要的是如何利用从左到右、从上到下为升序的性质&#xff0c;快速找到目标元素。 \qquad 如果从左上角开始查找&#xff0c;如果当前matrix[i][[j] < target&#xff0c;可以向右、向下扩展元素都是升序&#xff0c;但选择哪个方向…...

jenkins微服务

如果vim进去某个文件里&#xff0c;可以按键盘的向下键查阅其它部分 记得每天备份虚拟机的项目 一.在linux安装jenkins 1.上传文件 我们采用安装包的方式安装。 先用SShclient在/usr/local/下创建jenkins文件夹&#xff0c;然后向其中导入两个包 2.安装jenkins 再在控制…...

【Kotlin基于selenium实现自动化测试】初识selenium以及搭建项目基本骨架(1)

导读大纲 1.1 Java: Selenium 首选语言1.2 配置一个强大的开发环境 1.1 Java: Selenium 首选语言 Java 是开发人员和测试人员进行自动化 Web 测试的首选 Java 和 Selenium 之间的协同作用受到各种因素的驱动,从而提高它们的有效性 为什么Java经常被认为是Selenium的首选语言 广…...

汽车追尾为什么是后车的责任?

简单点说&#xff1a;因为人后面没有长眼睛。 结论 在汽车追尾事故中&#xff0c;通常情况下后车被认为是责任方的原因在于交通法规对驾驶安全标准的约定和实践中的责任识别原则。虽然追尾事故常见地被归责于后车&#xff0c;但具体判断并不是绝对的&#xff0c;仍需综合多种…...

谷歌收录怎么做比较快?Shopify过滤5个无效参数提升商品页收录

一个拥有5000个SPU的Shopify独立站&#xff0c;在Google Search Console后台的网页报告中&#xff0c;未收录网页数量高达45000个。索引分配明细标明&#xff0c;超过32000个URL带有“已抓取 - 目前未索引”标签。谷歌浏览器爬虫每天分配给该站点的抓取请求固定在4000次左右。检…...

深度探索C++对象模型 学习笔记 第五章 构造、解构、拷贝语意学(1)

请看下面这个抽象基类的声明&#xff1a;你能看出什么问题吗&#xff1f;该类被设计成抽象基类&#xff08;纯虚函数的存在禁止创建 Abstract_base 的独立实例&#xff09;&#xff0c;但它仍然需要一个显式的构造函数来初始化其唯一的数据成员 _mumble。如果没有这个初始化&am…...

揭秘Midjourney V6拟物化失控真相:为什么87%的设计师调不出真实皮革/金属/织物质感?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney V6拟物化失控现象的底层本质 Midjourney V6 引入的拟物化&#xff08;PhotorealismMaterial Fidelity&#xff09;增强机制&#xff0c;并非单纯提升纹理细节&#xff0c;而是通过隐式材质…...

[寻找时间序列数据中异常值终极指南(第三部分)](https://towardsdatascience.com/the-ultimate-guide-to-finding-outliers-in-yo

原文&#xff1a;towardsdatascience.com/the-ultimate-guide-to-finding-outliers-in-your-time-series-data-part-3-0ff73ce28ca3...

独立开发者如何利用Taotoken的透明计费规避项目超支风险

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何利用Taotoken的透明计费规避项目超支风险 对于独立开发者而言&#xff0c;项目预算的控制是决定项目能否持续、健康…...

选错bpp,你的App内存就炸了?聊聊图像格式、内存与性能的实战权衡

选错bpp&#xff0c;你的App内存就炸了&#xff1f;聊聊图像格式、内存与性能的实战权衡 在移动应用开发中&#xff0c;图像处理往往是性能瓶颈的重灾区。我曾见过一个社交类App因为图片加载策略不当&#xff0c;在低端设备上频繁触发OOM&#xff08;内存溢出&#xff09;崩溃。…...

艾络迅 × 荣耀:联合推出Meteer AI跳舞机器人玩具,智能科技重新定义儿童陪伴

在快节奏的现代生活中&#xff0c;每个孩子都渴望获得专属的陪伴与关注。他们对音乐和律动有着天然的热爱&#xff0c;期待拥有能够与之互动、共同成长的智能伙伴。然而&#xff0c;传统玩具的单一功能已无法满足数字原生代儿童的多元化需求。 正是洞察到这一痛点&#xff0c;艾…...

明日方舟智能基建管理终极指南:5分钟实现全自动资源生产

明日方舟智能基建管理终极指南&#xff1a;5分钟实现全自动资源生产 【免费下载链接】arknights-mower 《明日方舟》长草助手 项目地址: https://gitcode.com/gh_mirrors/ar/arknights-mower 还在为《明日方舟》繁琐的基建管理而头疼吗&#xff1f;每天花费大量时间手动…...

如何在Photoshop中构建AI原生工作流:SD-PPP的技术架构解析

如何在Photoshop中构建AI原生工作流&#xff1a;SD-PPP的技术架构解析 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp 当我们谈论AI与创意工具的结合时&#xff0c;通常面临一个核心挑战&#xff1a;如何在保持专业…...

IDM激活脚本:破解30天限制背后的注册表权限技术内幕

IDM激活脚本&#xff1a;破解30天限制背后的注册表权限技术内幕 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 你是否曾经因为IDM的30天试用期到期而烦恼&#…...