紅外遙控發(fā)射器Proteus仿真研究
0 引言
本文引用地址:http://www.ex-cimer.com/article/201610/307425.htm紅外遙控在家電、玩具、工控、智能儀表中是使用最廣泛的一種通信和遙控手段。Proteus仿真能大大加快該遙控系統(tǒng)的開發(fā)周期和提高其性能,但是當(dāng)前版本的Proteus中尚沒有紅外發(fā)射器的仿真元器件,只有一個IRLINK模塊可以用于接收并解調(diào)紅外信號,給紅外系統(tǒng)仿真帶來了較大的難度。目前學(xué)者對紅外遙控系統(tǒng)的接收部分仿真已經(jīng)有較多的研究,但是還很少有針對紅外遙控發(fā)射部分的典型仿真研究??梢栽O(shè)計一種典型的紅外發(fā)射器仿真模塊,該模塊在仿真中相當(dāng)于實際的遙控器。進行紅外遙控系統(tǒng)開發(fā)仿真時,可以將此模塊用于紅外遙控接收電路以及其軟件的快速驗證,加快產(chǎn)品開發(fā)周期。
1 紅外遙控發(fā)射器調(diào)制解調(diào)過程簡介
紅外遙控發(fā)射器發(fā)射的一幀數(shù)據(jù)一般由引導(dǎo)碼、低8位用戶編碼、8位數(shù)據(jù)碼、8位數(shù)據(jù)碼的反碼等4部分組成。其中用戶識別碼能區(qū)別不同的紅外遙控設(shè)備,防止不同機種遙控碼互相干擾。后16位為8位數(shù)據(jù)碼和8位數(shù)據(jù)碼的反碼,每次8位的數(shù)據(jù)碼被傳送之后,它的反碼也隨即被傳送,用于確保接收數(shù)據(jù)準(zhǔn)確。這種遙控碼是采用脈沖寬度調(diào)制方式,它的特征是:采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”。
紅外數(shù)據(jù)幀經(jīng)編碼后,還要用38kHz的方波進行脈沖幅度調(diào)制。如圖1所示,最上面一行為待發(fā)射數(shù)據(jù)的波形,第二行為38k載波,第三行為經(jīng)載波調(diào)制后的紅外發(fā)射信號波形,第四行是經(jīng)過一種專門的紅外接收濾波后的數(shù)據(jù)還原??梢钥闯?,最后通過解碼還原出來的數(shù)據(jù)波形與紅外遙控器發(fā)射的數(shù)據(jù)波形相位剛好反向。
2 紅外遙控仿真硬件電路設(shè)計
圖2所示是紅外發(fā)射接收一體化仿真電路。單片機U2部分為紅外接收,并顯示接收到的紅外編碼,顯示部分可采用數(shù)碼管,LCD等顯示器件,學(xué)者已經(jīng)對紅外接收及顯示有較詳細的研究,在此不作論述,只用作驗證紅外遙控發(fā)射器模塊的有效性。
單片機U1部分為模擬紅外遙控器發(fā)射。因Proteus仿真軟件里面沒有常見的紅外遙控發(fā)射器處理芯片,這里用8051單片機U1來實現(xiàn),其P3.4口輸出待發(fā)射數(shù)據(jù),該數(shù)據(jù)經(jīng)與門U3和38k載波信號調(diào)制后發(fā)射到接收電路,接收電路再通過Proteus軟件自帶的IRLINK模塊解調(diào)后送到U2的外部中斷INT0。遙控發(fā)射器按鍵輸入采用4×4矩陣鍵盤,當(dāng)按下某一個鍵后會發(fā)出對應(yīng)的編碼。例如按下鍵K6,按照紅外發(fā)射數(shù)據(jù)幀結(jié)構(gòu),將通過P3.4口串行發(fā)送“00,00,0x06,0xf9”,其中,前面的“00,00”為用戶碼,對于不同的設(shè)備需作相應(yīng)的修改;“0x06”是代表6號鍵,“0xf9”是“0x06”的反碼,用于校驗,提高傳輸準(zhǔn)確性。只要在單片機的程序中對用戶碼和按鍵編碼作相應(yīng)的修改,就能使該遙控發(fā)射器在各類紅外遙控系統(tǒng)仿真中通用。
3 紅外遙控發(fā)射器程序設(shè)計
3.1 軟件功能概述
根據(jù)仿真硬件電路設(shè)計,單片機的軟件程序需要完成以下2個功能:1)按鍵掃描:實時對4×4矩陣鍵盤掃描,得到按鍵碼,并根據(jù)按鍵碼查找出對應(yīng)的紅外發(fā)射編碼。2)編碼發(fā)射:根據(jù)前述2.1和2.2的編碼協(xié)議通過P3.4口發(fā)射紅外編碼。
單片機程序功能較簡單,但是對于按鍵掃描和編碼發(fā)射的時序要求較高,既要保證實時掃描到按鍵,又要保證紅外編碼的實時發(fā)射。
3. 2 程序設(shè)計
程序流程圖如圖3所示,在時序上,整個程序基本上所有的時間都是在調(diào)用鍵盤掃描子程序,因此能檢測到任何時候的按鍵。只有在掃描到有按鍵時才會調(diào)用發(fā)射紅外編碼程序,發(fā)射一次紅外編碼程序耗時為58.5ms至76.5ms,該時間很短,對于按鍵時序不會產(chǎn)生任何影響。
發(fā)射紅外編碼采用定時器中斷的方式來實現(xiàn),設(shè)定時值為38k,也就是每隔26 μs中斷一次。這樣,要發(fā)送9ms的引導(dǎo)碼,只需要將P3.4置為1,并控制定時器中斷次數(shù)為346次即可。同樣,要發(fā)送4.5ms的起始碼,只需要將P3.4清0,并控制定時器中斷次數(shù)為173次即可。其它部分類似。得到的紅外編碼數(shù)據(jù)發(fā)送子程序如下:
在紅外編碼數(shù)據(jù)發(fā)送子程序中,“IR_data[]”數(shù)組里存放的是一幀數(shù)據(jù)的4個編碼,每個編碼8位,共32位;“endcount”用于控制定時時間,例如“endcount=346;”指令將控制發(fā)送9ms的起始碼。
4 仿真及實物驗證
4. 1 仿真結(jié)果
紅外遙控發(fā)射數(shù)據(jù)時的仿真波形圖如圖4所示:第一個波形為由單片機U1的P3.4口發(fā)送出來的數(shù)據(jù),第二個波形為38k載波,第三個波形為調(diào)制后的紅外發(fā)射信號,第四個波形為紅外接收濾波后的數(shù)據(jù)還原。可以看出還原后的數(shù)據(jù)波形與發(fā)射出的數(shù)據(jù)波形相位剛好反向。這種紅外遙控碼波形與前述遙控器廠家提供的如圖1所示的數(shù)據(jù)完全吻合。
4.2 實物驗證結(jié)果
圖5所示為用實物驗證模擬紅外發(fā)射接收。其中(b)部分為接收紅外遙控信號,解調(diào)并用兩位數(shù)碼管來顯示接收到的紅外編碼。(b)部分的解調(diào)和顯示程序是事先經(jīng)海信電視CN-22601遙控器、開博爾電視盒遙控器、志高空調(diào)ZH/JT-06遙控器等三款紅外遙控器測試通過的,可以確保解調(diào)和顯示程序是正確的。(a)部分為模擬紅外遙控發(fā)射數(shù)據(jù)。(a)和(b)兩部分通過兩根線相連,白色的一根是地線,使兩塊電路板共地;紅色的一根連接(a)部分的P3.4口和(b)部分的外部中斷INT0。圖5中顯示的是當(dāng)(a)部分按下按鍵“K14”時,(b)部分顯示“14”。
實驗結(jié)果證明,仿真結(jié)果在實物電路板上同樣是正確的,說明此發(fā)射模塊就等同于一個實際的遙控器。
5 結(jié)論
紅外遙控發(fā)射器Proteus仿真模塊具有結(jié)構(gòu)簡單、可靠性高、可移植性強等優(yōu)點。本模塊填補了Proteus仿真軟件對于紅外遙控發(fā)射器件的空白。借助本模塊,紅外遙控系統(tǒng)開發(fā)者能大幅度地縮短產(chǎn)品的開發(fā)時間,大大提高工作效率。
評論