基于单片机的语音存储和播放系统设计.doc
. .基于单片机的语音存储和播放系统设计摘要在常见的电子产品或自动控制设备中,如果参加语音功能即能极大地提高人机界面的友好性,方便用户操作。在许多场合需要语音存储与语音播放技术和单片机结合在一起。常规的模拟化语音处理系统能实现语音的存储与回放功能,但效果不佳。本设计选用功能强大的单片机STC89C52作为主动器件,采用数码语音芯片ISD4004作为系统的语音存储和播放芯片,选用LCD1602作为系统的显示模块,并同时采用扫描按键的方式实现系统的各类参数的调整。从而实现了一个完整的基于单片机的语音存储和播放系统的设计。本文首先对系统中用到的单片机和语音芯片以及现实模块进展了方案分析论证,从而提出了系统的整体功能框架,然后分别对系统的各个功能模块进展了硬件电路设计和软件设计,最后对本设计进展了总结与展望。关键词:STC89C52 ISD4004 语音存储 语音播放Design of Voice Storage and Playback System Based on MicrocontrollerAbstractIn mon electronic products or automatic control equipment, if adding voice capabilities that can greatly improve the friendly man-machine interface, user-friendly operation. On many occasions the need to store voice bined with voice playback technology and Microcontroller. Conventional analog of voice processing systems to achieve storage and playback of voice, but to little avail.The design features a powerful microcontroller STC89C52 chosen as the active devices, the use of digital voice chip ISD4004 chip as voice storage and playback system, as the system of choice LCD1602 display module, and also be achieved by scanning the keys to adjust the various parameters of the system. In order to achieve a plete Microcontroller design based voice storage and playback system. Firstly, the system used in the Microcontroller and voice chip and realistic analysis module of the demonstration program, which made the overall framework of the system function, and then separately for each module system's hardware design and software design, the final design of the a summary and outlook.KEYWORDS:STC89C52 ISD4004 Voice StorageVoice playback目录第1章绪论4第2章系统总体方案论证52.1 系统设计方案选择52.1.1 主控模块的方案选择52.1.2 显示模块的方案选择62.1.3 语音模块的方案选择72.2 系统总体方案设计7第3章系统硬件电路设计83.1 主控模块电路设计83.1.1 STC89C52单片机简介83.1.2 STC89C52最小系统电路设计93.2 显示模块电路设计113.3 语音模块电路设计123.4 系统参数设置电路设计153.5 系统电源电路设计16第4章系统软件设计174.1 主程序流程图设计174.2 子程序流程图设计184.2.1 录音子程序184.2.2 播放子程序19致谢20参考文献21附录22第1章 绪论在常见的电子产品或自动控制设备中,如果参加语音功能即能极大地提高人机界面的友好性,方便用户操作。目前语音效劳行业越来越广泛,如电脑语音钟、语音型数字万用表、手机话费查询系统、排队机、监控系统语音报警以及公共汽车报站器等。在许多应用场合,设计者需要将语音系统和单片机结合在一起1。单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点。现代人类生活中所有的几乎每件电子和机械产品中都会集成有单片机,单片机可以说是世界上数量最多的计算机2。手机、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有单片机。而个人电脑中也会有为数不少的单片机在工作。可以说,单片机能够在语音功能的实现应用中发挥重大的作用。近年来,语音信号处理技术研究的突飞猛进,为数字语音存储和播放系统提供了新的开展空间。对语音的采集、处理从以前简单的波形编码转变为参数编码、压缩,从而大大减少了存储的数据3。目前比拟典型的语音器件有美国的ISD公司生产的ISD系列语音芯片。ISD系列语音芯片采用模拟数据在半导体存储器直接存储的专利技术,即将模拟语音数据直接写入到单个存储单元,不需经过A/D或D/A装换,因此能够较好的真实再现语音的自然效果,防止了一般固体语音电路因为量化和压缩所造成的量化噪声和失真现象4。本设计选用功能强大的单片机STC89C52作为主动器件,采用数码语音芯片ISD4004作为系统的语音存储和播放芯片,选用LCD1602作为系统的显示模块,并同时采用扫描按键的方式实现系统的各类参数的调整。从而实现了一个完整的基于单片机的语音存储和播放系统的设计。本文首先对系统中用到的单片机和语音芯片以及现实模块进展了方案分析论证,从而提出了系统的整体功能框架,然后分别对系统的各个功能模块进展了硬件电路设计和软件设计,最后对本设计进展了总结与展望。第2章 系统总体方案论证2.1 系统设计方案选择根据设计要求可知,本系统的功能模块大致可分为主控模块、显示模块、语音模块、系统电源模块以及系统参数设置模块。显示模块实时的显示语音播报信息,语音模块实现语音的存储和播放功能,系统参数设置模块主要辅助上述模块实现各自功能,系统电源模块为系统提供工作电源,主控模块主要负责协调所有功能模块一起协同工作。各个模块的具体方案选择如下。2.1.1 主控模块的方案选择方案一:选用AT89C52作为系统的主控芯片,AT89C52芯片内部集成了8K的Flash,外加8K的ROM存储空间,具有存储空间较大,且存取速度快的优点,同时兼容所有MCS-51系列单片机。但是AT89C52不能实现ISP在线编程的功能,这样就使得整个开发调试过程显得繁琐,且开发效率低,同时在调试过程中需要对芯片屡次的插拔,很容易对芯片造成损坏5。方案二:选用STC89C52作为系统的主控芯片,STC89C52片内集成了64K的Flash存储空间,存储空间极大,且存储速度快。STC89C52具备AT89C52具备的所有功能。最为重要的是STC89C52提供ISP在线编程的功能,这样就使得整个开发过程变得高校便捷,在调试过程中不用屡次的插拔芯片,对芯片也能起到很好的保护作用6。综上所述,再考虑到本系统设计的多功能万年历需要实现众多的功能,初步估计系统程序可达40K左右,且需要反复调试实现设计要求的所以功能。应选用方案二,选用STC89C52作为系统的主控芯片。2.1.2 显示模块的方案选择方案一:采用LED动态扫描的方式实现系统的显示功能,LED数码管价格低廉,特别适用于显示数字,LED数码管与单片机连接电路简单,但是随着LED数码管位数的增加,占用单片机IO端口资源也越来越多。方案二:采用点阵式数码管的方式实现系统的显示功能,点阵式数码管采用8*8的发光二极管组成显示区域,特别适用于显示各类文字信息,且价格相对高昂,如果仅仅用来主要显示数字信息显得浪费。方案三:选用LCD1602液晶模块实现系统的显示功能,LCD1602显示区域大,且能方便的显示各类数字,文字,图形信号,功能强大,且与单片机接口电路简单。综上所述,考虑到本设计中显示局部主要用于显示数字信息,而且显示内容较多,应选用第三种方案作为系统的显示方案。2.1.3 语音模块的方案选择方案一:采用单片机编写闹钟程序配合蜂鸣器的方式实现系统的语音报时功能。这种方式能减少系统芯片的使用,降低系统的整体功耗,但是因为系统内部的时间延迟问题,采用这种方式会对系统的整体效果产生严重的影响。方案二:采用专用的语音芯片实现系统的语音报时功能。选用美国ISD公司出品的ISD4004,该芯片具有连接电路简单、功耗极低、抗干扰能力强等众多优点7。综上所述,本系统的语音模块选用第二种方案,采用专用的语音芯片ISD4004实现系统的语音报时功能。2.2 系统总体方案设计综上所述,本设计选用STC89C52单片机为核心控制器件。显示模块选用LCD1602,可一次性显示16*2个字符,完全能满足系统的需求。语音芯片选用美国ISD公司出品的ISD4002,该芯片具有连接电路简单、功耗极低、抗干扰能力强等众多优点。同时本设计采用按键实现系统参数调整的功能。系统总体功能框图如图2.1所示。图2.1 系统总体功能框图第3章 系统硬件电路设计3.1 主控模块电路设计3.1.1 STC89C52单片机简介本设计选用的主控芯片STC89C52是STC公司生产的一个基于51内核的8位单片机。STC89C52是一个低电压,高性能CMOS 8位单片机,片内置通用8位中央处理器,同时在片内集成了Flash闪存存储器单元,正因为实现了上述的诸多功能局部,STC89C52单片机以其强大的功能优势,能较好的适用于各类复杂的控制应用场合。STC89C52系列单片机都采用40脚的封装形式,在其40个引脚中包含了32个通用的输入输出端口,能灵活配置在各种控制场合;还包含了2个外部中断端口,能实现各控制系统的中断处理过程;同时还包括了3个16位的定时器计数器,能实现各种准确的定时计数功能;2个全双工通信端口,能实现全双工通信;以及包含了2个读写端口8。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发本钱。其引脚图如图3.1示。图3.1 STC89C52引脚分布图3.1.2 STC89C52最小系统电路设计能让单片机正常工作的最简单单元硬件电路,即称为单片机最小系统电路。一般来说,单片机最小系统包括晶振电路、电源电路、复位电路、程序下载电平转换电路等根本电路。3.1.2.1 晶振电路单片机都是在系统时钟脉冲的驱动下进展工作的,因此产生时钟脉冲的晶振电路是单片机最小系统中不可或缺的局部。51系列的单片机内部都集成了一个振荡电路,在搭建单片机晶振电路时,只需在单片机外部接入一个振荡晶体作为系统振荡源,此振荡源就能和单片机内部的振荡电路构成一个能够产生时钟脉冲信号的晶振电路,单片机的工作速率都是由晶振电路的频率决定的。单片机晶振电路图如图3.2所示。图3.2 晶振电路图电路中的两个跨接在石英晶体两端的两个电容 C1,C2主要起到协助振荡器起振和微调振荡频率的作用,其取值X围一般为10-33pF,在本设计中电容C1、C2均取值33pF。本设计中的外部石英晶体选取频率为12MHZ,故系统时候周期为1/12µs。3.1.2.2 复位电路如图3.1所示,51系列单片机的第9脚是单片机的复位端口,只要通过此复位端口向单片机内部连续输入4个机器周期的复位信号就可实现单片机的复位,单片在成功接收到复位信号后,即控制单片机的各个端口状态都回复到初始化状态。单片机复位电路图如图3.3所示。图3.3 复位电路图电解电容C2、电阻R3构成复位电路。51系列单片机的复位电平均为高电平,因此只要在单片机的复位引脚加上高电平,单片机即处于复位状态。在系统上电后,电容C2开场其缓慢的充电过程,同时单片机的复位引脚的电平慢慢的由高电平向低电平转换,电容C2完成充电过程后,单片机的复位引脚那么处于稳定的低电平状态,至此单片机的整个上电复位过程进展完毕,单片机上电复位的时间由电容容值与电阻阻值共同决定。3.2 显示模块电路设计液晶显示模块LCD1602已广泛应用在各类电子产品中,在电子产品中使用LCD1602主要用于显示特殊符号、各种类型的数字以及图形。LCD1602液晶显示模块具有超低功耗、较小体积、可显示各类不同的内容等优点。LCD1602液晶显示模块可以同时显示2行字符,每行包括16个字符,单片机可通过LCD1602的三个控制端口RS、R/W、EN实现对LCD1602的控制,LCD1602的工作电压为5V,同时具有字符比照度调节和背光功能。LCD1602液晶显示模块已广泛应用于测试仪表、计算器、家用电子产品中。LCD1602主要技术参数如下:l 显示容量为16*2个字符;l 芯片工作电压为1.4-5.5V;l 工作电流为2.0mA5.0V;l 模块最正确工作电压为5.0V;l 字符尺寸为36.5*81mm。其引脚功能说明如表3.1所示:表3.1 LCD1602引脚接口说明表引脚序号引脚符号引脚说明引脚序号引脚符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极LCD1602时序图如图3.4所示。图3.4 LCD1602读写时序图LCD1602液晶显示模块和单片机的连接电路图如图3.5所示。图3.5 LCD1602液晶显示模块连接电路图3.3 语音模块电路设计本设计的语音模块选用专用语音芯片ISD4004。ISD4004是美国ISD公司生产的采用直接模拟技术的语音芯片,该芯片采用EEPROM存储方法将模拟语音数据直接写入半导体存储单元中,具有音质自然、可反复录放、抗干扰、低功耗等许多优点。ISD4004语音芯片的根本技术指标如下:l 工作电源:+5V;l 工作电流:15mA;l 待机电流:0.5uA;l 信噪比:S/N=43dB;l 录音时间长度:20s;l 可分段数:160段;l 每段时间长度:20s/160段=0.125s/段;l 录放次数:10万次以上ISD4004引脚分布图如图3.6所示。图3.6ISD4004引脚分布图ISD4004引脚功能描述表如表3.2所示。表3.2ISD4004引脚功能描述图引脚序号引脚名称引脚功能说明1-6、9、10A0-A7芯片地址端引脚12、13GNDD、GNDA电源地信号14、15SP+、SP-喇叭输出16、28VCCA、VCCD电源信号17MIC话筒输入18MIC REF话筒参考19AGC自动增益控制20ANAIN模拟输入21ANAOUT模拟输出23PLAYL电平触发放音24PLAYE边沿触发放音25RECLED录音指示26XCLK外部时钟27REC录音ISD4004与主控单片机STC89C52的连接电路图如图3.7所示。图3.7 ISD4004与STC89C52连接电路图如上图所示,主控单片机通过REC录音、PLAYL电平触发录音、PLAYE边沿触发录音三根控制信号实现对ISD4004的控制,可选择电平触发录音或者边沿触发录音方式,通过向ISD4004的地址信号端口A0-A7输入操作模式选择信号,选择ISD4004的操作模式,ISD4004那么通过MIC话筒输入和MIC REF话筒参考实现话筒的输入,通过SP+和SP-实现喇叭输出,从而实现系统语音报时的功能9。ISD4004内置了很多操作模式,如表3.3所示,这样使得用最少的外围器件可实现最多的功能。表3.3ISD4004的操作模式表A7A6A5A4A3A2A1A0模式功能可组合使用的模式11X00X01A0信息检索A411X00X10A1删除EOMA3、A411X01X00A3循环A111X10X00A4连续寻址A0、A1ISD4004的操作模式介绍如下:A0信息检索:快速跳过信息而不必知道其确切的地址。当控制器输入一个低脉冲,内部地址计数器就跳到下一条信息。此模式仅用于放音,通常与A4同时使用。A1EOM删除:是分段信息变成一条信息,仅在信息最后留一个EOM标志。这个模式完成后,录入的所有信息就作为一条连续的信息。A3信息循环:循环重放位于存储空间起始处的那条信息。如果一条信息完全占满存储空间,那么循环就从头至尾进展。A4连续寻址:正常操作中,重放遇到EOM标志时,地址计数器会复位。A4模式制止地址计数器复位,使得信息可连续录入或重放。当芯片既不是录音也不是放音时,将A4短暂拉低可使地址计数器复位为0。A2、A5两种模式暂时未使用。3.4 系统参数设置电路设计本设计实现的语音存储和播放系统可以实现对存储和播放内容进展调整,以及对播放时间和速度等进展调整,在本次设计中,采用了11个按键来完成这些功能。其电路图如图3.8所示。图3.8系统参数设置电路图3.5 系统电源电路设计本系统中的各个功能模块的供电电源都是+5v,即系统的电源可直接由上位机的USB端口提供,并通过滤波电路,同时设置了系统的上电指示灯,系统电源电路图如图3.9所示。图3.9系统电源电路图第4章 系统软件设计4.1 主程序流程图设计本设计是基于单片机的语音存储和播放系统,其主要功能是通过单片机对语音芯片ISD4004的控制字的写入实现。本系统的主程序流程图如图4.1所示。图4.1系统主程序流程图系统首先进展初始化,然后通过按键将系统状态设置为录音状态,接着扫描按键判断是否有录音键按下,假设有录音键按下,那么控制LCD1602显示系统状态,并延时去抖动,接着开场录用;假设没有录音键按下,那么接着判断是否有播放键按下,假设有播放键按下,那么控制LCD1602显示系统状态,并开场播放。4.2 子程序流程图设计4.2.1 录音子程序录音子程序流程图如图4.2所示。图4.2录音子程序流程图系统首先将ISD4004的CE端至零,那么进入录音状态,然后扫描录音按键是否松开,假设录音键松开,那么表示录音完毕,保存录音;假设录音键没有松开,那么表示录音没有完毕,继续录音,继续录音按键是否松开。4.2.2 播放子程序播放子程序流程图如图4.3所示。图4.3播放子程序流程图系统首先将ISD4004的CE端至零,那么进入播放状态,然后判断播放完毕信号EOM是否为零,假设EOM为零,那么表示播放完毕,假设EOM不为零,那么表示播放未完毕,继续判断EOM是否为零。致谢时光荏苒,仿佛为期四年的大学生涯在转眼间就消失了,刚刚进入大学校园报道的场景都还历历在目,大学四年的时间就在这样的不经意中溜走。回忆大学四年的学习生涯有太多的人和事值得回忆与感谢。四年前懵懵懂懂的我义无返顾的选择的电子相关的专业。在大学四年的学习期间在任课教师的悉心教诲下学到了不少电子专业的根底知识,在增长了自身见识的同时也丰富了自己的视野。但是“纸上得来终觉浅,由于平时一心关注书本上的知识,不太注重平时实践动手能力的锻炼,使得在此次毕业设计中遇到了不少的麻烦,但都在指导教师的精心指导下以及同学们的帮助下成功的解决了所遇到的困难,并从中学到了不少专业知识。在此我要向我的毕业设计指导教师致以最诚挚的感谢,我的毕业设计都是在指导教师的精心指导和悉心关心下完成的,从课题的选择到最后论文的截稿,每一个过程都饱含了指导教师的辛勤汗水,指导教师不但教会了我一些我以前不曾掌握的专业知识,同时指导教师的严谨的治学态度,实事求是的处事态度,精益求精的科研精神都深深的感染了我,在完成毕业设计的同时,让我学会了很多做人做事的方式方法。衷心的感谢我的毕业设计指导教师!其次在此我要感谢在大学四年默默帮过过我的同学、朋友和教师,在你们的帮助下,我才能顺顺利利的完成我的大学阶段的学习。最后,我要感谢一直培养我成人的父母,是你们无私的爱与包容才使我快乐的长大成人,感谢你们对我无私的爱与奉献!参考文献1X建光,金碧波,章皓.基于8051单片机语音控制系统的实现J.自动化与仪器仪表,2006(2):39-41、58.2王洪生.基于单片机的语音播放遥控嵌入式系统的实现J. 科技信息,2010(4):197.3李景,李慧.基于单片机的语音报价系统设计J.仪表技术,2010(10):37-39.4史先桂.单片机在公交车智能报站系统中的应用J.电脑知识与技术,2011,11(7):8297-8300.5陈青.大容量可扩展语音播放系统设计J.电子世界,2013(2):136-138.6曾鹏,林躜,朱晓燕.16位单片机的语音信号处理技术的研究J.XX工学院学报,2003,4(2):16-18.7章立文,王琦.基于SPCE061A 单片机的音乐播放系统J.产业与科技论坛,2011(10):98-99.8屠澄轶.基于凌阳单片机的通用型语音控制系统J.现代电子技术,2010(22):68-70.9陆炜,朱红.一种单片机语音录入和播放系统设计J.实验科学与技术,2008,4(4):154-156.附录1.系统原理图2C语言源程序/*= 1602液晶显示驱动程序 = 参数定义例如: #define LCD_Data P1 sbit LCD_RW=P20; sbit LCD_RS=P21; sbit LCD_E=P22; 程序调用说明: 1) 使用前需先调用 LCD_Init() 对LCD进展初始化 2) 输出字符使用 LCD_PutStr(字符串,输出位置) 输出数字使用 LCD_PutNum(数字,输出位置) 注: 1) 输出位置为031间的整数,为-1时表示先清屏 2) 函数返回值为一整形数,表示当前光标所在位置 3) 此两个函数支持以下转义字符: n 换行 b 退格 输出 ' 输出 ' " 输出 " 调用例如: =*/ #include <REG51.H>#include "LCD1602.H"#include "ISD4004.H"#define uchar unsigned char#define uint unsigned intsbit KEY_REC=P24;sbit KEY_PLAY=P23;sbit KEY_STOP=P22;sbit KEY1=P10;sbit KEY2=P11;sbit KEY3=P12;sbit KEY4=P13;sbit KEY5=P14;sbit KEY6=P15;sbit KEY7=P16;sbit KEY8=P17;unsigned char i=0,sec_count=0,play_count=0;unsigned char num=0;unsigned int sec_addr=0,play_addr=0;uchar datasoute=0,m=0,n=0,sec=0,dis_number=0;uchar key_num=0xff;uchar record_flag=0;uchar play_flag=0;uint code address=0,300,600,900,1200,1500,1800,2100;void record(unsigned int address)play4004(2398);/while(_int=1); /等待一段放音完毕的 EOM 中断信号/delayms(1000); /放音到末尾不能马上再次操作语音芯片,否那么芯片会掉电,这里延时等一下。/*/record4004(address); sec = 0;while(_int=1)&&(KEY_STOP=1) /存储地址换行标志if(_rac = 0) /4004总共2400行,每行175Ms的高电平,25Ms的低电平delayms(30); datasoute+; if(datasoute >= 5) /200ms一次,5次表示录音1Sdatasoute = 0;sec+;m = sec /10;n = sec %10;stopmode(); /停顿powerdown(); /掉电 /记录本次录音所占的行数也就是本次录音有多大 void play(unsigned int address)play4004(address);delayms(1000); uchar Key_Scan(void)uchar key_num=0xff;if(KEY_REC=0) /KEY_REC键按下delayms(10);/按键防抖动if(KEY_REC=0) while(KEY_REC = 0);record_flag=1;play_flag=0; if(KEY_PLAY=0) /KEY_REC键按下delayms(10);/按键防抖动if(KEY_PLAY=0) while(KEY_PLAY = 0);record_flag=0;play_flag=1; if(KEY_STOP=0) /STOP是停顿复位功能delayms(10);if(KEY_STOP=0)while(KEY_STOP = 0); stopmode(); /停顿powerdown(); /掉电m=0;n=0;if(KEY1=0) /STOP是停顿复位功能delayms(10);if(KEY1=0)while(KEY1 = 0); key_num=1;if(KEY2=0) /STOP是停顿复位功能delayms(10);if(KEY2=0)while(KEY2 = 0); key_num=2;if(KEY3=0) /STOP是停顿复位功能delayms(10);if(KEY3=0)while(KEY3 = 0); key_num=3;if(KEY4=0) /STOP是停顿复位功能delayms(10);if(KEY4=0)while(KEY4= 0); key_num=4;if(KEY5=0) /STOP是停顿复位功能delayms(10);if(KEY5=0)while(KEY5 = 0); key_num=5;if(KEY6=0) /STOP是停顿复位功能delayms(10);if(KEY6=0)while(KEY6= 0); key_num=6;if(KEY7=0) /STOP是停顿复位功能delayms(10);if(KEY7=0)while(KEY7= 0); key_num=7;if(KEY8=0) /STOP是停顿复位功能delayms(10);if(KEY8=0)while(KEY8= 0); key_num=8;return key_num;void main(void) int p; delay_lcd(400); LCD_Init(); p=LCD_PutStr("Wele use this",-1); stopmode(); /停顿powerdown(); /掉电while(1)key_num=Key_Scan();if(play_flag=1)LCD_PutStr(" play ",18);switch(key_num)case 1:LCD_PutNum(1,26);play(address0);break;case 2:LCD_PutNum(2,26);play(address1);break;case 3:LCD_PutNum(3,26);play(address2);break;case 4:LCD_PutNum(4,26);play(address3);break;case 5:LCD_PutNum(5,26);play(address4);break;case 6:LCD_PutNum(6,26);play(address5);break;case 7:LCD_PutNum(7,26);play(address6);break;case 8:LCD_PutNum(8,26);play(address7);break;default:break;if(record_flag=1)LCD_PutStr("record ",18);switch(key_num)case 1:LCD_PutNum(1,26);record(address0);break;case 2:LCD_PutNum(2,26);record(address1);break;case 3:LCD_PutNum(3,26);record(address2);break;case 4:LCD_PutNum(4,26);record(address3);break;case 5:LCD_PutNum(5,26);record(address4);break;case 6:LCD_PutNum(6,26);record(address5);break;case 7:LCD_PutNum(7,26);record(address6);break;case 8:LCD_PutNum(8,26);record(address7);break;default:break; /ISD4004语音芯片C51驱动程序源代码#includ