紅外遙控器在單片機(jī)控制系統(tǒng)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
業(yè)界領(lǐng)先的TEMPO評(píng)估服務(wù) 高分段能力,高性能貼片保險(xiǎn)絲 專為OEM設(shè)計(jì)師和工程師而設(shè)計(jì)的產(chǎn)品 Samtec連接器 完整的信號(hào)來(lái)源 每天新產(chǎn)品 時(shí)刻新體驗(yàn) 完整的15A開關(guān)模式電源 摘 要 文章介紹了一種用紅外遙控器作控制器的單片機(jī)控制系統(tǒng), 具體說(shuō)明了其軟、硬件的實(shí)現(xiàn)方法。
1 概述
單片機(jī)控制系統(tǒng)廣泛應(yīng)用在電氣設(shè)備和電子產(chǎn)品中, 而實(shí)現(xiàn)控制的外部操作多由鍵盤或計(jì)算機(jī)完成, 有一定的局限性, 比如, 對(duì)一些電子產(chǎn)品所顯示數(shù)據(jù)的修改來(lái)說(shuō), 當(dāng)安裝位置較高時(shí), 按鍵控制很不方便, 若采用PC, 則除了電路更復(fù)雜外, 造價(jià)也相應(yīng)提高。為此, 我們研制了采用普通電視用的紅外遙控器做控制器的單片機(jī)控制系統(tǒng)。
2 硬件設(shè)計(jì)
采用MCS251 系列單片機(jī), 選用眾合牌電視遙控器, 重新設(shè)置按鍵功能。將紅外線接收頭的輸出端與單片機(jī)的外部中斷( INT 0 或INT1) 連接, 操作遙控器時(shí), 接收頭有信號(hào)輸出, 單片機(jī)產(chǎn)生中斷。
2. 1 紅外遙控器簡(jiǎn)介
2. 1. 1 基本組成
紅外遙控器的核心是遙控發(fā)射集成電路, 眾合牌電視遙控器采用的集成芯片是M50462AP, 其內(nèi)部由圖1 中虛線框內(nèi)各部分電路組成。
圖1 遙控發(fā)射集成電路
2. 1. 2 工作原理
當(dāng)遙控器有鍵被按下時(shí), 振蕩電路立即接通并起振, 掃描信號(hào)發(fā)生器隨即發(fā)出8 路不同時(shí)序的掃描時(shí)序脈沖, 依次對(duì)鍵盤矩陣進(jìn)行掃描, 鍵盤編碼器則由接收到的回送信號(hào)判斷出被按鍵位置, 并輸出相應(yīng)的編碼至譯碼器, 經(jīng)譯碼器進(jìn)行碼元變換后的信號(hào)被重新編碼調(diào)制后輸出。
2. 1. 3 指令代碼
集成芯片M50462AP 的輸出信號(hào)是脈沖位置調(diào)制碼, 其載頻是中心頻率為40kHz, 占空比為3 的方波信號(hào)。
一位脈沖位置調(diào)制碼如圖2 所示。當(dāng)脈沖寬度為1ms 時(shí), 代表一個(gè)二進(jìn)制數(shù)/ 00; 脈沖寬度為2ms時(shí), 代表一個(gè)二進(jìn)制數(shù)/ 10。
圖2 脈沖位置調(diào)制碼
每一條傳送指令由16 位這樣的/ 00、/ 10代碼組成, 這16 位代碼的前8 位為用戶碼, 用戶碼的構(gòu)成形成為1110xx10, 遙控器生產(chǎn)廠家可以將/ x0 設(shè)為/ 10或/ 00, 眾合牌遙控器的用戶碼為11100010, 即為E2H; 16 位代碼的后8 位為數(shù)據(jù)碼, 即按鍵功能操作碼, 編碼則如表1 所列。
表1 按鍵功能操作碼編碼表
表1 中新鍵功能可以根據(jù)需要自行設(shè)定, 這里給出的是我們?yōu)殡娮隅娫O(shè)計(jì)的。
遙控器發(fā)送一組指令的時(shí)間是44ms, 故操作遙控器一次可發(fā)出多組指令代碼, 以備接收頭接收。
我們?cè)O(shè)計(jì)的控制系統(tǒng)需要從中取出3 組數(shù)據(jù)。
2. 2 接收頭的使用
紅外接收頭通稱遙控預(yù)放器, 它將接收到的脈沖位置調(diào)制碼轉(zhuǎn)換成如圖3 所示的接收碼。接收頭使用簡(jiǎn)單, 只需將它的三個(gè)引腳分別接地、+ 5V 電源和CPU 的INT 0 或INT 1 即可。
圖3 接收碼
3 軟件設(shè)計(jì)
本系統(tǒng)旨在識(shí)別指令代碼并依據(jù)指令信息實(shí)現(xiàn)新鍵功能, 我們的思路是在中斷服務(wù)程序中識(shí)別指令代碼并保存數(shù)據(jù), 用主程序?qū)?shù)據(jù)進(jìn)行比較和處理, 從而實(shí)現(xiàn)各種功能。
3. 1 中斷服務(wù)程序
3. 1. 1 代碼的判斷
代碼的判斷是用計(jì)數(shù)和比較的方法來(lái)實(shí)現(xiàn)的,進(jìn)入中斷的同時(shí)立即打開定時(shí)器T 1, 開始計(jì)數(shù), 代碼/ 00和/ 10的計(jì)數(shù)時(shí)間由其脈沖寬度決定, 分別為1ms 和2ms, 則理論計(jì)數(shù)值A(chǔ)0、A1 分別可由以下公式得出:
A0= 1ms/ 一個(gè)機(jī)器周期
A1= 2ms/ 一個(gè)機(jī)器周期
當(dāng)單片機(jī)采用不同頻率的晶振時(shí), 理論計(jì)數(shù)值也將隨之不同。
考慮到遙控器與單片機(jī)基準(zhǔn)頻率的誤差, 實(shí)際計(jì)數(shù)值很難保證與理論計(jì)數(shù)值完全一致, 為此需給/ 00和/ 10的實(shí)際計(jì)數(shù)值開設(shè)一個(gè)窗口, 以免丟失數(shù)據(jù); 同時(shí), 為增強(qiáng)抗干擾性, 窗口寬度應(yīng)適中, 經(jīng)過(guò)實(shí)驗(yàn), 我們確定的窗口寬度為0. 224ms, 具體數(shù)值如表2 所列。
表2 記數(shù)窗口數(shù)值
當(dāng)實(shí)際計(jì)數(shù)值在A0L ~ A0H時(shí), 我們認(rèn)為接收的代碼是/ 00; 實(shí)際計(jì)數(shù)值在A1L~ A1H 時(shí), 則將代碼記為/ 10。
3. 1. 2 指令的識(shí)別
將接收的指令代碼逐位存儲(chǔ)在單片機(jī)RAM 區(qū)的2AH~ 2FH 單元中, 則可以存儲(chǔ)48 位共3 組指令代碼, 存儲(chǔ)的有效方式如表3 所列。
表3 存儲(chǔ)方式
在表3 中, jjH 表示的是表1 中的任意一個(gè)按鍵的功能操作碼, 只有當(dāng)2A= 2C= E2H, 且2B= 2D=jjH 的時(shí)候, 此指令代碼才被認(rèn)為是有效的, 將jjH代表的操作碼存入數(shù)據(jù)暫存單元1EH 中, 主程序即可以使用。
3. 1. 3 中斷服務(wù)程序流程
程序中, 先將接收的每一位代碼作/ 00、/ 10的判別后存儲(chǔ)下來(lái), 存滿48 位后, 再進(jìn)行數(shù)據(jù)是否有效的判別, 最后存儲(chǔ)有效的指令代碼。程序框圖如圖4 所示。
圖4 中, 移位處理是指2AH~ 2FH 中的6 個(gè)字節(jié)整體向左移動(dòng), 目的是為了防止接收頭從某一組指令的中間開始接收數(shù)據(jù)而造成的數(shù)據(jù)丟失, 若移位16 次還不能出現(xiàn)有效的指令代碼, 則認(rèn)為此組數(shù)據(jù)無(wú)效。
圖4 中斷服務(wù)程序框圖
3. 2 主程序
為配合中斷服務(wù)程序, 在主程序初始化中設(shè)定INT 0 或INT 1 為負(fù)跳變邊沿觸發(fā)方式, 同時(shí)將定時(shí)器T1 設(shè)定在工作方式2, 且不允許中斷。
控制功能的實(shí)現(xiàn), 可以采用不斷地從指令代碼暫存單元1EH 中取出數(shù)據(jù)再與表1 中的按鍵功能操作碼逐一比較的方法, 并附以其他功能的實(shí)現(xiàn)子程序。
4 結(jié)束語(yǔ)
當(dāng)選用其他型號(hào)的遙控器或單片機(jī)時(shí), 除了需重新確定遙控器的指令代碼類型和單片機(jī)的計(jì)數(shù)速度外, 本文介紹的方法依然適用。
采用紅外遙控器做控制器的單片機(jī)系統(tǒng), 不僅價(jià)格低廉, 而且電路簡(jiǎn)單、實(shí)用, 操作方便, 性能穩(wěn)定, 易于推廣。目前已在我們制作的多種自動(dòng)控制系統(tǒng)中使用。