單片機(jī)紅外解碼查詢法(HS9148)
先看一下連發(fā)碼的傳輸規(guī)律,如下圖所示
本文引用地址:http://butianyuan.cn/article/201611/323972.htm這個(gè)是發(fā)射器上面的碼型,經(jīng)過紅外接收模塊后,信號(hào)與發(fā)射型號(hào)是反相的。如下圖:
其中a的值可以左右計(jì)算a=(1/fosc)*192,當(dāng)采用455E的晶振時(shí)候a=0.422ms.。
在看看“0”和“1”的定義,對(duì)單片機(jī)接收端而言,下面圖示是0和1的定義
由圖可以看出來,高電平過后,低電平持續(xù)時(shí)間為3a定義為邏輯1,高電平過后低電平持續(xù)時(shí)間為a定義為邏輯0。(理解了這個(gè)規(guī)律對(duì)解碼能否成功有著非常重大的意義)。
為了驗(yàn)證PDF上的高低電平時(shí)間定義的正確性,用示波器檢測了其中某幾個(gè)按鍵的紅外接收端的波型。如下所示:
對(duì)其時(shí)間測試發(fā)現(xiàn)和PDF上的資料基本符合。
本程序靈敏度和抗干擾能力還有待提高。本文目的在于尋找紅外解碼的方法,如何做到簡單有效。RB2為遙控接收腳,RC0,RC1,RC2,RC3鏈接LED指示燈,程序代碼如下(下載地址:http://www.51hei.com/f/pichon.rar):
#include
__CONFIG(0X034);
#define uchar unsigned char
#define uint unsigned int
Unsigned char head_ok;//頭碼標(biāo)志
unsigned char code_ok;//解碼成功標(biāo)志
unsigned char code1;//系統(tǒng)碼
unsigned char code2;//按鍵碼
unsigned char i,//系統(tǒng)碼解碼次數(shù)
unsigned char n,//按鍵碼解碼次數(shù)
void delay2(uint b)//us級(jí)別延時(shí)
{
unsigned int j;
for(j=0;j
{
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
asm("nop");
}
}
評(píng)論