[單片機(jī)課程設(shè)計]MCS51與SPI串行接口語音芯片連接
《[單片機(jī)課程設(shè)計]MCS51與SPI串行接口語音芯片連接》由會員分享,可在線閱讀,更多相關(guān)《[單片機(jī)課程設(shè)計]MCS51與SPI串行接口語音芯片連接(29頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、MCS-51與SPI串行接口語音芯片連接一、實驗?zāi)康?1) 進(jìn)一步理解SPI串行總線傳輸協(xié)議。(2) 理解ISD4000系列語音芯片工作原理,放音、錄音控制過程。(3) 理解MCS-51與SPI總線外設(shè)(如ISD4000系列語音芯片)的硬件連接、讀寫方式。二、實驗設(shè)備與器材仿真器及附件、圖0-1所示實驗電路板各一套。三、實驗電路本實驗涉僅僅涉及實驗板上的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總線接口器件。四、實驗原理(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)等聲響效果,避免了一般固體錄音電路因量化和壓縮造成的量化噪聲和金屬聲??蛇x4.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ù)字電路具有各自的電源、地線總線,以方便在印制板上實現(xiàn)數(shù)字、模擬電路電源和地線分開走線,形成單點接地的布線規(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)點。大信號時,自動靜噪電
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)的參考程序段,完整程序參閱磁盤文件實驗十三(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 ;計算段首地址 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 ;計算段首地址 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 ;錄音時間送計時單元 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五、實驗內(nèi)容1. 寫出ISD4002語音芯片的讀寫控制程序,逐段播放實驗板上ISD4002語音芯片內(nèi)已錄好的語音信息。2. 在空白處錄制5S左右的語音信息。3. 在實驗九(1)基礎(chǔ)上,實現(xiàn)每按下一個按鍵時,通過語音芯片報出鍵名。實驗15 無線解碼接收一、實驗?zāi)康?1) 理解無線收發(fā)系統(tǒng)組成、工作原理。(2) 理解PT2262或與之兼容的固定編碼芯片信息幀格式;理解軟件解碼原理、實現(xiàn)方法以及軟件解碼程序編寫要領(lǐng)。(3) 初步掌握自適應(yīng)軟件解碼程序設(shè)計規(guī)則。(4) 理解MCS-51芯片內(nèi)PCA模塊的功能和使用方法。二、實驗
33、設(shè)備與器材仿真器及附件、圖0-1所示實驗電路板各一套(需帶ASK無線接收模塊),PT2262編碼遙控器或門磁一只、導(dǎo)線一批。三、實驗原理與電路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實現(xiàn)PT2262編碼信息的解碼,而采用軟件解碼方式。本實驗借助MCS-51RX系列MCU芯片內(nèi)置的可編程計數(shù)器陣列(PCA)上下沿捕獲功能測量脈沖信號高、低電平持續(xù)時間;用脈沖間隔時間比作為脈沖寬度測量依據(jù)實現(xiàn)可適應(yīng)不同脈沖頭寬度的
35、自適應(yīng)軟件解碼方式。根據(jù)編碼芯片信息幀特點,當(dāng)取25s120s時,信息幀內(nèi)高電平最長時間為12(300s1.44ms之間);低電平時間最長為同步頭低電平持續(xù)時間124(3.1ms14.88ms)。因此,當(dāng)系統(tǒng)時鐘頻率為11.092MHz時,在6時鐘/機(jī)器周期模式下,PCA計數(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)校驗,即只有接收到兩相鄰的信息幀編碼相同時,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é)除法指令,解碼過程中涉及到的除法運算,可采用減法或多項式除法完成。圖15-4 自適應(yīng)解碼軟件過程四、實驗內(nèi)容、過程及要求本實驗主要涉及實驗板上的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)程序段如下,完成程序可參閱實驗十五.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 ;計數(shù)脈沖為內(nèi)部時鐘信號/6,允許CH、CL溢出中斷 MOV CH, #0 ;從0開始計數(shù) MOV CL, #0 MOV CCON, #40H ;啟動CH、CL計數(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 ;低電平,檢查溢出次
42、數(shù) MOV A, OVERT CJNE A, #2, TNEXT21TNEXT21: JC TOEXIT ;小于2,退出! ;溢出次數(shù)大于2,肯定是錯誤! MOV OVERT, #2 ANL WUSTU, #0D0H ;解碼狀態(tài)清0,清除連續(xù)有效標(biāo)志 SJMP TOEXITTNEXT2: ;在高電平期間,發(fā)現(xiàn)溢出次數(shù)大于指定值 MOV A, OVERT CJNE A, #2, TNEXT22TNEXT22: JC TOEXIT ;小于2,退出! ;大于2 MOV OVERT, #2 ANL WUSTU, #0F0H ;清除連續(xù)有效標(biāo)志,解碼狀態(tài)置為011(即等幅干擾狀態(tài)) ORL WUSTU,
43、 #03H ;置為011態(tài)!TOEXIT: JMP RETURNCANEXT: ;捕獲中斷引起 MOV R3, CCAP0L MOV R4, CCAP0H ;取捕獲發(fā)生的時刻 CLR C MOV A, R3 SUBB A, TIMEL MOV TIMEL, A MOV A, R4 SUBB A, TIMEH MOV TIMEH, A ;計算并保存相鄰兩次捕獲時間間隔到TIMEH、TIMEL中 MOV A, CCAPM0 MOV C, ACC.5 ;上升沿觸發(fā)捕獲標(biāo)志送C XRL CCAPM0, #30H ;與30異或,強(qiáng)迫CAPP、CAPN取反 ANL CCON, #0FEH ;清除CCF0中
44、斷標(biāo)志 MOV OVERT, #0 ;捕獲時清除溢出次數(shù) ;判別捕獲原因 JC HNEXT ;下沿觸發(fā)引起; CLR C MOV A, TIMEL SUBB A, #140 ;PCA模塊計數(shù)脈沖為系統(tǒng)時鐘信號的6分頻(晶振頻率為11.0592MHz) MOV A, TIMEH ;140對應(yīng)的時間為(1/11.0592)*6*140,約76us SUBB A, #0 JNC LNEXT0 ;高電平時間太短, ANL WUSTU, #0F0H ;重置為000態(tài),清除連續(xù)標(biāo)志 JMP RETURN ;沒有必要記錄LNEXT0: LJMP LNEXT;上邊沿觸發(fā)HNEXT: MOV A, WUSTU
45、ANL A, #07H CJNE A, #0, HNEXT1 ;000態(tài), 說明尚未開始 ORL WUSTU, #21H ;置為001態(tài) JMP CAEND ;記錄捕獲時間后退出HNEXT1: CJNE A, #2, HNEXT2 ;原來處于010態(tài),計算同步頭時間,計算同步頭脈沖相對寬度; CLR C MOV A, TIMEL SUBB A, #51H MOV A, TIMEH ;假設(shè)a在25us120us(允許存在25%的誤差)之間 SUBB A, #16H ;124a對應(yīng)計數(shù)器讀數(shù)為571334174,即1651H857EH JNC HNEXT20 ;小于最小值,錯誤 JMP HERROR ;上升沿出錯處理HNEXT20: ;CLR C MOV A, TIMEL SUBB A, #7EH MOV A, TIMEH SUBB A, #85H JC HNEXT201 ;大于124a的上限(即最大值),錯誤 JMP HERROR ;上升沿出錯處理HNEXT201: ;在同步頭間歇期時間最小值與最大值之間 LCALL CAL1 ;當(dāng)被除數(shù)較大時,用多項式除法可有效縮短運算時間 CJNE R6, #29, HNEXT21HNEXT21: JNC HNEXT22 ;小于29,同步頭高、低電平時間比太??!錯!
- 溫馨提示:
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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 對標(biāo)管理概述和實施
- 市場營銷信息系統(tǒng)與營銷調(diào)研
- 市場經(jīng)濟(jì)的一般特征(優(yōu)質(zhì)課)
- 粒子物理學(xué)的發(fā)展PPT
- 四年級下冊語文園地三口語交際(檀麗萍)
- 四年級下冊品德與社會《創(chuàng)造文明的環(huán)境》
- 創(chuàng)業(yè)設(shè)立公司流程介紹
- XX綜合經(jīng)濟(jì)開發(fā)區(qū)戰(zhàn)略咨詢
- 零基礎(chǔ)對外漢語第一課
- 寫作+寫出人物精神+(共23張PPT)(教育精品)
- 螺桿擠出機(jī)
- 考點4-價格變動對經(jīng)濟(jì)生活的影響
- 美國專利查詢介紹
- GP綠色產(chǎn)品環(huán)境管理物質(zhì)知識培訓(xùn)
- 簡潔明快的優(yōu)秀模板之商業(yè)管理技巧suervisory