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

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);

}

}

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值