|
我想要實(shí)現(xiàn)采集光照強(qiáng)度信息,通過(guò)DA轉(zhuǎn)換,通過(guò)控制數(shù)字量來(lái)控制PWM的占空比來(lái)實(shí)現(xiàn)LED在不同光照情況下的亮度變化。
0.png (989.85 KB, 下載次數(shù): 71)
下載附件
2017-4-4 20:00 上傳
我現(xiàn)在使用的是普中科技的51實(shí)驗(yàn)板,可以通過(guò)提供的程序?qū)崿F(xiàn)DA-PWM,得到LED漸變效果,但是我對(duì)于程序卻看不懂(main函數(shù)部分),希望各位壇友能提供一些幫助,另外如果我想外接一個(gè)(多個(gè))LED燈實(shí)現(xiàn)上述功能的話,又該怎么辦呢?(附上代碼,請(qǐng)各位大神幫我看看代碼的意思)
#include <reg52.h>
//--定義使用的IO口--//
sbit PWM=P2^1;
bit DIR;
//--定義一個(gè)全局變量--//
unsigned int count,value,timer1;
void Time1Config();
/*******************************************************************************
* 函 數(shù) 名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
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;
}
}
}
/*******************************************************************************
* 函 數(shù) 名 : Time1Config
* 函數(shù)功能 : 設(shè)置定時(shí)器
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void Time1Config()
{
TMOD|= 0x10; //設(shè)置定時(shí)計(jì)數(shù)器工作方式1為定時(shí)器
//--定時(shí)器賦初始值,12MHZ下定時(shí)1us--//
TH1 = 0xFF;
TL1 = 0xff;
ET1 = 1; //開啟定時(shí)器1中斷
EA = 1;
TR1 = 1; //開啟定時(shí)器
}
/*******************************************************************************
* 函 數(shù) 名 : Time1
* 函數(shù)功能 : 定時(shí)器1的中斷函數(shù)
* 輸 入 : 無(wú)
* 輸 出 : 無(wú)
*******************************************************************************/
void Time1(void) interrupt 3
{
TH1 = 0xFF;
TL1 = 0xFf;
timer1++;
count++;
}
|
|