當前位置:編程學習大全網 - 編程語言 - 關於紅外遙控器的幾個問題

關於紅外遙控器的幾個問題

通過分析紅外遙控器各按鍵發出的脈沖波形,可以識別其類型,從而為軟件解碼提供依據。結合實例介紹了紅外遙控器與單片機的硬件接口,並從原理上給出了軟件解碼的方法。這是壹個可以直接引用的成功範例,也為各種紅外遙控器在單片機控制產品中的開發應用提供了非常實用的參考。關鍵詞:遙控軟件解碼在單片機控制產品的開發和應用中,為了向控制系統軟件發出控制命令,鍵盤往往是必不可少的。傳統的方法是用並行輸入輸出接口芯片擴展壹個鍵盤接口,或者直接用單片機的並口擴展。在某些應用環境下,這種方法有兩個缺點:①鍵盤與控制系統相連,不靈活,環境適應性差;②浪費單片機的端口,硬件成本高。使用紅外遙控器作為控制系統的輸入設備,具有成本低、靈活方便的特點。本文旨在介紹軟件解碼研究的壹般方法和紅外遙控器二次開發的應用技術。該方法已在多個應用系統設計中成功實現,效果良好。紅外遙控器是壹種非常容易買到且價格便宜的產品,種類很多,但都是搭配某壹種電子產品(如各種電視機、vcd、空調等。),由專用CPU解碼,可直接作為通用單片機控制系統。使用現成的遙控器作為控制系統的輸入需要解決以下問題:如何接收紅外遙控信號;如何識別紅外遙控信號;解碼軟件的設計。其他問題都是非本質問題,比如遙控器面板上的功能鍵標註問題,可以自己設計重印。1紅外遙控信號的接收電路可以使用集成紅外接收器。接收器包括紅外接收管和信號處理集成電路。接收器只有三個外部引腳:Vcc、GND和1脈沖信號輸出PO。與單片機接口非常方便,如圖1。①Vcc接系統電源正極(+5v);②GND接系統地線(0V);③脈沖信號輸出接CPU的中斷輸入引腳(例如8031的13引腳INT1)。使用這種連接方法,軟件解決方案可以在查詢模式和中斷模式下工作。2脈沖流分析要了解壹個未知的遙控器,首先要分析它的脈沖流,從而了解它的脈沖波形特征(如何攜帶“0”和“1”信息),進而了解它的編碼規律。脈沖流的分析應從分析脈沖的高低電平寬度開始。作者用軟件實現了對脈沖流的分析。以圖1所示的界面為例。如果沒有紅外遙控信號到來,接收器的輸出端口PO保持高電平。當接收到紅外遙控信號時,接收設備的信號被轉換成脈沖序列並施加到CPU的中斷輸入引腳。用軟件測試管腳的邏輯電平,同時啟動TC定時器,分別測量管腳為邏輯“0”和邏輯“1”時的時間值,存儲,然後打印分析。8051匯編語言給出了以下采集和存儲脈沖流的程序段:MOV R0,#00HMOV R1,#28HMOV TMOD,#01HTK:JB P3.3,Tk;等待低級別的到來;測量低級寬度TK1:MOV TH0,#00HMOV TL0,# 00HSETB TR0TK0: JBTF0,the如果超時無效,返回JNB P3.3,TK2CLR TR0MOV A,TH0MOVX @R0,AINC R0MOV A,TL0MOVX @R0,Aincr0測高水平寬度MOV TH0,#00HMOV TL0,# 00hsetbtr0tk3: jbtf0,tke如果超時無效,則返回JB P3.3,TK3CLR TR0MOV A,TH0MOVX @R0,AINC R0MOV A,TL0MOVX @R0,Aincr0DNZ R1,tk 1;循環TKE:RET該程序首先將TC0設置為16位定時器模式,初始化ram地址指針R0和循環計數指針R1,每當引腳的邏輯電平跳變時停止計時,並將計時值保存在連續RAM中。這個程序可以連續測量40個脈沖(包括40個低電平脈沖寬度)的時間值。以TC9012芯片的遙控器為對象,采集所有按鍵的編程脈沖波形,對同壹按鍵進行重復實驗。限於篇幅,無法給出采樣數據,僅給出脈沖流動規律(模擬器CPU晶振為6 MHz): ①導頻脈沖為低電平,時間值為0937 h ~ 0957 h,高電平,時間值為084 FH ~ 086 FH②數據脈沖的低電平時間值約為0.127h ~ 0177h;③高級時間值有兩種:00 bbh ~ 00 ffh(窄)和02EFH~0333H(寬)。基於對大量數據的分析,關鍵編碼有以下規律:①除導頻脈沖外的脈沖為數據編碼脈沖,數據位信息由高電平脈寬決定:窄脈寬表示“0”,寬脈寬表示“1”;②每個鍵的脈沖流解碼後,包含四個字節的信息:*所有鍵的前兩個字節編碼相同,是兩個字節的“0eh”;*第三個字節是鍵碼;*第4個字節是鍵碼的補碼。對同壹關鍵脈沖進行多次采樣後,發現同壹關鍵脈沖序列對應位置的脈寬時間值在小範圍內波動(不是某個值),不能采用精確比較法進行模式識別。在這方面,我采取模糊的方法進行抽象處理。根據上述實驗規律,總結出軟件解碼時脈沖的分析判斷依據和算法設計思路:①導頻脈沖低電平和高電平寬度的判斷依據是時間值的“高字節大於08H”,低字節忽略;②數據脈沖流的低電平脈沖寬度相同,忽略不計,不予判斷;③高電平脈寬是判斷數據流每壹位是“0”還是“1”的依據。我的判斷是,如果脈寬的高字節小於2,表示“0”,否則表示“1”,脈寬的低字節忽略。實踐證明,上述標準是有效可行的。這種處理不僅簡化了解碼軟件的設計,而且大大提高了解碼速度。使用上述準則編寫軟件解碼程序時,要註意脈沖流采樣數據的存儲地址與脈沖的對應關系。軟件主要包括以下幾個部分:①判斷遙控信號的到達(解碼前調用1獨立子程序);②脈沖流的采樣和存儲;(3)判斷引導脈沖是否有效;④解碼前2個字節,判斷是否為“0eh”;(5)解碼第三個字節,它是有效的關鍵碼;⑥鍵碼的查找表映射(如果使用原鍵碼,可以省略這壹步)。3解碼軟件的設計基於上述思想的軟件解碼系統已經成功應用於許多控制系統中。下面給出壹個例子的匯編語言程序(用MCS-51系列MC交通規則TC9012紅外遙控器進行軟件解碼)。程序中使用的參數是針對單片機使用6MHz晶振的情況,使用其他頻率的晶振時只需要修改脈寬準則。為了更容易理解,也為了讓原理陳述盡可能的真實,程序中給出了更詳細的註釋翻譯。詳情請參考網絡補充版()。雖然本文是用MCS-51系列單片機對TC9012紅外遙控器軟件進行解碼的研究,但其方法是通用的。具體應用,可以靈活掌握。
  • 上一篇:IQ題和愛情問題有誰幫我解決呢?
  • 下一篇:圓周率怎麽算出來的啊?
  • copyright 2024編程學習大全網