久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

用P89LPC903單片機實現紅外線遙控電源插座

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-24 21:07 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
(一)、概述




上面圖片就是我做的電視遙控器控制電源插座的實物圖。
  紅外線遙控是目前使用最廣泛的一種通信和遙控方式。由于紅外線遙控裝置具有體積小、功耗低、功能強、成本低等特點,因而在家用電器以及玩具等其它小型電器裝置上廣泛采用紅外線遙控。工業設備中,在高電壓、有輻射、有毒氣體、粉塵等環境下,采用紅外線遙控不僅可靠而且能起到有效地隔離作用。下圖表示了紅外發射和接收的工作框圖。


紅外線遙控器一般由電源、鍵盤、編碼、調制電路、三極管和紅外線發射管組成。接收端接收到紅外信號后進行放大、解調、然后送到專門的芯片去進行解碼輸出。
(二)、紅外遙控器解碼電路組成
      1、單片機

單片機選用PILLIPS 公司的8 個管腳的P89LPC903 芯片,P89LPC903 是一單片封裝的微控制器如下圖,適用于許多要求高集成度、低成本的場合,可以滿足多方面的性能要求。它采用了高性能的處理器結構,指令執行時間只需2 到4 個時鐘周期,6 倍于標準的80C51 器件,此外還集成了許多系統級的功能,可以大大減少元件的數目和電路板的面積并降低系統的成本。其基本內核是常用的C51內核,絕大部分指令系統與C51 相同,使用時注意I/O口的定義如下圖。



P89LPC903的儲器空間如下:
DATA 128字節的內部數據存儲空間(00h--7Fh)。可利用除MOVX和MOVC之外的指令直接或間接尋址。
SFR 特殊功能寄存器。選擇的CPU寄存器和外設控制和狀態寄存器,只可通過直接尋址訪問。
CODE 1KB的代碼存儲空間。作為程序執行部分,通過MOVC指令訪問。
P89LPC903可選擇片內看門狗振蕩器和片內RC振蕩器作為CPU時鐘源。
P89LPC901/902/903 具有一個6 位TRIM 寄存器,可對RC 振蕩器的頻率進行調整。在復位時,TRIM;的值初始化為出廠時預編程值以將振蕩器頻率調整為7.373MHz,±2.5%。用戶程序可修改TRIM 寄存器將RC 振蕩器調整為其它頻率。
2、紅外接收電路:
紅外接收電路通常被廠家集成在一個元件中,成為一體化紅外接收頭。 內部電路包括紅外監測二極管,放大器,限副器,帶通濾波器,積分電路,比較器等。紅外監測二極管監測到紅外信號,然后把信號送到放大器和限幅器,限幅器把脈沖幅度控制在一定的水平,而不論紅外發射器和接收器的距離遠近。交流信號進入帶通濾波器,帶通濾波器可以通過30khz到60khz的負載波,通過解調電路和積分電路進入比較器,比較器輸出高低電平,還原出發射端的信號波形。注意輸出的高低電平和發射端是反相的,這樣的目的是為了提高接收的靈敏度。

 紅外接收頭的種類很多,引腳定義也不相同,一般都有三個引腳,包括供電腳,接地和信號輸出腳。根據發射端調制載波的不同應選用相應解調頻率的接收頭。
紅外接收頭內部放大器的增益很大,很容易引起干擾,因此在接收頭的供電腳上須加上濾波電容,一般在22uf以上。HS0038B是一款壓模的紅外線接收模塊,應用比較廣泛.紅外線接收頭容易受到陽光及38KHZ或者其它頻率的持續信號的干擾。
3、用P89LPC903單片機實現紅外線遙控插座的電路


如上圖單片機的P0.5口接一體化的紅外接收頭。P0.4控制繼電器,P0.2接指示燈。
()、紅外遙控器解碼原理
   我們以uPD1621芯片的編碼方式來講解紅外解碼的過程,uPD6121G產生的遙控編碼是連續的32位二進制碼組,其中前16位為用戶識別碼,能區別不同的電器設備,防止不同機種遙控碼互相干擾。后16位為8位操作碼(功能碼)及其反碼。uPD6121G最多達128種不同組合的編碼。遙控器在按鍵按下后,周期性地發出同一種32位二進制碼,周期約為108ms。一組碼本身的持續時間隨它包含的二進制“0”和“1”的個數不同而不同,大約在4563ms之間,下圖為發射波形圖。

   當發射端一個鍵按下超過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”、“1”均以0.56ms的低電平開始,不同的是高電平的寬度不同,“0”為0.56ms,“1”為1.68ms,可以根據高電平的寬度區別“0”和“1”


 根據碼的格式,我們解碼前應該等待9ms的起始碼和4.5ms的結果碼(稱之為引導碼)完成后才能開始讀碼。


                       
單片機程序:
;設定內部時鐘為7.373MHZ,工作速度是同頻2051的6倍,機頂盒遙控器數據“1”=1642微妙,“0“=514微妙,用定時器計數”1“=1F51H"  0="09E1H"
                ORG0000H     
               AJMPMAIN      
                ORG0023H     
              ; AJMPRcv_ISR   
                ORG006BH      ;6BH是串口發送中斷地址  53h看門狗  33h ic2總線   3BHKBI中斷43H是比較器中斷
               ; AJMP Send_ISR  ;73HADC
             P0M1 DATA  84H   
             P0M2 EQU   85H
             P1M1 EQU   91H
             P1M2 EQU   92H
             SSTAT EQU  0BAH
             BRGCON EQU 0BDH
             BRGR0 EQU  0BEH
             BRGR1 EQU  0BFH
             KEY EQU P0.5
           WDL    EQU 0C1H
             WFEED1  EQU 0C2H
             WFEED2  EQU 0C3H
             WDCON  EQU 0A7H


               ORG 0080H
MAIN:   MOVP0M1,#00H   ;P0設置為準雙向
;          ANL P0M1,#0FCH ;TXDRXD設置為準雙向
           MOV P0M2,#00H ;端口初始化
           MOV P1M1,#0   ;TXDRXD設置為準雙向
;          ANL P1M1,#0FCH ;TXDRXD設置為準雙向
           MOVP1M2,#0 ;端口初始化
           MOV SCON,#50H ;使能接收選擇串口模式1
           MOV SSTAT,#0E0H ;選擇獨立的Tx/Rx中斷
           MOV BRGR0,#0F0H;@7.373Mhz
           MOV BRGR1,#17H  ;02H;7372800/1200-16=6144-16=6128D=17F0H,所以BRGR0,#0f0H  BRGR1,#17H,波特率=1200
         ;MOV BRGR0,#0x70 ;19200 baud @7.373Mhz ;
         ; MOV BRGR1,#0x01
         ; MOV BRGR0,#0x30 ;115200 baud @7.373Mhz ;7.3738/6=1.2288
          ; MOV BRGR1,#0x00
           MOV BRGCON,#03H ;使能BRG
           MOV A,#90H
           MOVIE,A       ;SETB ESR;ESR=Enable Serial Recieve (EA EWDRT EBO ES/ESR ET1 - ET0-)
           MOV A,#40H
           MOV0E8H,A    ;SETB EST ;EST=Enable Serial Transmit  (- EST - -- EC EKBI -)  EC=1
           MOV TMOD, #11H  ;用作“定時器”功能時,每經過一個PCLK,寄存器值加1
          ACALLWDINT
           LCALL YS
           CPL P0.2
           LCALL YS
           CPL P0.2
QL:          MOV A,#00H
               MOVR2,#66D     ;清數據區;;
               MOVR0,#18H
QRAM:     MOV @R0,  A
              INC R0
               CLR A
              DJNZ R2,  QRAM
M1:         ACALL CLRWDT;ACALL MAIN_L1
              JNB P1.1,M2
              JB KEY,M1
              AJMP SS
M2:         CPL P0.4
              CPLP0.2
              AJMP M1
   SS:    ;JB P0.4,MAIN
         MOV R6,#17
SS1:   JB  KEY, SS1 ;躲過引導碼及16位用戶識別碼
         JNB KEY,$
         DJNZR6,SS1
         MOV R0,#1AH
         MOV R1,#18H
         MOV R2,#2
         JB  KEY, $
S01:    MOV   R6,#8        ;判斷高電平時間常數,識別數據碼
S0:    MOV   8DH,#00H     ;定時器1時間常數
         MOV   8BH, #00H
S2:     JNB  KEY,S2           ;為低等待
         SETB TR1              ;為高計時
         JB  KEY,$        ;等待變變低
         CLR  TR1
S3:     MOV  A,TH1        ;測量高電平時間
         MOV @R0,A
          INC R0
         SUBB  A,#10H         ;與晶振頻率有關6mhz時,起始位9ms計時TH1=11TL1=A3,數據“1=1.6msTH1=03H,TL1=41H
         JC   JS1             ;數據“0=0.5MS,TH1=01TL1=0F,所以用高電平持續時間來判斷“1”還是“0
        SETBC            ;TH1=31TL1=1為“0”所以TH1減去2,不借位就是“1”。
        AJMP JS3
JS1:   CLR C
JS3:   MOV  A,@R1
        RLC A
        MOV   @R1, A
JS2:   DJNZ R6,S0
        INC R1
        DJNZ R2,S01
        MOVA,19H
        CPLA;1AH取反后和1BH比較
       CJNE A,18H,J3 ;如果不等表示接收數據發生錯誤,放棄
SSS:   CLR P0.2;  LED燈亮表示解碼成功
       LCALL YS
        LCALLYS
        SETBP0.2  ;LED燈滅
        MOV A,18H
        XRL A,#02H   ;
        JNZ J01
        CLR P0.4
        SETB P0.2
        AJMP J3
J01:     MOV A,18H
        XRL A,#0DAH  ;游戲
        JNZ J1
        SETB P0.2
        CLR P1.0
        AJMP J3
J1:    MOVA,18H
        XRLA,#22H    ;
        JNZ J2
        SETB P0.4
        CLR P0.2
J2:    MOVA,18H
        XRLA,#52H    ;點播
        JNZ J3
        CLR P0.2
        SETB P1.0
  J3:  LJMP MAIN

YS:    MOV     7EH,   #64H
YS1:   MOV     7FH,   #0ffH
YS2:   ACALL CLRWDT
       DJNZ    7FH,   YS2
       DJNZ    7EH,   YS1
       RET
WDINT:  MOV ACC, WDCON ;讀取WD控制器
       SETB ACC.2
       MOVWDL,#0FFH    ;設置8位倒計時計數器 ;配置字ucfg1=c0
       MOVWDCON,A    ;啟動看門狗
       MOV WFEED1,#0A5H  ;0
       MOV WFEED2,#5AH
       RET

CLRWDT:CLREA
      MOV WFEED1,#0A5H  ;0
       MOVWFEED2,#5AH
       SETB EA
       RET
              ORG 0300H
DB 48H  ;0 有線電視機頂盒遙控器數據
DB 90H  ;1
DB 0B8H ;2
DB 0F8H ;3
DB 0B0H ;4
DB 98H  ;5
DB 0D8H ;6
DB 88H  ;7
DB 0A8H ;8
DB 0E8H ;9
DB 38H  ;待機0A
DB 0ffH ;電源0B
DB 00H  ;0C
DB 02H  ;0D
DB 50H  ;0E
DB 22H  ;0F
;衛星接收遙控器數據
DB 08H  ;10
DB 88H  ;11
DB 48H ;12
DB 0C8H ;13
DB 28H ;14
DB 0A8H  ;15
DB 68H ;16
DB 0E8H  ;17
DB 18H ;18
DB 98H ;19
DB 00H  ;待機1A
DB 0ffH ;電源1B
DB 24H  ;1C
DB 0A4H  ;1D
DB 64H  ; 1E
DB 0E4H  ; 正確1F
         END



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

使用道具 舉報

地板
ID:453582 發表于 2018-12-24 16:11 | 只看該作者
樓主有資料沒有呢
回復

使用道具 舉報

板凳
ID:100985 發表于 2016-2-25 18:33 來自觸屏版 | 只看該作者
贊一個!
回復

使用道具 舉報

沙發
ID:106029 發表于 2016-2-24 22:56 | 只看該作者
厲害 我是看著匯編就頭大
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品香蕉一区二区三区 | 欧美日韩精品在线免费观看 | 久久久91精品国产一区二区精品 | 伊人春色在线 | 亚洲日韩中文字幕一区 | 久久久久久久久99 | 国产性生活一级片 | 四虎永久 | 亚洲精品播放 | 精品一区二区免费视频 | 好姑娘影视在线观看高清 | 精品日韩一区二区三区 | a级片www | 亚洲成人免费电影 | 国产欧美在线观看 | 九九精品网 | 亚洲国产一区二区三区, | 国产精品一区二区免费看 | 精品欧美一区二区久久久伦 | 网站一区二区三区 | 九色国产 | 久久这里有精品 | 中文字幕影院 | 亚洲精品无 | 一区二区片| 色黄视频在线 | 中文在线播放 | 欧美精品一区二区三 | 日韩一区中文字幕 | 亚洲 欧美 另类 日韩 | 久久国产精品亚洲 | 黄色国产| 亚洲成人精品视频 | 国产成人精品久久二区二区91 | 国产精品亚洲第一区在线暖暖韩国 | 欧美一区二区三区精品 | a级片在线观看 | 91精品国模一区二区三区 | 日韩精品视频中文字幕 | 成在线人视频免费视频 | 亚洲乱码国产乱码精品精98午夜 |