C51单片机-单按键输入识别,键盘消抖

news/2024/12/21 20:09:05/

【实验目的】
独立按键的识别方法、键盘消抖等。
【实验现象】
每按一次独立键盘的S2键,与P1口相连的八个发光二极管中点亮的一个往下移动一位。
【实验说明】
关于按键去抖动的解释,我们在手动按键的时候,由于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下一次键然后接着释放,按键两片金属膜接触的时间大约为50ms左右,在按下瞬间到稳定的时间为5-10ms,在松开的瞬间到稳定的时间也为5-10ms,如果我们在首次检测到键被按下后延时10ms左右再去检测,这时如果是干扰信号将不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的原理。
【硬件电路】
在这里插入图片描述
在这里插入图片描述
【程序代码】(程序源码在本博客资源里边,可自行下载使用)
//独立按键的识别方法、键盘消抖等。
//现象:每按一次独立键盘的S2键,与P1口相连的八个发光二极管中点亮的一个往下移动一位。
#include <reg52.h>
sbit BY1=P3^5; //定义按键的输入端S2键
unsigned char count; //按键计数,每按一下,count 加1
unsigned char temp;
unsigned char a,b;
void delay10ms(void) //延时程序
{
unsigned char i,j;
for(i=40;i>0;i–)
for(j=248;j>0;j–);
}
key() //按键判断程序
{
if(BY1=0)
//此处实际代码为if()判断P3^4口的状态 是否为0 (此编译器不支持)
//判断是否按下键盘,当单片机上电时所有IO 口为高电平,
//S2键一端接地另一端接P3.4,所以当键被按下时P3.4口直接接地,
//此时检测P3.4肯定为低电平。
{
delay10ms(); //延时,软件去抖动干扰
if(BY1=0) //此处实际代码为if()判断P3^4口的状态 是否为0 (此编译器不支持)//再次检测确认按键按下
{
count++; //按键计数加1
if(count=8) //计8次重新计数 //此处实际代码为判断count变量是否为8
{
count=0; //将count清零
}
}
while(BY1==0); //等待按键释放,如果键未释放则一直在此等待。
}
}
move() //广告灯向下移动移动函数
{
a=temp<<count; //这三句为一个循环移位
b=temp>>(8-count);
P1=a|b;
}
main()
{
count=0; //初始化参数设置
temp=0xfe;
P1=0xff;
P1=temp;
while(1) //永远循环,扫描判断按键是否按下
{
key(); //调用按键识别函数
move(); //调用广告灯移动函数
}
}


http://www.ppmy.cn/news/1527310.html

相关文章

Linux 常用指令

Linux 常用指令 这是本人在备战 CSP 初赛做 Linux 指令题时&#xff0c;心血来潮整理的&#xff0c;希望对大家有帮助。如有错误或有补充&#xff0c;麻烦私信或评论指出。 表格按字母顺序排列 命令作用alias对命令重命名cal显示日历的指令cat查看文本文件的内容cd改变当前工…

UE5 阴影通道

Shadow Pass Switch节点中 Default代表模型遮罩的效果 Shadow代表阴影的生成遮罩效果

Bio-Linux-shell详解-2-基本Shell命令快速掌握

Bio-Linux-shell详解-1-从0开始-CSDN博客 想了解基本知识可以先看上文&#xff0c;本次我们讲述一些Shell的基本命令。 目录 1.shell输入命令 2.man命令查看说明文档 3.文件查看命令 &#xff08;1&#xff09;linux文件结构 &#xff08;2&#xff09;cd切换工作目录 &…

等保测评:如何评估第三方服务提供商的安全性

等保测评中第三方服务提供商安全性评估方法 在等保测评中&#xff0c;评估第三方服务提供商的安全性是确保信息系统整体安全的重要组成部分。以下是评估第三方服务提供商安全性的关键步骤&#xff1a; 安全风险识别&#xff1a;首先&#xff0c;需要识别与第三方服务提供商相关…

【机器学习】--- 深度学习中的注意力机制

深度学习中的注意力机制 在深度学习领域&#xff0c;注意力机制&#xff08;Attention Mechanism&#xff09;已经成为近年来最受瞩目的研究热点之一。它不仅提升了现有模型的性能&#xff0c;更启发了全新的网络结构&#xff0c;如Transformer模型。注意力机制被广泛应用于自…

【初阶数据结构】详解树和二叉树(一) - 预备知识(我真的很想进步)

文章目录 前言1. 树1.1 树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用 2. 二叉树2.1 二叉树的概念2.2 现实中的二叉树2.3 特殊的二叉树2.4 二叉树的性质2.5 二叉树概念和性质的一些习题 前言 初阶数据结构篇马上要迎来了一个新的成员&#xff0c;那就是"二叉…

开思通智网-科技快报20240912:人工智能辅助实现复杂糖苷分子检测

【本周新进展】 人工智能辅助实现复杂糖苷分子检测 https://news.sciencenet.cn/htmlnews/2024/9/529548.shtm IFA2024|元鼎智能推出全新“真智能”泳池机器人 https://tech.gmw.cn/2024-09/07/content_37548570.htm 马斯克宣称的“最强AI训练系统”上线 https://news.science…

sqlx1.3.4版本的问题

sqlx1.3.4版本存在问题&#xff0c;在调用sqlx的Select方法时&#xff0c;如果传入的dest是一个slice且slice不为空&#xff0c;查询结果将会追加在这个slice已有的元素后面。这位用户认为这个行为是“a little surprising”的&#xff0c;且与json 反序列化的表现不一致&#…