亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13641|回復: 8
打印 上一主題 下一主題
收起左側

基于51單片機NEC 紅外遙控解碼

  [復制鏈接]
跳轉到指定樓層
樓主
ID:65608 發表于 2014-9-15 03:50 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
大家好,我是陳濱。說到紅外遙控,大家都使用過了,目前紅外遙控器有兩種格式,一種是飛利浦格式,一種是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 這里去下載

評分

參與人數 1黑幣 +1 收起 理由
新手小蘇 + 1

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:34185 發表于 2014-11-30 07:09 | 只看該作者
真是不錯的資料
回復

使用道具 舉報

板凳
ID:34185 發表于 2014-12-3 18:06 | 只看該作者
很有用謝謝學習了!!!
回復

使用道具 舉報

地板
ID:69860 發表于 2014-12-6 10:18 | 只看該作者

謝謝樓主,下載學習學習。
回復

使用道具 舉報

5#
ID:95047 發表于 2015-12-25 21:16 | 只看該作者
真心不錯
回復

使用道具 舉報

6#
ID:78363 發表于 2015-12-26 16:57 | 只看該作者
贊一下樓主!!!!
回復

使用道具 舉報

7#
ID:79544 發表于 2015-12-26 17:30 | 只看該作者
遺憾的是,是用匯編寫的程序,看不懂
回復

使用道具 舉報

8#
ID:74784 發表于 2020-6-13 22:07 | 只看該作者
我正需要匯編的解碼代碼呢。
謝謝樓主!
回復

使用道具 舉報

9#
ID:1064915 發表于 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
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表