您好,欢迎来到年旅网。
搜索
您的当前位置:首页LED PWM调光C程序

LED PWM调光C程序

来源:年旅网


LED PWM调光C程序

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义

sbit LED1 = P3^0;

sbit LED = P3^1; //定义LED灯,通过LED显示调光效果

sbit LED2 = P3^2;

unsigned char CYCLE; //定义周期 该数字X基准定时时间 如果是10 则周期是10 x 0.1ms

unsigned char PWM_ON ;//定义高电平时间

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

/* 延时函数 */

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

void delay(unsigned int cnt)

{

while(--cnt);

}

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

/* 主函数 /******************************************************************/

main()

{

bit Flag;

TMOD |=0x01; //定时器设置 0.1ms in 12M crystal

TH0=(65536-100)/256;

TL0=(65536-100)%256; //定时0.1mS

IE= 0x82; //打开中断

TR0=1;

*/

CYCLE = 50; // 时间可以调整 这个是10调整 8位PWM就是256步

while(!Flag)

{

delay(20000); //延时时间,从一个亮度到下一个亮度的间隔时间,速度快就能看到连续效果

PWM_ON++; //这个使用较长延时,以便能看清楚变化过程

if(PWM_ON == CYCLE)

{ //这个里可以添加其他程序 如到最亮时候控制设备

Flag=1;

}

}

while(Flag) //亮度递减 同上,是个相反的过程

{

delay(20000);

PWM_ON--;

if(PWM_ON == 0)

{

Flag=0;

}

}

}

/******************************************************************/ /* 定时器中断函数 /******************************************************************/ void tim(void) interrupt 1 using 1

{

*/

static unsigned char count;

TH0=(65536-100)/256;

TL0=(65536-100)%256; //定时0.1mS

if (count==PWM_ON)

{

LED1 = 1;

LED = 1; //灯灭

LED2 = 1;

}

count++;

if(count == CYCLE)

{

count=0;

if(PWM_ON!=0) //如果左右时间是0 保持原来状态

LED1 = 0;

LED = 0; //灯亮

LED2 = 0;

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务