日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
如何用PIC做紅外線遙控接收?
如何用PIC做紅外線遙控接收?
 更新時(shí)間:2008-7-26 19:59:54  點(diǎn)擊數(shù):2
【字體: 字體顏色
如何用PIC做紅外線遙控接收? 
============================   
先用20106之類的片子解調(diào)后,你用示波器掛在20106的輸出端就可以查看遙控波形。
=============================
NEC遙控接收第一次正常,以后就不行了(附遙控子程序)請(qǐng)指正。
不才是PIC領(lǐng)域的新手,最近寫了一個(gè)關(guān)于NEC遙控接收解碼的測(cè)試程序,下面是此程序的遙控解碼部分但是它只能第一次正確判斷出接收碼,以后就不行了請(qǐng)高手指點(diǎn)》

我知道遙控碼的連發(fā)情況,但我已經(jīng)設(shè)置了32位接收碼的計(jì)數(shù)器,應(yīng)該不會(huì)有問題的

我判斷0(1.125ms)和1(2.25ms) 由于我用的是C57,只能通過查詢方式來確定.通過高電平的時(shí)間(以下程序中延時(shí)0.9MS)不同來決定0或1的。

;NEC格式遙控碼的接收與解碼子程序
;本程序中采用PORTA  0口接收紅外遙控,地址碼為00H,高位FFH,數(shù)據(jù)碼為00H,反碼為FFH,接收到的依次存放到  25H   ADD8L,   26H   ADD8H,DAT8    27H ,28H      DAT8F寄存器中。
;第一次接收到此信號(hào)即關(guān)機(jī).

;====================================
REMOTE_RECEIVER 
         CLRF 20H              ;設(shè)定遙控接收正確與否標(biāo)志位。若20H的第0位為1,
         BTFSC     PORTA,0     ;遙控接收無效。
         GOTO      BACK        ;判斷9MS低電平和4.5MS高電平。
;----5ms delay----------------
         MOVLW     06H         ;防止抖動(dòng),延時(shí)5ms
         MOVWF     30H
LOOP4 MOVLW 0FFH
         MOVWF 31H
LOOP5    DECFSZ 31H,1
         GOTO LOOP5
         DECFSZ 30H,1
         GOTO LOOP4 

;-----------------------------
         BTFSC PORTA,0
         GOTO BACK       ;遙控接收無效。
LOOP0    BTFSS PORTA,0        ;遙控接收,等待高電平出現(xiàn),約9-5ms
         GOTO LOOP0

;------------------------------以下是接收代碼的步子
STEP      MOVLW D''32''         ;設(shè)置32位接收碼的計(jì)數(shù)器.
          MOVWF BIT32
STEP1     BTFSC PORTA,0       ;等待4.5ms
          GOTO STEP1
STEP2     BTFSS PORTA,0
          GOTO STEP2       ;測(cè)一個(gè)脈沖,

          MOVLW D''180''         ;延時(shí)0.9ms,測(cè)試高電平的脈寬。
          MOVWF 29H
          BCF STATUS,C
WAIT      NOP
          NOP
          DECFSZ 29H,1
          GOTO WAIT 
          BTFSS PORTA,0         ;PA0 TO C
          GOTO C0
          GOTO C1
C0        BCF STATUS,C
          GOTO STEP3
C1        BSF STATUS,C

STEP3     MOVLW D''4''
          MOVWF 2AH
          MOVLW 28H        ;28H是DAT8F的地址
          MOVWF FSR        ;利用FSR進(jìn)行間接尋址。
STEP4     RLF INDF,1
          DECF FSR,1
          DECFSZ 2AH,1
          GOTO STEP4
          DECFSZ BIT32,1
          GOTO STEP1
          MOVF ADD8L,0
          XORLW 00H
          BTFSS STATUS,Z
          GOTO BACK        ;低8位地址碼不對(duì),返回
          MOVF ADD8H,0
          XORLW 0FFH
          BTFSS STATUS,Z
          GOTO BACK
     MOVF DAT8,0       ;8位數(shù)據(jù)碼不對(duì),返回
  XORLW 00H
    BTFSS STATUS,Z
    GOTO BACK
     MOVF DAT8F,0      ;8位數(shù)據(jù)反碼不對(duì),返回
     XORLW 0FFH
      BTFSS STATUS,Z
      GOTO BACK 
  GOTO REM_OK       ;代碼接收正確
BACK      BSF 20H,0
REM_OK    RETURN


 
 
回復(fù)  先清32位數(shù)據(jù)再接收.
然后每接收完8位后,RAM要清0

如;**************RAM移位***************************
j1       incf     jsp1     ;8位計(jì)數(shù)寄存器
         incf     jsp2      ;32位數(shù),計(jì)存器.
         btfss    jsp1,3   ;是否有8位
         goto     js
         clrf     jsp1
         MOVf     sj,0     ;移8位數(shù)到W
         MOVwf       **    ;W到DATA
         incf     f       ;RAM地址加1
         clrf     sj       ;注意這里!!!!!!!!!!!!!!!
;*****************************
         btfss    jsp2,5     ;檢測(cè)是否接收完32位.
         goto     js         ;否,再檢測(cè).
這是6122和6121  IC的接收程序.
發(fā)表于:2003-03-04 17:34:51    

 
小寶:很高興看到你的提示,不過我的程序不是按照每8位接收后經(jīng)過RAM放入寄存器中,而是每位都經(jīng)過4次循環(huán)移位后直接放入存放數(shù)據(jù)的寄存器中(參見接收程序中的STEP4),所以不可能按昭你所說的那樣清0。

          可能是接收程序與你所說的流程不同。請(qǐng)問你能把你完整的接收程序發(fā)給我嗎?萬分感激!我的EMAIL是tanga08@sina.com


你的程序單獨(dú)看是沒有問題的。我想關(guān)鍵在于發(fā)射編碼究竟如何?你所謂“第一次可以,以后就不行了”,是不是每次復(fù)位后的第一次發(fā)射和接受是正常的?如果是這樣的,說明還是連發(fā)的處理不是很合適。發(fā)生連發(fā)時(shí),應(yīng)該將25H-28H清空。否則第二次發(fā)射時(shí),25H-28H已經(jīng)有了部分不完整的數(shù)據(jù),造成移位過程中的錯(cuò)誤數(shù)據(jù),接受失敗。
我的意見不一定正確,僅供參考。



NEC遙控接收問題 
NEC遙控接收問題出錯(cuò)在位接收上。
我看程序有點(diǎn)問題,主要是在接收位上,應(yīng)該是每接受8位后才把FSR-1,在回到接受程序上。如此進(jìn)行4次可以接受32位的數(shù)據(jù)。
發(fā)表于:2003-03-04 20:46:38    

并不是位接收問題  
我那程序的位接收問題不是先接收8位再保存的,那個(gè)4次循環(huán)指的是每接收一位后即改變STATUS標(biāo)志位C,同時(shí)4個(gè)接收寄存器依次帶C位移位,等到接收32位后(即第1位移位32次后恰好保存到了第一個(gè)接收寄存器的第7位,第2位移到了第6位)你可以自己演示一下,這樣32位正好保存到了4個(gè)寄存器中。
可以參見我那段程序的STEP3,STEP4。
很感謝有這么多熱心的朋友關(guān)心這個(gè)問題!

=========================
紅外線遙控編碼有幾種類型  

類型不知道,但格式有上千種 
 
我要做個(gè)通用型的紅外接收器, 就是不管遙控器發(fā)送什么碼,反正照收不誤, 然后按原樣把它發(fā)送出去, 我想用PIC做,你看要用哪種型號(hào)的控制器做較好!
發(fā)表于:2003-08-26 17:26:08    

  既然是轉(zhuǎn)發(fā)你管他格式干什么? 
你又不解碼,只要檢測(cè)聯(lián)接紅外管的PIC的I/O口的電壓變化就行了,再在另一個(gè)腳把他發(fā)送出去。送你一個(gè)檢測(cè)紅外的小程序。只不過要自己做一點(diǎn)電路。點(diǎn)擊瀏覽該文件 

 
我用他做過東西,不是十分精確,但是如果是誤碼是可以看出來的,有時(shí)連續(xù)測(cè)量的話他會(huì)誤操作,所以我一般只看前面的十來次,要精確還是用示波器看好,不知到有人在網(wǎng)上推銷的叫電腦示波器的東西什么樣好不好使? 



最后一位數(shù)據(jù)位的寬度如何檢測(cè)!! 
以紅外接收器為準(zhǔn),如果沒有遙控信號(hào)的情況下,接收器的輸出端是不是高電平,如果是,最后一位碼,0.56ms低電平過后,接著是出現(xiàn)高電平對(duì)吧,那高電平的寬度如何確定就不好辦了
如何用PIC做紅外線遙控接收? 
============================   
先用20106之類的片子解調(diào)后,你用示波器掛在20106的輸出端就可以查看遙控波形。
=============================
NEC遙控接收第一次正常,以后就不行了(附遙控子程序)請(qǐng)指正。
不才是PIC領(lǐng)域的新手,最近寫了一個(gè)關(guān)于NEC遙控接收解碼的測(cè)試程序,下面是此程序的遙控解碼部分但是它只能第一次正確判斷出接收碼,以后就不行了請(qǐng)高手指點(diǎn)》

我知道遙控碼的連發(fā)情況,但我已經(jīng)設(shè)置了32位接收碼的計(jì)數(shù)器,應(yīng)該不會(huì)有問題的

我判斷0(1.125ms)和1(2.25ms) 由于我用的是C57,只能通過查詢方式來確定.通過高電平的時(shí)間(以下程序中延時(shí)0.9MS)不同來決定0或1的。

;NEC格式遙控碼的接收與解碼子程序
;本程序中采用PORTA  0口接收紅外遙控,地址碼為00H,高位FFH,數(shù)據(jù)碼為00H,反碼為FFH,接收到的依次存放到  25H   ADD8L,   26H   ADD8H,DAT8    27H ,28H      DAT8F寄存器中。
;第一次接收到此信號(hào)即關(guān)機(jī).

;====================================
REMOTE_RECEIVER 
         CLRF 20H              ;設(shè)定遙控接收正確與否標(biāo)志位。若20H的第0位為1,
         BTFSC     PORTA,0     ;遙控接收無效。
         GOTO      BACK        ;判斷9MS低電平和4.5MS高電平。
;----5ms delay----------------
         MOVLW     06H         ;防止抖動(dòng),延時(shí)5ms
         MOVWF     30H
LOOP4 MOVLW 0FFH
         MOVWF 31H
LOOP5    DECFSZ 31H,1
         GOTO LOOP5
         DECFSZ 30H,1
         GOTO LOOP4 

;-----------------------------
         BTFSC PORTA,0
         GOTO BACK       ;遙控接收無效。
LOOP0    BTFSS PORTA,0        ;遙控接收,等待高電平出現(xiàn),約9-5ms
         GOTO LOOP0

;------------------------------以下是接收代碼的步子
STEP      MOVLW D''32''         ;設(shè)置32位接收碼的計(jì)數(shù)器.
          MOVWF BIT32
STEP1     BTFSC PORTA,0       ;等待4.5ms
          GOTO STEP1
STEP2     BTFSS PORTA,0
          GOTO STEP2       ;測(cè)一個(gè)脈沖,

          MOVLW D''180''         ;延時(shí)0.9ms,測(cè)試高電平的脈寬。
          MOVWF 29H
          BCF STATUS,C
WAIT      NOP
          NOP
          DECFSZ 29H,1
          GOTO WAIT 
          BTFSS PORTA,0         ;PA0 TO C
          GOTO C0
          GOTO C1
C0        BCF STATUS,C
          GOTO STEP3
C1        BSF STATUS,C

STEP3     MOVLW D''4''
          MOVWF 2AH
          MOVLW 28H        ;28H是DAT8F的地址
          MOVWF FSR        ;利用FSR進(jìn)行間接尋址。
STEP4     RLF INDF,1
          DECF FSR,1
          DECFSZ 2AH,1
          GOTO STEP4
          DECFSZ BIT32,1
          GOTO STEP1
          MOVF ADD8L,0
          XORLW 00H
          BTFSS STATUS,Z
          GOTO BACK        ;低8位地址碼不對(duì),返回
          MOVF ADD8H,0
          XORLW 0FFH
          BTFSS STATUS,Z
          GOTO BACK
     MOVF DAT8,0       ;8位數(shù)據(jù)碼不對(duì),返回
  XORLW 00H
    BTFSS STATUS,Z
    GOTO BACK
     MOVF DAT8F,0      ;8位數(shù)據(jù)反碼不對(duì),返回
     XORLW 0FFH
      BTFSS STATUS,Z
      GOTO BACK 
  GOTO REM_OK       ;代碼接收正確
BACK      BSF 20H,0
REM_OK    RETURN


 
 
回復(fù)  先清32位數(shù)據(jù)再接收.
然后每接收完8位后,RAM要清0

如;**************RAM移位***************************
j1       incf     jsp1     ;8位計(jì)數(shù)寄存器
         incf     jsp2      ;32位數(shù),計(jì)存器.
         btfss    jsp1,3   ;是否有8位
         goto     js
         clrf     jsp1
         MOVf     sj,0     ;移8位數(shù)到W
         MOVwf       **    ;W到DATA
         incf     f       ;RAM地址加1
         clrf     sj       ;注意這里!!!!!!!!!!!!!!!
;*****************************
         btfss    jsp2,5     ;檢測(cè)是否接收完32位.
         goto     js         ;否,再檢測(cè).
這是6122和6121  IC的接收程序.
發(fā)表于:2003-03-04 17:34:51    

 
小寶:很高興看到你的提示,不過我的程序不是按照每8位接收后經(jīng)過RAM放入寄存器中,而是每位都經(jīng)過4次循環(huán)移位后直接放入存放數(shù)據(jù)的寄存器中(參見接收程序中的STEP4),所以不可能按昭你所說的那樣清0。

          可能是接收程序與你所說的流程不同。請(qǐng)問你能把你完整的接收程序發(fā)給我嗎?萬分感激!我的EMAIL是tanga08@sina.com


你的程序單獨(dú)看是沒有問題的。我想關(guān)鍵在于發(fā)射編碼究竟如何?你所謂“第一次可以,以后就不行了”,是不是每次復(fù)位后的第一次發(fā)射和接受是正常的?如果是這樣的,說明還是連發(fā)的處理不是很合適。發(fā)生連發(fā)時(shí),應(yīng)該將25H-28H清空。否則第二次發(fā)射時(shí),25H-28H已經(jīng)有了部分不完整的數(shù)據(jù),造成移位過程中的錯(cuò)誤數(shù)據(jù),接受失敗。
我的意見不一定正確,僅供參考。



NEC遙控接收問題 
NEC遙控接收問題出錯(cuò)在位接收上。
我看程序有點(diǎn)問題,主要是在接收位上,應(yīng)該是每接受8位后才把FSR-1,在回到接受程序上。如此進(jìn)行4次可以接受32位的數(shù)據(jù)。
發(fā)表于:2003-03-04 20:46:38    

并不是位接收問題  
我那程序的位接收問題不是先接收8位再保存的,那個(gè)4次循環(huán)指的是每接收一位后即改變STATUS標(biāo)志位C,同時(shí)4個(gè)接收寄存器依次帶C位移位,等到接收32位后(即第1位移位32次后恰好保存到了第一個(gè)接收寄存器的第7位,第2位移到了第6位)你可以自己演示一下,這樣32位正好保存到了4個(gè)寄存器中。
可以參見我那段程序的STEP3,STEP4。
很感謝有這么多熱心的朋友關(guān)心這個(gè)問題!

=========================
紅外線遙控編碼有幾種類型  

類型不知道,但格式有上千種 
 
我要做個(gè)通用型的紅外接收器, 就是不管遙控器發(fā)送什么碼,反正照收不誤, 然后按原樣把它發(fā)送出去, 我想用PIC做,你看要用哪種型號(hào)的控制器做較好!
發(fā)表于:2003-08-26 17:26:08    

  既然是轉(zhuǎn)發(fā)你管他格式干什么? 
你又不解碼,只要檢測(cè)聯(lián)接紅外管的PIC的I/O口的電壓變化就行了,再在另一個(gè)腳把他發(fā)送出去。送你一個(gè)檢測(cè)紅外的小程序。只不過要自己做一點(diǎn)電路。點(diǎn)擊瀏覽該文件 

 
我用他做過東西,不是十分精確,但是如果是誤碼是可以看出來的,有時(shí)連續(xù)測(cè)量的話他會(huì)誤操作,所以我一般只看前面的十來次,要精確還是用示波器看好,不知到有人在網(wǎng)上推銷的叫電腦示波器的東西什么樣好不好使? 



最后一位數(shù)據(jù)位的寬度如何檢測(cè)!! 
以紅外接收器為準(zhǔn),如果沒有遙控信號(hào)的情況下,接收器的輸出端是不是高電平,如果是,最后一位碼,0.56ms低電平過后,接著是出現(xiàn)高電平對(duì)吧,那高電平的寬度如何確定就不好辦了
紅外接收目前用的比較多的有三種方法.

1,查詢法,既軟件不停地查詢是否為低(遙控信號(hào))然后通過精確延時(shí)讀頭碼.和
數(shù)據(jù)0或1碼.
2,讀到有信號(hào)輸入時(shí)開打開定時(shí)計(jì)數(shù)器,然后通過讀定時(shí)器的中斷次數(shù),來判定頭碼和0,1的.
3 RB0或RB4-RB7加定時(shí)器(或軟件延時(shí))利用輸入中斷的好處是可做實(shí)時(shí)控制.

如下:
;***發(fā)射為6221,把接收到的碼值送到ICD的PORTC口顯示******
;**************** ***************
         org    0000h
         nop
         goto   start
         org    0004h
         goto   serv
;**************************************************
start
         bsf     status,rp0      ;體1
         MOVlw   0000h
         MOVwf   trisc          ;C口輸出
         MOVlw   0ffh           ;B口RB0輸入
         MOVwf   trisb
         MOVlw   B''00000100''     ;1:64
         MOVwf   option_reg      ;TMR0定時(shí)器
         bcf     status,rp0      ;體0
         clrf    intcon            ;10010000
         bsf     intcon,7          ;開放INT下降沿中斷
         bsf     intcon,4
         bcf     intcon,1
         clrf  portc
loop    
         sleep
         nop
         goto  loop
;*************現(xiàn)場(chǎng)保護(hù)********************************
serv     
         MOVwf   w_temp
         swapf   status,0      
         clrf    status        
         MOVwf   status_temp   
         MOVf    pclath,0
         MOVwf   pclath_temp
         clrf    pclath
   
;***************遙控處理.******************************

         bcf  intcon,1
         btfsc    portb,0        ;檢測(cè)RB0是否為0.
         goto     zdhh           ;RB0不為0,誤中斷.反回
         call     delay8         ;調(diào)用8MS延時(shí).頭碼檢測(cè).
         btfsc    portb,0        ;檢測(cè)頭碼
         goto     zdhh           ;不是中斷反回
         call     delay5          ;延時(shí)5MS后進(jìn)行數(shù)據(jù)檢測(cè).
         btfss    portb,0         ;檢測(cè)RB0是否為高電平.
         goto     zdhh            ;不是繼續(xù)檢測(cè).
;*********************************************
       
         clrf     data1          ;20H
         clrf     data2          ;21H
         clrf     data3          ;22H
         clrf     data4          ;24H
         clrf     jsp2           ;32位計(jì)數(shù)器
         clrf     sj             ;接收的數(shù)據(jù)寄存器
         clrf     jsp1           ;8位計(jì)數(shù)器
         MOVlw    0x20           ;20H寄存器送W
         MOVwf    fsr            ;由W送20H到FSR
jc       btfsc    portb,0        ;檢測(cè)RB0是否為低電平.
         goto     jc             ;不是繼續(xù)檢測(cè).
;**************0和1數(shù)據(jù)檢測(cè)****************************      
js       call     delay1         ;延時(shí)1.3MS
         btfsc    portb,0        ;檢測(cè)頭碼過后是0還是1,
         goto     s1             ;檢測(cè)的數(shù)據(jù)不"1"
;*************0數(shù)據(jù)處理*****************************
         bcf      sj,c            ;數(shù)據(jù)是"0"
         rrf      sj,1            ;0數(shù)據(jù)右移到SJ寄存器
         goto     j1
;**************1數(shù)據(jù)處理.*************************
s1       bsf      sj,c
         rrf      sj,1
ddp      btfsc    portb,0
         goto     ddp
;**************RAM移位***************************
j1       incf     jsp1     ;8位計(jì)數(shù)寄存器
         incf     jsp2      ;32位數(shù),計(jì)存器.
         btfss    jsp1,3   ;是否有8位
         goto     js
         clrf     jsp1
         MOVf     sj,0     ;移8位數(shù)到W
         MOVwf    indf     ;W到DATA
         incf     fsr      ;RAM地址加1
         clrf     sj
;*****************************
         btfss    jsp2,5     ;檢測(cè)是否接收完32位.
         goto     js         ;否,再檢測(cè).
         MOVlw    B''10001111'' ;送IC高8位碼
         xorwf    data1,0    ;相減(Z:1=結(jié)果為0;0=結(jié)果不為0)
         btfss    status,2    ;結(jié)果為0則下一步.
         goto   zdhh        ;相減結(jié)果不為0中斷返回
          MOVlw    B''101010101''  ;低8位IC碼檢測(cè)
          xorwf    data2,0
         btfss    status,2
          goto    zdhh
         ;comf     data4,0   ;數(shù)據(jù)反碼檢測(cè).暫不用.
         ;subwf    data3,0
         ;btfss    status,2
         ;goto      zdhh
         MOVf     data3,0    ;送數(shù)碼到C口
         MOVwf    portc
          goto     zdhh           ;接收完32位則中斷返回
;****************zdhh中斷返回程序*********************
zdhh   
         MOVf     pclath_temp,0
         MOVwf    pclath
         swapf    status_temp,0  ;交換STATUS與W內(nèi)容,將體選還原.
         MOVwf    status         ;將W內(nèi)容送STATUS寄存器
         swapf    w_temp,1       ;交換w_temp
         swapf    w_temp,0       ;交換w_temp與w內(nèi)容,將w_temp內(nèi)?       
         bcf      intcon,1
         retfie                  ;中斷返回,

;****************8ms*********************************
delay8   bcf     intcon,5
         bcf     intcon,2
         MOVlw   D''15''
         MOVwf   tmr0
loop1    btfss   intcon,2
         goto    loop1
           return
;****************5ms*********************************
delay5   bcf    intcon,5
         bcf    intcon,2
         MOVlw  D''120''
         MOVwf  tmr0
loop2    btfss  intcon,2
         goto    loop2
           return
;****************1.3ms*******************************
delay1   bcf    intcon,5
         bcf    intcon,2
         MOVlw  D''240''
         MOVwf  tmr0
loop3    btfss  intcon,2
         goto    loop3
         return
;*************
          end



  錯(cuò)碼的可能有兩種
一個(gè)是字頭對(duì)不好
一個(gè)是數(shù)據(jù)傳輸有錯(cuò)誤 特別是時(shí)序錯(cuò)誤
后面的可以用軟件校驗(yàn)
字頭不好確認(rèn) 最好可以在軟件規(guī)定上連續(xù)多發(fā)幾個(gè) 然后用移位方法判斷有多次連續(xù)相同子頭出現(xiàn) 對(duì)齊字頭 比如連續(xù)出現(xiàn)20個(gè)1 0轉(zhuǎn)換后 表示準(zhǔn)備發(fā)送數(shù)據(jù) 然后等待1 0 傳輸結(jié)束后 跟著有一個(gè)字頭 如11110000 這樣 后面就可以接數(shù)據(jù)了
 
A 我在外面買了一個(gè)萬能遙控器,他就是用pic16c57c作的,那就說明它是沒有中斷的,我真搞不懂他是怎么做的,它是沒有解碼芯片的,請(qǐng)問有誰知道,我現(xiàn)在也在做這個(gè),有誰能提示一下,謝謝。

B 這很容易 
上次我用兩片PIC16C57C作了一個(gè)發(fā)射與一個(gè)接收的小模塊。有效控制,沒能出現(xiàn)亂碼,但有一缺點(diǎn)就是會(huì)受到其它紅外線產(chǎn)品的干擾! 

C 紅外接受 
用外中斷,加定時(shí),即可檢測(cè)出編碼,非常準(zhǔn)確。我用的是PIC16F72芯片。 


D 我使用紅外線接受管加兩級(jí)放大,看紅外線的輸出波形,用長虹的遙控器當(dāng)信號(hào)源,在示波器上要打到10ms才能看到完整的信號(hào)波形,像個(gè)穩(wěn)壓后的波形一樣的東西,我看了有關(guān)方面的書說,紅外線信號(hào)時(shí)調(diào)制在38khz的信號(hào)上的,那我將示波器打到50ns上為什么看不到波形,這樣的話程序不是沒有辦法編了,望哪位高人幫幫我,謝謝 


E 可以用CCP中的input capture(輸入捕捉)功能,很好用的,仔細(xì)閱讀一下input capture有關(guān)內(nèi)容,很容易的
在CCP的引腳上若有事件發(fā)生(可設(shè)置為上升沿,下降沿或其他方式),TMR1的內(nèi)容背記錄,這樣很準(zhǔn)確的,即使中斷響應(yīng)較慢也沒問題的,這樣的功能來做紅外遙控最恰當(dāng)不過。

F 回復(fù)紅外定時(shí)接收原理 
用RB0做中斷(FIRST:RISING TRIG,SECOND:FALLING TRIG),同時(shí)啟動(dòng)TIMER2定時(shí)100US)計(jì)數(shù).當(dāng)下一個(gè)中斷來臨時(shí),由TIMER2有88個(gè)數(shù),9MS就檢測(cè)出來。其余時(shí)間,
類推。注意,RBO的中斷沿,要根據(jù)時(shí)序,來改變。據(jù)此原理,很容易編出代碼。
還有一個(gè)地方值得注意 ; 紅外信號(hào)的衰減很厲害的,所以一定要考慮它的接受范圍的選擇 
其實(shí)用那種方法都可以,在接收數(shù)據(jù)時(shí)時(shí)間方面留夠余量,這樣對(duì)正確接收數(shù)據(jù)有好處 
關(guān)于紅外線接收的一點(diǎn)思路 
我現(xiàn)在在做電視機(jī)紅外線接受,發(fā)射器,看了一些書,書上說信號(hào)被調(diào)制在38khz的調(diào)制信號(hào)上,但我通過一顆紅外接收管加兩級(jí)放大后看紅外線波形,示波器要打到10ms檔上才能看到完整波形,照書上說的話應(yīng)該打到50us檔上就能看到波形了,而且這個(gè)波形像梯形波,請(qǐng)問這是怎么一回是,我用的紅外線源就是長虹電視機(jī)的遙控器,這樣的話我的接收程序怎么寫呢? 

你不用管他怎么調(diào)制的,你只需要用一個(gè)接收頭就可以了,出來的就是方波,根據(jù)兩個(gè)下降沿來判斷信號(hào)就行了(空閑狀態(tài)為高電平),我當(dāng)初用示波器觀察了一天才了解是怎么回事 

  那如果有人一直按著遙控器,單片機(jī)不是會(huì)當(dāng)一個(gè)信號(hào)并記錄下來,而且我用的是pic16c57的片子,沒有中斷的,兩個(gè)下降沿的時(shí)常如何判斷,而且如何確定一個(gè)信號(hào)已經(jīng)結(jié)束了呢,

如果你沒做過紅外遙控接受,建議你先用帶中斷的片子來搞,用57是有一定難度的 
 

看了你寫的紅外線接收的程序,有點(diǎn)問題 
 
你寫的接收程序第二條就用goto轉(zhuǎn)跳到rf1,而在rf1上用了retlw 0這個(gè)指令,但這個(gè)指令不是要使用call指令返回時(shí)才用的嗎,如果goto指令用了retlw 0,那返回到哪里去,
這個(gè)和遙控器使用的芯片有關(guān),你可以了解一下有關(guān)這個(gè)遙控器按鍵的定義,也可用示波器觀察。最好你先寫一段程序來讀碼,觀察一下按鍵定義和規(guī)律。 


如果要求不高的話可以用紅外的編碼、解碼芯片 
如果想要誤碼率小的話最好自己編發(fā)射和接收(再加上解碼)的程序

1.從紅外線發(fā)射出來的是什么?接收倒的又是什么?一些高低電平嗎?
2.我們?cè)趺礃觼韺?duì)這些進(jìn)行解碼?所謂的碼是什么代碼?是0.1碼嗎?還是什么?
問題好多,一切在于沒有經(jīng)驗(yàn),謝謝大家?guī)兔饣蟆?BR>

你學(xué)過高頻嗎?學(xué)過會(huì)容易理解一點(diǎn) 
紅外傳輸一般分為兩種:
1。有載波:就是把基帶信號(hào)(就是“0”,“1”)調(diào)制到38k的載波上去,由紅外發(fā)光管發(fā)射(同發(fā)光二極管)出去;
然后在接收端用紅外光敏二極管(或三極管)或者紅外一體化接收頭接收。
用光敏二極管或三極管接收需要用程序或ic(如:cx20106等)解調(diào)。然后再對(duì)基帶信號(hào)進(jìn)行處理。這種方法主要用于載波需要有多種頻率的場(chǎng)合。   
用一體化接收頭的靈敏度比較高,體積相對(duì)比較小,內(nèi)部集成了38k解調(diào)、低通濾波和其他一些抗干擾電路。這種接收頭使用比較簡(jiǎn)單,不過據(jù)我使用過的情況來看,靈敏度越高抗干擾性能就越差,常常伴有脈沖干擾,用程序還是可以解決的。
基帶信號(hào)最好使用編碼、調(diào)整占空比等以加強(qiáng)抗干擾性能。

2。直接用0,1信號(hào)發(fā)送:在距離比較近(cm級(jí)別),環(huán)境干擾比較小的情況下使用。   
我的想法是直接將遙控器的信號(hào)經(jīng)過兩級(jí)放大,是三極管放大后輸出,但我現(xiàn)在就是不知道,38khz的信號(hào)如何記入單片機(jī),我想不用解碼芯片 


好呀,發(fā)射一個(gè)9013就夠了,假如買不到距離不夠而且買不到大功率發(fā)射管的話可以把兩個(gè)發(fā)射管串聯(lián)起來。

為什么要把38k信號(hào)輸入單片機(jī)呢?你用紅外光敏三極管接收?成本倒是低了好多。工藝要求就比較高了。
  • 上一篇: 基于89C51的T6963液晶驅(qū)動(dòng)程序(通過驗(yàn)證的)
  • 下一篇: 基于89C51帶有存儲(chǔ)器功能的數(shù)字溫度計(jì)-DS1624技術(shù)應(yīng)用
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1