具有學習功能的智能遙控器
3 軟件設計
由于電路受按鍵控制,故在主程序中要不斷地判斷鍵值,相應的功能在子程序中完成。軟件應完成的工作有以下幾部分:
3.1接收碼的處理
無論遙控器的編碼以哪種編碼調(diào)制方式發(fā)出,總可以認為編碼由時間延續(xù)不等的高、低電平組成,因此,可以不斷讀取與接收頭相連的I/O口的數(shù)值,用計數(shù)器記錄高、低電平的時間??紤]到單片機的時鐘周期較長,可以將接收信號的時間進行壓縮,即將記錄的數(shù)值除以32后再儲存,可以節(jié)省存儲空間。
為了準確地存儲編碼,可以進行3次學習操作,每次學習時,均記錄3組數(shù)值,存至不同的空間。每次學習后,將3組數(shù)值進行比較,每個數(shù)值的偏差在03H之內(nèi),即認為本次學習成功,將3組數(shù)平均,存儲。重復學習三次后,將3次學習的結(jié)果再進行比較,偏差在03H之內(nèi),即可認為學習成功,取3次學習的結(jié)果作平均,作為遙控器編碼的代用碼,存至EEPROM的相應空間,以防數(shù)據(jù)掉電丟失。
編碼存儲時先存儲鍵值作起始標志,最后以FFH為結(jié)束碼。按照12M的晶體振蕩器決定的時鐘周期和除以32的時間壓縮,編碼的規(guī)律為高、低電平交錯出現(xiàn)。
3.2 判斷鍵盤按鍵
按鍵被按下時,通過INT1產(chǎn)生中斷。在中斷服務程序中,判斷鍵值,存儲,并確定相應的編碼存儲地址。
3.3 發(fā)射編碼
發(fā)射編碼時,先根據(jù)鍵值尋找相應編碼所在地址,依據(jù)起始碼判斷是否正確,確認后依據(jù)高、低電平的順序控制振蕩器的起振與停振,起振與停振的時間是將存儲碼擴展32倍。擴展時間是通過延時進行的,延時時間需經(jīng)過多次反復的實驗。
3.4遙控器編碼預存
為了降低學習時的誤碼率,在程序中填加了遙控器編碼預存功能,將收集到的編碼存儲在程序存儲器中,并將編碼序號與發(fā)射芯片的對應關系告之用戶,用戶在已知發(fā)射芯片型號的基礎上可以預存遙控器編碼。當預存鍵按下時,配以數(shù)字增減鍵,將相應的編碼存至EEPROM對應的地址中。
3.5顯示功能
顯示系統(tǒng)能顯示學習及編碼預存功能的各種狀態(tài)。如進入學習狀態(tài)時顯示HELP;每一次學習成功時顯示1111;學習不成功顯示2222;三次學習成功顯示5555。編碼預存時顯示編碼芯片的序列號。為了節(jié)電,不學習時顯示系統(tǒng)不工作。
4 結(jié)束語
設計完成后,由于其價格低廉,控制準確,操作簡單,而得到了生產(chǎn)廠家的認可,預計可以給廠家?guī)淼慕?jīng)濟效益每年近百萬元。單片機代替編碼芯片的思路將我們引入了單片機應用的一個新領域,我們將進一步縮小其體積,使其功能進一步完善,以求更大的發(fā)展。
參考文獻
1 郝建國,家用電器遙控系統(tǒng)集成電路大全[M],北京:人民郵電出版社,1996年
2王裕琛、安穎,與空調(diào)、電視共用遙控器的遙控燈[P],中華人民共和國知識產(chǎn)權局,ZL03281069.5,2004年10月6日
評論