新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用微處理器I/O口控制紅外接收設(shè)備

用微處理器I/O口控制紅外接收設(shè)備

——
作者:羅國發(fā) 時(shí)間:2013-02-21 來源:電子產(chǎn)品世界 收藏

  紅外遙控是一種無線、非接觸控制技術(shù),具有抗干擾,電路簡單,容易編碼和解碼,功耗小,成本低等優(yōu)點(diǎn),幾乎適用于所有家電的控制,并越來越多地應(yīng)用到計(jì)算機(jī)系統(tǒng)中。出于項(xiàng)目需要,要對一個(gè)內(nèi)部程序未知的設(shè)備實(shí)現(xiàn)控制,我們把設(shè)備自帶的紅外接收頭作為切入點(diǎn)。

本文引用地址:http://m.butianyuan.cn/article/142182.htm

  項(xiàng)目使用的是GOSSAT(高斯賽特)的GSR—S80 S型數(shù)字衛(wèi)星接收機(jī),設(shè)備配套有一個(gè),單憑外觀無法知道它所使用紅外協(xié)議的種類,如果有示波器的話,就可以捕捉信號波形并進(jìn)行分析。

  紅外接收頭的種類很多,引腳定義也不相同,一般都有三個(gè)引腳,包括供電腳,接地和信號輸出腳。常見的接收頭型號有0038和1838。從外形上看,項(xiàng)目用的接收機(jī)使用的是0038接收頭。

  項(xiàng)目使用的是ATTEN(安泰信)的ADS-1102C數(shù)字示波器。把接收頭的信號輸出腳和地腳引出來,接入示波器,捕捉波形時(shí)建議用25ms/div的時(shí)間間隔比較方便,之后再放大到2.5ms/div進(jìn)行查看和分析。鑒定有沒輸出信號的小技巧,打開手機(jī)的拍照功能,對著的紅外發(fā)射管,此時(shí)按下遙控器上任意一個(gè)鍵,如果手機(jī)屏幕上能看到發(fā)射管發(fā)出了紅紫光,說明遙控器是正常的。

  經(jīng)過分析捕捉到的波形得知,項(xiàng)目所用接收機(jī)采用的是紅外協(xié)議。查閱協(xié)議的資料,其特征如下:

  (1)8位地址和8位指令長度;

  (2)地址和命令2次傳輸(確??煽啃?;

  (3)PWM脈沖位置調(diào)制,以發(fā)射紅外載波的占空比代表“0”和“1””;

  (4)載波頻率為38kHz;

  (5)位時(shí)間為1.125ms或2.25ms;

  碼的位定義:一個(gè)脈沖對應(yīng)560μs的連續(xù)載波,一個(gè)邏輯1傳輸需要560μs脈沖+1680μs低電平,一個(gè)邏輯0的傳輸需要560μs脈沖+560μs低電平。而遙控接收頭在收到脈沖的時(shí)候?yàn)榈碗娖?,在沒有脈沖的時(shí)候?yàn)楦唠娖剑@樣,我們在接收頭端收到的信號是反相的:邏輯1是560μs低+1680ms高,邏輯0是560μs低+560μs高。

  NEC遙控指令的數(shù)據(jù)格式為:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個(gè)9ms的低電平和一個(gè)4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。采用反碼是為了增加傳輸?shù)目煽啃?可用于校驗(yàn))。

  NEC碼規(guī)定的連發(fā)碼(由9ms低電平+2.5m高電平+0.56ms低電平+97.94ms高電平組成),發(fā)送完后40ms,遙控再發(fā)送一個(gè)9ms低,2ms高的脈沖,表示按鍵的次數(shù),出現(xiàn)一次則表示只按下了一次,如果出現(xiàn)多次,則可以認(rèn)為是持續(xù)按下該鍵。

  知道協(xié)議之后,我們就可以進(jìn)一步分析出遙控器的地址碼和各個(gè)按鍵的控制碼。項(xiàng)目所用接收機(jī)有點(diǎn)特殊,通過示波器去看,得出地址正碼是0xA1,地址反碼是0xDE,其余位都取反了,唯獨(dú)最高位都是1,這個(gè)不同于常規(guī)。

  之后的控制碼,由于按鍵數(shù)量多,可以編寫一個(gè)紅外解碼程序來解出這些鍵值,之后再用示波器來抽檢幾個(gè),用于保證解出來的控制碼的正確性,這是很關(guān)鍵的一步,不可小視。

  之后就可以開始進(jìn)行的虛擬NEC工作了,項(xiàng)目采用STM32作為主控芯片,這里的功能只需要用到一個(gè)普通,我們使用的是PA14。硬件上只需把PA14連接到紅外接收頭的信號輸出腳,地腳和STM32共地就可以了。

  關(guān)于STM32的設(shè)置說明,每個(gè)I/O口可以自由編程,單I/O口寄存器必須要按32位字被訪問。STM32的每個(gè)I/O端口都由7個(gè)寄存器來控制。其中CRL和CRH控制著每個(gè)I/O口的模式及輸出速率,對ODR賦值可以改變對應(yīng)位I/O口的高低電平。

萬能遙控器相關(guān)文章:萬能遙控器代碼




關(guān)鍵詞: NEC I/O 遙控器

評論


相關(guān)推薦

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

關(guān)閉