首先任意选取一个带有ledIO口进行位定义,大致使用延时函数来实现PWM
源代码(C语言)
#include
#include
#include
#define u16 unsigned int
#define u8 unsigned char
sbit PWM=P2^0;
void Delay_us(u16 i)
{
u16 j,k;//这里j一定要定义成u16,u8只到256,灯会闪一下就不动了,k定义成u8可以省点空间,因为整个程序代码就几行,也就随便定义
for(j=0;j for(k=0;k<9;k++);
}
void main()
{
u8 i,j;
while(1)
{//由暗变亮
for(i=0;i<100;i++)//产生100个方波;100*100*110us,约1.1s
{
PWM=0;
Delay_us(i);//仔细算一算的话会发现方波的灯亮的段越来越大,下面的for循环正好与之相反,因为不是定时器可能时间不准确
PWM=1;
Delay_us(100-i);//产生一个方波100*110us
}//由亮变暗
for(j=0;j<100;j++)
{
PWM=1;
Delay_us(j);
PWM=0;
Delay_us(100-j);
}
PWM=1;
Delay_us(5000);//500ms
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)