|
我想要實現采集光照強度信息,通過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++;
}
|
|