1、原理图
2、源代码
//--包含你要使用的头文件--//
#include <reg51.h>
/****************************************************************************
数据类型宏定义
****************************************************************************/
#define uint unsigned int
#define uchar unsigned char
/****************************************************************************
PWM脚位定义
****************************************************************************/
sbit PWM0 = P1^0;
sbit PWM1 = P1^1;
sbit PWM2 = P1^2;
sbit S1 = P0^0;
/****************************************************************************
全局变量定义
****************************************************************************/
uchar cycle,high,low;
/*******************************************************************************
* 函 数 名 : 延时
* 函数功能 : 延时函数,延时113ns
*******************************************************************************/
//延时n秒
void delay_m(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
for(j=0;j<12;j++);
}
/*******************************************************************************
* 函 数 名 : PWM01函数加
* 函数功能 : 由暗到亮,高电平加变化68个周期
*******************************************************************************/
void PWM01_add (void)
{
for(high=1;high<=cycle;high++) //如果(高电平=1;高电平小于等于800;高电平每循环一次自加1)
{
PWM0 = 1; //PWM输出高电平
PWM1 = 1;
delay_m(high); //PWM输出管脚高电平延时,延时时间是高电平的变量
PWM0 = 0; //PWM输出低电平
PWM1 = 0;
low = cycle-high; //PWM输出低电平的时间=800减去高电平的时间
delay_m(low); //PWM输出低电平是延时时间
PWM0 = 1; //PWM输出高电平
PWM1 = 1; //PWM输出高电平
}
}
/*******************************************************************************
* 函 数 名 : PWM01函数减
* 函数功能 : 由亮到暗,高电平减变化68个周期
*******************************************************************************/
void PWM01_minus (void)
{
for(low=1;low<=cycle;low++) //如果(高电平=1;高电