花了一個多月的時間研究基于NEC協議的紅外遙控,下面是這次實習技術方面的總結。
一、NEC協議特征:
8位地址和8位命令長度
每次傳輸兩遍地址(用戶碼)和命令(按鍵值)
通過脈沖串之間的時間間隔來實現信號的調制(PPM)
38Khz載波
每位的周期為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.判斷停止位。
接收到停止位后可以屏蔽紅外引腳的中斷,防止后面數據的干擾,解碼成功后在開啟中斷。
-
電平
+關注
關注
5文章
360瀏覽量
39883 -
NEC
+關注
關注
0文章
238瀏覽量
99111 -
紅外遙控
+關注
關注
22文章
347瀏覽量
45588
原文標題:紅外遙控NEC協議使用總結
文章出處:【微信號:eet-china,微信公眾號:電子工程專輯】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論