男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
用單片機解碼紅外遙控器
用單片機解碼紅外遙控器
 更新時間:2008-7-26 20:16:29  點擊數(shù):2
【字體: 字體顏色
 


用單片機解碼紅外遙控器
  遙控器使用方便,功能多.目前已廣泛應(yīng)用在電視機、VCD、DVD、空調(diào)等各種家用電器中,且價格便宜,市場上非常容易買到。如果能將遙控器上許多的按鍵解碼出來.用作單片機系統(tǒng)的輸入.則解決了常規(guī)矩陣鍵盤線路板過大、布線復(fù)雜、占用I/O口過多的弊病。而且通過使用遙控器,操作時可實現(xiàn)人與設(shè)備的分離,從而更加方便使用。下面以TC9012編碼芯片的遙控器為例。談?wù)勅绾斡贸S玫?1系統(tǒng)單片機進行遙控的解碼。
  一、編碼格式
  1、0和1的編碼
  遙控器發(fā)射的信號由一串O和1的二進制代碼組成.不同的芯片對0和1的編碼有所不同。通常有曼徹斯特編碼和脈沖寬度編碼。TC9012的O和1采用PWM方法編碼,即脈沖寬度調(diào)制,其O碼和1碼如圖1所示(以遙控接收輸出的波形為例)。O碼由O.56ms低電平和0.56ms高電平組合而成.脈沖寬度為1.12ms.1碼由0.56ms低電平和1.69ms高電平組合而成.脈沖寬度為2.25ms。在編寫解碼程序時.通過判斷脈沖的寬度,即可得到0或1。
  2、按鍵的編碼
  當我們按下遙控器的按鍵時,遙控器將發(fā)出如圖2的一串二進制代碼,我們稱它為一幀數(shù)據(jù)。根據(jù)各部分的功能?蓪⑺鼈兎譃5部分,分別為引導(dǎo)碼、地址碼、地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。遙控器發(fā)射代碼時.均是低位在前。高位在后。由圖2分析可以得到.引導(dǎo)碼高電平為4.5ms,低電平為4.5ms。當
接收到此碼時.表示一幀數(shù)據(jù)的開始。單片機可以準備接收下面的數(shù)據(jù)。地址碼由8位二進制組成,共256種.圖中地址碼重發(fā)了一次。主要是加強遙控器的可靠性.如果兩次地址碼不相同.則說明本幀數(shù)據(jù)有錯.應(yīng)丟棄。不同的設(shè)備可以擁有不同的地址碼.因此。同種編碼的遙控器只要設(shè)置地址碼不同,也不會相互干擾。圖中的地址碼為十六進制的0EH(注意低位在前)。在同一個遙控器中.所有按鍵發(fā)出的地址碼都是相同的。數(shù)據(jù)碼為8位,可編碼256種狀態(tài),代表實際所按下的鍵。數(shù)據(jù)反碼是數(shù)據(jù)碼的各位求反,通過比較數(shù)據(jù)碼與數(shù)據(jù)反碼.可判斷接收到的數(shù)據(jù)是否正確。如果數(shù)據(jù)碼與數(shù)據(jù)反碼之間的關(guān)系不滿足相反的關(guān)系.則本次遙控接收有誤.數(shù)據(jù)應(yīng)丟棄。在同一個遙控器上.所有按鍵的數(shù)據(jù)碼均不相同。在圖2中,數(shù)據(jù)碼為十六進制的0CH,數(shù)據(jù)反碼為十六進制的0F3H(注意低位在前).兩者之和應(yīng)為0FFH。
    二、單片機遙控接收電路
    紅外遙控接收可采用較早的紅外接收二極管加專用的紅外處理電路的方法。如CXA20106,此種方法電路復(fù)雜,現(xiàn)在一般不采用。較好的接收方法是用一體化紅外接收頭,它將紅外接收二極管、放大、解調(diào)、整形等電路做在一起,只有三個引腳.分別是+5V電源、地、信號輸出。常用的一體化接收頭的外形及引腳見圖3和圖4。紅外接收頭的信號輸
出接單片機的INTO或INTl腳.典型電路如圖5所示.圖中增加了一只PNP型三極管對輸出信號進行放大。
  三、遙控信號的解碼算法及程序編制
    平時。遙控器無鍵按下。紅外發(fā)射二極管不發(fā)出信號,遙控接收頭輸出信號1。有鍵按下時.O和1編碼的高電平經(jīng)遙控頭倒相后會輸出信號O.由于與單片機的中斷腳相連,將會引起單片機中斷(單片機預(yù)先設(shè)定為下降沿產(chǎn)生中斷)。單片機在中斷時使用定時器0或定時器1開始計時.到下一個脈沖到來時,即再次產(chǎn)生中斷時,先將計時值取出。清零計時值后再開始計時.通過判斷每次中斷與上一次中斷之間的時間間隔。便可知接收到的是引導(dǎo)碼還是 O和1。如果計時值為9ms。接收到的是引導(dǎo)碼,如果計時值等于1.12ms,接收到的是編碼O。如果計時值等于2 25ms.接收到的是編碼1。在判斷時間時,應(yīng)考慮一定的誤差值。因為不同的遙控器由于晶振參數(shù)等原因,發(fā)射及接收到的時間也會有很小的誤差。
    以接收TC9012遙控器編碼為例,解碼方法如下:
    (1)設(shè)外部中斷0(或者1)為下降沿中斷,定時器0(或者1)為16位計時器.初始值均為O。
    (2)第一次進入遙控中斷后,開始計時。
    (3)從第二次進入遙控中斷起,先停止計時。并將計時值保存后,再重新計時。如果計時值等于前導(dǎo)碼的時間,設(shè)立前導(dǎo)碼標志。準備接收下面的一幀遙控數(shù)據(jù),如果計時值不等于前導(dǎo)碼的時間,但前面已接收到前導(dǎo)碼,則判斷是遙控數(shù)據(jù)的O還是1。
  (4)繼續(xù)接收下面的地址碼、數(shù)據(jù)碼、數(shù)據(jù)反碼。
  (5)當接收到32位數(shù)據(jù)時,說明一幀數(shù)據(jù)接收完畢。此時可停止定時器的計時,并判斷本次接收是否有效.如果兩次地址碼相同且等于本系統(tǒng)的地址,數(shù)據(jù)碼與數(shù)據(jù)反碼之和等于0FFH,則接收的本幀數(shù)據(jù)碼有效。否則丟棄本次接收到的數(shù)據(jù)。
  (6)接收完畢,初始化本次接收的數(shù)據(jù),準備下一次遙控接收。
  示例程序如下: 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
    四、遙控代碼與鍵盤碼的轉(zhuǎn)換
    在應(yīng)用系統(tǒng)中,帶遙控器的儀器設(shè)備一般都帶按鍵。而且二者功能相同。將遙控鍵值轉(zhuǎn)換成標準的按鍵值后。遙控按鍵散轉(zhuǎn)表格可以與鍵盤散轉(zhuǎn)表格復(fù)用。轉(zhuǎn)換方法可用查表法。通過查表。使遙控的按鍵值轉(zhuǎn)換成本機鍵盤的值。這樣既可以使用按鍵操作,也可以使用遙控操作,而且相應(yīng)的處理程序非常簡單。
    以上以Tc9012編碼格式為例,說明了解碼的原理與方法。只要注意一幀數(shù)據(jù)的格式及引導(dǎo)碼、O碼和1碼的時間長度.其它編碼芯片如 HT6121、M50560、LC7461等也非常容易解碼。   


  • 上一篇: 單片機在紅外測溫上的開發(fā)應(yīng)用
  • 下一篇: 單片機紅外通訊(遙控)電路
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責(zé)信息內(nèi)容的真實性、準確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 迁西县| 东安县| 滦平县| 望江县| 循化| 漯河市| 襄汾县| 玛纳斯县| 阳江市| 榆中县| 遂昌县| 普定县| 巍山| 岚皋县| 华亭县| 通海县| 称多县| 钟祥市| 镇赉县| 保亭| 灵宝市| 石阡县| 醴陵市| 富顺县| 龙胜| 敦化市| 清远市| 峨眉山市| 吉木萨尔县| 固安县| 洛宁县| 津市市| 郴州市| 项城市| 湘潭县| 沙湾县| 长汀县| 南江县| 阿勒泰市| 法库县| 丰城市|