【51单片机】按键的操作

文章目录

  • 前言
    • 读取按键的原理
    • proteus仿真
    • 示例代码
  • 总结


前言

在现代电子产品中,按键是用户与设备之间交互的重要组成部分。它们允许用户通过简单的按下来触发特定的操作或命令。在微控制器的背景下,按键的设计和操作对于确保设备的响应性和用户体验至关重要。本文将探讨如何在AT89C51微控制器上实现按键操作,以及这种操作对于电子产品设计的影响。


读取按键的原理

51单片机按键读取的原理是基于单片机的输入/输出(IO)端口。当按键按下时,它会与单片机的IO端口电平连接到地(GND),从而降低端口的电平。通过读取这个端口的电平,我们就可以知道按键的状态是按下还是放开。

关于延时之后再读取按键状态的原因,这是为了避免由于人操作中的抖动或干扰造成的错误。当一个人快速按下和释放按键时,可能会导致多次电平变化,这可能被误认为是多次按键输入。为了解决这个问题,软件通常会在判断有按键按下时,延时一段时间,然后再检测按键状态。如果在这段时间内再次检测时输入时高电平(不连接到GND),说明是抖动或干扰造成的。如果输入是低电平(连接到GND),说明确实有按键按下。

这种延时读取方法可以帮助确保单片机只对一次闭合作出一次按键输入操作,从而提高系统的准确性和可靠性

proteus仿真

在这里插入图片描述
电路图如下:
在这里插入图片描述
当按键按下,接GND,按键读取为0.
如果你想接电源也是可以的,那么按下读取的为1

示例代码

我们通过直接判断寄存器的状态即可得知他是否按下,示例代码如下:

#include <regx52.h>

void delay(unsigned int ms) {
    unsigned int i, j;
    for(i = ms; i > 0; i--)
        for(j = 120; j > 0; j--);
}

sbit led = P1^0;
sbit key = P2^0;

void main()
{
	while(1)
	{
		if(key == 0)
		{
			delay(10);
			while(key == 0);
			led = !led;
		}
	}
}

这段代码的核心思想是使用一个无限循环来不断检测按键的状态,并根据按键的状态来控制LED灯。当按键被按下时,LED灯的状态会发生改变。这是通过led = !led;这行代码实现的,它会将LED灯的状态从开变为关,或者从关变为开。

为了确保按键的状态被准确地检测到.一是消抖,二是等待按键释放。消抖是通过delay(10);实现的,它会在检测到按键被按下后,先等待一段时间,然后再次检测按键的状态。这样可以避免因为按键的抖动而导致的误判。等待按键释放是通过while(key == 0);实现的,它会在检测到按键被按下后,停在这个循环中,直到按键被释放。这样可以确保每次按键的按下和释放只会被检测到一次。


总结

总结来说,AT89C51微控制器中按键的操作是通过连接到微控制器的输入引脚来实现的。当按键被按下时,它会产生一个低电平信号,这个信号可以被微控制器检测并响应。这种操作简单而高效,使得在电子产品设计中可以轻松集成和使用。通过了解和应用这些原理,设计师可以创建更加直观和用户友好的设备。

希望这篇文章能够满足您的需求!如果您有任何其他问题或需要进一步的帮助,请随时告诉我。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS新手入门笔记【导入方法、选择器介绍、选择器优先级、属性详细介绍、盒子模型】

目录 一、目的与优势二、CSS导入方式三、语法结构四、选择器类型基本选择器组合选择器伪类与伪元素属性选择器 六、选择器优先级总结 六、CSS属性1. 字体与文本属性2. 背景属性3. 尺寸与盒模型属性4. 布局与定位5. 列表样式6. 边框与轮廓7. 文本装饰与效果8. 动画与过渡9. 伪类…

RocketMQ-记一次生产者发送消息存在超时异常

目录 1、背景说明 2、排查 2.1、防火墙 2.2、超时时间设置 2.3、服务器资源检查 2.3.1、内存、CPU等 2.3.2、磁盘空间 ​编辑 2.3.3、检查文件描述符 2.3.4、swap区 3、增加swap空间 3.1、创建目录 3.2、格式化 3.3、启动swap 3.4、查看效果 1、背景说明 在一次…

Harbor 不同模块作用以及持久化数据大小建议

目录 1. Harbor 组件1.1 Registry (Harbor Registry)1.2 Database (PostgreSQL)1.3 Jobservice1.4 Chartmuseum1.5 Redis1.6 Trivy 2. 示例 values.yaml3. 总结 搭建环境 使用 NFS 作为持久化存储使用 Helm 在 k8s 上进行搭建 在使用 Helm 安装 Harbor 并配置持久化存储时&am…

ai assistant激活成功后,如何使用

ai assistant激活成功后&#xff0c;如图 ai assistant渠道&#xff1a;https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上&#xff0c;Google 为 Android Studio 推出了 Studio Bot 功能&#xff0c;使用了谷歌编码基础模型 Codey,Codey 是…

Redis-数据类型-zset

文章目录 1、查看redis是否启动2、通过客户端连接redis3、切换到db4数据库4、将一个或多个member元素及其score值加入到有序集key当中5、升序返回有序集key6、升序返回有序集key&#xff0c;让分数一起和值返回的结果集7、降序返回有序集key&#xff0c;让分数一起和值返回到结…

海外仓系统有哪些模块:WMS海外仓系统完整功能清单

虽然说现在市面上的海外仓系统非常多&#xff0c;各有特色&#xff0c;不过在功能模块的设计上&#xff0c;其实殊途同归&#xff0c;只是各有侧重点而已。 作为海外仓企业&#xff0c;想选择一套适合自己的WMS海外仓系统&#xff0c;首先就要了解系统标准的功能模块都有什么。…

Typora v1.8.6解锁版安装教程 (轻便简洁的Markdown编辑器)

前言 Typora是一款轻便简洁的Markdown编辑器&#xff0c;支持即时渲染技术&#xff0c;这也是与其他Markdown编辑器最显著的区别。即时渲染使得你写Markdown就想是写Word文档一样流畅自如&#xff0c;不像其他编辑器的有编辑栏和显示栏。 一、下载地址 下载链接&#xff1a;…

Redis单例部署

目录 1. 概述2. 参考3. 环境4. 部署4.1 操作系统4.1.1 修改系统参数4.1.2 关闭透明大页内存4.1.3 修改系统限制 4.2 安装Redis4.2.1 下载Redis4.2.2 创建redis账号4.2.3 添加Redis环境变量4.2.4 创建Redis使用目录4.2.5 安装Redis4.2.6 手动修改配置文件&#xff08;**可跳过&a…

2025天津数控机床展(天津工业展)

2025第21届天津工博会—机床展 时间&#xff1a;2025年3月6-9日 地点&#xff1a;国家会展中心&#xff08;天津&#xff09; 达成交易&#xff0c;是我们唯一的追求&#xff01; Dealing Is Our Top Pursuit. 主办单位 振威会展集团 中国机械工业联合会 中国国际贸易促…

名称申请不了商标,可以受保护不!

前几天个网友说要申请注册个商标名称&#xff0c;发来名称让普推商标知产老杨帮忙检索了下&#xff0c;发现有同名的被驳回&#xff0c;而且是做过驳回复审被驳回&#xff0c;而且是绝对理由驳回的&#xff0c;易使消费者对商品的品质等特点产生误认&#xff0c;不得作为商标使…

如何开发一个项目脚手架cli

目录 背景正文unbuildpromptsprogresskolorist 设置打包命令npm execnpxnpm init/ npm create/ npm innit 使用最后 背景 随着团队项目类型越来越多&#xff0c;方便后续快速去开发项目&#xff0c;会出现各种类型的项目模版项目。 这样开发只需要通过脚手架选择自己需要的项目…

数据采集之二主一从,485总线共享器

产品概述 485总线共享器示意图 功能示意图 DAQ-GP-485HUB是上海数采物联网推出的一款 RS485总线多路复用共享数据处理器&#xff0c;是一款高性能的通讯设备&#xff0c;专门针对两台主机和 一台从机通讯时导致的数据冲突而设计。在实际工业控制和监控场景中&#xff0c;多个主…

Java宝藏实验资源库(3)类

一、实验目的 理解面向对象程序的基本概念。掌握类的继承的实现机制。熟悉类中成员的访问控制方法。熟悉ArrayList类的使用。 二、实验内容、过程及结果 *9.5Programming Exerc ise the GregorianCal endar class) Java API has the GregorianCalendar class in the java. uti…

算法008:四数之合

四数之和. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/4sum/description/ 在前面的两个题中&#xff0c;我们已经完成了两数之和和三数之和&#xff0c;到本题四…

基于51单片机的函数信号发生器

基于51单片机函数信号发生器 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.LCD1602液晶显示波形种类和频率值&#xff08;10-100HZ&#xff09;&#xff1b; 2.按键设置波形种类和设定频率步进值…

Notepad++插件 Hex-Edit

Nptepad有个Hex文件查看器&#xff0c;苦于每次打开文件需要手动开插件显示Hex&#xff0c;配置一下插件便可实现打开即调用 关联多个二进制文件&#xff0c;一打开就使用插件的方法&#xff0c;原来是使用空格分割&#xff01;&#xff01;&#xff01;

螺蛳粉店外卖配送小程序商城的效果为何

螺蛳粉是广西地区的特色美食&#xff0c;在当地有着大量实体餐饮店或品牌商&#xff0c;其单品消费率非常高&#xff0c;在外地也不乏自创品牌或加盟店等&#xff0c;其特殊的味道及吸引力也同样复购率高&#xff0c;客户除了线下到店外&#xff0c;也会购买袋/桶装螺蛳粉到家自…

【无线感知】【P4】无线感知手势识别- WIFI 感知边界

前言&#xff1a; 这篇是北大2022 在Ubicomp 上面的论文 《placement Matters&#xff1a; understanding the Effects of Device placements for WiFi Sensing》 放置很重要&#xff1a;了解设备放置对WiFi传感的影响 目录&#xff1a; 简介 感知质量定义&#xff08;SSNR…

Bayanay:一款基于Python开发的无线网络安全研究工具

关于Bayanay Bayanay是一款基于纯Python开发的无线网络安全研究工具&#xff0c;在该工具的帮助下&#xff0c;无论你身处何地&#xff0c;都可以轻松地对周围地区的无线网络安全状况进行研究与分析。 该工具可以通过使用HTML5的地理位置定位功能并结合Scapy获取到的SSID信息…

Flutter ffi Failed to lookup symbol

iOS release版本&#xff0c;解决方式参考官方文档&#xff1a;在 iOS 中使用 dart:ffi 调用本地代码 如果debug版本也报这个错误&#xff0c;很可能是有多个.c文件&#xff0c;编译的时候没带上&#xff01; 假设你的ffi模块名字是 c_lib 对于Android端&#xff0c;需要修改…