基于Atmega16單片機的智能空調(diào)遙控器
系統(tǒng)軟件設(shè)計與實現(xiàn)
系統(tǒng)程序主要分為三個部分:學(xué)習(xí)模式,發(fā)送模式以及通信模式。當(dāng)?shù)谝淮芜M入系統(tǒng)時,初始化設(shè)置設(shè)備地址,然后設(shè)置通信的波特率,提供1200、9600 以及19200 三種選擇。系統(tǒng)主程序即在三個模式間切換,默認(rèn)進入通信模式,可以通過模式切換按鍵改變模式,也可以通過上位機直接更改。出于系統(tǒng)的穩(wěn)定性需要,在程序中加入了軟件看門狗,防止程序"跑飛".
3.1 學(xué)習(xí)功能設(shè)計
3.1.1 學(xué)習(xí)模式
紅外遙控器的碼型多樣,編碼一般包括:幀頭、系統(tǒng)碼、操作碼、同步碼、幀間隔碼、幀尾,且同步碼與幀間隔碼出現(xiàn)的位置不固定,因此碼型格式靈活多變,很難區(qū)分各種碼型的編碼含義;各個紅外遙控的編碼長度不盡相同,發(fā)送方式也多種多樣,最常用的有三種:完整幀只發(fā)送一次、完整幀重復(fù)發(fā)送兩次、先發(fā)送一個完整幀,后重復(fù)發(fā)送幀頭和一個脈沖。面對如此多樣化的編碼方式,如果區(qū)分每種編碼的含義進行學(xué)習(xí),學(xué)習(xí)的復(fù)雜度將會很高,并且通用性也會受到影響。所以,為了避開各色碼型的干擾,系統(tǒng)在學(xué)習(xí)時并不關(guān)心碼型數(shù)據(jù)的實際意義,只記錄脈沖的時間寬度。系統(tǒng)主要針對載波頻率為38KHz(周期為26us)的紅外遙控器,利用變量IR_time 記錄接收到的脈沖寬度。學(xué)習(xí)程序流程如圖4 所示。
圖4 學(xué)習(xí)程序流程圖。
3.1.2 壓縮存儲
由于不考慮具體的碼型數(shù)據(jù)意義,只記錄脈沖的寬度,系統(tǒng)的學(xué)習(xí)功能通用性得到了提高,但這種方式學(xué)習(xí)到的數(shù)據(jù)量很大,對存儲的要求就變得很高。
盡管系統(tǒng)針對存儲的大容量需求設(shè)計了單獨的存儲模塊,但考慮到應(yīng)在不增加硬件開銷的情況下保證足夠的存儲容量,以及滿足未來擴展的需要,在進行數(shù)據(jù)存儲時,采取了數(shù)據(jù)壓縮技術(shù)。
從學(xué)習(xí)到的電平數(shù)據(jù)可以發(fā)現(xiàn),無論數(shù)據(jù)是1 還是0,都有相同時長的電平出現(xiàn),這符合游程編碼的特點。游程編碼是一種簡單的非破壞性資料壓縮法,其好處是加壓縮和解壓縮都非??欤浞椒ㄊ怯嬎氵B續(xù)出現(xiàn)的資料長度壓縮之。比如:一張二值圖像的數(shù)據(jù)為:
WWWWWWWWBWWWWBBBWWWWWWWBWWWWW
使用游程編碼壓縮可得:8W1B4W3B7W1B 5W.
可見,壓縮效率極高,且可避免復(fù)雜的編碼和解碼運算。所以,在存儲時,系統(tǒng)對學(xué)習(xí)到的數(shù)據(jù)進行游程編碼壓縮[7,8].例如,學(xué)習(xí)到的一組空調(diào)遙控器的數(shù)據(jù)為[157 153 23 53 … 23 53 23 180 156 152 23 53 …53 23],如圖5 所示,對重復(fù)的電平數(shù)據(jù)采用游程編碼壓縮后,原本需要199 字節(jié)的空調(diào)遙控碼,只需要106個字節(jié)即可存儲,壓縮率達53.27%.因此,在存儲時針對學(xué)習(xí)到的數(shù)據(jù)特點采取游程編碼壓縮,可以有效節(jié)約存儲空間。
圖5 一組典型的空調(diào)數(shù)據(jù)幀。
紅外遙控器相關(guān)文章:紅外遙控器原理 雙絞線傳輸器相關(guān)文章:雙絞線傳輸器原理
評論