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












評論