亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
基于51單片機NEC 紅外遙控解碼
[打印本頁]
作者:
daliu
時間:
2014-9-15 03:50
標題:
基于51單片機NEC 紅外遙控解碼
大家好,我是陳濱。說到紅外遙控,大家都使用過了,目前紅外遙控器有兩種格式,一種是飛利浦格式,一種是NEC格式,當然,牛逼的SONY也有自己的格式,這個不屬于地球的廠家我就不說了啊,呵呵...但是使用最多的還是NEC格式,還是日本鬼子的,哎!如果可以,我希望是飛利浦的,因為我們依賴日本的技術方面太多了。說到題外話了,但是 希望每個中國人都要自己努力,希望我們的下一代能開發各種比日本更加先進的技術。嗯!下面開始講解如何利用51單片機這個功能很弱的單片機進行紅外解碼。如果你對這個熟悉,那么你可以使用任何一個NEC格式的遙控對你家里的任何一切東西進行遙控,你的風扇,你的抽油煙機,甚至你的日光燈,通通都可以!紅外線遙控由于成本低廉,抗干擾能力好,目前廣泛使用在各種家用電器上。紅外線遙控NEC協議是這樣的,它是一個9ms的高電平和一個4.5ms的低電平作為接收的引導碼,然后以一個560us的高電平和一個560us的低電平表示位0,以一個560us的高電平和一個1.685ms的低電平表示位1,前16位是用戶碼,后16位是按鍵碼,每個16位分別是8位正碼和8位反碼,這樣設計就是為了區分不同的設備以及抗干擾。當用戶按下遙控某個按鍵時,遙控內部的編碼器就會發送一組108ms組成的數據碼,如果按住不放,接下來是9ms和2.5ms的連發碼。下面是時序圖,本人自己畫的,畫得不好看,不要見笑
啊:
實際上,我們接收頭收到的信號電平是跟遙控相反的,比如遙控發的是1,我們收到的實際上0,利用這個原理,為我們的51單片機解碼提供好條件 。網上很多人大多利用中斷和定時器中斷來解碼,甚至更笨的采用延時,這樣的做法占用單片機資源是很嚴重的,而且程序很長,難懂。本人經過研究,發現51單片機其實有一個功能很好用,就是門控方式,利用單片機門控方式,在進入中斷時自動關閉定時器,通過讀取計數值就可以得知電平的寬度,從而識別0和1.這樣的方法占用單片機資源少,效率高,準確性可靠。
下面是本人自己制作的一個遙控解碼器:
上面第一個是收到的上面一個收到的是用戶碼和反碼, 下面是按鍵碼和反碼 。大家發現規律沒有?正碼和反碼剛加在一起剛好是15.好了,大家如果對這個有興趣,可以加我QQ 具體keilc51源碼請到
http://www.denmoz.com/mcu/184.html
這里去下載
作者:
jaffreyck
時間:
2014-11-30 07:09
真是不錯的資料
作者:
jaffreyck
時間:
2014-12-3 18:06
很有用謝謝學習了。!
作者:
seeyoou
時間:
2014-12-6 10:18
謝謝樓主,下載學習學習。
作者:
hushenbang
時間:
2015-12-25 21:16
真心不錯
作者:
Draco.Dong
時間:
2015-12-26 16:57
贊一下樓主。。!
作者:
騰飛的龍
時間:
2015-12-26 17:30
遺憾的是,是用匯編寫的程序,看不懂
作者:
lxa0
時間:
2020-6-13 22:07
我正需要匯編的解碼代碼呢。
謝謝樓主!
作者:
joyb
時間:
2026-5-11 17:11
ORG 0000H
MAIN: MOV SP,#60H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
JNB P3.2,$ ;等待遙控信號出現
MOV R6,#10
SB: ACALL YS1 ;調用882微秒延時子程序
JB P3.2,MAIN ;延時882微秒后判斷P3.2腳是否出現高電平如果有就退出解碼程序
DJNZ R6, SB ;重復10次,目的是檢測在8820微秒內如果出現高電平就退出解碼程序
;以上完成對遙控信號的9000微秒的初始低電平信號的識別。
JNB P3.2, $ ;等待高電平避開9毫秒低電平引導脈沖
ACALL YS2 ;延時4.74毫秒避開4.5毫秒的結果碼
MOV R1,#1AH ;設定1AH為起始RAM區
MOV R2,#4
PP: MOV R3,#8
JJJJ: JNB P3.2,$ ;等待地址碼第一位的高電平信號
LCALL YS1 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態
MOV C,P3.2 ;將P3.2引腳此時的電平狀態0或1存入C中
JNC UUU ;如果為0就跳轉到UUU
JB P3.2,$ ;如果為1就等待高電平信號結束
UUU: MOV A,@R1 ;將R1中地址的給A
RRC A ;將C中的值0或1移入A中的最低位
MOV @R1,A ;將A中的數暫時存放在R1中
DJNZ R3,JJJJ ;接收地址碼的高8位
INC R1 ;對R1中的值加1,換成下一個RAM
DJNZ R2,PP ;接收完16位地址碼和8位數據碼和8位數據反碼,存放在1AH/1BH/1CH/1DH的RAM中
;以下對代碼是否正確和定義進行識別
MOV A,1AH ;比較高8位地址碼
XRL A,#00000000B ;判斷1AH的值是否等于00000000,相等的話A為0
JNZ MAIN ;如果不相等說明解碼失敗退出解碼程序
MOV A,1BH ;比較低8位地址
XRL A,#11111111B ;再判斷高8位地址是否正確
JNZ MAIN ;如果不相等說明解碼失敗退出解碼程序
MOV A,1CH ;比較數據碼和數據反碼是否正確?
CPL A
XRL A,1DH ;將1CH的值取反后和1DH比較 不同則無效丟棄,核對數據是否準確
JNZ MAIN ;如果不相等說明解碼失敗退出解碼程序
LCALL SOUND ;解碼成功,聲音提示
MOV A,1AH
CPL A
MOV P1,A ;遙控碼十六進制值通過P1口LED顯示出來
;-------- 下面為0~9鍵碼判斷并在實驗板的5位數碼管中顯示鍵值 --------
JZPD: MOV A,1AH
IRD0: CJNE A,#00H,IRD1 ;按鍵"0"判斷顯示
MOV P0,#0C0H
MOV P2,#11100000B
AJMP MAIN
IRD1: CJNE A,#01H,IRD2 ;按鍵"1"判斷顯示
MOV P0,#0F9H
MOV P2,#11100000B
AJMP MAIN
IRD2: CJNE A,#02H,IRD3 ;按鍵"2"判斷顯示
MOV P0,#0A4H
MOV P2,#11100000B
AJMP MAIN
IRD3: CJNE A,#03H,IRD4 ;按鍵"3"判斷顯示
MOV P0,#0B0H
MOV P2,#11100000B
AJMP MAIN
IRD4: CJNE A,#04H,IRD5 ;按鍵"4"判斷顯示
MOV P0,#99H
MOV P2,#11100000B
AJMP MAIN
IRD5: CJNE A,#05H,IRD6 ;按鍵"5"判斷顯示
MOV P0,#92H
MOV P2,#11100000B
AJMP MAIN
IRD6: CJNE A,#06H,IRD7 ;按鍵"6"判斷顯示
MOV P0,#82H
MOV P2,#11100000B
AJMP MAIN
IRD7: CJNE A,#07H,IRD8 ;按鍵"7"判斷顯示
MOV P0,#0F8H
MOV P2,#11100000B
AJMP MAIN
IRD8: CJNE A,#08H,IRD9 ;按鍵"8"判斷顯示
MOV P0,#80H
MOV P2,#11100000B
AJMP MAIN
IRD9: CJNE A,#09H,IRDOR ;按鍵"9"判斷顯示
MOV P0,#90H
MOV P2,#11100000B
AJMP MAIN
IRDOR: MOV P2,#0FFH ;關閉數碼管使能。"0~9"以外的非數字功能按鍵鍵值不采用數碼管顯示,直接從P1口輸出鍵值
AJMP MAIN
YS1: MOV R4,#19 ;延時子程序1
D1: MOV R5,#18
DJNZ R5,$
DJNZ R4,D1
RET
YS2: MOV R4,#10 ;延時子程序2
D2: MOV R5,#216
DJNZ R5,$
DJNZ R4,D2
RET
SOUND: MOV R7,#228 ;音效延時子程序
SDL1: CPL P3.7
MOV R6,#0FFH
SDL0: DJNZ R6,SDL0
DJNZ R7,SDL1
RET
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1