|
我想要实现采集光照强度信息,通过DA转换,通过控制数字量来控制PWM的占空比来实现LED在不同光照情况下的亮度变化。
我现在使用的是普中科技的51实验板,可以通过提供的程序实现DA-PWM,得到LED渐变效果,但是我对于程序却看不懂(main函数部分),希望各位坛友能提供一些帮助,另外如果我想外接一个(多个)LED灯实现上述功能的话,又该怎么办呢?(附上代码,请各位大神帮我看看代码的意思)
#include <reg52.h>
//--定义使用的IO口--//
sbit PWM=P2^1;
bit DIR;
//--定义一个全局变量--//
unsigned int count,value,timer1;
void Time1Config();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
Time1Config();
while(1)
{
if(count>100)
{
count=0;
if(DIR==1)
{
value++;
}
if(DIR==0)
{
value--;
}
}
if(value==1000)
{
DIR=0;
}
if(value==0)
{
DIR=1;
}
if(timer1>1000) //PWM周期为100*1us
{
timer1=0;
}
if(timer1 <value)
{
PWM=1;
}
else
{
PWM=0;
}
}
}
/*******************************************************************************
* 函 数 名 : Time1Config
* 函数功能 : 设置定时器
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时1us--//
TH1 = 0xFF;
TL1 = 0xff;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
/*******************************************************************************
* 函 数 名 : Time1
* 函数功能 : 定时器1的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1(void) interrupt 3
{
TH1 = 0xFF;
TL1 = 0xFf;
timer1++;
count++;
}
|
|