微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机由软件实现的PWM控的LED渐亮、渐暗效果

51单片机由软件实现的PWM控的LED渐亮、渐暗效果

时间:11-18 来源:互联网 点击:
#include

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

}

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top