找回密碼
         注冊(cè)會(huì)員
        搜索附件  

        5_3_0ec6fd83dd3a03f.gif

         

        自制紅外電視遙控器:
        用AT89S52自制電視紅外遙控器
        紅外遙控器發(fā)送數(shù)據(jù)時(shí),是將二進(jìn)制數(shù)據(jù)調(diào)制成一系列的脈沖信號(hào)紅外發(fā)射管發(fā)射出去,紅外載波為頻率38KHz的方波,紅外接收端在收到38KHz的載波信號(hào)時(shí),會(huì)輸出低電平,否則輸出高電平,從而可以將“時(shí)斷時(shí)續(xù)”的紅外光信號(hào)解調(diào)成一定周期的連續(xù)方波信號(hào),再經(jīng)過1838一體化紅外接收頭解調(diào)便可以恢復(fù)出原數(shù)據(jù)信號(hào)。如圖1所示



        圖1

        紅外接收頭解調(diào)過程如圖2所示



        圖2


        解調(diào)后的“0”和“1”波形及單片機(jī)編碼圖3圖4所示



        圖3



        圖4






        了解了紅外接收頭解調(diào)及遙控編碼下面就可以對(duì)照?qǐng)D5編寫編碼程序了,圖5是遙控按鍵1的一段實(shí)際編碼
        由9ms低電平4.5ms高電平的啟始碼,26位系統(tǒng)碼,及8位數(shù)據(jù)碼、8位數(shù)據(jù)反碼、23ms高電平及結(jié)束碼組成

        電路圖





        實(shí)物圖






        *****************************************以下是遙控完整程序***********************************************

        /*********************************************
        **項(xiàng)目: 自制紅外電視遙控器(EE01學(xué)習(xí)板演示程序)

        **作者:一線工人

        **網(wǎng)站:電子工程師之家 www.eehome.cn

        **轉(zhuǎn)貼請(qǐng)保持代碼的完整性
        *********************************************/


        #include <reg52.h>
        #define uint unsigned int
        #define uchar unsigned char
        bit irout;//紅外管狀態(tài)
        sbit ir=P1^7;//紅外發(fā)射管控制腳
        uint count, set_count;//中斷計(jì)數(shù),設(shè)定中斷次數(shù)
        bit flag,keyflag;//紅外發(fā)送標(biāo)志,按鍵標(biāo)志位
        uchar irsys[4]={0x1a,0xa1,0xdc,0x03};//26位系統(tǒng)碼,最后一個(gè)字節(jié)只用2位
        uchar ircode,irdata;
        /**********************************************
        延時(shí)1ms
        ***********************************************/

        void delay(uint z)//延時(shí)1ms,晶振22.1184M
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=225;y>0;y--);
        }

        /**********************************************
        按鍵掃描
        **********************************************/

        void keyscan(void)
        {
        uchar keytemp;
        P3=0xff;
        keytemp=P3&0x0f;
        if(keytemp!=0x0f)
        {
        delay(20);
        keytemp=P3&0x0f;
        if(keytemp!=0x0f)
        keyflag=1;//有按鍵標(biāo)志
        switch(keytemp)
        {
        case 0x0e:irdata=27;break;//按鍵1對(duì)應(yīng)該遙控器P+的鍵值
        case 0x0d:irdata=26;break;//按鍵2對(duì)應(yīng)該遙控器P-的鍵值
        case 0x0b:irdata=31;break;//按鍵3對(duì)應(yīng)該遙控器VOL+的鍵值
        case 0x07:irdata=30;break;//按鍵4對(duì)應(yīng)該遙控器VOL-的鍵值
        }


        }

        }
        /*******************************************
        發(fā)送8位紅外數(shù)據(jù)
        *******************************************/
        void sendcode_8(void)
        {

        uchar i;
        for(i=0;i<8;i++)
        {

        set_count=28;//發(fā)送0.56ms 38k紅外波(編碼中的0.56ms低電平)
        flag=1;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        if(ircode&0x01)//判斷紅外編碼最低位,1寬的高電平,0窄的高電平
        {
        set_count=120;
        }
        else
        {
        set_count=38;
        }
        flag=0;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        ircode=ircode>>1;
        }
        }


        /*******************************************
        發(fā)送2位紅外數(shù)據(jù)
        *******************************************/
        void sendcode_2(void)//前26位系統(tǒng)碼最后兩位
        {

        uchar i;
        for(i=0;i<2;i++)
        {

        set_count=28;
        flag=1;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        if(ircode&0x01)
        {
        set_count=120;
        }
        else
        {
        set_count=38;
        }
        flag=0;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        ircode=ircode>>1;
        }
        }

        /*******************************************
        發(fā)送紅外數(shù)據(jù)
        *******************************************/
        void sendcode(void)
        {
        set_count=575;//發(fā)送9ms 38K紅外光
        flag=1;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        set_count=320;//間隔4.5ms
        flag=0;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        ircode=irsys[0];//發(fā)送26位系統(tǒng)碼的前1-8位
        sendcode_8();
        ircode=irsys[1];//發(fā)送26位系統(tǒng)碼的前9-16位
        sendcode_8();
        ircode=irsys[2];//發(fā)送26位系統(tǒng)碼的前17-24位
        sendcode_8();
        ircode=irsys[3];//發(fā)送26位系統(tǒng)碼的前24-26位
        sendcode_2();
        ircode=irdata;//發(fā)送8位數(shù)據(jù)碼
        sendcode_8();
        ircode=~irdata; //發(fā)送8位數(shù)據(jù)反碼
        sendcode_8();
        set_count=28;//發(fā)送0.56ms 38k紅外波(編碼中的0.56ms低電平)
        flag=1;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        ir=1;
        delay(23);//延時(shí)23ms(編碼中的23ms高電平)
        set_count=575;//發(fā)送9ms 38k紅外波
        flag=1;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        set_count=330;//間隔4.5ms
        flag=0;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        set_count=30;//發(fā)送0.56ms 38k紅外波(編碼中的0.56ms低電平)
        flag=1;
        count=0;
        TR0=1;
        while(count<set_count);
        TR0=0;
        ir=1;

        }


        /*******************************************
        定時(shí)器初始化
        *******************************************/
        void init_timer()
        {
        EA=1;
        TMOD=0X02;//8位自動(dòng)重載模式
        ET0=1;
        TH0=0XE8;//定時(shí)13us,38K紅外波,晶振22.1184
        TL0=0XE8;
        }

        /*******************************************
        主函數(shù)
        *******************************************/
        void main(void)
        {
        init_timer();
        count=0;
        flag=0;
        irout=1;
        while(1)
        {
        keyscan();
        if(keyflag)//若有新按鍵
        {
        delay(10);
        sendcode();//發(fā)送紅外編碼
        delay(500);
        keyflag=0;//按鍵標(biāo)志清零
        }

        }
        }


        /*******************************************
        定時(shí)器中斷
        *******************************************/

        void timer0(void) interrupt 1
        {
        count++;
        if(flag==1)
        {
        irout=~irout;
        }
        else
        {
        irout=1;
        }
        ir=irout;
        }

        ***************************************************************************************************

        5_3_0ec6fd83dd3a03f.gif

        QQ|手機(jī)版|MCU資訊論壇 ( 京ICP備18035221號(hào)-2 )|網(wǎng)站地圖

        GMT+8, 2025-5-3 16:19 , Processed in 0.041923 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2025 Discuz! Team.

        返回頂部
        国语精品一区二区三区| 精品熟女少妇aⅴ免费久久| 精品国产乱码久久久久久浪潮| 国产精品推荐天天看天天爽| 久久久WWW免费人成精品| 在线观看91精品国产网站| 久久精品aⅴ无码中文字字幕重口| 国产精品夜色一区二区三区| 国内精品视频九九九九| 美女扒开两腿露出尿口的视频| 国产精品186在线观看在线播放| 成人精品视频成人影院| 精品牛牛影视久久精品| 国产成人精品免费午夜app | 精品视频一区二区三区免费| 国产伦精品一区二区免费| 黄网址在线播放免费| 青青草国产精品| 色视频网站人成免费| 精品四虎免费观看国产高清午夜| 久久久久人妻一区精品| 精品无码无人网站免费视频 | 亚洲精品无码99在线观看 | 99久久精品国产综合一区| 欧美日韩综合精品| 国产午夜精品一区二区三区漫画| 国产精品欧美亚洲韩国日本久久| 国产成人精品日本亚洲语音2| 免费91麻豆精品国产自产在线观看| 青青久久精品国产免费看| 97久久超碰国产精品2021| 免费精品视频在线| 国产精品三级在线观看无码| 久久免费国产精品| 国产精品免费大片| 亚洲国产欧美日韩精品一区二区三区| 99在线精品视频在线观看| 中日精品无码一本二本三本| 四虎国产精品永久一区| 99青草青草久热精品视频| Xx性欧美肥妇精品久久久久久|