新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR學(xué)習(xí)筆記--紅外遙控接收器使用

AVR學(xué)習(xí)筆記--紅外遙控接收器使用

作者: 時間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
目前大多使用的是一體化紅外接收頭,它將紅外接收二極管、放大、解調(diào)、整形等電路做在一起,只有三個引腳.分別是+5V電源、地、信號輸出。所以只需要關(guān)心接收頭的輸出編碼格式。

[1]指令格式:前導(dǎo)碼 + 地址碼 + 地址碼反碼 + 數(shù)據(jù) + 數(shù)據(jù)碼反碼

本文引用地址:http://butianyuan.cn/article/201611/320163.htm

[2]指令編碼:脈寬調(diào)制編碼

[3]識別算法:每兩次信號的下降沿表示1位數(shù)據(jù),根據(jù)兩次下降沿之間的間隔時間,就可以判斷出是前導(dǎo)碼,還是數(shù)據(jù)1或數(shù)據(jù)0。

A、前導(dǎo)碼: 9ms

B、數(shù)據(jù)“1”:2.25ms

C、數(shù)據(jù)“0”:1.12ms


注意:[1]雖然0和1的占用時間長度不同,但因為同時其反碼的存在,所以整條指令的總長度是固定的。

[2]前導(dǎo)碼是固定格式,也是紅外指令的識別碼

[4]硬件電路:


[5]編程流程:

  • 一體化紅外接收頭的輸出腳接到外部硬件中斷I/O上,并設(shè)置成下降沿觸發(fā)。
  • CPU上電,初始化定時器,初值為0。
  • 每次觸發(fā)中斷,停止定時器,讀取定時器值,判斷定時器值,9ms表示前導(dǎo)碼,2.25ms表示1,1.12ms表示0。送入數(shù)據(jù)緩沖,并對數(shù)據(jù)隊列計數(shù),初始化定時器,重新計時。
  • 判斷數(shù)據(jù)隊列長度,除前導(dǎo)碼外,接收到32位數(shù)據(jù),表示指令接受完成。
  • 指令校驗,就是將數(shù)據(jù)和數(shù)據(jù)反碼,地址和地址反碼做加法處理,如果得到的結(jié)果是0xFF,表示校驗通過,否則,校驗失敗,丟棄數(shù)據(jù)。
  • 指令解讀,根據(jù)規(guī)則解讀。

[6]實例代碼:

等待補充



評論


技術(shù)專區(qū)

關(guān)閉