pwm调光:
1.初始化led小灯
各个芯片及开发板存在差异,初始化程序大同小异,现在以CC2530芯片为例(CC2530其实就是C51的加强版)
#define LED1 P1_0 // P1.0口控制LED1
void InitLed(void)
{
P1DIR |= 0x01; //P1.0定义为输出
LED1 = 1; //使LED1灯上电默认为熄灭
}
2.定义延迟函数
由于各开发板的晶振频率不一致,所以相应的软件延迟也不一致,我是用的晶振频率是16Mhz
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<535; j++);
}
3.设置led灯的亮度
void LedEvent(uint bright, int cycle)
{
LED1 = 0; //点亮LED
Delay(bright); //延时,表示LED亮的时间
LED1 = 1; //LED熄灭
Delay(cycle - bright); //延时,表示LED熄灭的时间
}
4.呼吸灯测试
void main(void)
{
unsigned int bright;//定义周期并赋值
InitLed();
while (1) //主循环
{
//LED灯逐渐变亮,bright表示LED1低电平时间,循环从1累加到1500的值
for(bright=1; bright<1500; bright++)
LedEvent(bright, 1500);
LED1 = 0;
//逐渐变暗
for(bright=1500-1; bright>0; bright--)
LedEvent(bright, 1500);
DelayMS(2000);
}
}