具有學(xué)習(xí)功能的智能遙控器
電器的增多,在生活中遙控器數(shù)目也較多,由于遙控器與電器是一對一的使用,容易造成遙控器的混淆;另外若遙控器丟失,找到配套的遙控器就很困難。為此,我們以單片機(jī)為核心,設(shè)計了一款多功能遙控器,并由于其獨特的設(shè)計思路,廣泛的應(yīng)用性,于2004年10月被國家知識產(chǎn)權(quán)局授予實用新型發(fā)明專利一項。
1 紅外遙控器簡介
紅外遙控器是由遙控發(fā)射集成電路、振蕩器及鍵盤掃描電路組成的。
當(dāng)遙控器有鍵被按下時,振蕩電路立即接通并起振,掃描信號發(fā)生器隨即發(fā)出多路不同時序的掃描時序脈沖,依次對鍵盤矩陣進(jìn)行掃描,鍵盤編碼器則由接收到的回送信號判斷出被按鍵位置,并輸出相應(yīng)的編碼至譯碼器,經(jīng)譯碼器進(jìn)行碼元變換后的信號被重新編碼調(diào)制后輸出。
不同的紅外遙控器之間的主要區(qū)別在于擁有不同的遙控發(fā)射集成芯片和編碼的調(diào)制方式。經(jīng)過大量的研究分析發(fā)現(xiàn),絕大多數(shù)的遙控器具有相同的載波頻率。
2 硬件組成
電路將能夠執(zhí)行學(xué)習(xí)、預(yù)存編碼、模擬發(fā)射編碼等功能。其組成框圖如圖一所示。
2.1 紅外接收頭
紅外接收頭通稱遙控預(yù)放器。
圖二所示的接收碼為它對發(fā)射芯片M50462AP的脈沖調(diào)制碼的轉(zhuǎn)換碼。
接收頭使用簡單,只需將它的三個管腳分別接地、電源和單片機(jī)的通用I/O引腳即可。
2.2 單片機(jī)
單片機(jī)選用AT89C55,是MCS—51系列芯片,具有20KB的FLASH存儲器,256字節(jié)的數(shù)據(jù)存儲區(qū)。
單片機(jī)是電路的核心,負(fù)責(zé)接收遙控器的發(fā)射碼,找出規(guī)律,并將其記錄、存儲,即完成學(xué)習(xí)功能;同時有按鍵按下時,判斷鍵值,將相應(yīng)的模擬編碼發(fā)射出去,執(zhí)行遙控功能或?qū)崿F(xiàn)編碼預(yù)存功能。
2.3 鍵盤掃描及顯示電路
鍵盤掃描及顯示電路選用16位LED數(shù)碼管顯示及鍵盤接口專用芯片BC7281,BC7281通過外接移位寄存器(74HC164或74LS595等),最多可以控制16位數(shù)碼管顯示或128支獨立的LED,還能連接最多64鍵的鍵盤,而且鍵盤部分還具有鍵值鎖存功能。
BC7281具有2線高速串行接口,單片機(jī)和BC7281就通過串口的數(shù)據(jù)線DAT,時鐘線CLK還有按鍵標(biāo)志線KEY相連接。數(shù)據(jù)線在使用時需接20K的上拉電阻。
2.4鍵盤
按鍵最多可有64個,可以被賦予不同的功能,如學(xué)習(xí)鍵、確定鍵、預(yù)存鍵以及電視開關(guān)鍵、音量鍵、定時鍵等功能鍵,按鍵編碼與硬件連接方式相關(guān)。
學(xué)習(xí)時先按學(xué)習(xí)鍵,再按相應(yīng)的功能鍵,學(xué)習(xí)成功后,按確定鍵結(jié)束。編碼預(yù)存時按下預(yù)存鍵,再按數(shù)字增減鍵,即可將相應(yīng)編碼進(jìn)行存儲。各功能鍵直接使用即可。經(jīng)學(xué)習(xí)或預(yù)存后,各功能鍵即可代替遙控器實施遙控功能。
2.5發(fā)射單元
發(fā)射單元由振蕩器和發(fā)射管組成。振蕩器用NEC555實現(xiàn),振蕩頻率設(shè)計為39K,是模擬編碼輸出信號的載波。NEC555的控制信號來自于單片機(jī)的通用I/O引腳,有高電平輸入時起振,低電平時停止振蕩,從而控制發(fā)射管發(fā)射出編碼調(diào)制后的脈沖。
3 軟件設(shè)計
由于電路受按鍵控制,故在主程序中要不斷地判斷鍵值,相應(yīng)的功能在子程序中完成。軟件應(yīng)完成的工作有以下幾部分:
3.1接收碼的處理
無論遙控器的編碼以哪種編碼調(diào)制方式發(fā)出,總可以認(rèn)為編碼由時間延續(xù)不等的高、低電平組成,因此,可以不斷讀取與接收頭相連的I/O口的數(shù)值,用計數(shù)器記錄高、低電平的時間??紤]到單片機(jī)的時鐘周期較長,可以將接收信號的時間進(jìn)行壓縮,即將記錄的數(shù)值除以32后再儲存,可以節(jié)省存儲空間。
為了準(zhǔn)確地存儲編碼,可以進(jìn)行3次學(xué)習(xí)操作,每次學(xué)習(xí)時,均記錄3組數(shù)值,存至不同的空間。每次學(xué)習(xí)后,將3組數(shù)值進(jìn)行比較,每個數(shù)值的偏差在03H之內(nèi),即認(rèn)為本次學(xué)習(xí)成功,將3組數(shù)平均,存儲。重復(fù)學(xué)習(xí)三次后,將3次學(xué)習(xí)的結(jié)果再進(jìn)行比較,偏差在03H之內(nèi),即可認(rèn)為學(xué)習(xí)成功,取3次學(xué)習(xí)的結(jié)果作平均,作為遙控器編碼的代用碼,存至EEPROM的相應(yīng)空間,以防數(shù)據(jù)掉電丟失。
編碼存儲時先存儲鍵值作起始標(biāo)志,最后以FFH為結(jié)束碼。按照12M的晶體振蕩器決定的時鐘周期和除以32的時間壓縮,編碼的規(guī)律為高、低電平交錯出現(xiàn)。
3.2 判斷鍵盤按鍵
按鍵被按下時,通過INT1產(chǎn)生中斷。在中斷服務(wù)程序中,判斷鍵值,存儲,并確定相應(yīng)的編碼存儲地址。
3.3 發(fā)射編碼
發(fā)射編碼時,先根據(jù)鍵值尋找相應(yīng)編碼所在地址,依據(jù)起始碼判斷是否正確,確認(rèn)后依據(jù)高、低電平的順序控制振蕩器的起振與停振,起振與停振的時間是將存儲碼擴(kuò)展32倍。擴(kuò)展時間是通過延時進(jìn)行的,延時時間需經(jīng)過多次反復(fù)的實驗。
3.4遙控器編碼預(yù)存
為了降低學(xué)習(xí)時的誤碼率,在程序中填加了遙控器編碼預(yù)存功能,將收集到的編碼存儲在程序存儲器中,并將編碼序號與發(fā)射芯片的對應(yīng)關(guān)系告之用戶,用戶在已知發(fā)射芯片型號的基礎(chǔ)上可以預(yù)存遙控器編碼。當(dāng)預(yù)存鍵按下時,配以數(shù)字增減鍵,將相應(yīng)的編碼存至EEPROM對應(yīng)的地址中。
3.5顯示功能
顯示系統(tǒng)能顯示學(xué)習(xí)及編碼預(yù)存功能的各種狀態(tài)。如進(jìn)入學(xué)習(xí)狀態(tài)時顯示HELP;每一次學(xué)習(xí)成功時顯示1111;學(xué)習(xí)不成功顯示2222;三次學(xué)習(xí)成功顯示5555。編碼預(yù)存時顯示編碼芯片的序列號。為了節(jié)電,不學(xué)習(xí)時顯示系統(tǒng)不工作。
4 結(jié)束語
設(shè)計完成后,由于其價格低廉,控制準(zhǔn)確,操作簡單,而得到了生產(chǎn)廠家的認(rèn)可,預(yù)計可以給廠家?guī)淼慕?jīng)濟(jì)效益每年近百萬元。單片機(jī)代替編碼芯片的思路將我們引入了單片機(jī)應(yīng)用的一個新領(lǐng)域,我們將進(jìn)一步縮小其體積,使其功能進(jìn)一步完善,以求更大的發(fā)展。
參考文獻(xiàn)
1 郝建國,家用電器遙控系統(tǒng)集成電路大全[M],北京:人民郵電出版社,1996年
2王裕琛、安穎,與空調(diào)、電視共用遙控器的遙控?zé)鬧P],中華人民共和國知識產(chǎn)權(quán)局,ZL03281069.5,2004年10月6日