單片機(jī)控制系統(tǒng)的紅外線遙控器接口介紹
給單片機(jī)控制系統(tǒng)加兩個(gè)紅外線遙控接口,用手持紅外遙控器來輔助或代替鍵盤的操作,給使用者帶來了極大的方便。本節(jié)根據(jù)我們的實(shí)際開發(fā)經(jīng)驗(yàn),介紹紅外線遙控發(fā)射接收芯片BA5048和BA5050的性能及其與51系列單片機(jī)系統(tǒng)的接口電路,給出軟件識(shí)別鍵碼的方法和匯編子程序。
1. 36.1 紅外線遙控發(fā)射接收芯片BA5048和BA5050的特性
BA5048和BA5050是配對(duì)使用的紅外線遙控發(fā)射接收芯片。BA5048是發(fā)射器,采用CMOS結(jié)構(gòu),功耗極低,工作電壓范圍寬(1.5~5.O V);內(nèi)置振蕩電路,外圍電路也極為簡(jiǎn)單;具有18種功能及75種指令;可以單鍵觸發(fā)、多鍵觸發(fā)(最高達(dá)6鍵)。
BA5048引腳圖:
BA5048的按鍵輸入是由Kl-K6及Tl~T3組成的6×3矩陣構(gòu)成的。K1~K6與Tl組合成的按鍵輸出的是連續(xù)性信號(hào),通過給Tl到K1~K6加編碼二極管可實(shí)現(xiàn)63種按鍵編碼。連續(xù)性信號(hào)的輸出特點(diǎn)是,當(dāng)有一連續(xù)性按鍵按下時(shí),指令發(fā)射2次信號(hào),每次信號(hào)的周期是20. 25 ms,2次信號(hào)之間相隔33.8 ms,然后有87.8 ms的暫停,之后另一周期開始直到按鍵抬起。K1~K6與T2~T3組合成的按鍵輸出的是一次性觸發(fā)信號(hào),按一次鍵盤只對(duì)應(yīng)一次輸出。一次性觸發(fā)信號(hào)的輸出特點(diǎn)是,當(dāng)有一次性觸發(fā)按鍵按下時(shí),指令僅發(fā)射2次信號(hào),每次信號(hào)的周期是20. 25 ms,2次信號(hào)之間相隔33.8 ms,然后便停止。
信號(hào)每周期的發(fā)射指令是一串12位的字碼,如圖1 - 129所示。圖中,C1~C3是代碼位,不同型號(hào)的解碼器對(duì)應(yīng)不同的代碼;H、Sl、S2對(duì)應(yīng)Tl、T2、T3,表示連續(xù)信號(hào)或一次性觸發(fā)信號(hào);D1~D6對(duì)應(yīng)K1~K6按鍵而成的6位信息碼。
BA5050在接收信號(hào)時(shí)要連續(xù)接收2組發(fā)射信號(hào),以確定信號(hào)是否正常。首先第一組信號(hào)的數(shù)碼被存入片內(nèi)的12位轉(zhuǎn)換寄存器;然后,當(dāng)接收到第二組信號(hào)碼時(shí),立即與轉(zhuǎn)換寄存器中的數(shù)碼進(jìn)行比較,看其是否相同:如果不同,系統(tǒng)馬上被重置;反之當(dāng)所有接收碼正常時(shí),各相應(yīng)的輸出端就從低電平升到高電平。
為防止其他機(jī)型的干擾,BA5050提供CODE1和CODE2兩個(gè)碼位來核對(duì)發(fā)射器與接收器代碼是否一致。只有當(dāng)兩種代碼一致時(shí),后面的數(shù)據(jù)位才有效產(chǎn)生相應(yīng)的輸出;否則不產(chǎn)生輸出。
單脈沖輸出引腳SP1~SP10在連續(xù)接收到兩組信號(hào)后立即輸出一個(gè)寬度為107 ms的正脈沖。持續(xù)脈沖輸出引腳HP1~HP6只要接收到有效的連續(xù)信號(hào),相應(yīng)的輸出端就保持高電平。當(dāng)松開按鍵連續(xù)信號(hào)終止后,再過大約160 ms,輸出才變?yōu)榈碗娖健P1~HP6能同時(shí)并行地輸出高電平。反向電平輸出引腳CP1和CP2,每當(dāng)收到一次有效的信號(hào)時(shí),輸出端電平就反一下向。
BA5050對(duì)電視機(jī)、日光燈、節(jié)能燈等干擾具有極強(qiáng)的抑制能力。
1. 36.2 BA5050與單片機(jī)系統(tǒng)的接口電路
圖1 - 132是BA5050與51單片機(jī)系統(tǒng)的接口電路。該電路用兩個(gè)端口來處理接收到的鍵碼數(shù)據(jù)。HPRO端口用來讀取連續(xù)按鍵信號(hào)(HP1~HP6)和反轉(zhuǎn)按鍵信號(hào)(CP1和CP2)。HP1~HP6可有63種排列組合,其鍵碼值的范圍是OIH~3FH。在實(shí)際應(yīng)用系統(tǒng)中,一般將HP1~HP6的排列組合按鍵設(shè)置成各種功能按鍵,CP1與CP2設(shè)置成類似電源開關(guān)和靜音等功能的按鍵。SPRO端口用來讀取單次觸發(fā)按鍵信號(hào)(SP1~SP10)。SP1~SP10信號(hào)是經(jīng)過十進(jìn)制編碼電路加到端口的,因此沒有SP鍵按下時(shí),此端口讀到的數(shù)據(jù)是10H;有SP鍵按下時(shí),SP1~SP10對(duì)應(yīng)鍵碼是OOH~09H。在后面的子程序中已將它轉(zhuǎn)化為OIH~OAH,在實(shí)際應(yīng)用系統(tǒng)中,一般將它與1~9和0十個(gè)數(shù)字鍵對(duì)應(yīng)。
以下是讀取遙控器鍵碼的子程序:連續(xù)性按鍵鍵碼值存在50H;反向電平輸出CP1和CP2狀態(tài)存在51H;一次性觸發(fā)按鍵鍵碼存在52H。讀者可根據(jù)50H、51H、52H的值和具體的應(yīng)用系統(tǒng),自己定義按鍵功能和編寫鍵碼的處理程序。其程序基本結(jié)構(gòu)是判斷鍵值后作相應(yīng)的跳轉(zhuǎn)處理。