現有的紅外遙控包括兩種方式: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低...