裴德鳳
摘 要 根據(jù)HS0038的性能,結(jié)合瑞薩M37544單片機(jī),本文介紹紅外遙控系統(tǒng)的工作原理及空調(diào)器紅外遙控通訊協(xié)議,給出紅外遙控接收系統(tǒng)的硬件電路,重點(diǎn)闡述通過查詢方式完成程序編寫的方法,該種控制方式具有可靠性高、成本低的特點(diǎn),在單片機(jī)控制系統(tǒng)中可以廣泛的應(yīng)用。
關(guān)鍵詞 單片機(jī) 紅外遙控 空調(diào) 查詢方式
中圖分類號(hào):TP368.1 文獻(xiàn)標(biāo)識(shí)碼:A
0引言
紅外遙控是目前使用很廣泛的一種通信和遙控技術(shù),由于紅外遙控裝置具有體積小,功耗低,功能強(qiáng)、成本低等特點(diǎn),因而,在家用電器產(chǎn)品及工業(yè)設(shè)備中得到廣泛采用,本文以家用空調(diào)為例,闡述如何通過M37544單片機(jī)來實(shí)現(xiàn)遙控器解碼功能。
1紅外遙控系統(tǒng)簡介
紅外遙控系統(tǒng)有發(fā)射和接收兩大部分組成,發(fā)射部分包括鍵盤矩陣,編碼調(diào)制,LED紅外發(fā)送器。接收部分包括光、電轉(zhuǎn)換放大器、解調(diào)、解碼電路。如圖1所示。
2空調(diào)系統(tǒng)遙控接收通訊協(xié)議
本文所介紹的空調(diào)使用的遙控器引導(dǎo)碼格式為:先發(fā)3ms高電平、再發(fā)3ms低電平,再發(fā)3ms高電平,再發(fā)4.5ms低電平,引導(dǎo)碼格式如圖2所示:
數(shù)據(jù)碼格式如圖3所示,數(shù)據(jù)“1”格式為發(fā)1.2 ms 低電平,數(shù)據(jù)“0”格式為發(fā)0.56ms低電平,間隔碼為0.56ms高電平。
上述由引導(dǎo)碼和“0”,“1”組成的數(shù)據(jù)碼經(jīng)38KHZ載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的,然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。
遙控器先發(fā)送引導(dǎo)碼,緊跟其后再發(fā)送8個(gè)字節(jié)數(shù)據(jù),共64位。在64位二進(jìn)制數(shù)據(jù)中,包含空調(diào)運(yùn)行所有狀態(tài),包括開關(guān)機(jī)、運(yùn)行模式、風(fēng)速、風(fēng)擺、睡眠、定時(shí)等信息,其具體通訊協(xié)議如下表1所示:
3硬件電路的設(shè)計(jì)
接收部分采用一體化接收頭HS0038,該器件集紅外線接收、放大、解調(diào),還原成同步格式相同,但高低電位剛好相反的脈沖信號(hào),輸出TTL電平,再送給單片機(jī),經(jīng)單片機(jī)解碼并執(zhí)行,控制相應(yīng)的控制對(duì)象。
在單片機(jī)的接收電路中,通常會(huì)用單片機(jī)外部中斷口進(jìn)行接收,由于本控制器采用M37544單片機(jī)作為控制核心,該芯片有兩個(gè)外部中斷口,在系統(tǒng)中分別用來作為電源過零檢測和風(fēng)機(jī)反饋脈沖輸入端口,所以遙控接收只能使用普通的I/O端口,其接收頭的輸出端口直接接到MCU的P1.4端口,通過軟件測量P1.4端口的高低電平時(shí)間,從而判斷接收的是“0”還是“1”。硬件電路如圖4所示:
4查詢法接收程序設(shè)計(jì)
在接收程序中先判斷引導(dǎo)碼格式是否有誤,如果有一段引導(dǎo)碼不符合規(guī)定的長度,則本次接收無效,程序返回,只有在引導(dǎo)碼正確無誤的基礎(chǔ)上,再來判斷數(shù)據(jù)碼,接收數(shù)據(jù)碼時(shí),通過指令的執(zhí)行時(shí)間來判斷代碼的長度,當(dāng)接收的高電平持續(xù)時(shí)間大于1 ms時(shí),認(rèn)為該位為數(shù)據(jù)“1”,當(dāng)持續(xù)時(shí)間小于1 ms時(shí),認(rèn)為該位為數(shù)據(jù)為“0”,當(dāng)連續(xù)接收8位后,保存該字節(jié)數(shù)據(jù),用同樣的方法繼續(xù)接收其余數(shù)據(jù),直到8個(gè)字節(jié)數(shù)據(jù)全部接收完畢。
當(dāng)8個(gè)字節(jié)數(shù)據(jù)全部接收完畢,判斷特征碼是否正確,如果正確則將遙控接收標(biāo)志位(QZFLAG.0)置1,在處理程序中處理相關(guān)信息,如不正確,則將遙控接收標(biāo)志(QZFLAG.0)清0,本次接收無效,程序不再處理接收信息。
遙控接收程序流程如圖5。
因該程序代碼較長,給出程序編寫偽碼如圖6所示。
在具體測試遙控接收端口p1.4為低電平的持續(xù)時(shí)間程序片段如下圖7所示。該程序通過指令的循環(huán)執(zhí)行,不停累加寄存器R0的值,直至P1.4端口的狀態(tài)發(fā)生變化,累加結(jié)束,然后根據(jù)R0寄存器的值和指令執(zhí)行時(shí)間,計(jì)算P1.4端口持續(xù)低電平的時(shí)間;在測試p1.4端口為高電平時(shí)的持續(xù)時(shí)間與上述方法相同。
5結(jié)束語
經(jīng)試驗(yàn)測試,上述遙控接收方式?jīng)]有出現(xiàn)丟碼現(xiàn)象,接收數(shù)據(jù)準(zhǔn)確無誤,該種方式成本低、可靠性,編程簡單,不必占用單片機(jī)外部中斷端口,可以在單片機(jī)控制系統(tǒng)中廣泛使用。
參考文獻(xiàn)
[1] 聶詩良,李磊民.采用單片機(jī)發(fā)送并接收紅外遙控信號(hào)的方法[J].信息技術(shù),2004,28(02).
[2] 李寶營,趙永生,祁建廣.基于單片機(jī)的紅外遙控系統(tǒng)設(shè)計(jì)[J].機(jī)電工程技術(shù),2008,37(12) :77-79.