




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、.關(guān)于紅外遙控的若干問答程序匠人 發(fā)表于 2005-12-7 20:10:00 閱讀全文(6724) | 回復(fù)(0) | 引用通告(0) | 編輯 0推薦如何用PIC做紅外線遙控接收? = 先用20106之類的片子解調(diào)后,你用示波器掛在20106的輸出端就可以查看遙控波形。 =NEC遙控接收第一次正常,以后就不行了(附遙控子程序)請指正。 不才是PIC領(lǐng)域的新手,最近寫了一個(gè)關(guān)于NEC遙控接收解碼的測試程序,下面是此程序的遙控解碼部分但是它只能第一次正確判斷出接收碼,以后就不行了請高手指點(diǎn)我知道遙控碼的連發(fā)情況,但我已經(jīng)設(shè)置了32位接收碼的計(jì)數(shù)器,應(yīng)該不會(huì)有問題的我判斷0(1.125ms)和1
2、(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ī).;= GOOD =REMOTE_RECEIVER CLRF 20H ;20H的第0位遙控接收正確與否標(biāo)志位 BTFSC PORTA,0 ;RA0=0接收到信號(hào) GOTO BACK ;判斷9MS低電
3、平和4.5MS高電平。;-5ms delay- MOVLW 06H ;防止抖動(dòng),延時(shí)5ms MOVWF 30HLOOP4 MOVLW 0FFH MOVWF 31HLOOP5 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;-測一個(gè)脈沖接收-STEP MOVLW D32 ;設(shè)置32位接收碼的計(jì)數(shù)器. MOVWF BIT32STEP1 BTFSC PORTA,0 ;等待4.5ms
4、 GOTO STEP1STEP2 BTFSS PORTA,0 GOTO STEP2 ;- MOVLW D180 ;延時(shí)0.9ms,測試高電平的脈寬。 MOVWF 29H BCF STATUS,CWAIT NOP NOP DECFSZ 29H,1 GOTO WAIT ;- BTFSS PORTA,0 ;PA0 TO C GOTO C0 GOTO C1C0 BCF STATUS,C GOTO STEP3C1 BSF STATUS,CSTEP3 MOVLW D4 MOVWF 2AH MOVLW 28H ;28H是DAT8F的地址 MOVWF FSR ;利用FSR進(jìn)行間接尋址。STEP4 RLF IN
5、DF,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位地址碼不對,返回 MOVF ADD8H,0 XORLW 0FFH BTFSS STATUS,Z GOTO BACK MOVF DAT8,0 ;8位數(shù)據(jù)碼不對,返回 XORLW 00H BTFSS STATUS,Z GOTO BACK MOVF DAT8F,0 ;8位數(shù)據(jù)反碼不對,返回 XORLW 0FFH BTFSS STATUS,Z GOTO BACK GOT
6、O REM_OK ;代碼接收正確BACK BSF 20H,0REM_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 ;檢測是否接收完32位. goto js ;否,再檢測.這是6122和6121 IC的接收程序. 發(fā)表于:200
7、3-03-04 17:34:51 小寶:很高興看到你的提示,不過我的程序不是按照每8位接收后經(jīng)過RAM放入寄存器中,而是每位都經(jīng)過4次循環(huán)移位后直接放入存放數(shù)據(jù)的寄存器中(參見接收程序中的STEP4),所以不可能按昭你所說的那樣清0。 你的程序單獨(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遙控接收問
8、題 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è)寄存器中??梢詤⒁娢夷嵌纬绦虻腟TEP3,STEP4。很感謝有這么多熱心的朋友關(guān)心這個(gè)問題!
9、=紅外線遙控編碼有幾種類型 類型不知道,但格式有上千種 我要做個(gè)通用型的紅外接收器, 就是不管遙控器發(fā)送什么碼,反正照收不誤, 然后按原樣把它發(fā)送出去, 我想用PIC做,你看要用哪種型號(hào)的控制器做較好! 既然是轉(zhuǎn)發(fā)你管他格式干什么? 你又不解碼,只要檢測聯(lián)接紅外管的PIC的I/O口的電壓變化就行了,再在另一個(gè)腳把他發(fā)送出去。送你一個(gè)檢測紅外的小程序。只不過要自己做一點(diǎn)電路。點(diǎn)擊瀏覽該文件 最后一位數(shù)據(jù)位的寬度如何檢測! 以紅外接收器為準(zhǔn),如果沒有遙控信號(hào)的情況下,接收器的輸出端是不是高電平,如果是,最后一位碼,0.56ms低電平過后,接著是出現(xiàn)高電平對吧,那高電平的寬度如何確定就不好辦了!請教
10、老兄!紅外接收目前用的比較多的有三種方法.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 0ff
11、h ;B口RB0輸入 movwf trisb movlw B00000100 ;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 portcloop sleep nop goto loop;*現(xiàn)場保護(hù)*serv movwf w_temp swapf status,0 clrf status movwf status_temp movf pclath,0 movwf pclath_temp c
12、lrf pclath ;*遙控處理.* bcf intcon,1 btfsc portb,0 ;檢測RB0是否為0. goto zdhh ;RB0不為0,誤中斷.反回 call delay8 ;調(diào)用8MS延時(shí).頭碼檢測. btfsc portb,0 ;檢測頭碼 goto zdhh ;不是中斷反回 call delay5 ;延時(shí)5MS后進(jìn)行數(shù)據(jù)檢測. btfss portb,0 ;檢測RB0是否為高電平. goto zdhh ;不是繼續(xù)檢測.;* clrf data1 ;20H clrf data2 ;21H clrf data3 ;22H clrf data4 ;24H clrf jsp2 ;
13、32位計(jì)數(shù)器 clrf sj ;接收的數(shù)據(jù)寄存器 clrf jsp1 ;8位計(jì)數(shù)器 movlw 0x20 ;20H寄存器送W movwf fsr ;由W送20H到FSRjc btfsc portb,0 ;檢測RB0是否為低電平. goto jc ;不是繼續(xù)檢測.;*0和1數(shù)據(jù)檢測* js call delay1 ;延時(shí)1.3MS btfsc portb,0 ;檢測頭碼過后是0還是1, goto s1 ;檢測的數(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,1ddp btfs
14、c 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 ;檢測是否接收完32位. goto js ;否,再檢測. movlw B10001111 ;送IC高8位碼 xorwf data1,0 ;相減(Z:1=結(jié)果為0;0=結(jié)果不為0) btfss status,2 ;結(jié)果為0則下一步.
15、 goto zdhh ;相減結(jié)果不為0中斷返回 movlw B101010101 ;低8位IC碼檢測 xorwf data2,0 btfss status,2 goto zdhh ;comf data4,0 ;數(shù)據(jù)反碼檢測.暫不用. ;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)容,將體
16、選還原. 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 D15 movwf tmr0loop1 btfss intcon,2 goto loop1 return;*5ms*delay5 bcf intcon,5 bcf intcon,2 movlw D120 movwf tmr0loop2 btfss intcon,
17、2 goto loop2 return;*1.3ms*delay1 bcf intcon,5 bcf intcon,2 movlw D240 movwf tmr0loop3 btfss intcon,2 goto loop3 return;* end錯(cuò)碼的可能有兩種一個(gè)是字頭對不好一個(gè)是數(shù)據(jù)傳輸有錯(cuò)誤 特別是時(shí)序錯(cuò)誤后面的可以用軟件校驗(yàn)字頭不好確認(rèn) 最好可以在軟件規(guī)定上連續(xù)多發(fā)幾個(gè) 然后用移位方法判斷有多次連續(xù)相同子頭出現(xiàn) 對齊字頭 比如連續(xù)出現(xiàn)20個(gè)1 0轉(zhuǎn)換后 表示準(zhǔn)備發(fā)送數(shù)據(jù) 然后等待1 0 傳輸結(jié)束后 跟著有一個(gè)字頭 如11110000 這樣 后面就可以接數(shù)據(jù)了 A 我在外面買了一個(gè)萬
18、能遙控器,他就是用pic16c57c作的,那就說明它是沒有中斷的,我真搞不懂他是怎么做的,它是沒有解碼芯片的,請問有誰知道,我現(xiàn)在也在做這個(gè),有誰能提示一下,謝謝。B 這很容易 上次我用兩片PIC16C57C作了一個(gè)發(fā)射與一個(gè)接收的小模塊。有效控制,沒能出現(xiàn)亂碼,但有一缺點(diǎn)就是會(huì)受到其它紅外線產(chǎn)品的干擾! C 紅外接受 用外中斷,加定時(shí),即可檢測出編碼,非常準(zhǔn)確。我用的是PIC16F72芯片。 D 我使用紅外線接受管加兩級(jí)放大,看紅外線的輸出波形,用長虹的遙控器當(dāng)信號(hào)源,在示波器上要打到10ms才能看到完整的信號(hào)波形,像個(gè)穩(wěn)壓后的波形一樣的 東西,我看了有關(guān)方面的書說,紅外線信號(hào)時(shí)調(diào)制在38k
19、hz的信號(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í),由TIM
20、ER2有88個(gè)數(shù),9MS就檢測出來。其余時(shí)間,類推。注意,RBO的中斷沿,要根據(jù)時(shí)序,來改變。據(jù)此原理,很容易編出代碼。還有一個(gè)地方值得注意 ; 紅外信號(hào)的衰減很厲害的,所以一定要考慮它的接受范圍的選擇 其實(shí)用那種方法都可以,在接收數(shù)據(jù)時(shí)時(shí)間方面留夠余量,這樣對正確接收數(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è)波 形像梯形波,請問這是怎么一回是,我用的紅外線源就是長虹電視機(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是有一定難度的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人民村出租田地合同范本
- 農(nóng)村院落租房合同范本
- 個(gè)人購買地皮合同范本
- 鄉(xiāng)鎮(zhèn)門面房購房合同范本
- 公司租地協(xié)議合同范本
- 企業(yè)招商加盟合同范本
- 出租水泥模具合同范本
- 北京市公寓出租合同范例
- 個(gè)人房屋托管合同范本
- 農(nóng)村農(nóng)民工勞動(dòng)合同范本
- 四川省自貢市、遂寧市、廣安市等2024-2025學(xué)年高一上學(xué)期期末考試語文試題 含解析
- 22G614-1 砌體填充墻結(jié)構(gòu)構(gòu)造
- 2024年全國教育大會(huì)精神全文課件
- 人教版八年級(jí)下冊歷史教案全冊
- GB/T 44464-2024汽車數(shù)據(jù)通用要求
- 2024年新改版青島版(六三制)四年級(jí)下冊科學(xué)全冊知識(shí)點(diǎn)
- 人教版八年級(jí)信息技術(shù)下冊全冊教案
- GB/T 25085.3-2020道路車輛汽車電纜第3部分:交流30 V或直流60 V單芯銅導(dǎo)體電纜的尺寸和要求
- 幼兒園教育活動(dòng)設(shè)計(jì)與實(shí)踐 張琳主編 PPT
- 小學(xué)交通安全主題班會(huì):《一盔一帶 安全出行》
- 《公共政策分析》課件.ppt
評(píng)論
0/150
提交評(píng)論