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

PWM控制LED灯的亮度程序(C 语言),第1张

控制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++)

{}

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2640564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存