近來寫了幾個紅外遙解碼,概括一下,關鍵在于脈寬測定。
下邊這個程序在STM32F103C8上運行。
定時器中斷計數,接收頭外部中斷 ,判斷脈寬計數,實現解碼。pa0-pa7顯示鍵碼
關鍵點是:
定時器中斷計數器+1,每秒10000次(100us),
則起始碼為計數=0X5A次左右,1碼為計數0X16=左右,0碼為計數=0x0C左右。
這個左右一般在上下1個數,程序中放寬到上下4個數。
if(Tim>=0x40 && Tim<0x70)
{Ok=1;//收到起始信號
Num=0;
sdata0=Tim; //試驗=5a-5b
}
else if(Tim>=0x12 && Tim<0x1B)
{
hw_jsm>>=1;
hw_jsm |= 0x80000000;//收到數據 1
// beep=!beep;
Num++;
sdata1=Tim; //試驗=16-17
}
else if(Tim>=0x07 && Tim<0x10)
{
hw_jsm>>=1;
hw_jsm |=0;//收到數據 0
// beep=!beep;
Num++;
sdata2=Tim; //試驗=0b-0c
}
if(Num==32)
{
hw_jsbz=1;
Num=0;
DataD=hw_jsm;//結果出來了
Ok=0;
}
PB15中斷TIM定時器紅外解碼.7z
(602.18 KB, 下載次數: 60)
2020-5-18 05:53 上傳
點擊文件名下載附件
|