紅外遙控NEC協議

一、NEC協議特徵:

  1. 8位地址和8位命令長度
  2. 每次傳輸兩遍地址(用戶碼)和命令(按鍵值)
  3. 通過脈衝串之間的時間間隔來實現信號的調製(PPM)
  4. 38Khz載波
  5. 每位的週期爲1.12ms(低電平)或者2.25ms(高電平)

 

 

二、NEC協議的典型脈衝鏈:

上圖所示爲NEC協議的典型脈衝鏈。協議規定低位首先發送。首先發送9ms+4.5ms的引導碼,接下來是兩字節用戶碼,第三字節是數據碼,用來判斷按鍵值,第四字節是數據反碼,可以用來校驗,提高按鍵的準確性。

 

三、NEC協議脈衝鏈的其他圖片

 

 

除了引導碼、用戶碼和數據碼以外,協議最後還有一個1bit的停止位,用於數據發送完畢判斷。另外在NEC協議中,似乎沒有說明停止位的高低電平持續時間。

 

四、NEC協議的高低電平辨別方式

 

用戶碼和數據碼中的‘0’和‘1’是利用脈衝的時間間隔來區分,這種編碼方式稱爲脈衝位置調製方式(PPM)。

其中位0首先爲0.56ms的高電平,然後是0.565ms的低電平;位1首先是0.56ms的高電平,然後是1.69ms的低電平。

 

五、編程注意事項

1.紅外接收頭引腳信號是相反的電平

以上電平是從發射頭角度來看,紅外接收頭引腳輸出的是相反的電平。

如圖,即沒有數據傳輸時,P3.2引腳保持爲高電平,當接收到數據時,首先是引導碼,9ms的低電平和4.5ms的高電平,然後是32位數據和1位停止位。一般來說,P3.2與單片機的某中斷引腳相連,當接收數據時,低電平會觸發中斷。

 

2.數據從LSB(低位)開始發送,所以選擇右移方式接收數據。

四個字節的數據都是先發送D0,最後發送D7。所以接收到1位數據後,給變量的最高位賦值,右移。或者先右移,再給變量的最高位賦值。

 

3.可以用一個數組保存32個數據的持續時間,用於後面判斷高低電平。

用定時器對兩個數據(中斷)之間的時間計時,並保存這個持續時間用於以後判斷是位1還是位0。

 

4.可以用2字節,4字節變量存儲32個數據,以節省代碼空間

可以用兩個16位的int型變量存儲數據,第一個int變量存儲用戶碼,第二個存儲數據碼和數據反碼。也可以用一個32位long型的變量存儲所有數據。

 

5.判斷停止位

接收到停止位後可以屏蔽紅外引腳的中斷,防止後面數據的干擾,解碼成功後在開啓中斷。

發佈了7 篇原創文章 · 獲贊 64 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章