單片機(jī)課程設(shè)計(jì)MCS51與SPI串行接口語音芯片連接_第1頁
單片機(jī)課程設(shè)計(jì)MCS51與SPI串行接口語音芯片連接_第2頁
單片機(jī)課程設(shè)計(jì)MCS51與SPI串行接口語音芯片連接_第3頁
單片機(jī)課程設(shè)計(jì)MCS51與SPI串行接口語音芯片連接_第4頁
單片機(jī)課程設(shè)計(jì)MCS51與SPI串行接口語音芯片連接_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、mcs-51與spi串行接口語音芯片連接一、實(shí)驗(yàn)?zāi)康?1) 進(jìn)一步理解spi串行總線傳輸協(xié)議。(2) 理解isd4000系列語音芯片工作原理,放音、錄音控制過程。(3) 理解mcs-51與spi總線外設(shè)(如isd4000系列語音芯片)的硬件連接、讀寫方式。二、實(shí)驗(yàn)設(shè)備與器材仿真器及附件、圖0-1所示實(shí)驗(yàn)電路板各一套。三、實(shí)驗(yàn)電路本實(shí)驗(yàn)涉僅僅涉及實(shí)驗(yàn)板上的u101、u103、u104、u401(isd4002語音芯片)、u404(集成功率放大器),而與其他元器件無關(guān)。接通電源前,將jp103的1-2引腳短路,使isd4002語音芯片的中斷輸出端引腳與mcs-51外中斷(p3.2)引腳相連。由于多

2、數(shù)mcs-51芯片沒有內(nèi)置spi串行總線接口部件,因此只能用軟件模擬spi總線時序方式讀寫spi總線接口器件。四、實(shí)驗(yàn)原理(isd4000系列語音芯片簡介)isd4000系列語音芯片包括isd4002、isd4003、isd4004三個子系列芯片,電源電壓為3v,單片錄音時間在216分鐘之間,音質(zhì)中上,廣泛用于公共汽車語音報站系統(tǒng)、移動及自動應(yīng)答電話設(shè)備、語音復(fù)讀機(jī)等電子產(chǎn)品中。該系列語音芯片采用cmos工藝,內(nèi)含振蕩器、防混淆濾波器、平滑濾波器、音頻放大器、自動靜噪及高密度多電平flash rom存貯器陣列。通過串行通信接口(spi或microwire總線協(xié)議)與微控制器(如mcs-51芯片

3、)相連,所有操作均由微控制器控制。內(nèi)部采用多電平直接模擬量存儲技術(shù), 每個采樣值直接存貯在片內(nèi)flash rom存貯器中,因此能逼真、自然地再現(xiàn)語音、音樂、音調(diào)等聲響效果,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和金屬聲。可選4.0,5.3,6.4,8.0khz等多個采樣頻率,采樣頻率越低,錄放時間就越長(但音質(zhì)會略有下降),片內(nèi)信息存放在flash rom存貯器中,在斷電狀態(tài)下可保存100年(典型值),能反復(fù)錄音10萬次以上。(一) 主要參數(shù)isd4000系列語音芯片主要參數(shù)如表13-1所示。表13-1 主要參數(shù)型號存儲時間(秒)最大段數(shù)信息分辯率(毫秒)采樣頻率(hz)濾波器帶寬(

4、hz)控制碼+地址位長度isd4002-1201206002008.0k3.4k5+11isd4002-1801806003005.3k2.3k5+11isd4002-2402406004004.0k1.7k5+11isd4003-0424012002008.0k3.4k5+11isd4003-0636012003005.3k2.3k5+11isd4003-0848012004004.0k1.7k5+11isd4004-0848024002008.0k3.4k8+16isd4004-1696024004004.0k1.7k8+16(二) 封裝及引腳排列isd4000系列語音芯片采用28引腳ts

5、op、pdip或soic封裝方式,其中pdip或soic封裝方式引腳排列如圖13-1所示。圖13-1 pdip或soic封裝引腳排列引腳功能:vccd芯片內(nèi)部數(shù)字電路電源引腳,vssd芯片內(nèi)部數(shù)字電路地線引腳;vcca芯片內(nèi)部模擬電路電源引腳,vssa芯片內(nèi)部模擬電路地線引腳。為減小噪聲,芯片內(nèi)部模擬、數(shù)字電路具有各自的電源、地線總線,以方便在印制板上實(shí)現(xiàn)數(shù)字、模擬電路電源和地線分開走線,形成單點(diǎn)接地的布線規(guī)則。ana in+、ana in-分別是錄音輸入放大器的同相輸入端和反相輸入端。輸入放大器可用單端或差分方式之一驅(qū)動。采用單端驅(qū)動時,信號由耦合電容輸入,最大為32mv(峰峰值)。耦合電容

6、與本端內(nèi)部的3k串聯(lián)電阻構(gòu)成的輸入阻抗決定了芯片頻帶的低端截止頻率。采用差分驅(qū)動時,最大為16mv(峰峰值)。xclk外部采樣時鐘輸入端,可選的采樣頻率如表10所示。一般使用芯片內(nèi)部采樣頻率(在出廠前已調(diào)校,誤差在+1%以內(nèi)),除非對采樣精度要求很高。當(dāng)不用外部采樣時鐘信號時, xclk引腳必須接地。am cap自動靜噪輸入端。當(dāng)錄音信號電平下降到內(nèi)部設(shè)定的某一閾值以下時,自動靜噪功能使信號衰弱,這樣有助于養(yǎng)活無信號(靜音)時的噪聲。一般情況系情況下,改引腳對地接1f電容,構(gòu)成內(nèi)部信號電平峰值檢測電路的一部分。檢出的峰值電平與內(nèi)部設(shè)定的閾值作比較,決定自動靜噪功能的翻轉(zhuǎn)點(diǎn)。大信號時,自動靜噪電

7、路不衰減,靜音時衰減6db。1f電容也影響自動靜噪電路對信號幅度的響應(yīng)速度。當(dāng)am cap引腳接vcca時,則禁止自動靜噪。aud out音頻輸出,可驅(qū)動5k的負(fù)載。mosi命令及數(shù)據(jù)信息的串行輸入端。mis0狀態(tài)信息的串行輸出端。sclk串行時鐘輸入端,由spi總線主設(shè)備(一般為mcu)提供。片選信號輸入端,輸入,低電平有效。當(dāng)片選信號無效時,芯片處于待用狀態(tài),靜態(tài)電流典型值為1ua。中斷輸出端,漏極開路(od)輸出,低電平有效。在放音(包括快進(jìn))、錄音操作過程中,遇到到段結(jié)束(eom)、存儲器末尾(ovf)時,引腳輸出低電平并保持,直到spi總線主設(shè)備向isd芯片寫入新的命令。rac行地址

8、時鐘輸出端,漏極開路(od)。每個rac周期表示isd存儲器的操作進(jìn)行了一行(isd4003系列中的存貯器有1200行)。該信號高電平時間為200ms,低電平為25ms。快進(jìn)模式下,rac的218.75s是高電平,31.25s為低電平。該端可用于存儲管理技術(shù)。(三) 控制命令及spi端口控制寄存器位isd4000系列語音芯片控制命令如表13-2所示,spi端口控制寄存器位含義如圖13-2所示。表13-2 控制命令指令5位控制碼操作摘要powerup00100上電:等待tpud后器件可以工作set play11100從指定地址開始放音。必須后跟play指令使放音繼續(xù)play11110從當(dāng)前地址開

9、始放音(直至eom或ovf)set rec10100從指定地址開始錄音。必須后跟rec指令錄音繼續(xù)rec10110從當(dāng)前地址開始錄音(直至ovf或停止)set mc11101從指定地址開始快進(jìn)。必須后跟mc指令快進(jìn)繼續(xù)mc11111執(zhí)行快進(jìn),直到eom.若再無信息,則進(jìn)入ovf狀態(tài)stop 0x110停止當(dāng)前操作(c3沒有定義)stop wrdn0x01x停止當(dāng)前操作并掉電(c3、c0沒有定義)rint0x110讀ovf和eom標(biāo)志(c3沒有定義)圖13-2 spi端口控制寄存器位及含義1. 放音過程(1) 執(zhí)行上電命令(power up)。(2) 延遲等待上電結(jié)束(當(dāng)采樣頻率為8khz時,上

10、電延遲時間約為25ms)。(3) 執(zhí)行“set play”命令,設(shè)置放音段起始地址。錄音、放音段起始地址與每段最短時間及放音長度有關(guān)。例如,對isd4002-120芯片來說,最多有600段(段地址編號為000599),每段最短錄音時間為200ms。如果每段記錄一個單音,長度為400ms(即每個單音占用兩段),則第n個單音對應(yīng)的段地址為(n2)。(4) 執(zhí)行“play”命令,從當(dāng)前地址開始放音,遇到段結(jié)束標(biāo)志eom或存儲器末尾標(biāo)志ovf時停止放音,同時引腳輸出低電平,指示當(dāng)前段播放結(jié)束。當(dāng)需要播放兩段或兩段以上時,如果段與段之間間隔很小時,可在上一段播放結(jié)束后,延遲一段時間(需通過試聽確定延遲時

11、間的長短,一般為數(shù)十ms)后再播放下一段。放音過程如圖13-3(a)所示。在放音操作過程中,執(zhí)行“stop”或“stop wrdn”命令時,將終止當(dāng)前放音操作。2. 錄音過程(1) 執(zhí)行上電命令(power up)。(2) 延遲等待上電結(jié)束(當(dāng)采樣頻率為8khz時,上電延遲時間tpud約為25ms)。(3) 再執(zhí)行上電命令(power up)。(4) 延遲兩倍上電等待時間(即延遲2tpud時間)。(5) 執(zhí)行“set rec”命令,設(shè)置錄音段的起始地址。(6) 執(zhí)行“rec”命令,從當(dāng)前地址開始錄音,直到出現(xiàn)存儲器末尾標(biāo)志ovf信號。在錄音過程中,未錄到存儲器末尾時,就執(zhí)行“stop”或“st

12、op wrdn”命令,將終止當(dāng)前錄音操作,并產(chǎn)生eom標(biāo)志。因此,可利用這一特性在芯片上錄制多段語音信息。可見,錄音過程與放音過程相似,只是每次錄音操作操作只能錄一段,如圖13-3(b)所示。圖13-3 放音、錄音流程(四) spi總線接口時序及命令格式芯片支持8位、16位命令格式,傳輸時序如圖13-4所示,isd4000系列語音芯片spi總線參數(shù)如表13-3所示。從isd4000系列語音芯片spi總線時序可以看出:其spi總線時序與spi總線接口存儲器eeprom 25c01/02/04兼容。在接收控制命令時,先接收lsb(這要求spi總線控制器先輸出lsb);空閑時,sclk為低電平,在s

13、clk上升沿鎖存器mosi引腳上的信息。表13-3 isd4000系列語音芯片spi總線參數(shù)符號參數(shù)最小典型最大單位tsss片選信號建立時間500nsectssh片選信號保持時間500nsectdis串行輸入數(shù)據(jù)di建立時間200nsectdih串行輸入數(shù)據(jù)di保持時間200nsectpd輸出延遲500nsectdf輸出延遲到高阻態(tài)500nsectssmin片選信號高電平時間1sectsckhisclk 高電平時間400nsectscklowsclk低電平時間400nsecf0sclk頻率1000khz(a) 傳輸時序(b) 8位命令格式(c) 16位命令格式圖13-4 命令格式(五) 典型應(yīng)

14、用電路及與mcs-51的連接mcs-51芯片一般沒有內(nèi)置spi總線部件,可通過軟件方式模擬spi總線操作時序控制isd4000系列語音芯片的操作,典型連接線路如圖13-5所示。圖13-5 與mcs-51芯片的典型連接(六) 參考驅(qū)動程序根據(jù)圖13-5連接方式,下面給出了與spi模擬總線驅(qū)動程序、組合播放、從指定段連續(xù)播放、單段錄音有關(guān)的參考程序段,完整程序參閱磁盤文件實(shí)驗(yàn)十三(isdn4000系列語音驅(qū)動程序).asm。mosi bit p1.5miso bit p1.6sclk bit p1.7isdss bit p1.4;片選信號mic_c bit p1.3 ;功放電源控制,同時也作放音/

15、錄音標(biāo)志(0-放音、1-錄音)isdbuf data 50h ;isd語音芯片命令緩沖區(qū) ;50h單元存放命令碼(c4-c0)及段高3位地址(a10-a8) ;51h單元存放段低8位地址(a7-a0)isdbufsp data 52h ;播放指針task3 data 53h ;語音播放狀態(tài),b2-b0記錄放音或錄音狀態(tài)isdtime data 54h ;語音播放延遲時間xmtdat data 60h ;段緩沖區(qū)recno equ 0f0h ;可錄音的最小段號;初始化外中斷int0setb it0 ;下降沿觸發(fā)(采用查詢方式檢測);-從指定段連續(xù)播放初始化 clr mic_c ;設(shè)置放音標(biāo)志 m

16、ov isdbufsp, #0 ;設(shè)置播放的起始段號 mov task3, #05h ;啟動標(biāo)志(未上電標(biāo)志)here1: lcall isd_rd_a ;調(diào)用逐段播放過程 mov a, task3cjne a, #0, here1sjmp $ ;虛擬等待;-段組合播放初始化 ;把待播放的段編號(一次最多可播放16段)裝入播放緩沖區(qū)內(nèi) ;當(dāng)待播放的段號不足16時,在播放段后放0ffh,作為結(jié)束標(biāo)志 mov r0, #xmtdat mov r0, #02h ;初始化語音段緩沖區(qū) inc r0 mov r0, #01h inc r0 mov r0, #22hinc r0 clr mic_c ;設(shè)置

17、放音標(biāo)志 mov isdbufsp, #0 ;初始化播放指針 ;-段組合播放啟動 mov task3, #05h ;啟動標(biāo)志(未上電標(biāo)志)here2: lcall isd_rd ;調(diào)用段組合播放過程 mov a, task3 cjne a, #0, here2sjmp $ ;虛擬等待 ;-單段錄音初始化 mov r0, #xmtdat mov r0, #xxh ;段地址送緩沖區(qū)首字節(jié) inc r0 mov r0, #xx ;錄音時間送緩沖區(qū)第二字節(jié) setb mic_c ;設(shè)置錄音標(biāo)志 ;-單段錄音過程啟動 mov task3, #05h ;啟動標(biāo)志(未上電標(biāo)志)here3: lcall is

18、d_wr ;調(diào)用單段錄音過程 mov a, task3 cjne a, #0, here3sjmp $ ;虛擬等待;把語音緩沖區(qū)語音段送ids4000芯片播放子程序proc isd_rd;入口參數(shù):task3置為05h ;b2-b0記錄放音或錄音狀態(tài) ;000-空閑 ;001-執(zhí)行上電延遲(25ms) ;010-段播放延遲 ;011-段間延遲 ;101-未上電標(biāo)志isd_rd: jnb mic_c, run ;錄音狀態(tài),不執(zhí)行! jmp exit ;退出run: mov a, task3 anl a, #07h ;保留標(biāo)志位b2b0 cjne a, #000b, next1 ;b2b0為000

19、,空閑 jmp exit ;退出next1: cjne a, #101b, next2 ;b2b0為101,未上電,先執(zhí)行上電操作 ;執(zhí)行“power up” (上電)命令 mov r0, #isdbuf ;語音命令緩沖首地址送r0 mov r0, #20h ;00100xxx,執(zhí)行上電操作 lcall spibw ;調(diào)用spi總線控制命令寫入子程序 mov isdtime, #5 ;延遲時間為5*5ms(即25ms) mov task3, #1 ;進(jìn)入上電延遲狀態(tài) jmp exitnext2: cjne a, #001b, next3 ;b2b0為001,處于上電延遲期間,檢查延遲時間nex

20、t30: mov a, isdtime jz next31 ;不是0,上電延遲時間未到,等待 sjmp exitnext31: mov a, #xmtdat add a, isdbufsp mov r0, a mov a, r0 ;取出待放音段編號 mov b, #2 ;假設(shè)每一單音占用兩個最小段 mul ab ;計(jì)算段首地址 mov r0, #isdbuf+1;語音命令緩沖首地址送r0 mov r0, a ;段地址低8位送命令緩沖 dec r0 mov a, b ;段地址高位送a orl a, #11100000b;形成地址控制碼11100(set play) mov r0, a ;命令碼送

21、命令緩沖區(qū) lcall spibw ;調(diào)用spi總線控制命令寫入子程序 ;執(zhí)行play命令 mov r0, #isdbuf ;語音命令緩沖首地址送r0 mov a, #0f0h ;11110xxx,執(zhí)行play/rec命令 mov r0, a ;命令碼送命令緩沖區(qū) lcall spibw ;調(diào)用spi總線控制命令寫入子程序 ;開始放音 mov task3, #02h ;b2b0置為010態(tài)(修改作業(yè)號) clr ie0 ;清除int0中斷標(biāo)志(采用查詢方式確定段 ;播放是否已結(jié)束) sjmp exitnext3: cjne a, #2, next4 ;b2b0置為010 ;屬于段播放期間延遲

22、jb ie0, next41 ;int0中斷無效,即未遇到eof或vof標(biāo)志 sjmp exit ;等待next41: clr ie0 ;清除int0中斷標(biāo)志 inc isdbufsp ;指針加+1 mov a, isdbufsp cjne a, #16, next42next42: jc next43 ;指針大于或等于16,緩沖區(qū)所有段已播放結(jié)束 sjmp next441next43: mov a, #xmtdat add a, isdbufsp mov r0, a mov a, r0 ;取出將要播放的段編號 cjne a, #0ffh, next44 ;盡管指針=f0h,退出 mov r0

23、, #isdbuf ;語音命令緩沖首地址送r0 mov r0, #10h ;0001x xxx,執(zhí)行stop wrdn命令,停止當(dāng)前操作 lcall spibw ;調(diào)用spi總線控制命令寫入子程序 setb mic_c ;關(guān)閉功率放大器電源 mov task3, #0 ;將b2b0置為000,結(jié)束播放 sjmp exitnext43: mov task3, #3 ;進(jìn)入段間延遲狀態(tài) mov isdtime, #10 ;延遲時間為10*5ms(即50ms) sjmp exitnext4: cjne a, #3, exit ;b2b0置為011 ;屬于段間延遲 jmp next30 ;處理方式與上

24、電延遲相同exit: retend;從指定地址開始錄音(單段錄音)proc isd_wr ;從指定地址開始錄音(單段錄音);入口參數(shù):task3置為05h ;b2-b0記錄放音或錄音狀態(tài) ;000-空閑 ;001-執(zhí)行上電延遲(25ms) ;010-錄音過程的再上電延遲 ;011-錄音延遲 ;101-未上電標(biāo)志isd_wr: jb mic_c, run ;非錄音狀態(tài),不執(zhí)行! jmp exitrun: mov a, task3 anl a, #07h ;保留標(biāo)志位b2b0 cjne a, #00h, next1 ;b2b0為000,空閑 jmp exitnext1: cjne a, #101b

25、, next2 ;b2b0為101,未上電,先執(zhí)行上電操作 ;執(zhí)行“power up” (上電)命令 mov r0, #isdbuf ;語音命令緩沖首地址送r0 mov r0, #20h ;00100xxx,執(zhí)行上電操作 lcall spibw ;調(diào)用spi總線控制命令寫入子程序 mov isdtime, #5 ;延遲時間為5*5ms(即25ms) mov task3, #1 ;進(jìn)入上電延遲狀態(tài) jmp exitnext2: cjne a, #001b, next3 ;b2b0為001,處于上電延遲期間 mov a, isdtime jz next31 ;不是0,上電延遲時間未到 sjmp e

26、xit ;退出,繼續(xù)等待next31: ;再執(zhí)行“power up” (上電)命令 mov r0, #isdbuf ;語音命令緩沖首地址送r0 mov r0, #20h ;00100xxx,執(zhí)行上電操作 lcall spibw ;調(diào)用spi總線控制命令寫入子程序 mov isdtime, #10 ;延遲時間為10*5ms(即50ms) mov task3, #2 ;進(jìn)入再上電延遲狀態(tài)(時間50ms) sjmp exit ;退出next3: cjne a, #010b, next4 ;b2b0為010,處于再上電延遲期間 mov a, isdtime jz next41 ;不是0,再上電延遲時間

27、未到 sjmp exit ;退出,繼續(xù)等待next41: mov r0, #xmtdat mov a, r0 cjne a, #recno, next42next42: jnc next43 ;小于允許錄音段地址,關(guān)閉電源退出 sjmp next51next43: mov b, #2 ;假設(shè)前面每一單音占用兩個最小段 mul ab ;計(jì)算段首地址 mov r0, #isdbuf+1;語音命令緩沖首地址送r0 mov r0, a ;段地址低8位送命令緩沖 dec r0 mov a, b ;段地址高位送a orl a, #10100000b;形成地址控制碼10100(set rec) mov r0

28、, a ;命令碼送命令緩沖區(qū) lcall spibw ;調(diào)用spi總線控制命令寫入子程序 ;執(zhí)行rec命令 mov r0, #isdbuf ;語音命令緩沖首地址送r0 mov a, #0b0h ;10110xxx,執(zhí)行rec命令 mov r0, a ;命令碼送命令緩沖區(qū) lcall spibw ;調(diào)用spi總線控制命令寫入子程序 ;從地址開始開始錄音 mov task3, #03h ;b2b0置為011態(tài)(修改作業(yè)號) mov r0, #xmtdat+1;取錄音時間 mov isdtime, r0 ;錄音時間送計(jì)時單元 clr ie0 ;清除int0中斷 sjmp exitnext4: cjn

29、e a, #3, exit ;b2b0為011,處于錄音等待期間 jb ie0, next51 ;int0中斷效,即遇到vof ;檢查延遲時間是否為0? mov a, isdtime jz next51 ;錄音已經(jīng)結(jié)束 sjmp exit ;錄音尚未結(jié)束,退出!next51: clr ie0 ;清除中斷 mov r0, #isdbuf ;語音命令緩沖首地址送r0 mov r0, #10h ;0001x xxx,執(zhí)行stop wrdn命令,停止當(dāng)前操作 lcall spibw ;調(diào)用spi總線控制命令寫入子程序 setb mic_c ;關(guān)閉功率放大器電源 mov task3, #00 ;將b7、

30、b6置為00,結(jié)束播放exit: retend;控制命令送isd4000語音芯片(16位命令格式)proc spibw ;spi總線控制命令寫入子程序;入口參數(shù):16位命令碼(兩字節(jié))存放在isdbuf緩沖區(qū)內(nèi);出口參數(shù):無;使用資源:r0、r6、r7及acc、psw、dptr(使用進(jìn)位標(biāo)志c)spibw: clr ea clr sclk ;空閑時sclk處于高電平,以減小功耗。而,isd采用 ;正極性sclk脈沖頭。因此,在片選信號ss為低電平前 ; 先將sclk置為低電平 clr isdss ;片選信號為低 mov r0, #isdbuf+1 ;取命令碼低位字節(jié) mov r6, #2 ;傳

31、送兩字節(jié)loop2: mov a, r0 mov r7, #08h ;移動次數(shù)loop1: rrc a ;帶cy右移。 mov mosi, c ;cpu輸出數(shù)據(jù)。 setb sclk ;利用sclk上升沿鎖存輸入的數(shù)據(jù)。 nop ;由于sclk信號時鐘頻率最高為1mhz,即高低 ;電平時間必須大于400us,可根據(jù)晶振頻率插入 ;0-2條nop指令(對于晶振頻率在12mhz以內(nèi)時,不用) clr sclk ;時鐘信號為低電平 djnz r7,loop1 dec r0 ;指針減1,指向下一字節(jié) djnz r6, loop2 setb isdss ;執(zhí)行結(jié)束后將ss引腳置為高電平。 setb sc

32、lk ;空閑時sclk處于高電平,以減小功耗。 setb ea retend五、實(shí)驗(yàn)內(nèi)容1. 寫出isd4002語音芯片的讀寫控制程序,逐段播放實(shí)驗(yàn)板上isd4002語音芯片內(nèi)已錄好的語音信息。2. 在空白處錄制5s左右的語音信息。3. 在實(shí)驗(yàn)九(1)基礎(chǔ)上,實(shí)現(xiàn)每按下一個按鍵時,通過語音芯片報出鍵名。實(shí)驗(yàn)15 無線解碼接收一、實(shí)驗(yàn)?zāi)康?1) 理解無線收發(fā)系統(tǒng)組成、工作原理。(2) 理解pt2262或與之兼容的固定編碼芯片信息幀格式;理解軟件解碼原理、實(shí)現(xiàn)方法以及軟件解碼程序編寫要領(lǐng)。(3) 初步掌握自適應(yīng)軟件解碼程序設(shè)計(jì)規(guī)則。(4) 理解mcs-51芯片內(nèi)pca模塊的功能和使用方法。二、實(shí)驗(yàn)

33、設(shè)備與器材仿真器及附件、圖0-1所示實(shí)驗(yàn)電路板各一套(需帶ask無線接收模塊),pt2262編碼遙控器或門磁一只、導(dǎo)線一批。三、實(shí)驗(yàn)原理與電路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(是編碼芯片振蕩周期,在25s120s之間,由振蕩電阻決

34、定),間歇期為124;編碼位采用pwm調(diào)制,脈寬比為1:3,“0”碼高電平持續(xù)時間為4,低電平持續(xù)時間為12;而“1”碼高電平持續(xù)時間為12,低電平持續(xù)時間為4。一信息幀總長為,即512。發(fā)送時,先輸出編碼的最低位。圖15-2 pt2262編碼芯片信息幀格式3. 自適應(yīng)軟件解碼方法為降低成本、提高靈活性,在含有mcu的無線接收系統(tǒng)中,一般不用硬件解碼芯片pt2272實(shí)現(xiàn)pt2262編碼信息的解碼,而采用軟件解碼方式。本實(shí)驗(yàn)借助mcs-51rx系列mcu芯片內(nèi)置的可編程計(jì)數(shù)器陣列(pca)上下沿捕獲功能測量脈沖信號高、低電平持續(xù)時間;用脈沖間隔時間比作為脈沖寬度測量依據(jù)實(shí)現(xiàn)可適應(yīng)不同脈沖頭寬度的

35、自適應(yīng)軟件解碼方式。根據(jù)編碼芯片信息幀特點(diǎn),當(dāng)取25s120s時,信息幀內(nèi)高電平最長時間為12(300s1.44ms之間);低電平時間最長為同步頭低電平持續(xù)時間124(3.1ms14.88ms)。因此,當(dāng)系統(tǒng)時鐘頻率為11.092mhz時,在6時鐘/機(jī)器周期模式下,pca計(jì)數(shù)器溢出時間為,即35.55ms,即信息幀內(nèi)相鄰兩次捕獲時間間隔小于定時器溢出時間。(1) 資源及狀態(tài)分配為簡化軟件解碼判別過程,縮短pca中斷執(zhí)行時間,使用字節(jié)變量stu記錄解碼狀態(tài),各位定義如下:b2b0記錄信息幀狀態(tài),如圖15-3所示。000為起始狀態(tài),下降沿時刻,如果相鄰兩次捕獲間隔不在100us1.44ms20%范

36、圍內(nèi),則返回000態(tài);上升沿后,如果時間間隔不在允許范圍內(nèi),則置為001態(tài);而101、110分別表示編碼位高、低電平狀態(tài)。圖15-3b3位作信息幀連續(xù)有效標(biāo)志。b4位是解碼成功標(biāo)志。以pt2262作編碼芯片的編碼器會連續(xù)發(fā)送4幀以上信息,為提高可靠性,采用雙循環(huán)校驗(yàn),即只有接收到兩相鄰的信息幀編碼相同時,b4位置1。因此b4b3描述的解碼狀態(tài)含義為:00表示尚未接收到完整信息幀;01表示已收到了一完整信息幀;11表示已連續(xù)接收了兩個相同的信息幀,解碼有效標(biāo)志置1;10表示接收緩沖區(qū)數(shù)據(jù)有效,但未處理。用字變量time記錄相鄰兩次捕獲時間間隔,字變量timeb記錄基本時間(4)。(2) 自適應(yīng)軟

37、件解碼過程自適應(yīng)軟件解碼過程如圖15-4(a)(d)所示。為保證能夠接收基本時間只有100us左右的高速編碼信息,主控程序中除了將pca中斷優(yōu)先級置為最高外,還必須保證pca中斷服務(wù)程序執(zhí)行時間盡可能短,即最好用匯編語言指令編寫pca中斷服務(wù)程序。由于mcs-51指令系統(tǒng)沒有雙字節(jié)除法指令,解碼過程中涉及到的除法運(yùn)算,可采用減法或多項(xiàng)式除法完成。圖15-4 自適應(yīng)解碼軟件過程四、實(shí)驗(yàn)內(nèi)容、過程及要求本實(shí)驗(yàn)主要涉及實(shí)驗(yàn)板上的u101、u103、u402等芯片。接通電源前,板上各跳線狀態(tài)如表15-1所示。表15-1 跳線設(shè)置jp103jp104jp107jp201jp202jp203jp204jp

38、205jp402jp403swdip1-2開路2-3開路1-2開路2-3開路短路1-2 短路2-3 開路1-2 短路2-3 開路1-2 短路2-3 開路1-2 短路2-3 開路1-2 短路2-3 開路1-2 開路2-3短路1-2 開路2-3短路off與自適應(yīng)軟件解碼有關(guān)程序段如下,完成程序可參閱實(shí)驗(yàn)十五.asm。;*定義軟件解碼變量*wustu data 2eh;b2-b0作無線接收狀態(tài)標(biāo)志 ;000-開始;001-同步頭高電平;010-同步頭低電平 ;101-數(shù)據(jù)位高電平;110-數(shù)據(jù)位低電平lxjie bit wustu.3 ;信息幀連續(xù)標(biāo)志jiema bit wustu.4 ;接收數(shù)據(jù)有

39、效標(biāo)志(可以利用數(shù)據(jù)有效標(biāo)志作為;數(shù)據(jù)處理標(biāo)志) ;數(shù)據(jù)有效,而信息幀連續(xù)標(biāo)志無效時,即認(rèn)為接收無效hdatab bit 01h ;高電平時間,碼長標(biāo)志(4a為0,12a為1)overt data 2fh;相鄰居兩次捕獲之間定時器溢出次數(shù)buff0 data 30h;解碼接收緩沖區(qū)(30-3f)timel data 5ah;相鄰兩次捕獲間隔時間低8位timeh data 5bh;相鄰兩次捕獲間隔時間高8位cntb data 5ch;信息幀長度(單位為bit)timebcl data 7dh;同步頭高電平時間(即4a)的低8位timebch data 7eh;同步頭高電平時間(即4a)的高8位o

40、rg 0000hljmp mainorg 0033hljmp pca ;pca中斷服務(wù)程序入口地址(用于解碼接收)org 0050hproc main ;主程序開始main: ;-pca模塊初始化 ;模塊0工作在16位上下沿捕獲方式,作解碼定時器。 mov cmod, #00000001b ;計(jì)數(shù)脈沖為內(nèi)部時鐘信號/6,允許ch、cl溢出中斷 mov ch, #0 ;從0開始計(jì)數(shù) mov cl, #0 mov ccon, #40h ;啟動ch、cl計(jì)數(shù) mov ccapm0, #00100001b ;模塊0工作在16位上沿捕獲方式,允許模塊0中斷 ;開始時先用上沿捕獲,中斷后上下交替捕獲 se

41、tb ppc ;pca中斷優(yōu)先級置為高 setb ec ;允許pca中斷 setb ea ;開中斷next1: jnb jiema, next1 nop ;虛擬等待解碼有效 sjmp next1end;pca中斷服務(wù)程序proc pcapca: push psw push acc push b orl psw, #18h; setb rs1; setb rs0 ;使用工作寄存器區(qū)3 jbc cf, tnext1 ;不是定時器溢出引起 sjmp canexttnext1: ;定時器t溢出引起中斷 inc overt mov a, wustu jb acc.0, tnext2 ;低電平,檢查溢出次數(shù) mov a, overt cjne a, #2, tnext21tnext21: jc toexit ;小于2,退出! ;溢出次數(shù)大于2,肯定是錯誤! mov overt

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論