新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于MSP430的紅外遙控器解碼

        基于MSP430的紅外遙控器解碼

        作者: 時間:2016-11-28 來源:網絡 收藏
        遙控發射器專用芯片很多,根據編碼格式可以分成兩大類,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現以日本NEC的uPD6121G組成發射電路為例說明編碼原理(一般家庭用的DVD、VCD、音響都使用這種編碼方式)。當發射器按鍵按下后,即有遙控碼發出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征:


        采用脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、
        周期為2.25ms的組合表示二進制的“1”,其波形如圖2所示。

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


        當一個鍵按下超過36ms,振蕩器使芯片激活,將發射一組108ms的編碼脈沖,這108ms發射代碼由一個引導碼(9ms),一個結果碼(4.5ms),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms),8位數據碼(9ms~18ms)和這8位數據的反碼(9ms~18ms)組成。如果鍵按下超過108ms仍未松開,接下來發射的代碼(連發碼)將僅由起始碼(9ms)和結束碼(2.25ms)組成。



        接收電路可以使用一種集紅外線接收和放大于一體的一體化紅外線接收器,不需要任何外接元件,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,而體積和普通的塑封三極管大小一樣,它適合于各種紅外線遙控和紅外線數據傳輸。
        接收器對外只有3個引腳:Out、GND、Vcc與單片機接口非常方便



        ① 脈沖信號輸出接,直接接單片機的IO 口。
        ② GND接系統的地線(0V);
        ③ Vcc接系統的電源正極(3~5V);


        以上信息來自搜集的資料和自己的整理(方便大家學習)


        以下是我的解碼程序(參考C51的程序的成功移植)


        注意:紅外解碼對時間延時的精度要求比較高,很難一次成功,需要耐心調試,修改著色部分的數字大小.


        //利用兩位數碼管顯示遙控器的編碼值


        //如遙控器上的0~9對應在數碼管上顯示00~09


        #include


        #define wei1_1 P1DIR|=BIT7;P1OUT|=BIT7//數碼管低位置高
        #define wei1_0 P1DIR|=BIT7;P1OUT&=~BIT7//數碼管低位置低
        #define wei2_1 P1DIR|=BIT6;P1OUT|=BIT6//數碼管高位置高
        #define wei2_0 P1DIR|=BIT6;P1OUT&=~BIT6//數碼管高位置低
        #define duan_out P2DIR=0xff//數碼管段選P2口設為輸出
        #define IR_DIR_IN P1DIR&=~BIT0//紅外接收頭P1.0設置為輸入,


        #define IRIN (P1IN&BIT0)//紅外接收頭輸入值
        #define duan P2OUT//數碼管段選為P2口
        char dat[8];
        char seg[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
        0x80,0x90,0x88,0x83,0xC6,0xa1,0x86,0x8e};


        //函數聲明
        void InitSys();
        void display();


        void delay(unsigned char x) //延時子程序(x*0.14MS)
        {
        unsigned char i,j;
        while(x--)
        {
        for (i = 20; i>0; i--)
        for(j=5;j>0;j--);
        }
        }


        上一頁 1 2 下一頁

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 犍为县| 灵璧县| 长泰县| 义乌市| 剑阁县| 清镇市| 邵武市| 冀州市| 辉南县| 木里| 晋中市| 武定县| 牙克石市| 都匀市| 田阳县| 西峡县| 兰西县| 高密市| 泰顺县| 安吉县| 东山县| 东丽区| 金秀| 西充县| 富裕县| 历史| 拜城县| 洪雅县| 新昌县| 文山县| 宁都县| 玉树县| 溧阳市| 新兴县| 伽师县| 原平市| 安阳市| 邵阳县| 镇雄县| 唐山市| 元朗区|