紅外遙控NEC協議

2021-09-25 13:18:56 字數 1871 閱讀 6645

nec協議的特徵

1、8位位址和8位指令長度;

2、 位址和命令2次傳輸(確保可靠性)

3、 pwm脈衝位置調製,以發射紅外載波的占空比代表「0」和「1」;

4、 載波頻率為38khz;

5、 位時間為1.125ms或2.25ms(高電平持續時間來區分);

nec碼的位定義
乙個脈衝對應560us的連續載波,乙個邏輯1傳輸需要2.25ms(560us脈衝+1680us低電平),

乙個邏輯0的傳輸需要1.125ms(560us脈衝+560us低電平)。

而遙控接收頭在收到脈衝的時候為低電平,在沒有脈衝的時候為高電平。

這樣,我們在接收頭端收到的訊號為:邏輯1應該是560us低+1680us高,邏輯0應該是560us低+560us高。

nec遙控器指令格式

同步碼、位址碼、位址反碼、控制碼、控制反碼。

同步碼:9ms的低電平+4.5ms的高電平

8位資料格式,低位在前,高位在後。

(反碼的作用:增加可靠性)

連發碼:9ms低電平+2.5ms高電平+0.56ms低電平+97.94ms高電平。

(一幀資料傳送完畢後,若是按鍵沒有放開,則發射重複碼,即連發碼。連發碼的次數=按鍵按下的次數/長短。)

**解釋

//遙控器接收狀態

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

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

//[5]:保留

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

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

u8 rmtsta=0;

u16 dval; //下降沿時計數器的值

u32 rmtrec=0; //紅外置收到的資料

u8 rmtcnt=0; //按鍵按下的次數

//定時器1溢位中斷

void tim1_up_tim10_irqhandler(void)

}

} tim_clearitpendingbit(tim1,tim_it_update); //清除中斷標誌位

} //定時器1輸入捕獲中斷服務程式

void tim1_cc_irqhandler(void)

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); //還未捕獲到上公升沿

}

}tim_clearitpendingbit(tim1,tim_it_cc1); //清除中斷標誌位

}//處理紅外鍵盤

//返回值:

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

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

u8 remote_scan(void)

if((sta==0)||((rmtsta&0x80)==0))//按鍵資料錯誤/遙控已經沒有按下了

} return sta; //返回的是按鍵的位址碼

}

紅外遙控NEC協議

一 nec協議特徵 8位位址和8位命令長度 每次傳輸兩遍位址 使用者碼 和命令 按鍵值 通過脈衝串之間的時間間隔來實現訊號的調製 ppm 38khz載波 每位的週期為1.12ms 低電平 或者2.25ms 高電平 二 nec協議的典型脈衝鏈 上圖所示為nec協議的典型脈衝鏈。協議規定低位首先傳送。首...

紅外遙控協議 NEC協議

原文 nec協議是眾多紅外遙控協議的其中一種,除nec外,還有rc5 rc6等其它的。市面上買到的非學習型萬能電視遙控器大多整合一種或多種編碼是nec型的,我買的二個遙控器中就有三種以上編碼是nec的。nec編碼的一幀 通常按一下遙控器按鈕所傳送的資料 由引導碼 位址碼及資料碼組成,如下圖所示,把位...

紅外遙控協議 NEC協議

為方便理解所看到的波形是從紅外置收管出來的訊號,跟協議所說的訊號高低 0或1 剛好相反。nec協議是眾多紅外遙控協議的其中一種,除nec外,還有rc5 rc6等其它的。市面上買到的非學習型萬能電視遙控器大多整合一種或多種編碼是nec型的,我買的二個遙控器中就有三種以上編碼是nec的。nec編碼的一幀...