如休利用51
单片机的来产生PWM波,用以控制led的亮度变化,在网上看过一些程序,有些地方不大明白,程序是这样的:
#include<reg52.h>
unsigned char cycle,pwm;
sbit led=P1^0;
void delay(unsigned int cnt)
{
while(--cnt);
}
main()
{
bit flag;
TMOD=1;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
IE=0x82;
TR0=1;
cycle=10;
while(!flag)
{
delay(200000);
pwm++;
if(pwm==10)
flag=1;
}
while(flag)
{
delay(200000);
pwm--;
if(pwm==0)
flag=0;
}
}
void
tim()interrupt 1
{
unsigned char count;
TH0=(65536-100)/256;
TL0=(65536-100)%256;
count++;
if(count==pwm)////此处是什么意思呢?
{
led=1;
}
if(count==10)
{
count=0;
if(pwm!=0)///此处又是什么意思呢?
led=0;
}
}
感觉这个程序不是太好,因为烧到单片机观察到led虽然有亮度的变化,不过在由暗变的过程中有一个突然的跳跃,就是亮度一下子就上来了,请教高手指点迷津
是保持高低电平的时间,不过为什么要 用这样的语句呢?count与PWM之间有什么关系吗?如果没有的话如何实现二极管的明暗的渐变过程呢?
一周热门 更多>