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