新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 最牛的LED遙控控制器---調整無閃爍

        最牛的LED遙控控制器---調整無閃爍

        作者: 時間:2016-11-29 來源:網絡 收藏
        /*一款遙控LED控制器,所有功能均由遙控器控制,

        它主要有如下功能:1、遙控調光2、旋鈕調光 3、
        開關機功能 4、漸變 5、跳變 6、循環變化(漸
        變、跳變等)7、變化速度可調整,并斷電能記憶*/

        本文引用地址:http://www.104case.com/article/201611/323378.htm

        一、原理圖:

        二、參考圖片:

        三、參考程序:下載地址:http://www.51hei.com/f/ledtt.rar
        #include
        #include
        /*********定義EEPROM寄存器地址*********/
        sfr DATA=0xC2;//數據寄存器
        sfr ADDRH=0xC3;//地址寄存器高八位
        sfr ADDRL=0xC4;//地址寄存器低八位
        sfr CMD=0xC5;//命令模式寄存器
        sfr TRIG=0xC6;//命令觸發寄存器
        sfr CONTR=0xC7;//控制寄存器
        /*********定義AD轉換寄存器地址*********/
        sfr ADC_RES=0xbd;//AD轉換結果寄存器
        sfr ADC_C=0xbc;//AD轉換控制寄存器
        sfr P1ASF=0x9d;
        #define c(x) (x*120000/120000)
        #define uchar unsigned char
        #define uint unsigned int
        #define dengji 2//手動調光等級定義

        sbit IR=P3^3;
        sbit LED=P3^0;

        uint temp;//紅外線解碼變量
        uchar i;
        uchar j;

        char dat=0;//PWM變量
        uchar num;//PWM定時器變量

        uint flashnum;//漸變跳變定時器變量
        uchar IRBUF[4]; //用于保存解碼結果
        uchar shudu=1;

        bit power=1;//電位器調光與遙控調光切換標志位
        bit flag;//遙控開關機切換標志位
        bit flash;//跳變切換標志位
        bit jian;//漸變切換標志位
        bit zeng;//綜合變化變量

        /***************************************************************/
        /****************************EEPROM子函數***********************/
        /***************************************************************/
        /****************************************/
        /**********EEPROM讀數據子函數************/
        /****************************************/
        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寫數據子函數************/
        /****************************************/
        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擦除數據子函數**********/
        /****************************************/
        void sector(uint add)
        {
        CONTR=0x82;
        CMD=0x03;
        ADDRH=(add>>=8);
        ADDRL=add&(0x00ff);
        TRIG=0x5a;
        TRIG=0xa5;
        _nop_();
        CONTR=0x00;
        TRIG=0X00;
        }

        /****************************************/
        /***************AD轉換部分***************/
        /****************************************/
        uint adzhang1()
        {
        uint zona;
        zona=0;
        ADC_C=0;//控制寄存器清0
        P1ASF=0;//IO口控制寄存器清0
        ADC_C|=0x80;//打開控制寄存器電源
        P1ASF|=0x80;//設置P1.7為AD輸入口
        ADC_C|=0xe7;//打開控制寄存器電源,并選擇P1.7為AD輸入端
        //以上是初始化程序
        ADC_RES=0;//轉換結果寄存器清0
        ADC_C|=0x08;//開始轉換
        //delay1(2);
        while((ADC_C&0x10)==0);//判斷結束標志位是否為不為1?若不為1則等待
        ADC_C&=0xe7;//清除等待標志位
        zona=ADC_RES*0.392156;//將255個等級變為100個等級 等級=100/255=0.392156
        if(zona<1)
        zona=0;
        return zona;
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 铁力市| 霍林郭勒市| 新泰市| 长岭县| 托里县| 龙口市| 通海县| 洪湖市| 龙山县| 新干县| 长垣县| 钦州市| 三亚市| 红原县| 达孜县| 竹山县| 桓台县| 巴林左旗| 盘锦市| 五家渠市| 姚安县| 怀化市| 营口市| 和硕县| 平利县| 庆云县| 启东市| 东源县| 视频| 西充县| 景谷| 绥化市| 绥江县| 通道| 呼伦贝尔市| 托里县| 买车| 灌云县| 永修县| 铜梁县| 东方市|