紅外遙控器在單片機控制系統中的應用
3 軟件設計
本系統旨在識別指令代碼并依據指令信息實(shí)現新鍵功能, 我們的思路是在中斷服務(wù)程序中識別指令代碼并保存數據, 用主程序對數據進(jìn)行比較和處理, 從而實(shí)現各種功能。
3. 1 中斷服務(wù)程序
3. 1. 1 代碼的判斷
代碼的判斷是用計數和比較的方法來(lái)實(shí)現的,進(jìn)入中斷的同時(shí)立即打開(kāi)定時(shí)器T 1, 開(kāi)始計數, 代碼/ 00和/ 10的計數時(shí)間由其脈沖寬度決定, 分別為1ms 和2ms, 則理論計數值A0、A1 分別可由以下公式得出:
A0= 1ms/ 一個(gè)機器周期
A1= 2ms/ 一個(gè)機器周期
當單片機采用不同頻率的晶振時(shí), 理論計數值也將隨之不同。
考慮到遙控器與單片機基準頻率的誤差, 實(shí)際計數值很難保證與理論計數值完全一致, 為此需給/ 00和/ 10的實(shí)際計數值開(kāi)設一個(gè)窗口, 以免丟失數據; 同時(shí), 為增強抗干擾性, 窗口寬度應適中, 經(jīng)過(guò)實(shí)驗, 我們確定的窗口寬度為0. 224ms, 具體數值如表2 所列。
表2 記數窗口數值
當實(shí)際計數值在A(yíng)0L ~ A0H時(shí), 我們認為接收的代碼是/ 00; 實(shí)際計數值在A(yíng)1L~ A1H 時(shí), 則將代碼記為/ 10。
3. 1. 2 指令的識別
將接收的指令代碼逐位存儲在單片機RAM 區的2AH~ 2FH 單元中, 則可以存儲48 位共3 組指令代碼, 存儲的有效方式如表3 所列。
表3 存儲方式
在表3 中, jjH 表示的是表1 中的任意一個(gè)按鍵的功能操作碼, 只有當2A= 2C= E2H, 且2B= 2D=jjH 的時(shí)候, 此指令代碼才被認為是有效的, 將jjH代表的操作碼存入數據暫存單元1EH 中, 主程序即可以使用。
評論