单片机学习10——独立按键

独立按键输入检测:

#include<reg52.h>sbit LED1=P1^0;
sbit KEY1=P3^4;void main()
{KEY1=1;while(1){if(KEY1==0)	 //KEY1按下{LED1=0;	 //LED1被点亮}else{LED1=1;}}
}

按键

#include<reg52.h>#define uchar unsigned char
#define uint unsigned intsbit LED1=P1^0;
sbit KEY1=P3^4;sbit dula=P2^6;
sbit wela=P2^7;uchar disnum;uchar code table_duan[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};void main()
{P0=0xfe;wela=1;wela=0;KEY1=1;while(1){if(KEY1==0)	 //KEY1按下{LED1=0;	 //LED1被点亮disnum++;if(disnum==10){disnum=0;}while(!KEY1);  //重要}else{LED1=1;P0=table_duan[disnum];dula=1;dula=0;}}
}

按键在闭合和断开的时候,触电会存在抖动的现象:

 

按键抖动时间是由按键的机械特性决定:

一般为5ms到10ms之间。

按键前沿抖动消除和按键后延抖动的消除:

#include<reg52.h>#define uchar unsigned char
#define uint unsigned intsbit LED1=P1^0;
sbit KEY1=P3^4;sbit dula=P2^6;
sbit wela=P2^7;uchar disnum;uchar code table_duan[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};void delay(uchar);void main()
{P0=0xfe;wela=1;wela=0;KEY1=1;while(1){if(KEY1==0)	 //KEY1按下{delay(10);    //按键前沿抖动的消除if(KEY1==0)   //按键前沿抖动的消除{LED1=0;	 //LED1被点亮disnum++;if(disnum==10){disnum=0;}while(!KEY1);  //重要delay(10);	   //按键后延抖动的消除while(!KEY1);  //按键后延抖动的消除}		 	}else{LED1=1;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--);}	
}

在代码中增加了延时和判断的代码来消除按键抖动的问题。

然后测试,可以看到数码管的数字显示非常稳定。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python技巧】快速安装各种常用库pip、whl、tar.gz最新最全安装方法(超时、快速安装))

【Python技巧】安装各种常用库pip、whl、tar.gz最新最全安装方法 &#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&…

中科亿海微除法器(DIVIDE)

技术背景 技术概述 FPGA实现除法运算是一个比较复杂的过程&#xff0c;因为硬件逻辑与软件程序的区别。如果其中一个操作数为常数&#xff0c;可以通过简单的移位与求和操作代替&#xff0c;但用硬件逻辑完成两变量间除法运算会占用较多的资源&#xff0c;电路结构复杂&#xf…

了解静态测试?

静态测试是一种软件测试方法&#xff0c;它主要通过分析软件或代码的静态属性来检查潜在的问题和缺陷&#xff0c;而无需实际执行程序。这种测试方法侧重于检查源代码和其他软件文档&#xff0c;以发现错误并提高软件质量。 为什么要做静态测试&#xff1f; 提前发现和修复错…

简易版王者荣耀

所有包和类 GameFrame类 package newKingOfHonor;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;im…

C语言你爱我么?(ZZULIOJ 1205:你爱我么?)

题目描述 LCY买个n束花准备送给她暗恋的女生&#xff0c;但是他不知道这个女生是否喜欢他。这时候一个算命先生告诉他让他查花瓣数&#xff0c;第一个花瓣表示"爱"&#xff0c;第二个花瓣表示"不爱"&#xff0c;第三个花瓣表示"爱"..... 为了使最…

为啥网络安全那么缺人,但很多人却找不到工作?

文章目录 一、学校的偏向于学术二、学的东西太基础三、不上班行不行 为什么网络安全的人才缺口那么大&#xff0c;但是大学毕业能找到网安工作的人却很少&#xff0c;就连招聘都没有其他岗位多&#xff1f; 明明央视都说了网络安全的人才缺口还有300多万&#xff0c;现在找不到…

鸿蒙应用开发-初见:ArkTS

作者&#xff1a;HarderCoder ArkTS ArkTS围绕应用开发在 TypeScript &#xff08;简称TS&#xff09;生态基础上做了进一步扩展&#xff0c;继承了TS的所有特性&#xff0c;是TS的超集 ArkTS在TS的基础上扩展了struct和很多的装饰器以达到描述UI和状态管理的目的 基本语法 …

零基础编程入门视频教程,零基础编程从哪学起,分享中文编程工具构件实例

零基础编程入门视频教程&#xff0c;零基础编程从哪学起&#xff0c;分享中文编程工具构件实例 1、零基础编程入门视频教程&#xff0c;系统化编程教程链接 https://jywxz.blog.csdn.net/article/details/134073098?spm1001.2014.3001.5502 2、零基础编程从哪学起 建议初学…

【C语言】深入理解数据类型转换与运算

文章目录 1.数据类型转换在分析源程序之前&#xff0c;我们需要了解几个基本概念&#xff1a;现在来分析源程序中的变量及其对应的十进制真值以及扩展操作方式&#xff1a; 1.1. short si -32768;1.2. unsigned short usi si;1.3. int i si;1.4. unsigned ui usi; 2&#x…

TIME_WAIT状态套接字重新使用

《TIME_WAIT相关知识》里边有相关理论知识。 《TIME_WAIT状态TCP连接导致套接字无法重用实验》有相关实验。 现代Linux的TCP协议栈已经做了许多升级&#xff0c;所以可以让我们直接重用TIME_WAIT状态套接字而不会引起问题。下边是优化的内容&#xff1a; 1.新连接的SYN告知序列…

在Spring Boot中隔离@Async异步任务的线程池

在异步任务执行的时候&#xff0c;我们知道其背后都有一个线程池来执行任务&#xff0c;但是为了控制异步任务的并发不影响到应用的正常运作&#xff0c;我们需要对线程池做好相关的配置&#xff0c;以防资源过度使用。这个时候我们就考虑将线程池进行隔离了。 那么我们为啥要…

C语言生成随机数的方法

文章目录 一、rand函数&#xff1a;二、srand函数&#xff1a;三、time函数&#xff1a;四、生成范围随机数公式&#xff1a;五、实战练习&#xff1a;总结 一、rand函数&#xff1a; int rand( void ); 我们先来看一下rand函数的基本信息&#xff1a; rand函数根据种子生成随…