《新編單片機原理與應(yīng)用實驗》課件第15章_第1頁
《新編單片機原理與應(yīng)用實驗》課件第15章_第2頁
《新編單片機原理與應(yīng)用實驗》課件第15章_第3頁
《新編單片機原理與應(yīng)用實驗》課件第15章_第4頁
《新編單片機原理與應(yīng)用實驗》課件第15章_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

實驗15無線解碼接收一、實驗?zāi)康亩?、實驗設(shè)備與器材三、實驗原理與電路四、實驗內(nèi)容、過程及要求

一、實驗?zāi)康?/p>

(1)理解無線收/發(fā)系統(tǒng)的組成、工作原理。

(2)理解PT2262或與之兼容的固定編碼芯片信息幀格式;理解軟件解碼原理、實現(xiàn)方法以及軟件解碼程序的編寫要領(lǐng)。

(3)初步掌握自適應(yīng)軟件解碼程序的設(shè)計規(guī)則。

(4)理解MCS-51芯片內(nèi)PCA模塊的功能和使用方法。

二、實驗設(shè)備與器材仿真器及其附件、圖1所示的實驗電路板各一套(需帶ASK無線接收模塊),PT2262編碼遙控器或門磁一只,導(dǎo)線數(shù)條。

三、實驗原理與電路

1.無線收/發(fā)系統(tǒng)典型無線收/發(fā)系統(tǒng)如圖15-1所示,由ASM無線接收/解調(diào)模塊、一個或多個PT2262編碼遙控器(或無線探頭)組成。

圖15-1典型無線收/發(fā)系統(tǒng)

2.PT2262編碼芯片信息幀格式

PT2262或與之兼容的固定編碼芯片性能穩(wěn)定,價格低廉,是無線探頭、廉價遙控器的首選編碼芯片。這類芯片編碼長度為24位,一信息幀由同步頭、地址碼、數(shù)據(jù)碼三部分組成,如圖15-2所示。同步頭高電平持續(xù)時間為4α(α是編碼芯片振蕩周期,在25~120μs之間,由振蕩電阻決定),間歇期為124α;編碼位采用PWM調(diào)制,脈寬比為1∶3,“0”碼高電平持續(xù)時間為4α,低電平持續(xù)時間為12α;而“1”碼高電平持續(xù)時間為12α,低電平持續(xù)時間為4α。一信息幀總長為,即512α。發(fā)送時,先輸出編碼的最低位

圖15-2PT2262編碼芯片信息幀格式

3.自適應(yīng)軟件解碼方法為降低成本、提高靈活性,在含有MCU的無線接收系統(tǒng)中,一般不用硬件解碼芯片PT2272實現(xiàn)PT2262編碼信息的解碼,而采用軟件解碼方式。本實驗借助MCS-51RX系列MCU芯片內(nèi)置的可編程計數(shù)器陣列(PCA)上下沿捕獲功能測量脈沖信號高、低電平持續(xù)時間;用脈沖間隔時間比作為脈沖寬度測量依據(jù)可獲得能適應(yīng)不同脈沖頭寬度的自適應(yīng)軟件解碼方式。

根據(jù)編碼芯片信息幀的特點,當α取25~120μs時,信息幀內(nèi)高電平最長時間為12α(300μs~1.44ms之間);低電平時間最長為同步頭低電平持續(xù)時間124α(3.1~14.88ms)。因此,當系統(tǒng)時鐘頻率為11.092MHz時,在6時鐘/機器周期模式下,PCA計數(shù)器溢出時間為216×6/11.0592,即35.55ms,也即信息幀內(nèi)相鄰兩次捕獲時間間隔小于定時器溢出時間。

1)資源及狀態(tài)分配為簡化軟件解碼判別過程,?縮短PCA中斷執(zhí)行時間,使用字節(jié)變量STU記錄解碼狀態(tài),各位定義如下:

b2~b0記錄信息幀狀態(tài),如圖15-3所示。000為起始狀態(tài),下降沿時刻,如果相鄰兩次捕獲間隔不在100μs~1.44ms±20%范圍內(nèi),則返回000態(tài);上升沿后,如果時間間隔不在允許范圍內(nèi),則置為001態(tài);而101、110分別表示編碼位高、低電平狀態(tài)。

圖15-3圖15-4自適應(yīng)解碼軟件過程

圖15-4自適應(yīng)解碼軟件過程

b3位作信息幀連續(xù)有效標志。

b4位是解碼成功標志。以PT2262作編碼芯片的編碼器會連續(xù)發(fā)送4幀以上信息,為提高可靠性,采用雙循環(huán)校驗,即只有接收到兩相鄰的信息幀編碼相同時,b4位置1。因此b4~b3描述的解碼狀態(tài)含義為:00表示尚未接收到完整的信息幀;01表示已收到了一完整的信息幀;11表示已連續(xù)接收了兩個相同的信息幀,解碼有效標志置1;10表示接收緩沖區(qū)數(shù)據(jù)有效,但未處理。用字變量TIME記錄相鄰兩次捕獲時間間隔,字變量TIMEB記錄基本時間(4α)。

2)自適應(yīng)軟件解碼過程自適應(yīng)軟件解碼過程如圖15-4所示。為保證能夠接收基本時間只有100μs左右的高速編碼信息,主控程序中除了將PCA中斷優(yōu)先級置為最高外,還必須保證PCA中斷服務(wù)程序執(zhí)行時間盡可能短,即最好用匯編語言指令編寫PCA中斷服務(wù)程序。由于MCS-51指令系統(tǒng)沒有雙字節(jié)除法指令,解碼過程中涉及到的除法運算,可采用減法或多項式除法完成。

四、實驗內(nèi)容、過程及要求本實驗主要涉及實驗板上的U101、U103、U402等芯片。接通電源前,板上各跳線狀態(tài)如表15-1所示。

表15-1跳

設(shè)

與自適應(yīng)軟件解碼有關(guān)程序段如下:;定義軟件解碼變量WUSTU DATA2EH ;b2~b0作無線接收狀態(tài)標志

;000-開始;001-同步頭高電平;010-同步頭低電平; ;101-數(shù)據(jù)位高電平;110-數(shù)據(jù)位低電平LXJIEBITWUSTU.3 ;信息幀連續(xù)標志JIEMABITWUSTU.4 ;接收數(shù)據(jù)有效標志(可以利用數(shù)據(jù)有效標志作為;數(shù)據(jù)處理標志);數(shù)據(jù)有效,而信息幀連續(xù)標志無效時,即認為接收HDATABBIT01H;高電平時間,碼長標志(4a為0,12a為1)OVERT DATA2FH ;相鄰兩次捕獲之間定時器溢出次數(shù)BUFF0 DATA30H ;解碼接收緩沖區(qū)(30~3F)TIMEL DATA5AH ;相鄰兩次捕獲間隔時間低8位TIMEH DATA5BH ;相鄰兩次捕獲間隔時間高8位CNTB DATA5CH ;信息幀長度(單位為bit)TIMEBCL DATA7DH ;同步頭高電平時間(即4a)的低8位TIMEBCH DATA7EH ;同步頭高電平時間(即4a)的高8位

ORG0000HLJMPMAINORG0033HLJMPPCA ;PCA中斷服務(wù)程序入口地址(用于解碼接收)ORG0050HPROCMAIN ;主程序開始

MAIN: ;PCA模塊初始化

;模塊0工作在16位上下沿捕獲方式,作解碼定時器

MOVCMOD,#00000001B ;計數(shù)脈沖為內(nèi)部時鐘信號,允許CH、CL溢出中斷

MOVCH,#0 ;從0開始計數(shù)

MOVCL,#0 MOVCCON,#40H;啟動CH、CL計數(shù)

MOVCCAPM0,#00100001B ;模塊0工作在16位上沿捕獲方式,允許模塊0中斷

;開始時先用上沿捕獲,中斷后上下交替捕獲

SETBPPC ;PCA中斷優(yōu)先級置為高

SETBEC ;允許PCA中斷

SETBEA ;開中斷

NEXT1: JNBJIEMA,NEXT1 NOP ;虛擬等待解碼有效

SJMPNEXT1END;PCA中斷服務(wù)程序PROCPCAPCA: PUSHPSW PUSHACC PUSHB ORLPSW,#18H

;SETBRS1

;SETBRS0 ;使用工作寄存器區(qū)3 JBCCF,TNEXT1 ;不是定時器溢出引起

SJMPCANEXTTNEXT1: ;定時器T溢出引起中斷

INCOVERT MOVA,WUSTU JBACC.0,TNEXT2 ;低電平,檢查溢出次數(shù)

MOVA,OVERT CJNEA,#2,TNEXT21TNEXT21: JCTOEXIT;小于2,退出!

;溢出次數(shù)大于2,肯定是錯誤!

MOVOVERT,#2 ANLWUSTU,#0D0H;解碼狀態(tài)清零,清除連續(xù)有效標志

SJMPTOEXITTNEXT2: ;在高電平期間,發(fā)現(xiàn)溢出次數(shù)大于指定值

MOVA,OVERT CJNEA,#2,TNEXT22TNEXT22: JCTOEXIT ;小于2,退出

;大于2 MOVOVERT,#2 ANLWUSTU,#0F0H;清除連續(xù)有效標志,解碼狀態(tài)置為011(即等幅干擾狀態(tài)) ORLWUSTU,#03H ;置為011態(tài)TOEXIT: JMPRETURNCANEXT: ;捕獲中斷引起

MOVR3,CCAP0L MOVR4,CCAP0H ;取捕獲發(fā)生的時刻

CLRC MOVA,R3 SUBBA,TIMEL MOVTIMEL,A MOVA,R4 SUBBA,TIMEH MOVTIMEH,A ;計算并保存相鄰兩次捕獲時間間隔到TIMEH、TIMEL中

MOVA,CCAPM0 MOVC,ACC.5 ;上升沿觸發(fā)捕獲標志送C XRLCCAPM0,#30H ;與30異或,強迫CAPP、CAPN取反

ANLCCON,#0FEH ;清除CCF0中斷標志

MOVOVERT,#0 ;捕獲時清除溢出次數(shù)

;判別捕獲原因

JCHNEXT ;下沿觸發(fā)引起; CLRC MOVA,TIMEL SUBBA,#140

;PCA模塊計數(shù)脈沖為系統(tǒng)時鐘信號的6分頻(晶振頻率為

;11.0592MHz) MOVA,TIMEH ;140對應(yīng)的時間為(1/11.0592)×6×140,約76μs SUBBA,#0 JNCLNEXT0 ;高電平時間太短

ANLWUSTU,#0F0H ;重置為000態(tài),清除連續(xù)標志

JMPRETURN ;沒有必要記錄LNEXT0: LJMPLNEXT;上邊沿觸發(fā)HNEXT: MOVA,WUSTU

ANLA,#07H CJNEA,#0,HNEXT1 ;000態(tài),說明尚未開始

ORLWUSTU,#21H ;置為001態(tài)

JMPCAEND

;記錄捕獲時間后退出HNEXT1: CJNEA,#2,HNEXT2 ;原來處于010態(tài),計算同步頭時間,計算同步頭脈沖相對寬度; CLRC MOVA,TIMEL SUBBA,#51H MOVA,TIMEH ;假設(shè)a在25~120μs(允許存在25%的誤差)之間

SUBBA,#16H ;124a對應(yīng)計數(shù)器讀數(shù)為5713~34174,即1651H~857EH JNCHNEXT20 ;小于最小值,錯誤

JMPHERROR ;上升沿出錯處理HNEXT20: ;CLRC MOVA,TIMEL SUBBA,#7EH MOVA,TIMEH

SUBBA,#85H JCHNEXT201 ;大于124a的上限(即最大值),錯誤

JMPHERROR ;上升沿出錯處理HNEXT201: ;在同步頭間歇期時間最小值與最大值之間

LCALLCAL1 ;當被除數(shù)較大時,用多項式除法可有效縮短運算時間

CJNER6,#29,HNEXT21HNEXT21: JNCHNEXT22 ;小于29,同步頭高、低電平時間比太?。″e!

JMPHERROR ;上升沿出錯處理HNEXT22: CJNER6,#34,HNEXT23HNEXT23: JNCHNEXT24 ;在29~33之間,屬于長同步頭124a間歇期(中心值為31) MOVCNTB,#24 ;接收24位信息碼

ANLWUSTU,#78H ORLWUSTU,#01000101B ;進入101態(tài)(接收數(shù)據(jù)碼位) JMPCAENDHNEXT24: ;大于34,錯誤

JMPHERROR ;上升沿出錯處理HNEXT2: CJNEA,#6,HNEXT3 ;處于110態(tài),計算碼位低電平時間; CLRC MOVA,TIMEL SUBBA,#140 MOVA,TIMEHSUBBA,#0;假設(shè)a在25~120μs(允許存在25%的誤差)之間

JNCHNEXT30 ;4a對應(yīng)上下限的范圍是:140~1102即8CH~44EH;低電平時間小于(1/11.0592)×6×140,約76μs,處于非連續(xù)狀態(tài)

ANLWUSTU,#0F0H ORLWUSTU,#100001B ;置為001態(tài)(同步頭上升沿),清除連續(xù)標志

JMPCAENDHNEXT30:; CLRC

MOVA,TIMEL SUBBA,#0EBH MOVA,TIMEH SUBBA,#0CH ;12a對應(yīng)上下限為552~3307,即228H~CEBH JNCHNEXT3 ;處于4a~12a上下限之間,要進一步判別

MOVR7,#5 ;中心值為3 LCALLCALTIME ;調(diào)用雙字節(jié)除法運算子程序

CJNER6,#2,HNEXT31HNEXT31: JNCHNEXT32 ;在0~1之間,當4a處理

CLRACC.0 SJMPHNEXT341HNEXT32: CJNER6,#5,HNEXT33HNEXT33: JNCHNEXT34 ;在2~4之間,當12a處理

SETBACC.0HNEXT341: MOVC,HDATAB MOVACC.1,C ANLA,#03H CJNEA,#01H,HNEXT342 ;處于01態(tài),作“0”碼

CLRC JMPDANEXT1 ;記錄數(shù)據(jù)

HNEXT342: CJNEA,#02H,HNEXT34 ;處于10態(tài),作“1”碼

SETBC JMPDANEXT1 ;記錄數(shù)據(jù)HNEXT34: ;此外,一律屬于錯誤!HNEXT3: JMPHERROR ;上升沿出錯處理;下降沿引起

LNEXT: MOVA,WUSTU ANLA,#07H CJNEA,#01H,LNEXT1 ;原來處于001態(tài),計算同步頭高電平時間; CLRC MOVA,TIMEL SUBBA,#4EH MOVA,TIMEH SUBBA,#04H ;4a對應(yīng)上下限的范圍是:140~1102,即8CH~44EH JNCLERROR ;大于4a上限,錯!

;在4a上下限之間,記錄該時間!并作為隨后計算的各脈沖寬度比的依據(jù)

MOVTIMEBCL,TIMEL MOVTIMEBCH,TIMEH ANLWUSTU,#0F8H ORLWUSTU,#010B ;置為010態(tài)

JMPCAENDLNEXT1: CJNEA,#03H,LNEXT2;原來處于011態(tài)(高電平時間超出12a的上限),從錯誤狀態(tài)返回,置為000態(tài)LERROR: ANLWUSTU,#0F0H ;清除連續(xù)有效標志,置為000態(tài),等待同步頭上升沿

JMPRETURNLNEXT2: CJNEA,#05H,LERROR ;101態(tài),計算碼位高電平時間; CLRC MOVA,TIMEL SUBBA,#0EBH MOVA,TIMEH SUBBA,#0CH ;12a對應(yīng)的讀數(shù)為2544±30%,1780~3307,即6F4H~CEBH JNCLERROR MOVR7,#5 ;中心值為3LCALLCALTIME ;調(diào)用雙字節(jié)除法運算子程序

CJNER6,#2,LNEXT31LNEXT31: JNCLNEXT32 ;在0~1之間,當4處理!

CLRHDATAB ;短的標志

SJMPLRIGET ;正確LNEXT32: CJNER6,#5,LNEXT33LNEXT33: JNCLERROR ;在2~4之間,當12a處理

SETBHDATAB ;長的標志

LRIGET: ;正確

MOVA,CNTB CJNEA,#1,LNEXT34 ;如果是最后一位,則應(yīng)該考慮是否是最后一幀的最后一位

MOVC,HDATAB ;直接將HDATAB標志送Cy ANLWUSTU,#0F8H ;置為000態(tài)

SJMPDANEXT2 ;記錄數(shù)據(jù)LNEXT34: ANLWUSTU,#0F8H ORLWUSTU,#110B JMPCAENDDANEXT1: ANLWUSTU,#0F8H ;置為000態(tài)

ORLWUSTU,#101BDANEXT2: JNBJIEMA,DANEXT3 ;數(shù)據(jù)有效,不再接收

DJNZCNTB,CAEND SJMPRETURN ;繼續(xù)找脈沖頭DANEXT3: ;保存數(shù)據(jù)

MOVR0,#BUFF0 MOVR2,#3DALOOP1: MOVA,@R0 RRCA MOV@R0,A INCR0 DJNZR2,DALOOP1 DJNZCNTB,CAEND ;已經(jīng)收到了一幀信息

JBLXJIE,DANEXT6 ;連續(xù)解碼標志未有效,屬于第一次解碼有效,數(shù)據(jù)要搬移

DANEXT60: MOVR2,#3 MOVR0,#BUFF0;解碼接收緩沖區(qū)首地址送R0 MOVR1,#BUFF0+8;解碼接收緩沖區(qū)首地址加8送R1DALOOP2: MOVA,@R0 MOV@R1,A ;回寫

INCR0 INCR1 DJNZR2,DALOOP2 SETBLXJIE ;信息連續(xù)標志置1 SJMPRETURN ;等待同步頭上升沿

DANEXT6: ;比較相鄰兩次的解碼結(jié)果

MOVR2,#3 MOVR0,#BUFF0;解碼接收緩沖區(qū)首地址送R0 MOVR1,#BUFF0+8;解碼接收緩沖區(qū)首地址加8送R1DALOOP3: MOVA,@R0 XRLA,@R1 ;異或

JNZDANEXT60 ;不同,保留后一次解碼結(jié)果

INCR0 INCR1 DJNZR2,DALOOP3;相鄰兩次解碼結(jié)果相同

SETBJIEMA ;解碼有效

SJMPRETURN ;等待同步頭上升沿HERROR: ;上升沿出錯

ANLWUSTU,#0F0H ORLWUSTU,#01H;清除信息幀連續(xù)標志,同時置為001態(tài)CAEND: MOVTIMEL,R3 MOVTIMEH,R4RETURN: POPB POPACC POPPSW RETIEND

PROCCALTIME ;雙字節(jié)除法運算;入口參數(shù):被除數(shù)(當前脈沖寬度)存放在TIMEH、TIMEL中;除數(shù)存放在TIMEBCH、TIMEBCL中;R7記錄減法運算的最大次數(shù);出口參數(shù):商存放在R6中

CALTIME: MOVR6,#0 ;商清零

CLRCLOOP1: ;利用減法完成16位除16位運算

MOVA,TIMEL SUBBA,TIMEBCL MOVTIMEL,A ;保存差的低8位

MOVA,TIM

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論