设计与开发

单片机led 亮度 单片机开发系统学习LED亮度控制原理

小编 2024-10-10 设计与开发 23 0

单片机开发系统学习LED亮度控制原理

早期控制LED亮度的方法一般是采用模拟电路来调节LED的工作电流来实现,这种方式灵活性较差,很难达到智能控制的效果。本文将介绍如何通过一个普通MCS51单片机来产生PWM信号,达到调节LED的亮度的目的。

一、硬件的简单介绍:

该实验在“ME300B型51/AVR单片机学习开发系统”上完成(本刊2005年第11期和2006年第1期上分别有ME300B的功能与使用介绍),实验中用到了开发系统上的8个发光二极管、独立按键和蜂鸣器,现将这三部分的电路工作原理进行简单的介绍:

发光二极管驱动电路

ME300B上的8个发光二极管接在单片机的P0端口上。由于51系列单片机的P0端口输出高电平时的推电流能力弱,而输出低电平时的灌电流能力强,所以ME300B开发板上的8个发光二极管设计成输出低电平时点亮,输出高电平时熄灭,如图1所示。

图1 发光二极管驱动电路

独立键盘电路

独立键盘是直接用I/O口线构成的单个按键电路。每个独立键盘单独占有一根I/O口线。

开发板设有4个独立按键,分别对应接于P1.4-P1.7端口上,如图2所示。

图2 独立键盘电路

在正常状况下,与键盘所连接的单片机I/O端口先被置为高电平,即“1”状态(输入状态)。当有键按下时,与之相连的单片机I/O端口将被拉成低电平,即“0”状态。所以直接依据每个I/O口线的状态来判断按键是否按下。

蜂鸣器驱动电路

图3 蜂鸣器驱动电路

由于ME300B开发系统使用的是交流蜂鸣器,不能使用直流电平控制方式,必须使用交变脉冲控制方式来驱动,这一点请大家注意。

二、PWM的工作原理

PWM 是脉冲宽度调制(Pulse Width Modulation)的简称,PWM是一种周期一定而高低电平的占空比可以调制的方波信号,当输出脉冲周期一定时,输出脉冲的占空比越大,相对应的输出有效电压越大。

图4 PWM波形图

在一个周期内的脉冲宽度(导通时间)为T1,周期为T,波形如图4所示。

则输出电压的平均值为: U=Vcc×T1/ T=αVcc

其中,α=T1/T(正脉冲的持续时间与脉冲周期的比值)称为占空比,α的变化范围为0≤α≤1,Vcc为电源电压。

当电源电压Vcc不变的情况下,输出电压的平均值U取决于占空比α的大小,改变α的大小就可以改变输出电压的平均值,这就是PWM的工作原理。

发光二极管的亮度与加在发光二极管两端的电压成比例,而发光二极管两端的电压与PWM信号的占空比成正比。因此,占空比越大,发光二极管越亮,当占空比α=1时,发光二极管的亮度最高。

三、 演示软件的编程方法

由于大多数51系列单片机没有PWM信号输出功能,所以我们在这里采用单片机定时器配合软件的方法来实现PWM信号的输出。

确定改变占空比的值的方法

有几种方法都可以改变占空比的值。

定宽调频法

保持T1不变,只改变T2,这样使周期(或频率)也随之改变。

调频调宽法

保持T2不变,而改变T1,这样使周期(或频率)也随之改变。

1.3 定频调宽法

周期T(或频率)保持不变,而同时改变T1和T2。

我们选用定频调宽的方法来改变占空比的值。

2、确定PWM的占空比输出方式

图5 P0口输出波形

由于P0所接的8个发光二极管是用低电平驱动,所以要将PWM的实际输出波形按图5所示的P0口输出波形进行编程,即PWM的占空比输出方式为反向。

演示软件的编程

用T0定时器设置PWM输出的周期(或频率),T0定时器设置成工作方式1,16位定时器。

T0中断服务子程序主要任务是确定PWM输出的周期(或频率)和控制定时器1中断。

T0定时器的定时常数是一个固定值,这样就确定PWM输出的周期(或频率)。

用T1定时器设置PWM输出的占空比,T1定时器设置成工作方式2, 8位定时器,自动载入设定值。

T1中断服务子程序主要任务是调节PWM输出的占空比(或脉宽)

T1定时器的定时常数是一个变化值,用K1键或K2键来设定。

T0、T1中断服务子程序如下:

;====================================================

;T0中断服务子程序 周期(或频率)

;控制定时器1中断

;====================================================

INTT0:

CLR TR1

MOV TH0,#0FCH ;1ms延时常数

MOV TL0,#066H ;周期调节

MOV TH1,PWM_NUM

SETB TR1

MOV PWM_OUT,#00H ;输出低电平

RETI

;====================================================

;T1中断服务子程序 脉宽(或占空比)

;控制PWM脉冲宽度

;====================================================

INTT1:

CLR TR1

MOV PWM_OUT,#0FFH ;输出高电平

RETI

PWM_OUT 为外接LED的控制端口,PWM_NUM为按键设置的T1定时器定时值的存放单元。

4、演示软件的功能

由两个按键K1、K2来调节P0口输出脉冲的占空比,该脉冲直接驱动P0口所接的8个发光二极管,随着占空比的不同发光二极管的亮度不同,当按下K1键(不要松手)发光二极管逐渐变暗,当有蜂鸣器响时,说明输出脉冲的占空比已经达到最小值,发光二极管的亮度已处在最暗的状态。

当按下K2键(不要松手)发光二极管逐渐变亮,当有蜂鸣器响时,说明输出脉冲的占空比已经达到最大值,发光二极管的亮度已处在最亮的状态。

作者: 山西太原 贵国庆

51单片机PWM控制LED的亮度仿真程序图谱 (附仿真文件+源代码)

51单片机PWM控制LED的亮度仿真程序图谱

因为项目比较简单,我就没有做实物,只是用了仿真来实现,大家最重要的是要弄懂原理。

原理:单片机输出PWM斩波,控制LED的亮度并在图谱上面显示出来

仿真开启

参考代码:

#include "reg51.h"

unsigned int cd,dd;

unsigned char cc,ee;

sbit LED=P2^0;

void led_int() interrupt 1 using 0

{

TH0=0xf1;

TL0=0xf1;

TR0=1;

dd++;

if(dd==11)

{

if((cc==0x50)&&(ee==0)){cd=0;}

if((cc==0)&&(ee==0x50)){cd=1;}

if(cd){cc++;ee--;}

else {cc--;ee++;}

dd=0;

}

}

void delay(unsigned int i)

{

unsigned int j;

while(i--)

{

for(j=0;j<0x20;j++);

}

}

void main()

{

cc=0;

ee=0x50;

TMOD=0x01;

TH0=0xf0;

TL0=0xf0 ;

EA=1;

ET0=1;

TR0=1;

while(1)

{

LED=0;

delay(ee);

LED=1;

delay(cc);

}

}

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,

如果需要 程序完整源代码和 设计文件,请在下方留言或者私信我,看到后会第一时间回复。

谢谢!

感谢你的阅读,希望您有所收获,喜欢请点赞评论加关注!

相关问答

单片机 stm8s003通过pwm控制8个 led 亮度 ?

软件模拟的pwm频率不会太高,否则中断太频繁没时间干其它任务了。可以开一个定时中断,时间为pwm周期的1/n,这样pwm的分辨率也就是1/n。软件模拟的pwm频率不会...

单片机 实验板上 led 灯不够亮,应该是程序的問題,可是该怎么改...

2、单片机工作电压设置问题(设低了呢?)3、这个IO口工作了么,有的默认是1点几...我的轰天炮Led-86+投影机开机不能进入系统,只显示安卓英文几个字母了,求解!!...

用51 单片机 控制,请问是否要外加电压电源已达到 亮度 ,是不是...

[最佳回答]单片机采用MSC-51或其兼容系列芯片,采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定.单片机的串口与列驱动器相连,用来显示数据.P1口...

led 灯可以调光吗?_灯具_装信通网

可调光,即能够根据客户要求,调整灯光亮度,从而影响室内光线明暗,衬托出不同的室内环境氛围。白炽灯和金卤灯在调光领域应用得比较广泛,但随着节能减...

led 灯不能调光?

当然可以调光了。不过,不同的LED灯,调光的方法是不一样的。比如,单片机控制LED的亮度,用的是PWM技术。LED显示屏能够显示不同的色彩,用的也是PWM技术对...

led 灯可以调光吗? - 137****7655 的回答 - 懂得

当然可以了。不过,不同的LED灯,调光的方法是不一样的。比如,单片机控制LED的亮度,用的是PWM技术。LED显示屏能够显示不同的色彩,用的也是PWM技术对...

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

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

LED 灯泡为什么不能调光?

LED灯泡不能调光是因为其发光原理不同于传统的白炽灯和荧光灯,LED灯是通过电压调节电流大小来控制亮度的,这和调光的原理并不相同。传统灯泡的亮度是通过电压...

led 灯具调光器的使用方法谁懂?-楼盘网

[最佳回答]调光系统介绍分段式开关调光利用墙上的普通电灯开关就能实现4段调光,第一次开为全亮,第二次开为60%亮度,第三次开为40%亮度,第四次开为20%亮度。这...

请问 led 灯可以调光吗?_其他_舒适100网触屏版

[回答]led灯在现在的生活里面是比较常见的,有了led灯我们就不用担心晚上的到来。led灯也是可以调光的,可以根据自己的需要把led灯的亮度调亮调暗。大家在...

猜你喜欢