具有學(xué)習(xí)功能的智能遙控器
3 軟件設(shè)計(jì)
由于電路受按鍵控制,故在主程序中要不斷地判斷鍵值,相應(yīng)的功能在子程序中完成。軟件應(yīng)完成的工作有以下幾部分:
3.1接收碼的處理
無論遙控器的編碼以哪種編碼調(diào)制方式發(fā)出,總可以認(rèn)為編碼由時(shí)間延續(xù)不等的高、低電平組成,因此,可以不斷讀取與接收頭相連的I/O口的數(shù)值,用計(jì)數(shù)器記錄高、低電平的時(shí)間。考慮到單片機(jī)的時(shí)鐘周期較長,可以將接收信號的時(shí)間進(jìn)行壓縮,即將記錄的數(shù)值除以32后再儲存,可以節(jié)省存儲空間。
為了準(zhǔn)確地存儲編碼,可以進(jìn)行3次學(xué)習(xí)操作,每次學(xué)習(xí)時(shí),均記錄3組數(shù)值,存至不同的空間。每次學(xué)習(xí)后,將3組數(shù)值進(jìn)行比較,每個(gè)數(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ù)掉電丟失。
編碼存儲時(shí)先存儲鍵值作起始標(biāo)志,最后以FFH為結(jié)束碼。按照12M的晶體振蕩器決定的時(shí)鐘周期和除以32的時(shí)間壓縮,編碼的規(guī)律為高、低電平交錯(cuò)出現(xiàn)。
3.2 判斷鍵盤按鍵
按鍵被按下時(shí),通過INT1產(chǎn)生中斷。在中斷服務(wù)程序中,判斷鍵值,存儲,并確定相應(yīng)的編碼存儲地址。
3.3 發(fā)射編碼
發(fā)射編碼時(shí),先根據(jù)鍵值尋找相應(yīng)編碼所在地址,依據(jù)起始碼判斷是否正確,確認(rèn)后依據(jù)高、低電平的順序控制振蕩器的起振與停振,起振與停振的時(shí)間是將存儲碼擴(kuò)展32倍。擴(kuò)展時(shí)間是通過延時(shí)進(jìn)行的,延時(shí)時(shí)間需經(jīng)過多次反復(fù)的實(shí)驗(yàn)。
3.4遙控器編碼預(yù)存
為了降低學(xué)習(xí)時(shí)的誤碼率,在程序中填加了遙控器編碼預(yù)存功能,將收集到的編碼存儲在程序存儲器中,并將編碼序號與發(fā)射芯片的對應(yīng)關(guān)系告之用戶,用戶在已知發(fā)射芯片型號的基礎(chǔ)上可以預(yù)存遙控器編碼。當(dāng)預(yù)存鍵按下時(shí),配以數(shù)字增減鍵,將相應(yīng)的編碼存至EEPROM對應(yīng)的地址中。
3.5顯示功能
顯示系統(tǒng)能顯示學(xué)習(xí)及編碼預(yù)存功能的各種狀態(tài)。如進(jìn)入學(xué)習(xí)狀態(tài)時(shí)顯示HELP;每一次學(xué)習(xí)成功時(shí)顯示1111;學(xué)習(xí)不成功顯示2222;三次學(xué)習(xí)成功顯示5555。編碼預(yù)存時(shí)顯示編碼芯片的序列號。為了節(jié)電,不學(xué)習(xí)時(shí)顯示系統(tǒng)不工作。
4 結(jié)束語
設(shè)計(jì)完成后,由于其價(jià)格低廉,控制準(zhǔn)確,操作簡單,而得到了生產(chǎn)廠家的認(rèn)可,預(yù)計(jì)可以給廠家?guī)淼慕?jīng)濟(jì)效益每年近百萬元。單片機(jī)代替編碼芯片的思路將我們引入了單片機(jī)應(yīng)用的一個(gè)新領(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日
評論