一个基于单片机的数码录音和播放系统

著录项
  • CN201610278437.0
  • 20160429
  • CN105957549A
  • 20160921
  • 长沙闽壹湖电子科技有限责任公司
  • 不公告发明人
  • G11C7/16
  • G11C7/16 G11B20/10

  • 湖南省长沙市天心区木莲西路187号天天向上家园第1、5、6栋1323房
  • 湖南(43)
摘要
本发明专利涉及一个基于单片机的数码录音和播放系统,本发明选用凌阳16位单片机SPCE061A和外部存储器W29C040来实现,其具有体积小、集成度高、功耗低、结构简单、中断处理能力强等特点,特别适用于数字语音录放和语音识别等数字应用领域,本发明可以广泛应用于需求的录音较长的场合,如检测温度的存储播放系统,自录语音提示等应用方案。
权利要求

1. 一个基于单片机的数码录音和播放系统,其特征在于,本发明专利涉及 一个基于单片机的数码录音和播放系统,本发明选用凌阳16位单片机SPCE061A和外部存储器W29C040来实现,其具有体积小、集成度高、功耗低、结构简单、中断处理能力强等特点,特别适用于数字语音录放和语音识别等数字应用领域。

2. 根据权利要求1所述的 一个基于单片机的数码录音和播放系统,其特征在于,SPCE061A是中国 台湾凌阳公司生产的十六位单片机,该单片机内置有2路DA转换,8路AD转换及在线仿真等丰富的功能。

3. 根据权利要求1所述的 一个基于单片机的数码录音和播放系统,其特征在于,W29C040是中国 台湾华邦公司生产的4M位的FLASH存储芯片,利用它存储凌阳格式的语音资源,可以长达4分钟的语音录放。

说明书

一个基于单片机的数码录音和播放系统

技术领域

本发明专利涉及数码录音和播放系统领域,具体涉及一个基于单片机的数码录音和播放系统。

背景技术

随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化的发展,作为高新技术之一的单片机以其体积小,功能强,价格低,使用灵活等特点,显示出很强的生命力。可以认为,单片机技术已经成为现代电子技术的十分重要的技术之一,可以使设计的电子产品更具智能化和先进性。进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。单片机SPCE061A的问世,使得16位单片机的科技含量及应用跃上一个新的台阶。在航空航天,机械加工,智能仪器仪表,家用电器,通信系统,智能玩具等领域,单片机都发挥了巨大的作用。所谓单片机是指一块芯片中集成有中央处理器,存储器,基本I/O接口以及定时器/计数器等部件,并具有独立指令系统的智能器件,即在一块芯片上实现一台微型计算机的基本功能。如果是简单的控制对象,只需要利用单片机作为控制核心,不需要另加外部设备就能实现。

同时,随着社会和科技的不断发展,“PC”的到来以开始改善了人们的生活水平。所谓后PC时代,是英文Pervasive Computing,翻译为渗透到各个方面的计算。因而,后PC时代的计算机都以非计算机的形式存在,将渗透到欧文们生活的方方面面。例如,电视机,机器人,数控设备等,其中心控制部件是计算机,但他们都是以嵌入式系统的形式存在。单片机作为计算机技术的一个重要分之,嵌入式系统的先头兵,广泛的应用于智能仪器,机电一体化产品,智能电器,个人数字处理器等领域。随着微电子技术的快速发展,电子系统设计已进入了片上系统时代,单片机的更能也越来越强大,使其成为真正的系统单片机。

单片机是随着微型计算机,单板机的发展及其在智能测控系统中的应用而发展起来的。随着微电子技术的迅速发展,目前世界上各个公司都研制出了各种应用领域的单片机,单片机芯片市场也异常活跃,从8位低端,到高性能的16位,到集成度,速率,可靠性等全方位向更高水平发展的32位系列。随着微电子,半导体工艺的不断进步,单片机芯片在向高度集成化,低功耗的方向发的发展。目前世界上各个公司都研制出了各种应用领域的单片机,如ATMEL公司的80C9X系列,INTEL公司的MCS-5X系列,MOTOROLA的68系列和ZILOG的Z8系列。目前,的凌阳公司最新推出了16位的SPCE系列由于其在语音功能的独特应用,得到了广大客户的认可。

附图说明

图1:系统结构框图。

图2:SPCE061A最小系统。

图3:逐次逼近式的ADC结构图。

图4:音频输出扬声器驱动电路图。

图5:音频输出方式硬件实现图。

图6:W29C040写、擦除流程图。

图7:SIO电路原理图。

图8:SIO读写操作时序图。

图9:SPCE061A与串口通信原理图。

图10:系统软件流程图。

具体实施方式

为了使本发明专利的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明专利进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明专利,并不用于限定本发明专利。

硬件设计:

根据系统设计的要求和凌阳十六位单片机(SPCE061A)所包括的功能,可以利用其所具有的特性完成发明设计所需要达到的各项功能要求。系统结构框如图1,系统具有如下模块:

(1)一路0-3。3V可调模拟电压,可方便地完成AD的数据采集;

(2)采用1×8键盘使各功能通过按键控制;

(3)SIO接口扩展存储芯片W29C040,扩展4M Bits Flash的扩展存储空间存储所录语音数据;

(4)MIC输入电路,配合SPCE061A内置的AGC和OPI电路,获得语音数据;

(5)两路音频输出电路,采用凌阳功放芯片SPY0030A,通过它完成语音的播放;

(6)使用SPCE061A的通用异步串行接口UART来实现与PC机的通讯。

SPCE061A最小系统设计:

SPCE061A内置的SPCE061A最小系统如图2所示,SPCE061A是继µ’nSP™系列产品SPCE500A等之后凌阳科技推出的又一款16位结构的微控制器。与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。较高的处理速度使µ’nSP™能够非常容易地、快速地处理复杂的数字信号。因此,与SPCE500A相比,以µ’nSP™为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种最经济的选择。本发明的录音笔系统的核心采用SPCE061A。芯片提供两个16位通用的并行I/O口:IOA0-IOA15,IOB0-IOB15。这两个口的每一位都可以通过编程单独定义为输入或输出口。其中A口的IOA0-IOA7用作输入口时具有触键唤醒功能,可以应用于低功耗的场合。鉴于所要求功能,本发明将IOA0-IOA7与1×8键盘连接,A0-A7做输入口。SPCE061A的并行I/O口可以通过编程设置为上拉输入、下拉输入、悬浮输入或同相输出、反相输出的状态。要求按键执行程序所定义功能因此设置为下拉输入。

音频电路:

音频输入电路包括MIC录音输入和AGC电路。人的声音频率在300Hz-3400Hz范围之内,因此所设计的录音笔只需要记录这样一个范围的声音信号即可。在这里把要记录的语音信号最高频率定为4KHz,根据公式:f采样=2f,低通规定系统的采样频率为8KHz。当录入的语音信号有高于4KHz的部分时,则把高于4KHz频率的信号认为是噪声。噪声是不需要记录的,所以应该把高于4KHz的声音频率排除在记录范围外,因此需在ADC电路前加一个截止频率为4KHz的前置低通滤波器用来滤除噪声。

SPCE061A内置的AGC电路,它的作用是当输入信号较强时使放大器增益自动降低;当信号较弱时,又使其增益。因此,从MIC输入的音频信号经过SPCE061A内置的AGC电路将语音信号的放大值控制在一定范围内,便可进行AD转换。

输入信号有两个通道:一个由LINE_In通道输入;另一个由MIC_In通道输入。MIC_In一般用于麦克风通道插入,专门用于对语音信号进行采样。语音信号经MIC转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器。在MIC_In前端有两级OP放大器,因此对信号的放大有两种选择,一是在关闭SPCE061A内部自动增益控制电路AGC时,MIC_In前端的OP放大器使信号放大。二是启用AGC自动调整增益的值,以防止信号饱和。AGC能随时跟踪、监视前置放大器输出的音频信号电平,当输入信号增大时,AGC电路自动减小放大器的增益;当输入信号减小时,AGC电路自动增大放大器的增益,以便使进入A/D的信号保持在最佳电平,又可使削波减至最小。当OPAMP2的输出>0。9AVdd时,AGC自动降低OPAMP1的增益,以防止被放大的信号饱和。

A/D转换接口:

逐次逼近式的ADC结构如图3所示,模/数转换器ADC是外界与计算机进行信息传递的通道。它是一种信号转换接口,可以把模拟量信号转换成数字量信号以便输入给计算机对其进行各种处理。芯片采用逐次逼近式原理实现A/D转换。ADC的结构及工作原理是:由10位数/模转换器DAC0、10位缓存器DAR0、逐次逼近寄存器SAR以及比较器COMP组成逐次逼近式的ADC,图3中的ADC有两种工作方式:手动方式和自动方式。在ADC自动方式被启用后,会产生出一个启动信号,此时,DAC0的电压模拟量输出值与外部的电压模拟量输入值进行比较,逐次逼近式控制首先将SAR中数据的最高有效位试设为“1”,而其它位则全设为“0”,即10 0000 0000B。这时,DAC0输出电压VDAC0(1/2满量程)就会与输入电压VIN进行比较。如果VIN>VDAC0,则保持原先设置为“1”的位(最高有效位)仍为“1”;否则,该位会被清“0”。接着,逐次逼近式控制又将下一位试设为“1”,其余低位依旧设为“0”,即110000 0000B,VDAC0与Vin进行比较的结果若Vin>VDAC0,则仍保持原先设置位的值,否则便清“0”该位。这个逐次逼近的过程一直会延续到10位中的所有位都被测试之后,A/D转换的结果保存在SAR内。ADC在手动方式下取消了自动方式的逐次逼近寄存器SAR的功能,取而代之的是内部比较器COMP和缓存器DAR0,以模拟SAR的作用。换言之,手动方式是指须用软件程序来控制模拟信号的输入采样或保持,通过写入A/D数据单元来控制比较器基准电压值VDAC0,以及通过读比较器的比较结果来推测模拟输入电压值VIN。当外部2V的电压模拟信号输入到ADC的输入端上,可试着写入A/D数据单元一个数字量值1000000000B,它实际对应于1.8V电压模拟量。由于2V>1.8 V,故COMP第一次比较输出的结果为“1”,则ADC的转换结果暂为1000000000B。接着写入A/D数据单元下一个数字量值。在对系统硬件设计中,我根据设计要求将ADC设计为手动方式。

D/A转换模块:

单片机内部D/A转换电路的使用与其它内部接口的使用相同,都是可编程控制的接口,通过程序设置其工作方式、工作状态等。SPCE061A单片机内部有DAC1和DAC2两路10位的DAC转换器,可以形成双通道的音频输出,也可以作为其它的模拟输出信号。转换输出是以模拟电流信号的方式分别通过AUD1和AUD2管脚输出。

音频输出电路:

音频输出扬声器驱动电路如图4所示,音频输出电路采用凌阳功放芯片SPY0030。电路中SPY0030的放大倍数被固定为20倍,音量的大小可以通过电位器调整。喇叭左右两个通道音量分立调节并备有两个外部音频信号放大输入端。录入后的语音信号经MIC转换成电信号,由隔直电容隔掉直流成分,然后输入至SPCE061A内部前置放大器,经过2路10位精度的DA转换后,通过功放SPY0030A即可完成语音的播放。

SPCE061A的音频输出有两种方式,一种是音调输出方式(Tone Mode),另一种则为语音输出方式(Speech Mode),如图5所示。二者的区别在于其输出的控制机理不同。前者是通过控制Timer溢出所产生的不同频率来决定声波振动次数的多少,从而决定发出的声音音调的高低,譬如好听的乐音;后者则是用与声音(不论是音乐还是语音)数据采样率相同的速率将声音数据通过数/模转换(D/A)通道还原成音频电压或电流输出,其中声音数据采样率可决定声音音质的好坏,并决定了声音数据所需占据的存储空间。在本系统设计中我采用语音输出方式,数据采样率采用相同的8KHz。

W29C040存储芯片:

W29C040写、擦除流程如6所示,W29C040为32脚DIP封装芯片,工作电压为5V,内部 512K * 8位的快速闪存,它的结构为256字节为一页,每页的擦写时间为5mS,整片擦除时间为50mS。

串行设备输入输出口(SIO):

SIO的电路连接原理如7所示,SIO 的读写操作时序如图8所示。串行输出入端口SIO提供了一个1位的串行接口,用于与其它设备进行数据通讯。在SPCE061A内通过IOB0和IOB1这2个口来实现与设备进行串行交换数据的功能。其中,IOB0用来作为时钟口(SCK),IOB1则用来作为数据端口(SDA),用于串行数据的接收或发送。SIO传输速率最快可设为CPUCLK/4,默认值为CPUCLK/16。SPCE061A的SIO速率最快可达12288KHz。SIO可根据外设的差别来选择不同的寻址模式,有8/16/24位三种寻址模式可选择。

通用串行通信接口UART模块:

为了能使所设计的系统能与PC机进行通讯,我选择了UART模块来实现这一功能。UART模块为系统提供了一个全双工标准接口,用于完成SPCE061A与外设之间的串行通讯。UART的接收信号Rx发送信号Tx分别是芯片的并行I/ O口IOB7和IOB10共用。借助于IOB口的特殊功能和UART IRQ中断,可以同时完成UART接口的接收发送数据的过程。此外,UART还可以通过缓冲来接收数据。也就是说,它可以在寄存器数据被读取之前就开始接收新的数据。但是,如果新接收的数据被送进寄存器之前,寄存器内的旧数据还未被读走,就会发生数据遗失。

UART的硬件电路中需用一个串口线将SPCE061A在线调试器的232接口与PC机端的232接口连接起来,如图9。在设计中需要SPCE061A通过UART接口与PC进行通讯,因此需要对拨码开关S19进行设置,需要将Rx、Tx都拨到高端才能正常通讯(Rx:PC接收数据,Tx:PC发送数据)。扩展RS232接口可直接与计算机进行通信,或者进行单片机之间的双机通信。

凌阳的SPCE061A的波特率=Fosc/2/Scale,其中Fosc是系统时钟频率,Scale为存储单元中的10进制的整数,所以系统时钟频率越高,传输的波特率越高。常用的UART的传输速率在115200B/s,而SPCE061A的系统时钟频率最高可以到40。96MHz,使其传输速率已超过常用的传输速率。

UART 波特率的计算公式如下:

当Fosc=49。152MHz,40。960MHz或32。768MHz

波特率=(Fosc/4 )/Scale

当Fosc=24。576MHz或20。480MHz

波特率=(Fosc/2)/Scale

由此可得出Scale的值(Scale为7024H单元和7025H单元组成的十进制整数)。

软件设计:

在软件设计上(系统软件流程图如图10所示),由于语音资源存放在外扩存储器W29C040上,只能采用手动的方式播放语音。在主函数中首先初始化SIO,这样可以获得存储在W29C040上的语音资源的起始地址与结束地址,这样便于语音控制。另外,需要对图片的显示,在播放语音的同时需要刷新图片,这样采用在中断中填充语音队列的方法来实现。

程序代码:

本发明软件系统设计简单。主要是因为凌阳的十六位单片机开发环境使用方便,并支持C语言与汇编语言的互相调用,且提供丰富的凌阳语音函数库,只要我们了解这些函数的使用方法,我们就可以很容易的实现语音的录放。例如本系统的语音录入和播放代码如下:部分程序如下:

语音的录入

SP_InitW29C040Flash();

SACM_DVR_Initial(Manual);

SACM_DVR_InitEncoder(RceMonitorOn);

if (SACM_DVR_TestQueue()!= Empty)

{

page_buf[n] =SACM_DVR_FetchQueue( );

many_data_write(M_AddrH,M_AddrL,page_buf,n);

}

语音的播放

SP_InitReadW29C040Flash();

SACM_DVR_InitDecoder(DAC1+DAC2);

if(SACM_DVR_TestQueue()!=Full);

{

Ret SP_Read_Data(M_AddrH,M_AddrL++);

SACM_DVR_FillQueue(Ret);

SACM_DVR_Decode ();

}

SACM-DVR相关的API函数

int SACM_DVR_Initial(int Init_Index);

void SACM_DVR_ServiceLoop(void);

void SACM_DVR_Encode(void);

void SACM_DVR_StopEncoder(void);

void SACM_DVR_InitEncoder(RceMonitorOn);

void SACM_DVR_Stop(void);

void SACM_DVR_Play(void);

int SACM_DVR _Status(void);

void SACM_DVR _InitDecode(void);

void SACM_DVR _Decode(void);

void SACM_DVR_StopDecoder();

unsigned int SACM_DVR _ TestQueue(void);

int SACM_DVR _Fetchqueue(void);

void SACM_DVR_FillQueue(unsigned int encoded-data);

int GetResource(long Address);

以上所述仅为本发明专利的较佳实施例而已,并不用以限制本发明专利,凡在本发明专利的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明专利的保护范围之内。

本文发布于:2024-09-24 18:26:55,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/81130.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议