導航:首頁 > 操作系統 > 單片機紅外接收程序

單片機紅外接收程序

發布時間:2025-08-09 18:43:43

A. 51單片機紅外接收端的程序怎麼寫,我想知道寫的方法和原理,最好有一個具體的模版,好讓我參考.

這是採用STC12C5A60S2單片機的紅外解碼程序及其說明。
;採用脈寬調制的串列碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的"0";
;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的"1
;上述"0"和"1"組成的32位二進制碼經38kHz的載頻進行二次調制以提高發射效率,
;達到降低電源功耗的目的。然後再通過紅外發射二極體產生紅外線向空間發射
;遙控編碼是連續的32位二進制碼組,其中前16位為用戶識別碼,能區別不同的電器設備,
;防止不同機種遙控碼互相干擾。該晶元的用戶識別碼固定為十六進制01H
;後16位為8位操作碼(功能碼)及其反碼。
;當一個鍵按下超過36ms,振盪器使晶元激活,將發射一組108ms的編碼脈沖,這108ms發射代碼由一個起始碼(9ms),
;一個結果碼(4.5ms),低8位地址碼(9ms~18ms),高8位地址碼(9ms~18ms),8位數據碼(9ms~18ms)
;和這8位數據的反碼(9ms~18ms)組成。如果鍵按下超過108ms仍未松開,
;接下來發射的代碼(連發代碼)將僅由起始碼(9ms)和結束碼(2.5ms)組成。
;
;解碼的關鍵是如何識別"0"和"1",接收端而言,"0"是0.56ms的高+0.56ms的低。"1"是1.68ms的高+0.56ms的低。
;所以可以根據高電平的寬度區別"0"和"1"。當高電平出現時開始延時,0.56ms以後,若讀到的電平為低,
;說明該位為"0",反之則為"1",為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否則如果該位為"0",
;讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可。
;為了共用引導部分延時程序,這里用0.9ms延時。
;-------------紅外解碼程序---------------------------
EXINT0:
PUSH ACC
PUSH PSW
PUSH 1
PUSH 2
PUSH 6
CLR EA ;暫時關閉中斷請求
MOV R6,#10
EXINT10:
LCALL DELAY09MS ;調用900us延時子程序
JB IRIN,INTOUT1 ;判斷P3.2是否有高電平,如果有就退出解碼程序
DJNZ R6,EXINT10 ;循環10次,檢測在900微妙中是否存在高電平。以上完成對遙控信號的9000微秒的初始低電平信號的識別。
JNB IRIN,$ ;等待高電平避開9毫秒低電平引導脈沖
LCALL DELAY45MS ;延時4.5毫秒
;-------------接受32位代碼--------------------------
MOV R1,#IRUSERL
MOV R2,#04H
EXINT101:
MOV R6,#08H ;每組數據位8位
EXINT102:
JNB IRIN,$ ;等待地址碼第一組數據的高電平信號
LCALL DELAY09MS ;高電平開始後延時判斷信號此時的高/低狀態
MOV C,IRIN ;將P3.2引腳此時的電平狀態0或1存入C中
JNC INT1OUT ;如果為0跳出
LCALL DELAY1MS
INT1OUT:
MOV A,@R1
RRC A ;將C中的數據0/1移入A中最低位
MOV @R1,A ;將A中的數據暫存在R1
DJNZ R6,EXINT102 ;接受完8位代碼
INC R1
DJNZ R2,EXINT101 ;接受完4組32位代碼
;--------------數據碼比較-------------------------------
MOV A,IRDATAL
; LCALL SENDRXDAT
MOV A,IRDATAL
CPL A
CJNE A,IRDATAH,INTOUT1 ;判斷數碼正誤,不等退出
MOV IR_DAT,IRDATAL ;相等則保存正確數據
MOV A,IR_DAT
; LCALL SENDRXDAT
SETB IRBIT
INTOUT1:
LCALL DELAY45MS
SETB EA ;允許中斷
POP 6
POP 2
POP 1
POP PSW
POP ACC
RETI
;;*****************11.0592*900=9953******************
DELAY09MS: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#20 ;2
DLY900:
MOV R3,#122 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY900 ;4
MOV R4,#11 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;TOTAL=9952
;;*****************11.0592*560=6193******************
DELAY056: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#12 ;2
DLY5600:
MOV R3,#122 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY5600 ;4
MOV R4,#71 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;TOTAL=6194
;;*****************11.0592*4500=49766****************
DELAY45MS: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#52 ;2
DLY45:
MOV R3,#236 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY45 ;4
MOV R4,#85 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;;TOTAL=49768
;;*****************11.0592*1000=11059****************
DELAY1MS: ;6
PUSH 4 ;4
PUSH 3 ;4
MOV R4,#20 ;2
DLY1MS:
MOV R3,#136 ;2
DJNZ R3,$ ;4
DJNZ R4,DLY1MS ;4
MOV R4,#8 ;2
DJNZ R4,$ ;4
POP 3 ;3
POP 4 ;3
RET ;4
;TOTAL=11060
;;***************************************************
DELAY100US: ;6
PUSH 4 ;4
MOV R4,#140 ;2
DJNZ R4,$ ;4
MOV R4,#131 ;2
DJNZ R4,$ ;4
POP 4 ;3
RET ;4
;TOTAL=1105
;;***************************************************

閱讀全文

與單片機紅外接收程序相關的資料

熱點內容
怎麼解壓縮包手機版 瀏覽:888
三星伺服器內存條為什麼這么便宜 瀏覽:294
鋼鐵是怎樣煉成的pdf 瀏覽:364
蘋果怎麼保存pdf 瀏覽:271
安卓松香在焊接中有什麼用 瀏覽:819
mysql命令as使用 瀏覽:627
小敏家在哪裡播app 瀏覽:37
紅外遙控配置文件夾 瀏覽:685
qq瀏覽器解壓後文件位置 瀏覽:171
sci編譯服務 瀏覽:805
爬蟲技術pythondemo 瀏覽:127
程序員和linux內核交道 瀏覽:213
安卓怎麼把手機資料傳到蘋果 瀏覽:944
如何修改注冊表命令 瀏覽:135
公用文件夾打開需要網路憑證 瀏覽:546
監控伺服器怎麼配置硬碟 瀏覽:281
騰訊雲伺服器怎麼查看ftp地址 瀏覽:300
四時歌PDf 瀏覽:379
linux查看動態文件 瀏覽:578
輕松籌app怎麼發起籌款 瀏覽:217