STM32 NEC紅外遙控器解碼

2021-10-20 18:18:02 字數 3812 閱讀 4987

現有的紅外遙控包括兩種方式:pwm(脈衝寬度調製)和ppm(脈衝位置調製)。兩種形式編碼的代表分別為nec 和philips 的rc-5、rc-6 以及將來的rc-7。

nec 格式的特徵:

1:使用38 khz 載波頻率

2:引導碼間隔是9 ms + 4.5 ms

3:使用16 位客戶**

4:使用8 位資料**和8 位取反的資料**

nec 協議通過脈衝串之間的時間間隔來實現訊號的調製(英文簡寫pwm) 。 邏輯「0」是由0.56ms的38khz載波和0.56ms 的無載波間隔組成; 邏輯「1」是由0.56ms 的38khz 載波和1.68ms 的無載波間隔組成; 結束位是0.56ms 的38k 載波。

ppm(脈衝位置調製):以發射載波的位置表示「0」和「1」。從發射載波到不發射載波為「0」,從不發射載波到發射載波為「1」。其發射載波和不發射載波的時間相同,都為0.68ms,也就是每位的時間是固定的。rc5 編碼相對簡單一些:

得到一組數字: 110, 11010, 001101根據編碼定義:

第一位是起始位s通常是邏輯1

第二位是場位f通常為邏輯1, 在rc5 擴充套件模式下它將最後6位命令**擴充到7 位**(高位msb) , 這樣可以從64 個鍵值擴充到128 個鍵值。

第三位是控制位c它在每按下了乙個鍵後翻轉, 這樣就可以區分乙個鍵到底是一直按著沒鬆手還是鬆手後重複按。

其後是五個系統位址位:11010=1a, 最後是六個命令位:001101=0d。

紅外置收電路通常被廠家整合在乙個元件中,成為一體化紅外置收頭。內部電路包括紅外監測二極體,放大器,限副器,帶通濾波器,積分電路,比較器等。紅外監測二極體監測到紅外訊號,然後把訊號送到放大器和限幅器,限幅器把脈衝幅度控制在一定的水平,而不論紅外發射器和接收器的距離遠近。交流訊號進入帶通濾波器,帶通濾波器可以通過30khz到60khz的負載波,通過解調電路和積分電路進入比較器,比較器輸出高低電平,還原出發射端的訊號波形。注意輸出的高低電平和發射端是反相的,這樣的目的是為了提高接收的靈敏度。

紅外置收頭的種類很多,引腳定義也不相同,一般都有三個引腳,包括供電腳,接地和訊號輸出腳。根據發射端調製載波的不同應選用相應解調頻率的接收頭。

紅外置收頭內部放大器的增益很大,很容易引起干擾,因此在接收頭的供電腳上須加上濾波電容,一般在22uf以上。有的廠家建議在供電腳和電源之間接入330歐電阻,進一步降低電源干擾。

//紅外遙控初始化

//設定io以及定時器3的輸入捕獲

void

remote_init

(void

)//遙控器接收狀態

//[7]:收到了引導碼標誌

//[6]:得到了乙個按鍵的所有資訊

//[5]:保留

//[4]:標記上公升沿是否已經**獲

//[3:0]:溢位計時器

u8 rmtsta=

0;

u16 dval;

//下降沿時計數器的值

u32 rmtrec=0;

//紅外置收到的資料

u8 rmtcnt=0;

//按鍵按下的次數

//定時器3中斷服務程式

void

tim3_irqhandler

(void)}

}if(tsr&(1

<<3)

)//cc3ie中斷

else

//下降沿捕獲

else

if(dval>

1400

&&dval<

1800

)//1680為標準值,1680us

else

if(dval>

2200

&&dval<

2600

)//得到按鍵鍵值增加的資訊 2500為標準值2.5ms

}else

if(dval>

4200

&&dval<

4700

)//4500為標準值4.5ms

} rmtsta&=~(

1<<4)

;}}tim3

->sr=

0;//清除中斷標誌位

}//處理紅外鍵盤

//返回值:

// 0,沒有任何按鍵按下

//其他,按下的按鍵鍵值.

u8 remote_scan

(void)if

((sta==0)

||((rmtsta&

0x80)==

0))//按鍵資料錯誤/遙控已經沒有按下了

}return sta;

}

// 共陰數字陣列

// 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f, .,全滅

u8 smg_num=

;u8 key=0;

//按鍵值

u8 num=

0x00

;//數值

u8 num1=

0x00

;//數值

u8 smg_wei=6;

//數碼管位選

u8 smg_duan=0;

//數碼管段選

u8 smg_flag=0;

//數碼管顯示標誌 0:正常顯示 1:不顯示(消除鬼影)

u8 t=0;

int main

(void

)void

tim4_irqhandler

(void

)//tim4中斷

}else

if(smg_wei==6)

//數碼管位

else

if(smg_wei==7)

//數碼管位

if(smg_flag)

led_write_data

(0x00

,smg_wei)

;//消除鬼影(段碼不顯示)

else

led_write_data

(smg_duan,smg_wei)

;//正常顯示

led_refresh()

;//數碼管資料更新

smg_flag=

!smg_flag;

if(smg_flag==0)

//正常顯示才更新位碼

t++;if

(t==

250)

//led0每500ms閃爍

}tim4

->

sr&=~(

1<<0)

;//清除中斷標誌位

}

通過本實驗了解了nec紅外遙控解碼的基本原理。紅外遙控器的鍵碼都是固定的,不同的遙控器的鍵碼可能會不一樣。紅外遙控器也可以用紅外發射管自己搭建發射電路,微控制器程式進行編碼,紅外置收頭根據編碼規則進行解碼。

STM32 紅外遙控器

紅外 原理 遙控器作為發射器,發射38khz的載波,接收器在接收到載波時為低電平 按照nec protocol的pwm,該協議的特點 1 8位位址和8位指令長度 2 位址和命令分兩次傳送,並有傳送位址和命令反碼,便於校驗,確保傳輸的準確 3 pwm脈衝位置調製,以發射紅外載波的占空比來表示 0 和 ...

紅外遙控器解碼原理

紅外遙控器解碼原理 august 7th,2015 1 紅外遙控系統 通用紅外遙控系統由發射和接收兩大部分組成,應用編 解碼專用積體電路晶元來進行控制操作,如圖1所示。發射部分包括鍵盤矩陣 編碼調製 led紅外傳送器 接收部分包括光 電轉換放大器 解調 解碼電路。2 遙控發射器及其編碼 遙控發射器專...

STM32HAL 紅外遙控(NEC)

整理了乙個nec協議的紅外程式,nec協議,物理環境為f103原子戰艦v3,使用stm32cubemx生成初始程式。定時器配置72分頻,9999裝載值 10ms nec協議 資料格式 同步碼頭 位址碼 位址反碼 按鍵碼 按鍵反碼 lsb先行 同步碼頭 9ms低電平 4.5ms高電平 連發碼 9ms低...