您的当前位置:首页正文

单片机 c语言led渐亮,51单片机由软件实现的PWM控的LED渐亮、渐暗效果

2024-11-28 来源:个人技术集锦

sbit LEDR= P2 ^ 5;     //P2.0引脚上接了一个红的发光二极管

sbit LEDG = P2 ^ 6;    //P2.1引脚上接了一个绿的发光二极管

void delay (unsigned char d){    // 延时功能函数--由d决定延时长度

unsigned char i;

while( d-- != 0)

{

for(i = 0; i < 8; i++);

}

}

void delay1 (unsigned int d){    // 延时功能函数--由d决定延时长度

unsigned char i;

while( d-- != 0)

{

for(i = 0; i < 8; i++);

}

}

//Speed 1~9

//Direct 1\0

void Lighter( unsigned char Speed, bit Direct)

{

unsigned char Delay_Length, Loop_Time;    // a控制延时长度 b控制循环周期

LEDR= Direct;

Delay_Length = 0x00;

for ( Loop_Time=0; Loop_Time<254; Loop_Time++)

{

// 定义半周期循环时间(次数)

Delay_Length += Speed;

if (Delay_Length > 250)

break;

delay (Delay_Length);    // 延时长度随a而改变

LEDR= Direct;

Delay_Length = ~Delay_Length;     // a值取反 决定灯灭时的占空比

delay (Delay_Length);

LEDR= ~Direct;

Delay_Length = ~Delay_Length;     // a值取反 使a回到原值继续循环

}

}

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

主程序:渐变式LED闪烁

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

void main (void)

{      // 彩灯主函数 实现彩灯的显示

while (1)

{

delay1 (60000);

Lighter(9, 0);

delay1 (60000);

}

}

显示全文