[单片机课程设计]MCS51与SPI串行接口语音芯片连接.doc
MCS-51与SPI串行接口语音芯片连接一、实验目的(1) 进一步理解SPI串行总线传输协议。(2) 理解ISD4000系列语音芯片工作原理,放音、录音控制过程。(3) 理解MCS-51与SPI总线外设(如ISD4000系列语音芯片)的硬件连接、读写方式。二、实验设备与器材仿真器及附件、图0-1所示实验电路板各一套。三、实验电路本实验涉仅仅涉及实验板上的U101、U103、U104、U401(ISD4002语音芯片)、U404(集成功率放大器),而与其他元器件无关。接通电源前,将JP103的1-2引脚短路,使ISD4002语音芯片的中断输出端引脚与MCS-51外中断(P3.2)引脚相连。由于多数MCS-51芯片没有内置SPI串行总线接口部件,因此只能用软件模拟SPI总线时序方式读写SPI总线接口器件。四、实验原理(ISD4000系列语音芯片简介)ISD4000系列语音芯片包括ISD4002、ISD4003、ISD4004三个子系列芯片,电源电压为3V,单片录音时间在216分钟之间,音质中上,广泛用于公共汽车语音报站系统、移动及自动应答电话设备、语音复读机等电子产品中。该系列语音芯片采用CMOS工艺,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平Flash ROM存贮器阵列。通过串行通信接口(SPI或Microwire总线协议)与微控制器(如MCS-51芯片)相连,所有操作均由微控制器控制。内部采用多电平直接模拟量存储技术, 每个采样值直接存贮在片内Flash ROM存贮器中,因此能逼真、自然地再现语音、音乐、音调等声响效果,避免了一般固体录音电路因量化和压缩造成的量化噪声和"金属声"。可选4.0,5.3,6.4,8.0kHz等多个采样频率,采样频率越低,录放时间就越长(但音质会略有下降),片内信息存放在Flash ROM存贮器中,在断电状态下可保存100年(典型值),能反复录音10万次以上。(一) 主要参数ISD4000系列语音芯片主要参数如表13-1所示。表13-1 主要参数型号存储时间(秒)最大段数信息分辩率(毫秒)采样频率(HZ)滤波器带宽(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引脚TSOP、PDIP或SOIC封装方式,其中PDIP或SOIC封装方式引脚排列如图13-1所示。图13-1 PDIP或SOIC封装引脚排列引脚功能:VCCD芯片内部数字电路电源引脚,VSSD芯片内部数字电路地线引脚;VCCA芯片内部模拟电路电源引脚,VSSA芯片内部模拟电路地线引脚。为减小噪声,芯片内部模拟、数字电路具有各自的电源、地线总线,以方便在印制板上实现数字、模拟电路电源和地线分开走线,形成单点接地的布线规则。ANA IN+、ANA IN-分别是录音输入放大器的同相输入端和反相输入端。输入放大器可用单端或差分方式之一驱动。采用单端驱动时,信号由耦合电容输入,最大为32mV(峰峰值)。耦合电容与本端内部的3K串联电阻构成的输入阻抗决定了芯片频带的低端截止频率。采用差分驱动时,最大为16mV(峰峰值)。XCLK外部采样时钟输入端,可选的采样频率如表10所示。一般使用芯片内部采样频率(在出厂前已调校,误差在+1%以内),除非对采样精度要求很高。当不用外部采样时钟信号时, XCLK引脚必须接地。AM CAP自动静噪输入端。当录音信号电平下降到内部设定的某一阈值以下时,自动静噪功能使信号衰弱,这样有助于养活无信号(静音)时的噪声。一般情况系情况下,改引脚对地接1F电容,构成内部信号电平峰值检测电路的一部分。检出的峰值电平与内部设定的阈值作比较,决定自动静噪功能的翻转点。大信号时,自动静噪电路不衰减,静音时衰减6dB。1F电容也影响自动静噪电路对信号幅度的响应速度。当AM CAP引脚接VCCA时,则禁止自动静噪。AUD OUT音频输出,可驱动5K的负载。MOSI命令及数据信息的串行输入端。MIS0状态信息的串行输出端。SCLK串行时钟输入端,由SPI总线主设备(一般为MCU)提供。片选信号输入端,输入,低电平有效。当片选信号无效时,芯片处于待用状态,静态电流典型值为1uA。中断输出端,漏极开路(OD)输出,低电平有效。在放音(包括快进)、录音操作过程中,遇到到段结束(EOM)、存储器末尾(OVF)时,引脚输出低电平并保持,直到SPI总线主设备向ISD芯片写入新的命令。RAC行地址时钟输出端,漏极开路(OD)。每个RAC周期表示ISD存储器的操作进行了一行(ISD4003系列中的存贮器有1200行)。该信号高电平时间为200ms,低电平为25ms。快进模式下,RAC的218.75s是高电平,31.25s为低电平。该端可用于存储管理技术。(三) 控制命令及SPI端口控制寄存器位ISD4000系列语音芯片控制命令如表13-2所示,SPI端口控制寄存器位含义如图13-2所示。表13-2 控制命令指令5位控制码<11位地址>操作摘要POWERUP00100<XXXXXXXXXXX>上电:等待TPUD后器件可以工作SET PLAY11100< A10-A0>从指定地址开始放音。必须后跟PLAY指令使放音继续PLAY11110<XXXXXXXXXXX>从当前地址开始放音(直至EOM或OVF)SET REC10100<A10 -A0>从指定地址开始录音。必须后跟REC指令录音继续REC10110<XXXXXXXXXXX>从当前地址开始录音(直至OVF或停止)SET MC11101<A10 -A0>从指定地址开始快进。必须后跟MC指令快进继续MC11111<XXXXXXXXXXX>执行快进,直到EOM.若再无信息,则进入OVF状态STOP 0X110<XXXXXXXXXXX>停止当前操作(C3没有定义)STOP WRDN0X01X<XXXXXXXXXXX>停止当前操作并掉电(C3、C0没有定义)RINT0X110<XXXXXXXXXXX>读OVF和EOM标志(C3没有定义)图13-2 SPI端口控制寄存器位及含义1. 放音过程(1) 执行上电命令(POWER UP)。(2) 延迟等待上电结束(当采样频率为8KHz时,上电延迟时间约为25mS)。(3) 执行“SET PLAY”命令,设置放音段起始地址。录音、放音段起始地址与每段最短时间及放音长度有关。例如,对ISD4002-120芯片来说,最多有600段(段地址编号为000599),每段最短录音时间为200mS。如果每段记录一个单音,长度为400mS(即每个单音占用两段),则第n个单音对应的段地址为(n×2)。(4) 执行“PLAY”命令,从当前地址开始放音,遇到段结束标志EOM或存储器末尾标志OVF时停止放音,同时引脚输出低电平,指示当前段播放结束。当需要播放两段或两段以上时,如果段与段之间间隔很小时,可在上一段播放结束后,延迟一段时间(需通过试听确定延迟时间的长短,一般为数十mS)后再播放下一段。放音过程如图13-3(a)所示。在放音操作过程中,执行“STOP”或“STOP WRDN”命令时,将终止当前放音操作。2. 录音过程(1) 执行上电命令(POWER UP)。(2) 延迟等待上电结束(当采样频率为8KHz时,上电延迟时间TPUD约为25mS)。(3) 再执行上电命令(POWER UP)。(4) 延迟两倍上电等待时间(即延迟2×TPUD时间)。(5) 执行“SET REC”命令,设置录音段的起始地址。(6) 执行“REC”命令,从当前地址开始录音,直到出现存储器末尾标志OVF信号。在录音过程中,未录到存储器末尾时,就执行“STOP”或“STOP WRDN”命令,将终止当前录音操作,并产生EOM标志。因此,可利用这一特性在芯片上录制多段语音信息。可见,录音过程与放音过程相似,只是每次录音操作操作只能录一段,如图13-3(b)所示。图13-3 放音、录音流程(四) SPI总线接口时序及命令格式芯片支持8位、16位命令格式,传输时序如图13-4所示,ISD4000系列语音芯片SPI总线参数如表13-3所示。从ISD4000系列语音芯片SPI总线时序可以看出:其SPI总线时序与SPI总线接口存储器EEPROM 25C01/02/04兼容。在接收控制命令时,先接收LSB(这要求SPI总线控制器先输出LSB);空闲时,SCLK为低电平,在SCLK上升沿锁存器MOSI引脚上的信息。表13-3 ISD4000系列语音芯片SPI总线参数符号参数最小典型最大单位TSSS片选信号建立时间500nsecTSSH片选信号保持时间500nsecTDIS串行输入数据DI建立时间200nsecTDIH串行输入数据DI保持时间200nsecTPD输出延迟500nsecTDF输出延迟到高阻态500nsecTSSmin片选信号高电平时间1secTSCKhiSCLK 高电平时间400nsecTSCKlowSCLK低电平时间400nsecF0SCLK频率1000kHz(a) 传输时序(b) 8位命令格式(c) 16位命令格式图13-4 命令格式(五) 典型应用电路及与MCS-51的连接MCS-51芯片一般没有内置SPI总线部件,可通过软件方式模拟SPI总线操作时序控制ISD4000系列语音芯片的操作,典型连接线路如图13-5所示。图13-5 与MCS-51芯片的典型连接(六) 参考驱动程序根据图13-5连接方式,下面给出了与SPI模拟总线驱动程序、组合播放、从指定段连续播放、单段录音有关的参考程序段,完整程序参阅磁盘文件实验十三(ISDN4000系列语音驱动程序).ASM。MOSI BIT P1.5MISO BIT P1.6SCLK BIT P1.7ISDSS BIT P1.4;片选信号MIC_C BIT P1.3 ;功放电源控制,同时也作放音/录音标志(0-放音、1-录音)ISDBUF DATA 50H ;ISD语音芯片命令缓冲区 ;50H单元存放命令码(C4-C0)及段高3位地址(A10-A8) ;51H单元存放段低8位地址(A7-A0)ISDBUFSP DATA 52H ;播放指针TASK3 DATA 53H ;语音播放状态,b2-b0记录放音或录音状态ISDTIME DATA 54H ;语音播放延迟时间XmtDat DATA 60H ;段缓冲区RECNO EQU 0F0H ;可录音的最小段号;初始化外中断INT0SETB IT0 ;下降沿触发(采用查询方式检测);-从指定段连续播放初始化 CLR MIC_C ;设置放音标志 MOV ISDBUFSP, #0 ;设置播放的起始段号 MOV TASK3, #05H ;启动标志(未上电标志)HERE1: LCALL ISD_RD_A ;调用逐段播放过程 MOV A, TASK3CJNE A, #0, HERE1SJMP $ ;虚拟等待;-段组合播放初始化 ;把待播放的段编号(一次最多可播放16段)装入播放缓冲区内 ;当待播放的段号不足16时,在播放段后放0FFH,作为结束标志 MOV R0, #XmtDat MOV R0, #02h ;初始化语音段缓冲区 INC R0 MOV R0, #01H INC R0 MOV R0, #22hINC R0 CLR MIC_C ;设置放音标志 MOV ISDBUFSP, #0 ;初始化播放指针 ;-段组合播放启动 MOV TASK3, #05H ;启动标志(未上电标志)HERE2: LCALL ISD_RD ;调用段组合播放过程 MOV A, TASK3 CJNE A, #0, HERE2SJMP $ ;虚拟等待 ;-单段录音初始化 MOV R0, #XmtDat MOV R0, #xxh ;段地址送缓冲区首字节 INC R0 MOV R0, #xx ;录音时间送缓冲区第二字节 SETB MIC_C ;设置录音标志 ;-单段录音过程启动 MOV TASK3, #05H ;启动标志(未上电标志)HERE3: LCALL ISD_WR ;调用单段录音过程 MOV A, TASK3 CJNE A, #0, HERE3SJMP $ ;虚拟等待;把语音缓冲区语音段送IDS4000芯片播放子程序PROC ISD_RD;入口参数:TASK3置为05H ;b2-b0记录放音或录音状态 ;000-空闲 ;001-执行上电延迟(25ms) ;010-段播放延迟 ;011-段间延迟 ;101-未上电标志ISD_RD: JNB MIC_C, RUN ;录音状态,不执行! JMP EXIT ;退出RUN: MOV A, TASK3 ANL A, #07H ;保留标志位b2b0 CJNE A, #000B, NEXT1 ;b2b0为000,空闲 JMP EXIT ;退出NEXT1: CJNE A, #101B, NEXT2 ;b2b0为101,未上电,先执行上电操作 ;执行“POWER UP” (上电)命令 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV R0, #20H ;00100XXX,执行上电操作 LCALL SPIBW ;调用SPI总线控制命令写入子程序 MOV ISDTIME, #5 ;延迟时间为5*5ms(即25ms) MOV TASK3, #1 ;进入上电延迟状态 JMP EXITNEXT2: CJNE A, #001B, NEXT3 ;b2b0为001,处于上电延迟期间,检查延迟时间NEXT30: MOV A, ISDTIME JZ NEXT31 ;不是0,上电延迟时间未到,等待 SJMP EXITNEXT31: MOV A, #XmtDat ADD A, ISDBUFSP MOV R0, A MOV A, R0 ;取出待放音段编号 MOV B, #2 ;假设每一单音占用两个最小段 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 ;命令码送命令缓冲区 LCALL SPIBW ;调用SPI总线控制命令写入子程序 ;执行PLAY命令 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV A, #0F0H ;11110XXX,执行PLAY/REC命令 MOV R0, A ;命令码送命令缓冲区 LCALL SPIBW ;调用SPI总线控制命令写入子程序 ;开始放音 MOV TASK3, #02H ;b2b0置为010态(修改作业号) CLR IE0 ;清除INT0中断标志(采用查询方式确定段 ;播放是否已结束) SJMP EXITNEXT3: CJNE A, #2, NEXT4 ;b2b0置为010 ;属于段播放期间延迟 JB IE0, NEXT41 ;INT0中断无效,即未遇到EOF或VOF标志 SJMP EXIT ;等待NEXT41: CLR IE0 ;清除INT0中断标志 INC ISDBUFSP ;指针加+1 MOV A, ISDBUFSP CJNE A, #16, NEXT42NEXT42: JC NEXT43 ;指针大于或等于16,缓冲区所有段已播放结束 SJMP NEXT441NEXT43: MOV A, #XmtDat ADD A, ISDBUFSP MOV R0, A MOV A, R0 ;取出将要播放的段编号 CJNE A, #0FFH, NEXT44 ;尽管指针<16,但缓冲区内已经没有需要播放的段号NEXT441: MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV R0, #10H ;0001X XXX,执行STOP WRDN命令,停止当前操作 LCALL SPIBW ;调用SPI总线控制命令写入子程序 SETB MIC_C ;关闭功率放大器电源 MOV TASK3, #0 ;将b2b0置为000,结束播放 SJMP EXITNEXT44: MOV TASK3, #3 ;进入段间延迟状态 MOV ISDTIME, #8 ;延迟时间为8*5ms(即40ms) SJMP EXITNEXT4: CJNE A, #3, EXIT ;b2b0处于011态,属于段间延迟 JMP NEXT30 ;处理方式与上电延迟相同EXIT: RETEND;把IDSN4000语音芯片内的语音段逐一播放出来PROC ISD_RD_A;入口参数:TASK3置为05H ;b2-b0记录放音或录音状态 ;000-空闲 ;001-执行上电延迟(25ms) ;010-段播放延迟 ;011-段间延迟 ;101-未上电标志ISD_RD_A: JNB MIC_C, RUN ;录音状态,不执行! JMP EXIT ;退出RUN: MOV A, TASK3 ANL A, #07H ;保留标志位b2b0 CJNE A, #000B, NEXT1 ;b2b0为000,空闲 JMP EXIT ;退出NEXT1: CJNE A, #101B, NEXT2 ;b2b0为101,未上电,先执行上电操作 ;执行“POWER UP” (上电)命令 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV R0, #20H ;00100XXX,执行上电操作 LCALL SPIBW ;调用SPI总线控制命令写入子程序 MOV ISDTIME, #5 ;延迟时间为5*50ms(即25ms) MOV TASK3, #1 ;进入上电延迟状态 JMP EXITNEXT2: CJNE A, #001B, NEXT3 ;b2b0为001,处于上电延迟期间NEXT30: MOV A, ISDTIME JZ NEXT31 ;不是0,上电延迟时间未到 SJMP EXIT ;退出,继续等待NEXT31: MOV A, ISDBUFSP MOV B, #2 ;假设每一单音占两个最小段 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 ;命令码送命令缓冲区 LCALL SPIBW ;调用SPI总线控制命令写入子程序 ;执行PLAY命令 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV A, #0F0H ;11110XXX,执行PLAY命令 MOV R0, A ;命令码送命令缓冲区 LCALL SPIBW ;调用SPI总线控制命令写入子程序 ;开始放音 MOV TASK3, #02H ;b2b0置为010态(修改作业号) CLR IE0 ;清除INT0中断 SJMP EXITNEXT3: CJNE A, #2, NEXT4 ;b2b0处于010态,属于段播放期间延迟 JB IE0, NEXT41 ;INT0中断无效,即未遇到EOF或VOF SJMP EXIT ;等待NEXT41: CLR IE0 ;清除INT0中断 INC ISDBUFSP ;指针加+1 MOV A, ISDBUFSP CJNE A, #0F0H, NEXT42NEXT42: JC NEXT43 ;指针>=F0H,退出 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV R0, #10H ;0001X XXX,执行STOP WRDN命令,停止当前操作 LCALL SPIBW ;调用SPI总线控制命令写入子程序 SETB MIC_C ;关闭功率放大器电源 MOV TASK3, #0 ;将b2b0置为000,结束播放 SJMP EXITNEXT43: MOV TASK3, #3 ;进入段间延迟状态 MOV ISDTIME, #10 ;延迟时间为10*5ms(即50ms) SJMP EXITNEXT4: CJNE A, #3, EXIT ;b2b0置为011 ;属于段间延迟 JMP NEXT30 ;处理方式与上电延迟相同EXIT: RETEND;从指定地址开始录音(单段录音)PROC ISD_WR ;从指定地址开始录音(单段录音);入口参数:TASK3置为05H ;b2-b0记录放音或录音状态 ;000-空闲 ;001-执行上电延迟(25ms) ;010-录音过程的再上电延迟 ;011-录音延迟 ;101-未上电标志ISD_WR: JB MIC_C, RUN ;非录音状态,不执行! JMP EXITRUN: MOV A, TASK3 ANL A, #07H ;保留标志位b2b0 CJNE A, #00H, NEXT1 ;b2b0为000,空闲 JMP EXITNEXT1: CJNE A, #101B, NEXT2 ;b2b0为101,未上电,先执行上电操作 ;执行“POWER UP” (上电)命令 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV R0, #20H ;00100XXX,执行上电操作 LCALL SPIBW ;调用SPI总线控制命令写入子程序 MOV ISDTIME, #5 ;延迟时间为5*5ms(即25ms) MOV TASK3, #1 ;进入上电延迟状态 JMP EXITNEXT2: CJNE A, #001B, NEXT3 ;b2b0为001,处于上电延迟期间 MOV A, ISDTIME JZ NEXT31 ;不是0,上电延迟时间未到 SJMP EXIT ;退出,继续等待NEXT31: ;再执行“POWER UP” (上电)命令 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV R0, #20H ;00100XXX,执行上电操作 LCALL SPIBW ;调用SPI总线控制命令写入子程序 MOV ISDTIME, #10 ;延迟时间为10*5ms(即50ms) MOV TASK3, #2 ;进入再上电延迟状态(时间50ms) SJMP EXIT ;退出NEXT3: CJNE A, #010B, NEXT4 ;b2b0为010,处于再上电延迟期间 MOV A, ISDTIME JZ NEXT41 ;不是0,再上电延迟时间未到 SJMP EXIT ;退出,继续等待NEXT41: MOV R0, #XmtDat MOV A, R0 CJNE A, #RECNO, NEXT42NEXT42: JNC NEXT43 ;小于允许录音段地址,关闭电源退出 SJMP NEXT51NEXT43: MOV B, #2 ;假设前面每一单音占用两个最小段 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, A ;命令码送命令缓冲区 LCALL SPIBW ;调用SPI总线控制命令写入子程序 ;执行REC命令 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV A, #0B0H ;10110XXX,执行REC命令 MOV R0, A ;命令码送命令缓冲区 LCALL SPIBW ;调用SPI总线控制命令写入子程序 ;从地址开始开始录音 MOV TASK3, #03H ;b2b0置为011态(修改作业号) MOV R0, #XmtDat+1;取录音时间 MOV ISDTIME, R0 ;录音时间送计时单元 CLR IE0 ;清除INT0中断 SJMP EXITNEXT4: CJNE A, #3, EXIT ;b2b0为011,处于录音等待期间 JB IE0, NEXT51 ;INT0中断效,即遇到VOF ;检查延迟时间是否为0? MOV A, ISDTIME JZ NEXT51 ;录音已经结束 SJMP EXIT ;录音尚未结束,退出!NEXT51: CLR IE0 ;清除中断 MOV R0, #ISDBUF ;语音命令缓冲首地址送R0 MOV R0, #10H ;0001X XXX,执行STOP WRDN命令,停止当前操作 LCALL SPIBW ;调用SPI总线控制命令写入子程序 SETB MIC_C ;关闭功率放大器电源 MOV TASK3, #00 ;将b7、b6置为00,结束播放EXIT: RETEND;控制命令送ISD4000语音芯片(16位命令格式)PROC SPIBW ;SPI总线控制命令写入子程序;入口参数:16位命令码(两字节)存放在ISDBUF缓冲区内;出口参数:无;使用资源:R0、R6、R7及Acc、PSW、DPTR(使用进位标志C)SPIBW: CLR EA CLR SCLK ;空闲时SCLK处于高电平,以减小功耗。而,ISD采用 ;正极性SCLK脉冲头。因此,在片选信号SS为低电平前 ; 先将SCLK置为低电平 CLR ISDSS ;片选信号为低 MOV R0, #ISDBUF+1 ;取命令码低位字节 MOV R6, #2 ;传送两字节LOOP2: MOV A, R0 MOV R7, #08H ;移动次数LOOP1: RRC A ;带Cy右移。 MOV MOSI, C ;CPU输出数据。 SETB SCLK ;利用SCLK上升沿锁存输入的数据。 NOP ;由于SCLK信号时钟频率最高为1MHz,即高低 ;电平时间必须大于400uS,可根据晶振频率插入 ;0-2条NOP指令(对于晶振频率在12MHz以内时,不用) CLR SCLK ;时钟信号为低电平 DJNZ R7,LOOP1 DEC R0 ;指针减1,指向下一字节 DJNZ R6, LOOP2 SETB ISDSS ;执行结束后将SS引脚置为高电平。 SETB SCLK ;空闲时SCLK处于高电平,以减小功耗。 SETB EA RETEND五、实验内容1. 写出ISD4002语音芯片的读写控制程序,逐段播放实验板上ISD4002语音芯片内已录好的语音信息。2. 在空白处录制5S左右的语音信息。3. 在实验九(1)基础上,实现每按下一个按键时,通过语音芯片报出键名。实验15 无线解码接收一、实验目的(1) 理解无线收发系统组成、工作原理。(2) 理解PT2262或与之兼容的固定编码芯片信息帧格式;理解软件解码原理、实现方法以及软件解码程序编写要领。(3) 初步掌握自适应软件解码程序设计规则。(4) 理解MCS-51芯片内PCA模块的功能和使用方法。二、实验设备与器材仿真器及附件、图0-1所示实验电路板各一套(需带ASK无线接收模块),PT2262编码遥控器或门磁一只、导线一批。三、实验原理与电路1. 无线收发系统典型无线收发系统如图15-1所示,由ASM无线接收/解调模块、一个或多个PT2262编码遥控器(或无线探头)组成。图15-1 典型无线收发系统2. PT2262编码芯片信息帧格式PT2262或与之兼容的固定编码芯片性能稳定,价格低廉,是无线探头、廉价遥控器的首选编码芯片。这类芯片编码长度为24位,一信息帧由同步头、地址码、数据码三部分组成,如图15-2所示。同步头高电平持续时间为4(是编码芯片振荡周期,在25s120s之间,由振荡电阻决定),间歇期为124;编码位采用PWM调制,脉宽比为1