产品概述

单片机控制led灯电路图 单片机常用电路3-按键检测,LED驱动电路

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

单片机常用电路3-按键检测、LED驱动电路

在单片机入门学习中,最简单、最常见的两种入门元器件大概就是按键和LED了,围绕按键和LED可以基本上把单片机的功能学很多,例如按键可以用来学习单片机的端口输入功能、端口外部中断功能、定时/计数器的计数功能等等;而LED可以用来学习单片机的端口输出功能,定时/计数器的定时功能、PWM功能,位操作功能,电压比较器功能,以及单片机多种操作控制、流程指示等功能。

现在我们就来简单了解一下按键检测和LED驱动电路。

1、按键检测电路

图1是按键检测电路。该电路图包含两种电路:

图1 按键检测电路

一种是连接按键的单片机端口在按键未按下时,处于低电平状态,当按键按下后,单片机端口变为高电平,也就是说,当单片机端口检测到端口电平由低电平变为高电平后,可以判断为按键按下。

另一种是连接按键的单片机端口在按键未按下时,处于高电平状态,当按键按下后,单片机端口变为低电平,也就是说,当单片机端口检测到端口电平由高电平变为低电平后,可以判断为按键按下。

这种按键检测电路的缺点是没有防抖动功能,所以要实现消抖功能,必须通过单片机软件编程实现。

另外,电路中的电阻的作用是为了保护端口,避免电源直接连到单片机端口导致的烧毁端口情况发生。

2、带消抖功能的按键检测电路

图2是带消抖功能的按键检测电路,同样的,带消抖功能的按键检测电路也分为按键平时处于高电平还是低电平两种。我们以按键未按下时处于高电平,按下后处于低电平为例来了解一下电路原理。

图2 硬件消抖电路

当按键断开时,电源电压通过电阻对电容充电,电容上的电压与电源电压相等,当按键按下时,由于按键内阻很小,电容通过按键迅速放电,按键两端电压迅速降到接近0V,单片机输入端为低电平,在按键按下时,由于抖动导致按键会短时断开,电源电压经电阻对电容充电,由于电阻的阻值较大,短时间内电容充电量很少,所以电容两端电压基本不变,单片机输入端的电平也基本保持不变,从而保证了按键抖动时仍可以使单片机输入端保持稳定的低电平信号。

这种硬件消抖电路需要根据实际情况选择R和C的值,具体请参考我在头条里的文章《基于proteus的51单片机开发实例(7)--按键的检测》。

3、简单的LED驱动电路

图3是一种简单的LED驱动电路。这两个电路一个是LED发光时,电流经过LED流到单片机端口,俗称“灌电流”驱动LED,另一种是LED发光时,电流经过单片机端口流到地,俗称“拉电流”驱动LED。

图3 LED驱动电路

这种电路的缺点是:单片机的驱动能力有限,一般单片机端口驱动电流能力在10mA以下,并且单片机总的驱动电流一般不超过100mA。所以当单片机电路中电路模块较多时,可能会导致驱动能力不足,因此这种方式只适合在学习和实验时,不适合用在单片机产品中。

4、通用LED驱动电路

图4,图5是常用的LED驱动电路。在这两个电路中,单片机端口实际上相当于开关的功能,当单片机输出高(或者低)电平时,LED点亮(或者熄灭);当单片机输出低(或者高)电平时,LED熄灭(或者点亮),驱动LED发光所需的电流由三极管提供,单片机端口只负责控制三极管的导通或者截止就可以了。

图4 LED驱动电路1

图5 LED驱动电路2

5、LED驱动芯片

现在有很多专用的LED驱动芯片,可以直接驱动多路LED,至于LED驱动芯片的电路,每种芯片有各自特点,这里就不多说了。

51单片机之LED灯

实验要求

LED灯以一秒的频率闪烁

众所众知,软件编程的第一个小程序就是打印“hello world”,同样硬件的编程也有他的第一个小程序,那就是LED灯的点亮,如果不做一个这样的小实验,学再多理论也是纸上谈兵。下面我们来实现LED灯闪烁的实验。

物料清单

电容

12M晶振

点阵开关

电阻

LED灯

AT89C52单片机(和51效果一样)

原理图

为了更形象的讲解LED灯闪烁的实验,笔者特意画了LED闪烁的原理图,他们的作用如下:

18脚和19脚接的是12M晶振系统,它是系统时序的由来;

9脚所接的是复位系统,当我们按下按键之后,系统会从程序最开始的代码开始运行;

P0.0接了一个电阻和一个LED灯,为什么接这个电阻呢?如果不加电阻,电流过大可能会烧坏LED灯,所以LED灯使用的时候一般都加限流电阻。

复位电路和晶振电路是单片机的固定外围电路,数据手册上已经给出,不需要我们花心思研究。

程序

我们要做的是让单片机控制LED灯以一秒的频率闪烁,这就避免不了写程序,看看现在的硬件产品吧,哪一个硬件产品里面没有集成电路,又有哪一个没有代码的“参与”。所以不要说硬件工程师就只做硬件,写单片机代码也是硬件工程师分内的事。下面把完整代码分享给大家。

#include <reg51.h>

void delay(void)

void main()

{

while(1)

{

P0=0x01;

delay();

P0=0x01;

}

void delay(void)

{

unsigned char a,b,c;

for(c=167;c>0;c--)

for(b=171;b>0;b--)

for(a=16;a>0;a--);

_nop_;

}

}

delay()函数是由单片机小精灵生成的,如果我们自己计算的话太麻烦了。

实验现象

视频加载中...

最后

我们实验的当中只用到了一个LED灯,所以直接用单片机驱动也可以,但是单片机的总的驱动电流就很小,如果LED灯多了的话,51单片机是驱动不了的,这时候就需要外加电源和开关管来驱动LED。

相关问答

单片机 外部中断 控制led灯 闪烁怎么插线?

单片机外部中断控制led灯闪烁插线的方法:51单片机的IO口接按键,实现外部触发(外部中断,高低电平,上下降沿),触发后再通过IO控制LED的开关即可。单片机外部中...

单片机 C51语言如何实现用P2口 控制 8只 LED 左循环流水灯亮?

soeasy。P2=0x01,然后P2=_cror_(P2,1);delayMS(uintx);这就行了soeasy。P2=0x01,然后P2=_cror_(P2,1);delayMS(uintx)...

如何设计一个 单片机 可控的循环流水灯?

首先在硬件方面,我们使用了最经典的选型用AT89S51单片机作为主控芯片,LED电路选用共阳极接法:8路红色LED灯正极接5V电源、各路串联一个限流电阻,保护发光二...

怎样用 单片机控制 两个 LED 同时亮?

很简单。一个LED,正极接IO引脚,负极接地。即可实现:IO口输出1时,灯亮。另一个LED,正极接正电源,负极接IO引脚。即可实现:IO口输出0时,灯亮。注...

单片机 三个按键独立 控制 三个 led灯 汇编语言?

51单片机的IO口接按键,实现外部触发(外部中断,高低电平,上下降沿),触发后再通过IO控制LED的开关即可。51单片机的IO口接按键,实现外部触发(外部中断,高低电平...

急! 单片机 如何驱动RGB三色 LED灯 来合成各种颜色的?通过PWM脉宽调制,还是通过驱动芯片来实现?

驱动芯片也是通过调节三色灯的PWM脉宽进而调节每个LED灯的亮度驱动芯片也是通过调节三色灯的PWM脉宽进而调节每个LED灯的亮度

keil软件用 单片机控制 8个 LED 流水灯来回点亮(C语言程序)?

//==============================//8个LED闪烁//-------------------------------------#include//========...

关于 单片机 通过开关三极管驱动 LED ?

现在的单片机IO口灌电流都是在100mA左右,其实你可以直接接;如果没有速度要求的话,用最简单8050NPN三极管就可以了,三极管的接法是IO口串联一个基极电阻Rb后...

51 单片机 c语言编程 led灯 1,3,5,7和2,4,6,8交替闪烁?

假设你的8个LED是通过低电平来点亮,即LED负极连接P口,正极连接电源:1.当1,3,5,7亮时,我们的P2口状态以二进制表示应该是10101010,也就是0xAA,程序应该写成...

为什么 单片机LED灯 有p1口和p2口?

单片机LED灯有P1口和P2口是因为单片机的I/O口有限,为了连接多个LED灯,需要使用多个I/O口。P1口和P2口是8051单片机中常用的两个8位I/O口,它们可以分别控制8个L...

猜你喜欢