51单片机按键控制LED灯(二)

卫衣 / 双肩包 / T 恤/羽绒服等任选,下单送 CSDN 年卡 程序员周边任选一款实物,直接赠送 CSDN 会员年卡+ Coding Plan,写代码学习装备一起拿下 立即抢购

目录

一、独立按键控制LED灯

1、独立按键

(1)按键的介绍

(2)原理

  (3)独立按键模块介绍

(4)51单片机引脚介绍

(5)主要实现的任务

二、独立按键控制LED灯亮灭

1、框架思路

 2、代码的实现

三、按键的抖动

1、按键抖动

 2、抖动原理

3、消抖

4、加入消抖实现松开按键点亮LED灯

 四、独立按键控制LED显示二进制

五、独立按键控制LED移位

1、位移方法

 2、代码的实现


一、独立按键控制LED灯

1、独立按键

(1)按键的介绍

(2)原理

(1)轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开

 (3)独立按键模块介绍

由上面两张图可以知道,独立按键是接在MCU的P3.0口到P3.3口的;

可以看到,独立按键的右端是接地的;这里需要注意,独立按键跟LED灯的原理有区别,LED灯是通过高低电平通电,进而使灯亮;而独立按键不一样,独立按键的一端接地,独立按键就是一个开关;以K1为例,K1右端是GND,左端是RXD,我们知道,单片机在刚上电时,所有i/o口默认都是高电平的;所以当K1按键没有按下时,RXD是高电平,但当K1按键按下时,电路进行了连通,RXD接通了GND,所以RXD此时变成了低电平。在寄存器中写入一个值,该值就会同步到对应的i/o口上;其实反之也成立,即通过寄存器可以读到i/o口的状态,是高电平还是低电平。我们通过给寄存器赋值控制我们单片机操作。

当按键没有按下时,寄存器读到的该i/o的状态就是高电平(即1);反之,当按键按下时,寄存器就可以读到该i/o口的状态为低电平(即0)

(4)51单片机引脚介绍

51单片机的引脚图

引脚说明 

1、主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源
GND(Pin20):接地线

2、外接晶振引脚(2根)
XTAL1(Pin19):片内振荡电路的输入端
XTAL2(Pin20):片内振荡电路的输出端

3、控制引脚(4根)
RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):地址锁存允许信号
PSEN(Pin29):外部存储器读选通信号
EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

4、可编程输入/输出引脚(32根)
51单片机有4组8位的可编程I/O口,分别为P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7。
P1口(Pin1~Pin8)     :8位准双向I/O口线,名称为P1.0~P1.7。 
P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 。
P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7

所以我们在操作独立按键的时候连接到MC端的接口接在了可编程输入\输出引脚的I/O口上,默认为高电平。  

(5)主要实现的任务

 按下之后。LED灯亮,松开之后灭

 按下之后没反应,松手之后,LED灯亮;再按一下,松手,LED灭。

 按下松开,按下松开,灯不停地左移或者右移。

 按下松开,按下松开,使八个LED实现二进制递增地亮。

二、独立按键控制LED灯亮灭

(按下后LED灯亮,松手后LED灯灭)

1、框架思路

在实现LED灯点亮的实验中,我们通过控制寄存器来实现的,寄存器由8位为一组,我们给一组的数据来操作整个LED灯的亮灭

在使用独立按键的时候我们控制一组的数据会很麻烦, 我们可以通过控制一位LED灯的实现

这个就是我们控制八位为一体的P2口

 sbit,位寄存器,我们操作这些名字就可以单独操作他们每一位

 2、代码的实现

用P2_0=0 代替P2=0xFE,P2_0=0表示最低位为低电平,其余保持不变,同样可以点亮最低位的灯

 第一条语句表示按下点亮,

第二条语句松开时熄灭

 如图所示独立按键的一边接到了我们的MCU上我们可以直接控制这个寄存器

 

 P3_1对应K1按键,按下K1按键,灯亮,松手灯熄灭

在这个程序里面要在while里面进行循环,如果我们写在了外面,就相当于我们进行了一次,不在继续执行 

三、按键的抖动

1、按键抖动

 2、抖动原理

 (1)、没有按键按下的时候,它是高电平(1);

 (2)、按下按键之后,会变成0。因为是机械触点,会上下抖动,抖动时间大概是5~10ms,不同开关抖动的时间是不一样的。

 (3)、当抖动消失,它就会进入一个稳定的低电平状态(0)。

松开手之后,进入后半段,也会产生抖动,不会突然变成1,也会抖动5~10ms。

  (4)、最终稳定地变成1。

抖动会对按键的检测进行一些干扰,所以我们要对进行消抖

3、消抖

通过写程序进行消抖,我们只要在按下按键的时候,我们加入一个延时函数,松开时加入一个延时函数就可以了

4、加入消抖实现松开按键点亮LED灯

 四、独立按键控制LED显示二进制

可以自定义一个变量,对变量进行操作,最后把变量送给P2口。可以定义“unsigned char”---无符号字符型(0~255的八位二进制数据),正好和P2口,和寄存器也保持一致,都是八位

五、独立按键控制LED移位

1、位移方法

运用位移运算符实现位移

 2、代码的实现

51单片机-独立按键控制LED 首先我们要懂,任何代码的表示方式都基于我们的原理图;也就是说原理图上显示LED的引脚接到芯片P3_1上,所以我们的循环语句用到 P3_1 , p3_1==0的意思引脚工作状态下,也就是我们按下第一个独立按键的时候,默认不按第一个独立按键的时候,就是if语句的否则状态,也就是else,所有都是灭的状态;对于机械开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个开关在闭合时不会马上稳点的接通,在断开时也不会一下子断开,所以在开关闭合及断开的瞬间会伴随一连串的抖动。P3_ 表示1位; 阅读详情

相关推荐

51单片机实验3-中断控制LED(单一外部中断控制LED,两个外部中断控制LED,交通管制路口)

51单片机实验3-中断控制LED(单一外部中断控制LED,两个外部中断控制LED,交通管制路口)

artly1的博客 1万+

51 单片机[3]:独立按键控制LED

如图所示,独立按键在开发板的左下角,K1~K4。独立按键是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。独立按键在开发板原理图中的样子如下图所示。

茴香豆的茴 4720

51单片机外部中断实现对led的简单控制

(1)按键K1按下D1闪亮三次(2)按键K2按下D2亮,按键释放则熄灭。

2303_77567695的博客 2917

51单片机】独立按键控制LED(四种形式)

轻触按键:相当于是一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 英文:independent press button 了解:独立按键具有四个"头",独立按键主要有四个部分:1、底座,2、金属弹片(这个金属弹片是鼓起来的,当你按下去的时候它会变平,松手的时候又会鼓起来的),3、就是按键的头,4、就是金属的盖子。那么在相同的两个引脚当中其实它就是内部连接起来的金属片,无论你按不按下去,它前后的两个引脚都是连接起来的。就是始终都是具有导通性质的,

"謓泽"正在路上朝着"攻城狮"方向"前进四"! 7万+

51单片机学习日记:独立按键控制LED()

独立按键控制LED实现LED进制和位移

2301_80548884的博客 768

单片机实验——外部中断实验

单片机实验——外部中断实验

m0_69939889的博客 2389

51单片机:独立按键控制LED

1. 独立按键控制LED状态 亮灭实验完成后,就可以控制LED状态,首先我们知道由于机械结构的弹性作用,按键开关在闭合时不会一瞬间稳定的接通,在断开时,也不会一下子断开。所以就得需要程序消抖,也就是适当延时,程序如下 #include"reg52.h" //定义LED sbit LED1 = P2^0; sbit LED2 = P2^1; sbit LED3 = P2^2; sbit LED4 = P2^3; sbit LED5 = P2^4; sbit LED6 = P2^5; ...

weixin_52300845的博客 2万+

51单片机中断控制LED亮灭

51单片机中断控制LED亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED sbit k3=P3^2;//位定义按键 void delay()//延时函数 { unsigned char a,b; for(a=0;a<200;a++) for(b=0;b<200;b++); } void Int0()//使用中断所做的处理函数 { IT0=1; EX0=1; EA=1; } void main()//主函数 {

基极向上的三极管的博客 2万+

51单片机-独立按键控制LED

51单片机,学习,交流......

李11的博客 9923

51单片机按键控制流水

51单片机按键控制流水

weixin_56994997的博客 9916

手机蓝牙控制51单片机实现对led的开关

根据蓝牙模块通过手机app实现对51单片机led控制

weixin_49050407的博客 1万+

51单片机 4个独立按键控制LED (protues仿真)(C语言版)

51单片机 4个独立按键控制LED (protues仿真)(C语言版) 一、思路及相关问题 1、逻辑思路: 当按下key1时 led1亮起来 因为按下去具有瞬时性不用while,用if语句,当松开时,用while(!key1) ,函数调用。 先在脑海里想象它的大致运行过程,其次在仿真软件protues上摆好元器件并连接,最后用keil4写对应代码。 需注意keil4软件上的设置如波特率,添加文件...

qq_45420694的博客 5万+

4个按键控制51单片机上的4个LED

51单片机4个按键控制4盏LED

cainiao_jiangrong的博客 3万+

51单片机实现按键控制LED亮灭

51单片机实现按键控制LED亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED sbit k1=P3^1;//位定义按键 void delay()//延时函数 { unsigned char a,b; for(a=0;a<200;a++) for(b=0;b<200;b++); } void key()//按键处理函数 { if(k1==0)//判断按键是否按下(按键按下时k=0) { delay();//如果按

基极向上的三极管的博客 4万+

51单片机(三)独立按键控制LED

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

AnChenliang_1002的博客 8351

01-51单片机LED与独立按键

单片机,英文Micro Controller Unit,简称MCU。其内部集成了CPU、RAM、ROM、定时器、中断系统、通讯接口等一系列电脑的常用硬件功能。我们可以依靠单片机的传感器采集相应的数据,可以通过 CPU 处理数据,还可以完成对硬件设备,如:LED,蜂鸣器,电机等的控制单片机相当于一台微型计算机,相比于我们平时使用的电脑,有优势也有劣势:缺点:在性能上,与计算机相差甚远,处理数据的能力要远低于计算机;

qq_63958145的博客 2280

51单片机按键控制LED的亮灭

通过两个按键控制2个lded的灭亮 按一下亮在按一下灭 #include <reg52.h> //位绑定操作 sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; sbit LED1 = P0^0; sbit LED2 = P0^1; //按键绑定 sbit KEY1 = P2^4; sbit KEY2 = P2^5; sbit KEYOUT1 =

君莫笑_的博客 2万+

51单片机】独立按键控制LED

不同于只用代码控制,这次我们要再加上独立按键一同控制LED

2301_78636079的博客 3625

51单片机】独立按键控制LED(四种形式)_单片机按键控制led亮灭

加减没什么好说的,乘法和除法注意一下符号!以及除法是取整的不是四舍五入按照数学的运算来的,比方举个例子:五除以,按照数学的方式是:2.5,在C语言当中是2取最小整数,当然这是数据类型当中是这个样子。也有单精度浮点型(float)和双精度浮点型(double)它们依旧是等于2.5的。那么取余(%)是什么意思呢?其实很简单就是还是以五除以的话在小学当中是2…1,那么这个其实就是5%2=1了。再比方说102/10 = 10…2 那么102%10 = 2,所以除号与取余就是这个意思了。

2401_85015332的博客 2441
上一篇: 51单片机LED灯知识总结 (一)
下一篇: 51单片机数码管的显示(三)
躺平救援队
博客等级 码龄4年 215粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值