程序流程圖如圖3所示,在時序上,整個程序基本上所有的時間都是在調(diào)用鍵盤掃描子程序,因此能檢測到任何時候的按鍵。只有在掃描到有按鍵時才會調(diào)用發(fā)射紅外編碼程序,發(fā)射一次紅外編碼程序耗時為58.5ms至76.5ms,該時間很短,對于按鍵時序不會產(chǎn)生任何影響。
發(fā)射紅外編碼采用定時器中斷的方式來實現(xiàn),設(shè)定時值為38k,也就是每隔26 μs中斷一次。這樣,要發(fā)送9ms的引導碼,只需要將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中顯示的是當(a)部分按下按鍵“K14”時,(b)部分顯示“14”。
實驗結(jié)果證明,仿真結(jié)果在實物電路板上同樣是正確的,說明此發(fā)射模塊就等于同于一個實際的遙控器。
5 結(jié)論
紅外遙控發(fā)生器Proleus仿真模塊具有結(jié)構(gòu)簡單、可靠性高、可移植行強等優(yōu)點。本模塊填補了Proleus仿真軟件對于紅外遙控發(fā)射器件的空白。借助本模塊,紅外遙控系統(tǒng)開發(fā)者能大幅度地縮短產(chǎn)品的開發(fā)時間,大大提高工作效率。