产品概述

单片机led灭 51单片机中独立按键控制LED灯亮灭

小编 2024-11-24 产品概述 23 0

51单片机中独立按键控制LED灯亮灭

独立摁键的工作原理是电流脉冲;

独立摁键的电流脉冲原理

由于摁键机械点的弹性作用, 按键开关在闭合时不会马上稳定的接通, 在断开时也不会一下子断开, 因而在闭合和断开的瞬间均伴随着一连串的抖动。 抖动时间的长短由按键的机械特性决定的, 一般为 5ms 到 10ms。,需要使用delay函数来消抖。

实际使用过程中,常将摁键电路串联 引入51单片机的P1输入端 来控制电路。

独立摁键的连线示意图

如图示摁键,使用K1连接P1.0,控制P0.0的输出来控制LED开启。

函数:

编辑keypress摁键函数,控制led的亮灭;

编辑delay函数消抖,内嵌到keypress函数;

主函数调用keypress函数代码:

#include "reg52.h"

sbit led=P0^0;

sbit key=P1^0;

unsigned int u16;

unsigned char u8;

void delay(unsigned t)

{ while(t--);}

void keypress()

{while(1)

{ if(key==0)

{

delay(1000); //消抖函数

if(key==0)

{led=~led;}

}

while(!key); //检测按键是否松开,如果摁键未松开,则key==0,继续上述循环

}

}

void main()

{ led=0;

while(1)

{keypress();}

}

现象:

视频加载中...

用单片机仿真软件Proteus实现按钮控制LED亮灭

编程实现用LED指示单个按钮的状态

步骤:

(1)编程实现:按下按钮S1 发光二极管发光,放开按钮发光二极管熄灭;

(2)保存到“单片机练习三”文件夹中,命名为“LED指示按钮状态”;

(3)用仿真软件设计原理图,并进行仿真;

(4)把仿真结果保存到“单片机练习三”文件夹中,命名为“LED指示按钮状态”。

参考程序一:

ORG 0000H

START: JB P1.0, LOOP ;P1.0 口为低电平时,执行下一条指令,即执行CLR P0.0

CLR P0.0 ;P1.0 口为高电平时,跳转到LOOP 开头的指令,即执行

SETB P0.0

LJMP START

LOOP: SETB P0.0 ;P0.0 口输出高电平,即二极管熄灭

LJMP START

END

程序参考二:

/***********************************************************************************************************************************************

按一下灯亮,按一下灯灭

***********************************************************************************************************************************************/

#include<reg52.h>

sbit S1=P1^0; //将S1位定义为P1^0,检测独立按键

sbit led0=P0^0; //将led0定义为P0.0口的LED

/***********************************************************************************************************************************************

延时函数

***********************************************************************************************************************************************/

void delay(void)

{

unsigned int i;

for(i=5000;i>0;i--)

;

}

/***********************************************************************************************************************************************

主函数

***********************************************************************************************************************************************/

void main(void)

{

while(1)

{

if(S1==0) //判断是否有键按下

{

delay(); //有键按下,延时去抖,真正应用时要少用这种延时,占用时间,用定时器延时或一个寄存器循环检测10多次按键

if(F0==0) //用F0标志位判断键按下是否已经处理,因刚学C语言没多久,

//不知道怎么定义RAM能位寻址的寄存器,先用F0,按键多的话,一个F0不够用

{

F0=1; //F0置1,表示这次按键按下已处理

led0=~led0; //将LED亮灭状态取反

}

}

else //S1=1说明按键释放

{

F0=0; //F0清零,清按键已处理标志

}

}

}

相关问答

51 单片机 定时器中断控制 led 灯亮 ?

1.在设置好TCON(IT0/1=0/1)寄存器,IE寄存器后当设定的外部中断电平被拉低时会执行中断程序,中断程序执行完毕后回到原程序执行处继续执行*2.外部中断TCON设...

单片机 编写程序,让 LED 灯闪烁三次后熄 ?

单片机LED灯闪烁三次的代码应该能写吧,用for循环3次。然后停下,就是不再执行任何代码了,有一个死循环语句,while(1);这个就行了。单片机LED灯闪烁三次的代...

20 单片机 79f3212触摸开关控制 led 怎么写程序?

是代表led灯亮或者灭的一个变量。当你按下开关后,s1==0,就执行led=!led这条语句。led=!led的意思就是取反的意思,即原来led灯亮的话执行...led应该是一个变...

按键控制 led 灯亮 怎么解决?_住范儿家装官网

要编界面可以用VC来编写,要控制单片机可以通过串口通信来实现。通俗一点说就是,计算机通过串口发送一个命令,如A5000000,单片机读SBUF后,判断收...

求一个51 单片机 的程序:一个按键控制 led 灯闪烁,就是按一下灯闪,再按灯就 了?

LEDBITP1.0KEYBITP1.1ORG0000HLJMPMAINORG0030HMAIN:CLR00HMAIN1:JBKEY,LOOPJNBKEY,$CPL00H...

51 单片机 C语言 如何写代码。控制2个 LED 的亮和

[最佳回答]比如你的8个灯连在P0口,如果是阴极的你只要先定义sbitP0^0=LED0;.....一定定义下去然后再定义一个按钮比如P1.1sbitP1^1=key;代码里写12...

单片机 控制 LED 灯1秒钟闪烁一次程序(采用中断方式)?

你是想中断服务里读按键吧,硬件上提几点建议。1,按键加个104的去抖电容。2,中断口加上拉电阻。3,不用外部中断,采用定时器中断,在定时器中断服务程序中...

单片机 题十万火急只有半个小时~!1.使用80C51芯片,要求:(1)...

[最佳回答]去我的博客上看吧,至少前面的一个好弄,有差不多的,后面那要求,你要看懂了才能写

用51 单片机 实现对一个 led 灯循环亮 的控制,分别用延时和中断两种方式实现,c需要编程?

什么叫延时,延时不就是中断么。内置的计时器,计时,计时完成产生中断,完成延时。什么叫延时,延时不就是中断么。内置的计时器,计时,计时完成产生中断,完成延时。

单片机 一个IO口如何控制两颗发光二极管( LED )?

单片机的一个GPIO只能输出0和1两种状态,如果控制一个LED灯的话,可以实现LED的亮灭控制。两个LED具有四个状态:1)同时亮;2)同时灭;3)一个亮一个灭;4)一个灭...单...

猜你喜欢