在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            用單片機(jī)解碼紅外遙控器

            作者: 時(shí)間:2011-12-23 來(lái)源:網(wǎng)絡(luò) 收藏

            用單片機(jī)解碼

            遙控器使用方便,功能多.目前已廣泛應(yīng)用在電視機(jī)、VCD、DVD、空調(diào)等各種家用電器中,且價(jià)格便宜,市場(chǎng)上非常容易買(mǎi)到。如果能將遙控器上許多的按鍵解碼出來(lái).用作單片機(jī)系統(tǒng)的輸入.則解決了常規(guī)矩陣鍵盤(pán)線路板過(guò)大、布線復(fù)雜、占用I/O口過(guò)多的弊病。而且通過(guò)使用遙控器,操作時(shí)可實(shí)現(xiàn)人與設(shè)備的分離,從而更加方便使用。下面以TC9012-p.htm" target="_blank" title="TC9012貨源和PDF資料">TC9012編碼芯片的遙控器為例。談?wù)勅绾斡贸S玫?1系統(tǒng)單片機(jī)進(jìn)行遙控的解碼。

            一、編碼格式

            1、0和1的編碼

            遙控器發(fā)射的信號(hào)由一串O和1的二進(jìn)制代碼組成.不同的芯片對(duì)0和1的編碼有所不同。通常有曼徹斯特編碼和脈沖寬度編碼。TC9012-p.htm" target="_blank" title="TC9012貨源和PDF資料">TC9012的O和1采用PWM方法編碼,即脈沖寬度調(diào)制,其O碼和1碼如圖1所示(以遙控接收輸出的波形為例)。O碼由O.56ms低電平和0.56ms高電平組合而成.脈沖寬度為1.12ms.1碼由0.56ms低電平和1.69ms高電平組合而成.脈沖寬度為2.25ms。在編寫(xiě)解碼程序時(shí).通過(guò)判斷脈沖的寬度,即可得到0或1。

            2、按鍵的編碼

            當(dāng)我們按下遙控器的按鍵時(shí),遙控器將發(fā)出如圖2的一串二進(jìn)制代碼,我們稱(chēng)它為一幀數(shù)據(jù)。根據(jù)各部分的功能。可將它們分為5部分,分別為引導(dǎo)碼、地址碼、地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。遙控器發(fā)射代碼時(shí).均是低位在前。高位在后。由圖2分析可以得到.引導(dǎo)碼高電平為4.5ms,低電平為4.5ms。當(dāng)

            接收到此碼時(shí).表示一幀數(shù)據(jù)的開(kāi)始。單片機(jī)可以準(zhǔn)備接收下面的數(shù)據(jù)。地址碼由8位二進(jìn)制組成,共256種.圖中地址碼重發(fā)了一次。主要是加強(qiáng)遙控器的可靠性.如果兩次地址碼不相同.則說(shuō)明本幀數(shù)據(jù)有錯(cuò).應(yīng)丟棄。不同的設(shè)備可以擁有不同的地址碼.因此。同種編碼的遙控器只要設(shè)置地址碼不同,也不會(huì)相互干擾。圖中的地址碼為十六進(jìn)制的0EH(注意低位在前)。在同一個(gè)遙控器中.所有按鍵發(fā)出的地址碼都是相同的。數(shù)據(jù)碼為8位,可編碼256種狀態(tài),代表實(shí)際所按下的鍵。數(shù)據(jù)反碼是數(shù)據(jù)碼的各位求反,通過(guò)比較數(shù)據(jù)碼與數(shù)據(jù)反碼.可判斷接收到的數(shù)據(jù)是否正確。如果數(shù)據(jù)碼與數(shù)據(jù)反碼之間的關(guān)系不滿足相反的關(guān)系.則本次遙控接收有誤.?dāng)?shù)據(jù)應(yīng)丟棄。在同一個(gè)遙控器上.所有按鍵的數(shù)據(jù)碼均不相同。在圖2中,數(shù)據(jù)碼為十六進(jìn)制的0CH,數(shù)據(jù)反碼為十六進(jìn)制的0F3H(注意低位在前).兩者之和應(yīng)為0FFH。

            二、單片機(jī)遙控接收電路

            紅外遙控接收可采用較早的紅外接收二極管加專(zhuān)用的紅外處理電路的方法。如CXA20106,此種方法電路復(fù)雜,現(xiàn)在一般不采用。較好的接收方法是用一體化紅外接收頭,它將紅外接收二極管、放大、解調(diào)、整形等電路做在一起,只有三個(gè)引腳.分別是+5V電源、地、信號(hào)輸出。常用的一體化接收頭的外形及引腳見(jiàn)圖3和圖4。紅外接收頭的信號(hào)輸

            出接單片機(jī)的INTO或INTl腳.典型電路如圖5所示.圖中增加了一只PNP型三極管對(duì)輸出信號(hào)進(jìn)行放大。

            三、遙控信號(hào)的解碼算法及程序編制

            平時(shí)。遙控器無(wú)鍵按下。紅外發(fā)射二極管不發(fā)出信號(hào),遙控接收頭輸出信號(hào)1。有鍵按下時(shí).O和1編碼的高電平經(jīng)遙控頭倒相后會(huì)輸出信號(hào)O.由于與單片機(jī)的中斷腳相連,將會(huì)引起單片機(jī)中斷(單片機(jī)預(yù)先設(shè)定為下降沿產(chǎn)生中斷)。單片機(jī)在中斷時(shí)使用定時(shí)器0或定時(shí)器1開(kāi)始計(jì)時(shí).到下一個(gè)脈沖到來(lái)時(shí),即再次產(chǎn)生中斷時(shí),先將計(jì)時(shí)值取出。清零計(jì)時(shí)值后再開(kāi)始計(jì)時(shí).通過(guò)判斷每次中斷與上一次中斷之間的時(shí)間間隔。便可知接收到的是引導(dǎo)碼還是 O和1。如果計(jì)時(shí)值為9ms。接收到的是引導(dǎo)碼,如果計(jì)時(shí)值等于1.12ms,接收到的是編碼O。如果計(jì)時(shí)值等于2 25ms.接收到的是編碼1。在判斷時(shí)間時(shí),應(yīng)考慮一定的誤差值。因?yàn)椴煌倪b控器由于晶振參數(shù)等原因,發(fā)射及接收到的時(shí)間也會(huì)有很小的誤差。

            以接收TC9012-p.htm" target="_blank" title="TC9012貨源和PDF資料">TC9012遙控器編碼為例,解碼方法如下:

            (1)設(shè)外部中斷0(或者1)為下降沿中斷,定時(shí)器0(或者1)為16位計(jì)時(shí)器.初始值均為O。

            (2)第一次進(jìn)入遙控中斷后,開(kāi)始計(jì)時(shí)。

            (3)從第二次進(jìn)入遙控中斷起,先停止計(jì)時(shí)。并將計(jì)時(shí)值保存后,再重新計(jì)時(shí)。如果計(jì)時(shí)值等于前導(dǎo)碼的時(shí)間,設(shè)立前導(dǎo)碼標(biāo)志。準(zhǔn)備接收下面的一幀遙控?cái)?shù)據(jù),如果計(jì)時(shí)值不等于前導(dǎo)碼的時(shí)間,但前面已接收到前導(dǎo)碼,則判斷是遙控?cái)?shù)據(jù)的O還是1。

            (4)繼續(xù)接收下面的地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。

            (5)當(dāng)接收到32位數(shù)據(jù)時(shí),說(shuō)明一幀數(shù)據(jù)接收完畢。此時(shí)可停止定時(shí)器的計(jì)時(shí),并判斷本次接收是否有效.如果兩次地址碼相同且等于本系統(tǒng)的地址,數(shù)據(jù)碼與數(shù)據(jù)反碼之和等于0FFH,則接收的本幀數(shù)據(jù)碼有效。否則丟棄本次接收到的數(shù)據(jù)。

            (6)接收完畢,初始化本次接收的數(shù)據(jù),準(zhǔn)備下一次遙控接收。

            示例程序如下: E1INT:

            PUSHACC

            PUSH PSW

            CLRTR1

            MOV RM?TLEN,TH1 、

            MOVTH1,#00H

            MOV TL1,#00H

            SETBTR1

            MOV A,RMJLEN

            JNZ LBL?RM?DAT?BIT

            MOV RM?ADDR.#00H

            MOV RM?RADDR,#00H

            MOV RM?DAT,#00H

            MOV RM?RDAT,#00H

            MOV RM?BIT_CNT,#00H

            CLR RM?OK

            CLR RM?GUIDE

            POPPSW

            POPACC

            RET1 I BI RM DAT BIT:

            MOV A,RM_TLEN

            CJNE A,#23H,LBL?RM_ADDR_DAT

            SETB RM?GUIDE

            SJMP LBLE1 INT-RET

            LBLRM_ADDR_DAT;

            JNB RM?GUIDE,LBL?RM?ERROR

            CJNE A,#04H,LBL_RM_ONE

            CLR C

            SJMP LBL_RM?SHIFT

            LBLRM?ONE:

            CJNE A。#08H。LBL?RM?ERROR

            SETB C

            LBL_RM_SHIFT:

            MOV A,RM?RDAT

            RRC A

            MOV RM?RDAT.A

            MOV A,RM?DAT

            RRC A

            MOV RM?DAT,A

            MOV A,RM?RADDR

            RRC A

            MOV RM RADDR.A

            MOV A。RM?-ADDR

            RRC A

            MOV RM?.ADDR.A

            LBL?RM?END:

            INC RM?BIT?CNT

            MOV A,RM_BIT_CNT

            CJNE A,#32,LBLE1 INT_RET

            CLRTR1

            MOV TH1,#00H

            MOVTL1,#00H

            MOV HOUR.RM?ADDR

            MOV MINUTE,RM?DAT

            MOV RM?_ADDR,#00H

            MOV RM?RADDR,#00H

            MOV RM?DAT,#00H

            MOV RM?RDAT,#00H

            MOV RM一8IT_CNT,#00H

            CLR RM?GUIDE

            SEITB RM?OK

            SJMP LBL?E1 INT?RET LBL?RM?ERROR:

            CLRTR1

            MOV TH1,#0OH

            MOVTL1,#00H

            MOV RM?_ADDR,#00H

            MOV RM?RADDR,#00H

            MOV RM?DAT,#00H

            MOV RM?RDAT,#00H

            MOV RM?B1T?CNT,#00H

            CLR RM?GUIDE

            LBL?E1 INT?RET:

            POPPSW

            POPACC

            RETI

            四、遙控代碼與鍵盤(pán)碼的轉(zhuǎn)換

            在應(yīng)用系統(tǒng)中,帶遙控器的儀器設(shè)備一般都帶按鍵。而且二者功能相同。將遙控鍵值轉(zhuǎn)換成標(biāo)準(zhǔn)的按鍵值后。遙控按鍵散轉(zhuǎn)表格可以與鍵盤(pán)散轉(zhuǎn)表格復(fù)用。轉(zhuǎn)換方法可用查表法。通過(guò)查表。使遙控的按鍵值轉(zhuǎn)換成本機(jī)鍵盤(pán)的值。這樣既可以使用按鍵操作,也可以使用遙控操作,而且相應(yīng)的處理程序非常簡(jiǎn)單。

            以上以Tc9012編碼格式為例,說(shuō)明了解碼的原理與方法。只要注意一幀數(shù)據(jù)的格式及引導(dǎo)碼、O碼和1碼的時(shí)間長(zhǎng)度.其它編碼芯片如 HT6121、M50560、LC7461等也非常容易解碼。



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

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉