基于單片機的智能學(xué)習型紅外空調遙控器
3系統軟件設計與實(shí)現
本文引用地址:http://dyxdggzs.com/article/269330.htm系統程序主要分為三個(gè)部分:學(xué)習模式,發(fā)送模式以及通信模式。當第一次進(jìn)入系統時(shí),初始化設置設備地址,然后設置通信的波特率,提供1200、9600以及19200三種選擇。系統主程序即在三個(gè)模式間切換,默認進(jìn)入通信模式,可以通過(guò)模式切換按鍵改變模式,也可以通過(guò)上位機直接更改。出于系統的穩定性需要,在程序中加入了軟件看門(mén)狗,防止程序"跑飛".
3.1學(xué)習功能設計
3.1.1學(xué)習模式
紅外遙控器的碼型多樣,編碼一般包括:幀頭、系統碼、操作碼、同步碼、幀間隔碼、幀尾,且同步碼與幀間隔碼出現的位置不固定,因此碼型格式靈活多變,很難區分各種碼型的編碼含義;各個(gè)紅外遙控的編碼長(cháng)度不盡相同,發(fā)送方式也多種多樣,最常用的有三種:完整幀只發(fā)送一次、完整幀重復發(fā)送兩次、先發(fā)送一個(gè)完整幀,后重復發(fā)送幀頭和一個(gè)脈沖。面對如此多樣化的編碼方式,如果區分每種編碼的含義進(jìn)行學(xué)習,學(xué)習的復雜度將會(huì )很高,并且通用性也會(huì )受到影響。所以,為了避開(kāi)各色碼型的干擾,系統在學(xué)習時(shí)并不關(guān)心碼型數據的實(shí)際意義,只記錄脈沖的時(shí)間寬度。系統主要針對載波頻率為38KHz(周期為26us)的紅外遙控器,利用變量IR_time記錄接收到的脈沖寬度。學(xué)習程序流程如圖4所示。

圖4學(xué)習程序流程圖。
3.1.2壓縮存儲
由于不考慮具體的碼型數據意義,只記錄脈沖的寬度,系統的學(xué)習功能通用性得到了提高,但這種方式學(xué)習到的數據量很大,對存儲的要求就變得很高。
盡管系統針對存儲的大容量需求設計了單獨的存儲模塊,但考慮到應在不增加硬件開(kāi)銷(xiāo)的情況下保證足夠的存儲容量,以及滿(mǎn)足未來(lái)擴展的需要,在進(jìn)行數據存儲時(shí),采取了數據壓縮技術(shù)。
從學(xué)習到的電平數據可以發(fā)現,無(wú)論數據是1還是0,都有相同時(shí)長(cháng)的電平出現,這符合游程編碼的特點(diǎn)。游程編碼是一種簡(jiǎn)單的非破壞性資料壓縮法,其好處是加壓縮和解壓縮都非???,其方法是計算連續出現的資料長(cháng)度壓縮之。比如:一張二值圖像的數據為:
WWWWWWWWBWWWWBBBWWWWWWWBWWWWW
使用游程編碼壓縮可得:8W1B4W3B7W1B 5W.
可見(jiàn),壓縮效率極高,且可避免復雜的編碼和解碼運算。所以,在存儲時(shí),系統對學(xué)習到的數據進(jìn)行游程編碼壓縮[7,8].例如,學(xué)習到的一組空調遙控器的數據為[157 153 23 53…23 53 23 180 156 152 23 53…53 23],如圖5所示,對重復的電平數據采用游程編碼壓縮后,原本需要199字節的空調遙控碼,只需要106個(gè)字節即可存儲,壓縮率達53.27%.因此,在存儲時(shí)針對學(xué)習到的數據特點(diǎn)采取游程編碼壓縮,可以有效節約存儲空間。

圖5一組典型的空調數據幀。
紅外遙控器相關(guān)文章:紅外遙控器原理萬(wàn)能遙控器相關(guān)文章:萬(wàn)能遙控器代碼
手機電池相關(guān)文章:手機電池修復
pwm相關(guān)文章:pwm是什么
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理 晶振相關(guān)文章:晶振原理 脈沖點(diǎn)火器相關(guān)文章:脈沖點(diǎn)火器原理 雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理
評論