PWM控制LED灯的亮度程序(C 语言)

控制/MCU

1811人已加入

描述

控制LED灯的亮度,通过调节电压的方式可以达到,但不理想,而且可调的范围很小,电压稍高,还容易把LED烧毁,唯一可行的方法就是通过PWM(脉冲宽度调节)来控制其亮度。

以下程序是在单片机中控制LED.。。

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

// PWM控制LED发光亮度

// 作者:勇

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

#include

sbit speaker=P2^1;//定义喇叭控制引脚

sbit up=P1^5; //定义UP键

sbit down=P1^6; //定义DOWN键

static unsigned char pwm;

unsigned char t;

main ()

{

void delay (unsigned char ms);

void beep (void);

void alarm_delay (void);

TMOD=0X21;

ET0=1;

ET1=1;

EA=1;

TH0=0XFC; //定时器0,定时1ms

TL0=0X18;

TH1=0X9C; //定时器1,定时0.1ms

TL1=0X00;

TR0=1;

PT1=1; //定义定时器1优先中断

pwm=0x9c;

while (1)

{

do

{

pwm++;

delay (10);

if (pwm==0xff) beep();

}

while (pwm!=0xff);

do

{

pwm--;

delay (10);

if (pwm==0x01) beep ();

}

while (pwm!=0x01);

}

}

void timer0 (void) interrupt 1 //定义定时器0

{

TH0=0XFC;

TL0=0X18;

TR1=1;

TH1=pwm;

P0=0X00;

}

void timer1(void) interrupt 3 //定义定时器1

{

P0=0XFF;

TR1=0;

}

void delay (unsigned char ms)//延时

{

unsigned char i=120;

while (ms--)

{

while (i--)

{}

}

}

void beep (void)//报警

{

unsigned char b;

for (b=40;b》=2;b--)

{speaker=!speaker;

alarm_delay ();

}

speaker=1;

}

void alarm_delay (void) //报警延时

{

unsigned char time;

for (time=0;time《120;time++)

{}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分