讓紅外線模塊工作起來,首先你得給它供電,然后你得有個CPU來處理它發送數據,通過單片機處理以后,我們才能知道紅外模塊發送的是什么數據。紅外接收端和CPU連接,紅外接收端給CPU的數據,是一些PWM波,也就是一些高低電平組成連續波形。因此,我們需要CPU具有處理這些波形的能力。
CPU需要的功能:
1、定時功能:也就是計時用;
2、捕獲功能:上升沿捕獲,下降沿捕獲;
3、中斷功能:定時時間,上升沿捕獲,下降沿捕獲;
首先將CPU的捕獲IO設置為上升沿捕獲,等待上升沿到來,上升沿到來,定時器開始計時;然后將CPU的捕獲IO口捕獲設置為下降沿捕獲,等待下降沿到來,下降沿到來,停止計時,計算這2個沿的時間Time,這個時間,也就是高電平的時間。
通過這個高電平時間來確定收到數據是0或者1,也有可能是重復碼和引導碼。
1、Time為0.56ms(高電平時間)時,收到的電平為0;
2、Time為1.685ms(高電平時間)時,收到的電平為1。
3、Time為2.25ms(高電平時間)重復碼;重復碼,就是重復按某一個鍵。
4、Time為4.5ms(高電平時間),引導碼;
紅外線發送的每一幀數據,除了引導碼以外,有32位有效數據,每個字節為8位,一幀數據的有效數據也就是4個字節。
從高位到低位,高兩個字節為地址碼和地址反碼,后面兩個字節為數據碼和數據反碼。
得到32位數據后,需要對數據進行處理:
我們定義一個32位的變量RevData。
同時定義4個8位的變量,地址碼AdrCode,地址反碼AdrInv,數字碼keyValue,數字反碼keyIvalue。
將變量RevData右移24位后,將值賦給地址碼AdrCode;
將變量RevData右移16位后,和0xff進行與運算后賦值給地址反碼AdrInv。
如果將AdrCode取反后,等于AdrInv,說明接收的數據是正確的。
將變量RevData右移8位后賦值給數字碼keyValue
直接將變量RevData賦予給數字反碼keyIvalue
如果將keyValue取反后,與keyIvalue相等,說明接收到數據無誤。
-
單片機
+關注
關注
6035文章
44554瀏覽量
634641 -
cpu
+關注
關注
68文章
10854瀏覽量
211583 -
紅外模塊
+關注
關注
0文章
13瀏覽量
9723
發布評論請先 登錄
相關推薦
評論