最牛的LED遙控控制器---調(diào)整無閃爍
它主要有如下功能:1、遙控調(diào)光2、旋鈕調(diào)光 3、
開關(guān)機(jī)功能 4、漸變 5、跳變 6、循環(huán)變化(漸
變、跳變等)7、變化速度可調(diào)整,并斷電能記憶*/
一、原理圖:
二、參考圖片:
三、參考程序:下載地址:http://www.51hei.com/f/ledtt.rar
#include
#include
/*********定義EEPROM寄存器地址*********/
sfr DATA=0xC2;//數(shù)據(jù)寄存器
sfr ADDRH=0xC3;//地址寄存器高八位
sfr ADDRL=0xC4;//地址寄存器低八位
sfr CMD=0xC5;//命令模式寄存器
sfr TRIG=0xC6;//命令觸發(fā)寄存器
sfr CONTR=0xC7;//控制寄存器
/*********定義AD轉(zhuǎn)換寄存器地址*********/
sfr ADC_RES=0xbd;//AD轉(zhuǎn)換結(jié)果寄存器
sfr ADC_C=0xbc;//AD轉(zhuǎn)換控制寄存器
sfr P1ASF=0x9d;
#define c(x) (x*120000/120000)
#define uchar unsigned char
#define uint unsigned int
#define dengji 2//手動(dòng)調(diào)光等級(jí)定義
sbit IR=P3^3;
sbit LED=P3^0;
uint temp;//紅外線解碼變量
uchar i;
uchar j;
char dat=0;//PWM變量
uchar num;//PWM定時(shí)器變量
uint flashnum;//漸變跳變定時(shí)器變量
uchar IRBUF[4]; //用于保存解碼結(jié)果
uchar shudu=1;
bit power=1;//電位器調(diào)光與遙控調(diào)光切換標(biāo)志位
bit flag;//遙控開關(guān)機(jī)切換標(biāo)志位
bit flash;//跳變切換標(biāo)志位
bit jian;//漸變切換標(biāo)志位
bit zeng;//綜合變化變量
/***************************************************************/
/****************************EEPROM子函數(shù)***********************/
/***************************************************************/
/****************************************/
/**********EEPROM讀數(shù)據(jù)子函數(shù)************/
/****************************************/
uchar read(uint add)
{
CONTR=0x82;
CMD=0x01;
ADDRH=(add>>=8);
ADDRL=add&(0x00ff);
TRIG=0x5a;
TRIG=0xa5;
_nop_();
CONTR=0x00;
TRIG=0X00;
return DATA;
}
/****************************************/
/**********EEPROM寫數(shù)據(jù)子函數(shù)************/
/****************************************/
void write(uint add,uchar vale)
{
CONTR=0x82;
CMD=0X02;
ADDRH=(add>>=8);
ADDRL=add&(0x00ff);
DATA=vale;
TRIG=0x5a;
TRIG=0xa5;
_nop_();
CONTR=0x00;
TRIG=0X00;
}
/****************************************/
/**********EEPROM擦除數(shù)據(jù)子函數(shù)**********/
/****************************************/
void sector(uint add)
{
CONTR=0x82;
CMD=0x03;
ADDRH=(add>>=8);
ADDRL=add&(0x00ff);
TRIG=0x5a;
TRIG=0xa5;
_nop_();
CONTR=0x00;
TRIG=0X00;
}
/****************************************/
/***************AD轉(zhuǎn)換部分***************/
/****************************************/
uint adzhang1()
{
uint zona;
zona=0;
ADC_C=0;//控制寄存器清0
P1ASF=0;//IO口控制寄存器清0
ADC_C|=0x80;//打開控制寄存器電源
P1ASF|=0x80;//設(shè)置P1.7為AD輸入口
ADC_C|=0xe7;//打開控制寄存器電源,并選擇P1.7為AD輸入端
//以上是初始化程序
ADC_RES=0;//轉(zhuǎn)換結(jié)果寄存器清0
ADC_C|=0x08;//開始轉(zhuǎn)換
//delay1(2);
while((ADC_C&0x10)==0);//判斷結(jié)束標(biāo)志位是否為不為1?若不為1則等待
ADC_C&=0xe7;//清除等待標(biāo)志位
zona=ADC_RES*0.392156;//將255個(gè)等級(jí)變?yōu)?00個(gè)等級(jí) 等級(jí)=100/255=0.392156
if(zona<1)
zona=0;
return zona;
}
評(píng)論