《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器
用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器
摘要: 本文介紹利用ME300B單片機(jī)開發(fā)系統(tǒng)加配套的紅外遙控器來進(jìn)行紅外解碼編程,并將其解出來的按鍵數(shù)據(jù)編碼送1602LCD顯示并進(jìn)行相應(yīng)的控制。
關(guān)鍵詞: 傳感技術(shù) ME300B 紅外解碼
Abstract:
Key words :

紅外線遙控裝置具有體積小、功耗低、功能強(qiáng)、成本低廉、使用方便等優(yōu)點(diǎn),因此在現(xiàn)今大部分家電產(chǎn)品上得到了廣泛的應(yīng)用。如電視機(jī)、影碟機(jī)、空調(diào)、電風(fēng)扇及音響等。除此之外,有些兒童玩具等小型電器上也開始采用。紅外線遙控已經(jīng)稱為目前使用最廣的一種遙控手段。

    本文介紹利用ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B" title="ME300B">ME300B單片機(jī)開發(fā)系統(tǒng)加配套的紅外遙控器來進(jìn)行紅外解碼編程,并將其解出來的按鍵數(shù)據(jù)編碼送1602LCD顯示并進(jìn)行相應(yīng)的控制。

一、紅外遙控演示程序功能介紹

    當(dāng)紅外遙控器有鍵按下時(shí)則會(huì)周期性地發(fā)出一組32位二進(jìn)制遙控編碼,ME300B接收到該遙控編碼后進(jìn)行程序解碼,解碼成功,蜂鳴器會(huì)響一聲,并在1602LCD上顯示此鍵的鍵值代碼。演示程序還定義DOWN鍵和UP鍵具有控制功能。
    當(dāng)按下DOWN鍵(代碼為12H)。蜂鳴器響一聲。繼電器關(guān)閉,并在1602LCD顯示相應(yīng)的鍵值代碼如圖1所示。

用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器Infrared decoder

當(dāng)按下UP鍵(代碼為1DH),蜂鳴器響一聲,繼電器吸合,并在1602LCD顯示相應(yīng)的鍵值代碼如圖2所示。

用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器Infrared decoder

二、ME300B紅外遙控硬件介紹

紅外遙控是由發(fā)射和接收兩部分組成:
1、紅外遙控器
ME300B配套的紅外遙控器采用DT9122D(兼容HT6222、SC6122)芯片制作,共有32個(gè)功能鍵,在每個(gè)按鍵上標(biāo)有功能碼和此鍵的數(shù)據(jù)代碼,如圖3所示。當(dāng)紅外遙控器按鍵按下后,即有規(guī)律地將遙控編碼發(fā)出,所按的鍵不同,遙控編碼也不同。

用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器Infrared decoder

2、紅外接收電路
ME300B選用T1838一體化紅外接收頭。接收來自紅外遙控器的紅外遙控信號(hào)。T1838集成紅外接收二極管、放大、解調(diào)、整形等電路在同一封裝上。
T1838負(fù)責(zé)紅外遙控信號(hào)的解調(diào),將調(diào)制在38kHz上的紅外脈沖信號(hào)解調(diào)并倒相后輸入到單片機(jī)的P3.2(INTO)引腳,由單片機(jī)進(jìn)行高電平與低電平寬度的測(cè)量(脈沖寬度調(diào)制解碼)。
T1838的輸出端通過JP4與AT89S51的P3.2(INT0)連接,既可以使用中斷方式也可以使用查詢方式來編程。應(yīng)用電路如圖4所示。

用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器--電路圖Infrared decoder

 

在T1838的電源輸入端接有RC(R15、C17)電源濾波電路,可提高抗干擾能力。

三、紅外遙控的解碼方法
當(dāng)紅外遙控器有鍵按下時(shí),發(fā)射一楨含有一個(gè)引導(dǎo)碼,16位的用戶編碼和8位鍵數(shù)據(jù)碼、8位鍵數(shù)據(jù)反碼。引導(dǎo)碼由一個(gè)9ms的載波波形和4.5ms的關(guān)斷數(shù)據(jù)構(gòu)成,它作為要隨后發(fā)射的碼的引導(dǎo)。前16位為用戶識(shí)別碼,能區(qū)別不同的紅外遙控設(shè)備,防止不同機(jī)種遙控碼互相干擾。后16位為8位的鍵數(shù)據(jù)碼和8位的鍵數(shù)據(jù)反碼用于核對(duì)數(shù)據(jù)是否接收準(zhǔn)確。T1838將接收到的這一楨紅外遙控信號(hào)進(jìn)行解調(diào)與倒相后輸入到單片機(jī)的P3.2(INT0)引腳,由單片機(jī)解碼程序?qū)Υ诵盘?hào)進(jìn)行脈沖寬度解碼。
編碼0:低電平的寬度0.56ms+高電平的寬度0.56ms。
編碼1:低電平的寬度0.56ms+高電平的寬度1.68ms。
編碼“0”和“1”的定義如圖5和圖6所示。我們可以發(fā)現(xiàn)“0”和“1”低電平的寬度是固定的為0.56ms,不同的是兩者高電平的寬度不同,“0”為0.56ms,“1”為1.68ms。因此可以根據(jù)高電平的寬度,來確定接收的編碼是“0”還是“1”。

用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器--時(shí)序圖Infrared decoder

四、解碼程序的編程與說明

IR譯碼子程序主要工作為等待紅外信號(hào)出現(xiàn),跳過前引導(dǎo)信號(hào)(一個(gè)9ms的低電平和一個(gè)4.5mS的高電平),然后開始收集32位的編碼數(shù)據(jù),并存入以IRCOM為首地址的4個(gè)連續(xù)的內(nèi)存單元中。
IR譯碼子程序;R0——存放IR接收數(shù)據(jù);R2——高電平寬度的計(jì)數(shù)值;R3——一字節(jié)需接收8位。BIT位計(jì)數(shù)。
;IRIN—P3.2
IR_IN:
MOVR0,#IRCOMMOVR4.#30IR_IN1:
CALLDEL;延時(shí)4ms去干擾后,再確認(rèn)IR信號(hào)是否出現(xiàn)DJNZR4.IR_IN1JBIRIN,IR_END:如果IRIN=1沒有IR信號(hào)出現(xiàn)。則退出WAIT_H:
JBIRIN,WAIT_Hl:等IR變?yōu)楦唠娖奖荛_9毫秒低電平引導(dǎo)脈沖CALLDELJMPWAIT-HWAIT_H1:
MOVR3,#0:8位數(shù)清為OWAIT_L=JNBIRIN,WAILH2:等IR變?yōu)榈碗娖剑^4.5ms的前導(dǎo)高電平信號(hào)CALLDELJMPWAIT_LWAIT_H2:
JBIRIN,IR_COUN;等IR變?yōu)楦唠娖紺ALLDELJMPWAIT_H2IR_COUN:
MOVR2,#0:對(duì)高電平進(jìn)行0.14ms計(jì)數(shù)IR_COUN1:
CALLDELJBIRlN,IR_COUN2;等IR變?yōu)楦唠娖剑篒R=0,檢查R2中的計(jì)數(shù)值MOVA,#8CLRC:清借位標(biāo)志SUBBA,R2:判斷高低位,C=0,則解碼為“0”:C=1,則解碼為“1”
MOVA,@R0:取出原先的數(shù)據(jù)RRCA:將借位標(biāo)志C移入AMOV@R0,A;處理完一位,將數(shù)據(jù)寫入INCR3;接收字節(jié)計(jì)數(shù)加1CJNER3,#8,WAIT_L:需處理完8位MOVR3,#0INCR0:存放IR數(shù)據(jù)單元值加1CJNER0,#1RCOM+4,WAIT_L;收集到4字節(jié)了?
JMPIR_END;JMPIR_SHOWIR_C0UN2:
INCR2CJNER2,#20,IR_COUN1:0.14ms計(jì)數(shù)過長(zhǎng),則自動(dòng)離開IR_END:REI;
;延時(shí)0.14ms;IR解碼使用;晶振:11.0592MHzDEL:MOVR7,#64DJNZR7,$RET解碼的關(guān)鍵是如何識(shí)別“0”和“1”。程序中設(shè)計(jì)一個(gè)0.14ms的延時(shí)時(shí)間作為單位時(shí)間,對(duì)脈沖維持高電平的時(shí)間進(jìn)行計(jì)數(shù),并把此計(jì)數(shù)值存入R2。若計(jì)數(shù)值為4.(0.14ms×4=0.56ms)表示脈沖高電平的寬度為0.56mS;若計(jì)數(shù)值為12,(0.14ms×12=1.68ms)表示脈沖高電平的寬度為1.68ms。因此可以直接判斷高電平的寬度的計(jì)數(shù)值是4或是12,來決定編碼為0或是1。在程序中把0.14ms×8=1.12ms作為判斷“0”和“1”的分界點(diǎn),使用減法指令SUBBA,R2來完成判斷。
MOVA,#8:A寄存器設(shè)為8CLRC:清借位標(biāo)志SUBBA,R2:R2為計(jì)數(shù)值
當(dāng)“8-R2”有借位產(chǎn)生,借位標(biāo)志C=1,則解碼為“1”。
當(dāng)“8-R2”無借位產(chǎn)生,借位標(biāo)志C=0,則解碼為”0”。
當(dāng)“8-R2”有借位產(chǎn)生,說明脈沖維持高電平的時(shí)間>1.12ms(>0.56ms),則解碼為“1”。當(dāng)“8-R2”無借位產(chǎn)生,說明脈沖維持高電平的時(shí)間小于1.12ms(<1.68ms),則解碼為”0”。另外當(dāng)高電平計(jì)數(shù)≥20時(shí)(0.14ms×20=2.8ms)有錯(cuò)誤程序退出。
數(shù)據(jù)比較子程序
IR_S}HOW:
MOVA,IRCOM+2CPLA:將IRCOM+2取反后和IRCOM+3比較CJNEA,IRCOM+3,IR_SHOW1:如果不等表示接收數(shù)據(jù)發(fā)生錯(cuò)誤,放棄。
CALLBEEP_BL;蜂鳴器鳴響表示解碼成功CALLCONV:數(shù)據(jù)轉(zhuǎn)換與顯示IR_SHOW1:
RET將8位的鍵數(shù)據(jù)碼取反后與8位的鍵數(shù)據(jù)反碼進(jìn)行比較,核對(duì)接收的數(shù)據(jù)是否正確。如果接收的數(shù)據(jù)正確,蜂鳴器響一聲,并將接收的數(shù)據(jù)經(jīng)過轉(zhuǎn)換后送1602LCD顯示。
五、使用注意事項(xiàng)
在使用ME300B單片機(jī)開發(fā)系統(tǒng)進(jìn)行紅外遙控演示時(shí),必須將JP4上的P32短接,使紅外接收頭接入電路中。選擇數(shù)碼管顯示時(shí),要短接JP2的2-3端。選擇1602LCD顯示時(shí),要短接JP2的1-2端。整機(jī)演示效果圖見圖7。

用ME300B單片機(jī)開發(fā),1602液晶顯示紅外遙控鍵值解碼器Infrared decoder

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。