邱永華
摘要:介紹一種基于紅外遙控器的控制方案,其通過(guò)特殊的編碼方式,可以避免由于紅外信號(hào)在傳輸過(guò)程中產(chǎn)生的誤碼,造成遙控器控制異常、失效等情況,進(jìn)而大大提升了紅外遙控器的控制性能,免除人們?cè)谑褂眉t外遙控器控制過(guò)程中遇到的各種失效煩惱。
關(guān)鍵詞:紅外遙控器;協(xié)議;編碼
中圖分類號(hào):TP202 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)11-0221-03
One Design for Infrared Remote Control Solution
QIU Yong-hua
(Guangdong Womens Polytechnic College, Guangzhou 510450, China)
Abstract: Introduces a control solution design for infrared remote, which through special coding methods,Can avoid the error caused by the infrared signal during transmission,abnormal failure caused by remote controller, and so on and so forth,Improve the reliability of the infrared signal transmission,F(xiàn)rom people in the use of various failure problems encountered in the process of infrared remote control.
Key words: IR remote control; protocol; coding methods
紅外遙控器使用方便,價(jià)格便宜,目前廣泛應(yīng)用于電視、DVD、空調(diào)、投影機(jī)等各種家用電器,在每個(gè)家庭日常生活中已經(jīng)成為不可或缺的部分。一個(gè)優(yōu)秀的紅外遙控器必須具有精準(zhǔn)的控制方案,如果人們?cè)谑褂眠b控器的過(guò)程中不時(shí)出現(xiàn)控制不靈敏,失效異常等情況,將會(huì)極大的影響人們使用電器的娛樂(lè)心情,給人們的正常生活造成困擾。本文提出一種基于紅外遙控器的控制方案,該控制方案通過(guò)特殊的編碼方式,提高了紅外遙控器的控制性能。
1 總體描述
紅外遙控器的控制方案分為如下幾部分:微控制單元MCU初始化、鍵盤掃描和處理、通信協(xié)議和數(shù)據(jù)發(fā)送流程等。MCU初始化根據(jù)實(shí)際選型的芯片進(jìn)行配置,鍵盤處理函數(shù)根據(jù)遙控器的需求來(lái)編寫,為了便于控制數(shù)據(jù)發(fā)送的時(shí)間和提高效率,通信協(xié)議和數(shù)據(jù)發(fā)送函數(shù)這部分采用匯編來(lái)編寫,其他部分采用C言語(yǔ)編寫。
2 MCU初始化
MCU的初始化是初始化MCU的寄存器,并將MCU的寄存器配置成為一個(gè)已知的工作狀態(tài)。MCU的初始化由幾個(gè)主要的部分組成:時(shí)鐘配置、中斷配置、端口配置。下面以P89LPC931單片機(jī)為例進(jìn)行介紹。P89LPC931是一款單片封裝的微控制器,適用于要求高度集成、低成本的應(yīng)用場(chǎng)合,可以滿足多種多樣的性能要求。P89LPC931基于高性能的處理架構(gòu),執(zhí)行指令僅需2到4個(gè)時(shí)鐘周期,速度是標(biāo)準(zhǔn)80C51器件的6倍。P89LPC931集成了多種系統(tǒng)級(jí)功能,以便減少元件數(shù)目和減小電路板面積,從而降低系統(tǒng)成本。P89LPC931內(nèi)部框圖如圖1所示。
圖1 P89LPC931內(nèi)部框圖
2.1 時(shí)鐘配置
MCU 用455 KHz的陶瓷晶體振蕩器作為時(shí)鐘輸入源,所以要設(shè)置FOSC[2:0](UCFG寄存器,地址0x63)= 001,選擇一個(gè)中等頻率的時(shí)鐘源,即圖中的OSC CLK時(shí)鐘頻率為455KHz。設(shè)定分頻寄存器DIVM#(地址0x95)=0,則CCLK = OSC CLK = 455 KHz。同時(shí)由于FOSC[2:0] = 001所以RTC的時(shí)鐘源被設(shè)置為CCLK。通過(guò)WDCON[WDCLK]=1,選擇PCLK作為看門狗電路的時(shí)鐘源,其中PCLK = CCLK/2。
2.2 中斷配置
在紅外遙控的設(shè)計(jì)中將用到4個(gè)中斷:鍵盤中斷、實(shí)時(shí)時(shí)鐘中斷和看門狗中斷。
鍵盤中斷:鍵盤中斷相應(yīng)用戶按鍵事件。在省電的模式下鍵盤掃描的輸出管腳被鎖存在一個(gè)電平上,當(dāng)用戶按下鍵盤上的任意鍵,都會(huì)導(dǎo)致P0端口的P2~P7中的某一管腳的電平產(chǎn)生變化,使得P0端口鎖存器的數(shù)值同
KBPATN寄存器(鍵盤模式寄存器)的數(shù)值不相同,從而導(dǎo)致了鍵盤中斷的產(chǎn)生。
實(shí)時(shí)時(shí)鐘中斷:在設(shè)計(jì)中運(yùn)用實(shí)時(shí)時(shí)鐘來(lái)產(chǎn)生一個(gè)10s的中斷,完成10s無(wú)按鍵進(jìn)入掉電模式的功能。由于紅外遙控器采用的時(shí)鐘頻率為455KHz,考慮功耗問(wèn)題設(shè)定FOSC[2:0]= 001。無(wú)論RTCS1和RTCS2為什么數(shù)值,實(shí)時(shí)時(shí)鐘的輸入時(shí)鐘源都是CCLK時(shí)鐘(CCLK = OSC CLK = 455 KHz)。
看門狗中斷:在軟件的設(shè)計(jì)過(guò)程中,為了避免程序陷入一個(gè)死循環(huán)或者用戶不可預(yù)料的錯(cuò)誤,用硬件看門狗來(lái)作為避免出現(xiàn)錯(cuò)誤的手段。在一段時(shí)間內(nèi)程序沒(méi)有去“喂狗”且看門狗遞減計(jì)數(shù)器的數(shù)值為零時(shí),MCU將會(huì)產(chǎn)生一個(gè)硬件的復(fù)位信號(hào)導(dǎo)致硬件的重啟??梢酝ㄟ^(guò)配置監(jiān)視計(jì)時(shí)器控制WDCON和戶配置字UCFG1寄存器來(lái)控制看門狗的停止/運(yùn)行,時(shí)鐘源的選擇,預(yù)掃描的數(shù)值和是否看門狗產(chǎn)生復(fù)位的信號(hào)。
2.3 端口配置
端口配置過(guò)程配置了P0端口、P1端口和P2端口的屬性。P0端口主要用來(lái)作為鍵盤掃描的輸入端口,應(yīng)該配置成為Input Only 配置模式,P2端口部分作為鍵盤掃描的輸出端口;P1部分作為串口提供測(cè)試端口,部分用來(lái)作為紅外發(fā)送二級(jí)管的控制端口。鍵盤掃描的輸出端口應(yīng)配置為Open Drain 配置模式。其他的部分配置成為準(zhǔn)雙向的IO端口。
3 鍵盤掃描和處理
鍵盤掃描首先檢測(cè)是否有鍵盤按下,這時(shí)觸發(fā)鍵盤中斷,接著通過(guò)逐行掃描來(lái)判斷那個(gè)鍵被按下。當(dāng)判斷出那個(gè)按鍵被按下之后,進(jìn)行相應(yīng)的按鍵處理:如按鍵編碼、數(shù)據(jù)發(fā)送。假如掃描完成或按鍵處理完后,按鍵還沒(méi)有松開(kāi),就判斷是否是左右鍵曾被按下,若是就重新掃描鍵盤和進(jìn)行按鍵處理。若不是,就等待鍵盤松開(kāi)。按鍵處理在通常情況下選取按鍵后就按通信協(xié)議向外發(fā)送數(shù)據(jù)。
4 遙控器控制通信協(xié)議
遙控器控制通信協(xié)議的數(shù)據(jù)包由7部分組成:開(kāi)始和結(jié)束波形、系列號(hào)、ID號(hào)、廣播位、鍵碼。具體見(jiàn)下圖2:
如圖2所示,通信內(nèi)容總共為40bit = 5 字節(jié)。全部采用壓縮BCD編碼的8421碼。每8bit為一個(gè)正碼,一個(gè)反碼。也就是說(shuō)一個(gè)數(shù)據(jù)包里面包括10個(gè)字節(jié)的編碼,里面 “0”和“1”bit的數(shù)目是相同的。在發(fā)送字節(jié)的過(guò)程中,將先發(fā)送位置高的bit,再發(fā)送位置低的bit。
那么具體來(lái)說(shuō)就相當(dāng)于數(shù)據(jù)包里的第1bit到第8bit為序列號(hào),第9bit到第16bit為序列號(hào)的反碼;第17bit到第24bit為系統(tǒng)號(hào)(第17bit到第20bit保留不用,數(shù)據(jù)恒為0,第21bit到第24bit用來(lái)記錄系統(tǒng)號(hào));第25bit到32bit為系統(tǒng)號(hào)的反碼;第33bit到第40bit為ID號(hào)的高8位;第41bit到第48bit為ID號(hào)高8位的反碼;第49bit到第56bit為ID號(hào)的低8位;第57bit到64bit為ID號(hào)低8位的反碼;第65bit為廣播位,第66bit到第72bit為鍵碼;第73bit為廣播位的反碼,第74bit到第80bit為鍵碼的反碼。
通信協(xié)議開(kāi)始和結(jié)束位有1M寬度的調(diào)試波形和7M寬度的無(wú)調(diào)試波形構(gòu)成。1M的帶寬由18個(gè)頻率為37.917KHZ的方波組成,總時(shí)間為:474.7uS。那么7M的時(shí)間為:474.7*7=3322.9us。數(shù)據(jù)中的“1”和“0”用以下波形表示:數(shù)據(jù)“0”的波形高低電平的時(shí)間相等,都是M(474.7us)。協(xié)議開(kāi)始和結(jié)束波形如圖3所示、
圖3 開(kāi)始和結(jié)束的波形
數(shù)據(jù)“1”的波形的高電平時(shí)間為M(474.7us),低電平的時(shí)間是3M(474.7us×3=1424.1us)每個(gè)字節(jié)的數(shù)據(jù)都由這些“1”和“0”組成。數(shù)據(jù)“0”和“1”波形如圖4所示。
圖4 數(shù)據(jù)“0”和“1”波形
按協(xié)議發(fā)送一個(gè)數(shù)據(jù)包所耗的時(shí)間:8M+(2*M+4*M)×8×5+8M =256M = 121523.2us=121.5232ms。
5 協(xié)議數(shù)據(jù)發(fā)送流程
因?yàn)閿?shù)據(jù)發(fā)送函數(shù)對(duì)時(shí)序要求很高,而且為了便于時(shí)間控制和效率的提高,所以這部分采用匯編編寫,然后在C語(yǔ)言里調(diào)用。它們之間留有5個(gè)參數(shù)作接口,共40bit。協(xié)議發(fā)送流程如下:首先保護(hù)現(xiàn)場(chǎng),接著產(chǎn)生表示數(shù)據(jù)包開(kāi)始的波形,然后發(fā)送完畢10個(gè)字節(jié)的數(shù)據(jù),發(fā)送完畢后產(chǎn)生數(shù)據(jù)包結(jié)束波形,最后恢復(fù)一個(gè)字節(jié)的數(shù)據(jù),接著發(fā)送它的反碼。最后產(chǎn)生數(shù)據(jù)包結(jié)束波形,完成后恢復(fù)現(xiàn)場(chǎng)。
在發(fā)送一個(gè)字節(jié)數(shù)據(jù)的時(shí)候,先產(chǎn)生1M帶寬的載波,接著將相應(yīng)端口拉高,緊接著累加器左移一位,然后判斷累加器的進(jìn)位位。若這一位為1則延時(shí)3M的時(shí)間,若為0則延時(shí)1M的時(shí)間。
圖5 發(fā)送一個(gè)字節(jié)函數(shù)流程
6 結(jié)束語(yǔ)
本紅外遙控器控制方案在數(shù)據(jù)傳輸時(shí)采用的編寫方式,可以避免由于紅外信號(hào)在傳輸過(guò)程中產(chǎn)生的誤碼造成遙控器控制異常、失效等情況,提升了紅外信號(hào)傳輸?shù)目煽啃?,進(jìn)而大大提升了紅外遙控器的控制性能,免除人們?cè)谑褂眉t外遙控器控制過(guò)程中遇到的各種失效煩惱。
參考文獻(xiàn):
[1] 方紅萍, 王陽(yáng). 具有學(xué)習(xí)功能的通用紅外遙控系統(tǒng)關(guān)鍵技術(shù)的研究[J]. 計(jì)算機(jī)時(shí)代, 2009 (3): 20-21.
[2] 王紅美. 基于單片機(jī)的紅外線遙控器設(shè)計(jì)[J]. 自動(dòng)化應(yīng)用, 2013 (9): 31-32.
[3] 施偉. 基于單片機(jī)的學(xué)習(xí)型紅外遙控器設(shè)計(jì)[J]. 硅谷, 2011 (9): 43, 68.
[4] 陳祖爵, 王建毅. 智能型紅外遙控器的設(shè)計(jì)[J]. 微計(jì)算機(jī)信息, 2008 (2).
[5] 李寶營(yíng), 趙永生, 祁建廣. 基于單片機(jī)的紅外遙控系統(tǒng)設(shè)計(jì)[J]. 機(jī)電工程技術(shù), 2008 (12): 77-79.
[6] 李志超, 周華. 基于單片機(jī)的紅外遙控器的設(shè)計(jì)與應(yīng)用[J]. 中州大學(xué)學(xué)報(bào), 2008 (2) : 111-112.