作者:周貽春
當(dāng)前,投影機(jī)已是高校多媒體教室的常規(guī)設(shè)備,但是由于使用頻繁,人員又雜,投影機(jī)遙控器損壞及遺失的情況時(shí)有發(fā)生。因?yàn)閷W(xué)校用的投影機(jī)均為進(jìn)口產(chǎn)品,遙控器很難配到,并且能買(mǎi)到的話價(jià)格也是異常昂貴。利用單片機(jī)仿真遙控器的功能,制作成本很低的投影機(jī)遙控器具有實(shí)用推廣價(jià)值。
制作投影機(jī)遙控器的關(guān)鍵是先要讀出原投影機(jī)遙控器(同型號(hào))的所有按鍵的控制碼數(shù)據(jù),然后做成按鍵控制碼表格,當(dāng)仿真時(shí)在按鍵操作下單片機(jī)將不同的控制碼數(shù)據(jù)發(fā)射出去,達(dá)到遙控投影機(jī)的目的。
1讀遙控器按鍵碼方法
1.1讀遙控器按鍵碼硬件電路
如圖1為單片機(jī)讀投影機(jī)遙控鍵碼的控制電路。單片機(jī)使用宏晶公司的STC12C5410,P1.6口燈用作讀碼狀態(tài)的指示,燈亮代表讀碼狀態(tài)。P1.7口燈用于指示遙控發(fā)射操作,閃爍時(shí)代表遙控碼發(fā)射中,在讀碼狀態(tài)下,當(dāng)P1.6口燈滅而P1.7口燈亮?xí)r代表碼已讀入。第(1)腳為單片機(jī)的復(fù)位腳,采用簡(jiǎn)單的RC上電復(fù)位電路,(6)腳為外中斷輸入口,用于讀碼功能的轉(zhuǎn)換控制,當(dāng)按一下(6)腳口的開(kāi)關(guān)時(shí),系統(tǒng)進(jìn)入中斷讀碼狀態(tài)。(8)腳用于紅外線接收頭的輸出信號(hào)讀入。(11)腳作為遙控器的紅外線信號(hào)輸出口,用于輸出40KHz載波編碼。(12)腳接遙控測(cè)試開(kāi)關(guān)。(4)、(5)腳外接12M晶振。
當(dāng)按一下“學(xué)習(xí)”開(kāi)關(guān)時(shí),P1.6口的讀碼燈亮,表示進(jìn)入讀碼狀態(tài),此時(shí)將需要仿真的遙控器某按鍵對(duì)著紅外接收頭按一下,當(dāng)P1.6口的燈滅而P1.7口的指示燈亮?xí)r,讀碼成功。從計(jì)算機(jī)超級(jí)終端串口中可獲得鍵碼的數(shù)據(jù)。為了測(cè)試讀得的碼是否正確,可按一下發(fā)射測(cè)試開(kāi)關(guān),看是否能正確實(shí)現(xiàn)投影機(jī)的功能操作。按以上方法將原投影機(jī)遙控器的所有按鍵碼讀入計(jì)算機(jī)備用。圖2和圖3分別是紅外線接收頭輸出端口及發(fā)射遙控碼時(shí)的單片機(jī)輸出口波形圖。
1.2讀遙控器按鍵碼軟件設(shè)計(jì)
圖4是讀遙控器按鍵碼控制軟件的主程序流程。圖5是中斷讀入鍵碼數(shù)據(jù)的程序流程圖。
中斷讀鍵碼程序在編程設(shè)計(jì)中非常重要。它要完成遙控碼起始位的識(shí)別及脈寬計(jì)數(shù)、遙控碼編碼位的寬度計(jì)數(shù)、結(jié)束位的認(rèn)別等功能。通過(guò)大量的不同種類的遙控碼波形實(shí)驗(yàn)分析,遙控碼的幀間歇位寬度均在10ms以上,起始位碼寬度在100μs—20ms之間,編碼位在100μs—5ms之間,為確保對(duì)所有遙控器讀碼的成功,采用以下設(shè)計(jì)方法:
(1)尋提起始位方法:用16位DPTR計(jì)數(shù)器對(duì)高電平進(jìn)行寬度計(jì)數(shù),計(jì)數(shù)采樣周期為21μs,當(dāng)高電平結(jié)束時(shí),如高8位計(jì)數(shù)器為非零,則說(shuō)明高電平寬度超過(guò)5.35ms(255×21μs),緊接來(lái)的低電**就是起始位,否則重新開(kāi)始。