PWM——用按键控制LED的亮度

来源:本站
导读:目前正在解读《PWM——用按键控制LED的亮度》的相关信息,《PWM——用按键控制LED的亮度》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PWM——用按键控制LED的亮度》的详细说明。
简介:利用 LED 也能通过亮度来表现出 PWM 参数的变化,用实物进行测试,效果很好,但是用 PROTEUS 进行仿真试验,却只是看到闪烁的厉害,基本上看不出亮度的变化。

以前写过一篇关于PWM的博文,已经有一年了,链接如下:

http://www.ippipp.com/article/id/50651。

文中使用了示波器来显示不同占空比的波形。

其实,利用LED也能通过亮度来表现出PWM参数的变化,用实物进行测试,效果很好,但是用PROTEUS进行仿真试验,却只是看到闪烁的厉害,基本上看不出亮度的变化。

近来发现,加上一个大电容,就可以减弱LED的闪烁,亮度就能够稳定一些,这样一来,就可以用PROTEUS软件直接观察亮度的变化了。

电路见下图。图中的大电容(C6)的容量是4700uF,这个是可以随便调整的,实际的电路就不需要它了。

图中的占空比参数是10,LED(D1)的显示为“半亮”状态。

PWM——用按键控制LED的亮度

C语言的程序,在去年就发表出来了,可见上面的链接,现在略加改动如下:

#include<reg52.h>

unsignedchara,b;

sbitK1=P3^2;//定义两个调整占空比的按键

sbitK2=P3^3;

//------------------------------------------

voiddelay(unsignedinti)

{

unsignedcharj;

while(i--)for(j=0;j<60;j++);

}

//------------------------------------------

voidmain()

{

TMOD=0x01;//T0定时方式1

TH0=(65536-500)/256;//500us@12MHz

TL0=(65536-500)%256;

TR0=1;

ET0=1;

EA=1;

a=0;

b=10;

while(1){

if(!K1){delay(20);if(!K1){b++;if(b>19)b=19;while(!K1);}}

if(!K2){delay(20);if(!K2){b--;if(b<1)b=1;while(!K2);}}

//以上两行是检查按键、延时消抖、修改占空比、等待按键释放,b=1~19

P0=((b/10)<<4)+b%10;//显示占空比等级

}

}

//------------------------------------------

voidtime0()interrupt1

{

TL0=(65536-493)%256;//补偿中断进入时间

TH0=(65536-493)/256;//500us@12MHz

a--;//a=1~20

if(a==0){a=20;P2=0;}//周期=20*500us

if(a<=b)P2=255;//输出到示波器

P1=~P2;//输出到LED,低电平发光

}

//------------------------------------------

这个程序,PWM的周期比去年的短了一些;去年是应网友的要求,设计成1s,有些偏长,不太实用。

这次也不用外部中断来输入按键了,改用查询按键的方法。

当使用按键进行占空比调整的时候,LED可以显示出来不同的亮度。几幅截屏的画面如下:

PWM——用按键控制LED的亮度

PWM——用按键控制LED的亮度

当PWM参数稍小时,亮度有些不足,这可以适当减小一些限流电阻的阻值进行弥补。

用来显示PWM的LED,其中的电流是间断的,所以,它的限流电阻可以比平常时小一些,100欧左右,是经验数据。

制作实物电路的时候,大电容就不需要了,不用花钱去买了,呵呵。

提醒:《PWM——用按键控制LED的亮度》最后刷新时间 2024-03-14 00:57:34,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PWM——用按键控制LED的亮度》该内容的真实性请自行鉴别。