摘要:以單片機作為核心控制器的電子產品日益廣泛使用,它們的操作方式主要還是由外接的鍵盤來完成。若在此類產品中增加紅外遙控功能,將使它們的操作更加人性化。用單片機進行軟件解碼最普遍的方法有查詢法和外部中斷法,在此詳細介紹一種用AT89S52單片機定時器T2捕獲功能實現接收解碼的新方法,給出了解碼的程序流程圖和相應的子程序。實踐證明,該解碼方法占用單片機資源少,程序代碼運行穩定可靠,效率高。該解碼方法可為單片機產品開發者提供一個非常實用的參考,也可為學習者提供一個典型的應用范例。
關鍵詞:AT89S52;紅外遙控;編碼;解碼
中圖分類號:TN91134文獻標識碼:A文章編號:1004373X(2012)18001103
引言
紅外遙控器技術早已廣泛應用于各類家用電器中,目前許多以單片機作為核心控制器的電氣設備和電子產品也逐漸采用該技術,使用戶的操作更加靈活方便。用單片機進行解碼最常用的方法有查詢法和外部中斷法。查詢法占用單片機CPU太多的運行時間,效率低。外部中斷法則要占用單片機的一個外部中斷源和內部的一個定時器,增加單片機的硬件資源開銷。在此介紹一種用AT89S52單片機定時器T2的捕獲功能進行接收解碼的新方法,該方法僅使用單片機內部的一個定時器便能可靠地解出遙控器的代碼。
1紅外遙控發射器的編碼格式
紅外遙控發射器使用的芯片種類繁多,其編碼的格式也不盡相同。現以TC9012芯片組成的彩色電視機遙控發射器為例,說明其輸出編碼格式。當該遙控發射器的某個按鍵按下時,按鍵的編碼信息便以脈沖串的形式從遙控發射器送出,送出的編碼脈沖串組成如圖1所示。由圖可見,它由1位引導碼、2個字節都相同的系統碼、1個字節的數據碼和1個字節的數據反碼組成。引導碼由4.5ms的高電平和4.5ms的低電平組成,系統碼和數據碼及數據反碼采用脈沖寬度調制方式,數據碼“0”的編碼用0.56ms的高電平和0.56ms的低電平表示,數據碼“1”的編碼用0.56ms的高電平和1.68ms低電平表示,其波形如圖2所示。
2紅外遙控器的接收解碼電路
以單片機構成的紅外遙控器接收解碼電路如圖3所示,一體化紅外接收頭PC838的數據輸出端連接至單片機AT89S52芯片的P1.1/T2EX端,當PC838沒有接收到紅外遙控信號時,輸出端OUT保持高電平。當它接收到紅外遙控信號時,輸出端OUT從高電平變低電平。8位共陽數碼管和一片74HC595構成顯示電路。