新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于MSP430的紅外遙控器解碼

        基于MSP430的紅外遙控器解碼

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


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

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


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



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



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


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


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


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


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


        //如遙控器上的0~9對應(yīng)在數(shù)碼管上顯示00~09


        #include


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


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


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


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


        上一頁 1 2 下一頁

        關(guān)鍵詞: MSP430紅外遙控器解

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 沈阳市| 尚志市| 博爱县| 吴旗县| 米林县| 柳江县| 且末县| 肇东市| 乌苏市| 大同县| 遂宁市| 酉阳| 高尔夫| 宁海县| 个旧市| 宝应县| 来凤县| 三明市| 理塘县| 获嘉县| 绥滨县| 尉氏县| 横峰县| 沛县| 且末县| 衡山县| 襄垣县| 格尔木市| 汾阳市| 合阳县| 廉江市| 琼海市| 普洱| 邹城市| 西畴县| 孝义市| 双峰县| 边坝县| 子长县| 星座| 大安市|