久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 23039|回復: 77
打印 上一主題 下一主題
收起左側(cè)

用STc15f104e單片機做了個學習型紅外遙控開關(guān)程序分享給大家

  [復制鏈接]
回帖獎勵 50 黑幣 回復本帖可獲得 50 黑幣獎勵! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:17109 發(fā)表于 2019-8-27 15:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
用STc15f104e做了個學習型紅外遙控開關(guān)
是上電學習的不帶按鍵的,          上電學習指示燈閃爍,按遙控器,指示燈滅了下, 學習開機鍵成功。
指示燈繼續(xù)閃,再按遙控器,指示燈滅了,學習關(guān)機鍵成功,進入待機狀態(tài)。
上電2秒不學習退出,進入待機狀態(tài)。

電路原理圖如下:


這個是上電學習型紅外遙控開關(guān),須要學習開,和關(guān),須要學習兩只按鍵,

單片機源程序如下:
#include "STC15F104E.H"
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define CPU_Fosc 12000000UL//12M晶振
#define M   1//時鐘
#define Tc 100 //us采樣
#define TH_0 (65536-CPU_Fosc/100*Tc/M/10000)/256
#define TL_0 (65536-CPU_Fosc/100*Tc/M/10000)%256
#define TH_1 (65536-CPU_Fosc/100*5/M/10)/256
#define TL_1 (65536-CPU_Fosc/100*5/M/10)%256
#define delaytime 0x83
/*********************************************/
sbit IR = P3^4;//紅外
sbit LED=P3^3;//學習指示燈
sbit JIDIANQU=P3^0;//可控硅
uint OKCode;
uint ON,OFF;
uchar tim1,tim2,sec;
bit  shan,IR_ok;
/*********************************************/
union
{
    ulong longcode;
    uchar p[4];
} Code;
/*********************************************/
void Delay(uint t);
void InitTimer();
void IAP_disable();
void byte_write(uint addr, uchar dat);
void SectorErase(uint sector_addr);
uchar byte_read(uint addr);
/********************************************/
/********************* 主函數(shù) *************************/
void main()
{
    P3=0xFF;
    ON=byte_read(0)<<8;
    ON|=byte_read(1);
    OFF=byte_read(0x200)<<8;
    OFF|=byte_read(0x201);
    InitTimer();
    tim1=tim2=sec=0;

    while(sec<2)
    {  LED=shan;
        if(IR_ok)
        {
            SectorErase(0);
            byte_write(0,Code.p[1]);
            byte_write(1,Code.p[2]);
            ON=OKCode;
            IR_ok=0;
            LED=1;
            Delay(400);
            tim1=tim2=sec=0;
            while(sec<2)
            {
                    LED=shan;
                if(IR_ok)
                {
                    SectorErase(0x200);
                    byte_write(0x200,Code.p[1]);
                    byte_write(0x201,Code.p[2]);
                    OFF=OKCode;
                    IR_ok=0;

                    break;
                }
            }
            break;
        }
    }
    LED=1;
    TR1=0;
    while(1)
    {
        if(IR_ok)
        {
            if(OKCode==ON)
            {
                JIDIANQU=0;
            }
            if(OKCode==OFF)
            {
                JIDIANQU=1;
            }
            IR_ok=0;
        }
    }
}
/***********************************/
void InitTimer()
{
#if (M==1)
    AUXR=0xc0;//定時器1T時鐘
#endif
    TH0=TH_0;
    TL0=TL_0;
    TH1=TH_1;
    TL1=TL_1;
    EA=ET0=TR0=ET1=TR1=1;
}
/***********************************/
void Delay(uint t)
{
    uchar a,b;
    for(; t>0; t--)
        for(b=222; b>0; b--)
            for(a=12; a>0; a--)
            {
                ;
            }
}
/***********************************/
void timer1() interrupt 3 using 1
{
    if(++tim1>=40)
    {
        tim1=0;
        shan=!shan;
        if(++tim2>=5)
        {
            tim2=0;
            ++sec;

        }
    }
}
/***********************************/
void timer0() interrupt 1  using 2
{
        static uint Step;
    static uchar Count;
        static bit IRb,IRa,IRsync;

    if(IR_ok)
    {
        return;
    }
    IRb = IRa;
    IRa = IR;
    ++Step;
    if(IRb && !IRa)
    {
        if(Step>(14000/Tc))
        {
            IRsync=0;
        }
        else if(IRsync)
        {
            if(Step>(3000/Tc))
            {
                IRsync=0;
            }
            else
            {
                Code.longcode<<=1;
                if(Step>(1500/Tc))
                {
                    Code.longcode|=1;
                }
                if (--Count==0)
                {
                    if(Code.p[2]=~Code.p[3])
                    {
                        OKCode=Code.longcode>>8;
                        IR_ok=1;
                    }
                    IRsync=0;
                }
            }
        }
        else if (Step>(9000/Tc-4)&&Step<(13500/Tc+4))
        {
            IRsync=1 ;
            Count=32;
        }
       Step=0;
    }
}
/***********************************/
void byte_write(uint addr, uchar dat)
{
    IAP_CONTR=delaytime;
    IAP_ADDRH=addr>>8;
    IAP_ADDRL=addr;
    IAP_CMD=0x02;
    IAP_DATA=dat;
    IAP_TRIG=0x5a;
    IAP_TRIG=0xa5;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    IAP_disable();
}
/*********************************/
void SectorErase(uint sector_addr)
{
    IAP_CONTR=delaytime;
    IAP_ADDRH=(sector_addr&0xfe00)>>8;
    IAP_ADDRL=sector_addr;
    IAP_CMD=0x03;
    IAP_TRIG=0x5a;
    IAP_TRIG=0xa5;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    IAP_disable();
}
/********************************/
uchar byte_read(uint addr)
{
    IAP_CONTR=delaytime;
    IAP_ADDRH=addr>>8;
    IAP_ADDRL=addr;
    IAP_CMD=0x01;
    IAP_TRIG=0x5a;
    IAP_TRIG=0xa5;
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    IAP_disable();
    return (IAP_DATA);
}
/**********************************/
void IAP_disable()
{
    IAP_CONTR=0;
    IAP_CMD=0;
    IAP_TRIG=0;
    IAP_ADDRH=0x80;
    IAP_ADDRL=0;
}
/*********************************/
/*uchar reverse8( uchar c )
{
    c=(c&0x55)<<1|(c&0xAA)>>1;
    c=(c&0x33)<<2|(c&0xCC)>>2;
    c=(c&0x0F)<<4|(c&0xF0)>>4;
    return c;
}*/

那位師博能修改一下程序改成學習一只按鍵就有開,和關(guān)的功能,修改分亨一下謝謝大家!

全部資料51hei下載地址:
上電自動學習型紅外遙控開關(guān).rar (1.49 KB, 下載次數(shù): 183)

評分

參與人數(shù) 2黑幣 +59 收起 理由
AAA_MCU + 9 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏24 分享淘帖 頂3 踩
回復

使用道具 舉報

沙發(fā)
ID:604426 發(fā)表于 2019-8-27 17:53 | 只看該作者
好資源,收藏先
回復

使用道具 舉報

板凳
ID:69311 發(fā)表于 2019-8-27 23:25 | 只看該作者
學習學習!謝謝分享
回復

使用道具 舉報

地板
ID:67356 發(fā)表于 2019-8-28 05:36 | 只看該作者
好資源,收藏先
回復

使用道具 舉報

5#
ID:343102 發(fā)表于 2019-8-28 07:04 | 只看該作者
可用反相函數(shù)完成單鍵開和關(guān)。
回復

使用道具 舉報

6#
ID:17109 發(fā)表于 2019-8-28 10:18 來自手機 | 只看該作者
風158 發(fā)表于 2019-8-28 07:04
可用反相函數(shù)完成單鍵開和關(guān)。

勞煩師傅修改上傳一下謝謝
回復

使用道具 舉報

7#
ID:343102 發(fā)表于 2019-8-28 19:30 | 只看該作者
你這個程序用了T0和T1兩個定時器,無法使用性能更好的stc15w系列。我有一個程序只用T0一個定時器,兼容性更強,并根據(jù)你的電路做了修改。已發(fā)新帖。等審核通過后可搜索:兩路學習型風扇遙控開關(guān)帶自然風
回復

使用道具 舉報

8#
ID:17109 發(fā)表于 2019-8-29 10:22 | 只看該作者
風158 發(fā)表于 2019-8-28 19:30
你這個程序用了T0和T1兩個定時器,無法使用性能更好的stc15w系列。我有一個程序只用T0一個定時器,兼容性更 ...

我還有一個15F104W版本的  ,功能也是一樣,上電學習的不帶按鍵的,上傳給你看看,
修改一下程序改成學習一只按鍵就有開,和關(guān)的功能,修改分亨一下謝謝
回復

使用道具 舉報

9#
ID:17109 發(fā)表于 2019-8-29 10:23 | 只看該作者
15F104W學習遙控開關(guān)

15F104W學習遙控開關(guān).rar

4.08 KB, 下載次數(shù): 83, 下載積分: 黑幣 -5

回復

使用道具 舉報

10#
ID:343102 發(fā)表于 2019-8-29 11:50 | 只看該作者
我剛發(fā)的15W104的遙控程序,兼容15F104。在這里:http://www.zg4o1577.cn/bbs/dpj-169020-1.html
回復

使用道具 舉報

11#
ID:17109 發(fā)表于 2019-8-29 15:44 來自手機 | 只看該作者
你這個是控制兩路的,能夠用我這個控制一路的程序修改嗎謝謝
回復

使用道具 舉報

12#
ID:512205 發(fā)表于 2019-8-29 16:30 | 只看該作者
學習學習!謝謝分享!!
回復

使用道具 舉報

13#
ID:343102 發(fā)表于 2019-8-29 19:13 | 只看該作者
我上傳的那個兩路遙控程序已被我改成一路了,一個按鍵控制開關(guān),另一個按鍵只是控制延時,形成自然風。實際使用時還可以只學習一個按鍵,僅實現(xiàn)開關(guān)機就行。
有興趣的話就自己改程序吧,DIY的樂趣就在于自己動手。我也是剛玩單片機沒多久。
回復

使用道具 舉報

14#
ID:601770 發(fā)表于 2019-8-29 19:19 | 只看該作者
謝謝分享
回復

使用道具 舉報

15#
ID:391781 發(fā)表于 2019-8-30 09:30 | 只看該作者
感謝分享。學習學習!
回復

使用道具 舉報

16#
ID:17109 發(fā)表于 2019-8-31 06:48 來自手機 | 只看該作者
風158 發(fā)表于 2019-8-29 11:50
我剛發(fā)的15W104的遙控程序,兼容15F104。在這里:http://www.zg4o1577.cn/bbs/dpj-169020-1.html

師傅你好:你會給這程序用中文注釋定義嗎,上傳過來,謝謝
回復

使用道具 舉報

17#
ID:214520 發(fā)表于 2019-8-31 22:00 | 只看該作者
學習學習!謝謝分享!
回復

使用道具 舉報

18#
ID:17109 發(fā)表于 2019-9-1 18:43 來自手機 | 只看該作者
zimo123 發(fā)表于 2019-8-31 22:00
學習學習!謝謝分享!

師傅你好:你會給這程序用中文注釋定義嗎,上傳過來,謝謝
回復

使用道具 舉報

19#
ID:416951 發(fā)表于 2019-9-1 23:10 | 只看該作者
謝謝分享
回復

使用道具 舉報

20#
ID:596378 發(fā)表于 2019-9-2 09:32 | 只看該作者
感謝樓主分享
回復

使用道具 舉報

21#
ID:32289 發(fā)表于 2019-9-3 20:15 | 只看該作者

15F104W學習遙控開關(guān)
回復

使用道具 舉報

22#
ID:96744 發(fā)表于 2019-9-4 12:28 | 只看該作者
學習學習!謝謝分享!
回復

使用道具 舉報

23#
ID:515878 發(fā)表于 2019-9-6 07:55 | 只看該作者
不錯不錯,學習學習
回復

使用道具 舉報

24#
ID:568756 發(fā)表于 2019-9-12 13:38 | 只看該作者
我整了個電路,咋不能工作呢?
回復

使用道具 舉報

25#
ID:138448 發(fā)表于 2019-9-12 13:59 | 只看該作者
一直以來,都想自己搞個遙控器。謝謝分享。
回復

使用道具 舉報

26#
ID:138119 發(fā)表于 2019-9-20 01:18 | 只看該作者
if(IR_ok)
        {
            if(OKCode==ON)
            {
                JIDIANQU=~JIDIANQU;
            }
            IR_ok=0;
        }
回復

使用道具 舉報

27#
ID:138119 發(fā)表于 2019-9-20 01:19 | 只看該作者
if(IR_ok)
{
    if(OKCode==ON)
    {
        if(JIDIANQU==1)
            JIDIANQU=0;
        else
            JIDIANQU=1;
    }
    if(OKCode==OFF)
    {
        if(JIDIANQU==1)
            JIDIANQU=0;
        else
            JIDIANQU=1;
    }
    IR_ok=0;
}
回復

使用道具 舉報

28#
ID:391781 發(fā)表于 2019-9-20 08:51 | 只看該作者
感謝分享。可以借鑒學習學習。
回復

使用道具 舉報

29#
ID:17109 發(fā)表于 2019-9-20 11:47 | 只看該作者
yfpc2006 發(fā)表于 2019-9-20 01:19
if(IR_ok)
{
    if(OKCode==ON)

師博你好不知道什么修改可以把,修改好的復制上傳嗎?謝謝
回復

使用道具 舉報

30#
ID:138119 發(fā)表于 2019-9-20 19:33 | 只看該作者
ll13536121668 發(fā)表于 2019-9-20 11:47
師博你好不知道什么修改可以把,修改好的復制上傳嗎?謝謝

你想表達什么啊?
回復

使用道具 舉報

31#
ID:138119 發(fā)表于 2019-9-20 19:37 | 只看該作者
        if(IR_ok)
        {
            if(OKCode==ON)
            {
                //JIDIANQU=0;
                                if(JIDIANQU == 1)
                                        JIDIANQU = 0;
                                else
                                        JIDIANQU = 1;

            }
            if(OKCode==OFF)
            {
                //JIDIANQU=1;
                                if(JIDIANQU == 1)
                                        JIDIANQU = 0;
                                else
                                        JIDIANQU = 1;
            }
            IR_ok=0;
        }

51黑論壇_上電自動學習型紅外遙控開關(guān).rar

7.47 KB, 下載次數(shù): 41, 下載積分: 黑幣 -5

回復

使用道具 舉報

32#
ID:17109 發(fā)表于 2019-9-22 01:20 來自手機 | 只看該作者
yfpc2006 發(fā)表于 2019-9-20 19:37
if(IR_ok)
        {
            if(OKCode==ON)

測試了原來也是學習兩次,兩只紅外遙控按鍵,都能單獨開和關(guān),師傅可以最增加一路端口,用兩只紅外遙控按鍵,分別給兩只繼電器單獨控制嗎?謝謝修改傳上傳
回復

使用道具 舉報

33#
ID:402515 發(fā)表于 2019-9-22 16:29 | 只看該作者
謝謝樓主分享                  
回復

使用道具 舉報

34#
ID:17109 發(fā)表于 2019-9-23 08:44 來自手機 | 只看該作者
ll13536121668 發(fā)表于 2019-9-22 01:20
測試了原來也是學習兩次,兩只紅外遙控按鍵,都能單獨開和關(guān),師傅可以最增加一路端口,用兩只紅外遙控按 ...

師傅可以最增加一路端口,用兩只紅外遙控按鍵,分別給兩只繼電器單獨控制嗎?謝謝修改
上傳
回復

使用道具 舉報

35#
ID:109115 發(fā)表于 2019-10-15 11:12 | 只看該作者
謝謝樓主分享。收藏學習
回復

使用道具 舉報

36#
ID:109115 發(fā)表于 2019-10-15 11:12 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

37#
ID:423660 發(fā)表于 2019-10-19 16:48 | 只看該作者
謝謝了,在學習中。
回復

使用道具 舉報

38#
ID:618933 發(fā)表于 2019-10-20 11:42 | 只看該作者
感謝分享!!!
回復

使用道具 舉報

39#
ID:385168 發(fā)表于 2020-1-7 05:29 | 只看該作者
一直在找這方面的資料,謝謝分享。
回復

使用道具 舉報

40#
ID:67857 發(fā)表于 2020-1-12 12:37 | 只看該作者
學習學習!謝謝分享!!
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久免费看 | 久久精品国产一区二区电影 | 久久精品二区亚洲w码 | 黄色成人在线观看 | 精品国产乱码一区二区三区 | 天天久久| 91原创视频在线观看 | 午夜国产一级片 | 中文字幕一区二区三区精彩视频 | 午夜精品一区二区三区在线观看 | 婷婷色国产偷v国产偷v小说 | www.久久影视 | 日韩电影免费观看中文字幕 | 美女视频三区 | 日韩中文在线视频 | 久久综合影院 | 亚洲男女视频在线观看 | 欧美日韩国产一区二区三区 | 国产在线视频一区二区 | 在线成人 | 亚洲一区二区中文字幕 | 黄a免费看| 国产精品网页 | 久久久久久天堂 | 草久免费视频 | 精品久久一区 | 免费久久精品视频 | 黄片毛片 | 久久精品91久久久久久再现 | 三级视频国产 | 97伦理电影 | av在线一区二区三区 | 亚洲精品自在在线观看 | 成人av电影天堂 | 成人精品在线视频 | 久久久国产一区二区三区 | 色吧久久| 亚洲国产精品va在线看黑人 | 美女天堂av| 国产电影一区二区在线观看 | 久久久久av |