1、语音存储与回放 数字电路一、系统方案1题目指标和要求:(1)放大器1和放大器2的增益均可调,增益调整范围为20dB40dB;(2)带通滤波器1和2的通带均为300Hz3.4kHz ;(3)ADC的采样频率为8kHz,字长为8位;(4)语音存储时间不小于4秒(采用62256或容量与其一致的存储器);(5)DAC的转换频率为8kHz,字长为8位;(6)回放语音质量良好。(7)系统的录放功能等可用手动控制,各状态均有相应的指示信号显示。2 方案讨论本题采用数模转换模数转换芯片,语音信号通过耳麦采集进入模拟通道放大滤波后再由芯片抽样采集,经过AD装换后单片机读取存入62256.回放时经过DA转换接至滤
2、波电路,由功放电路功率放大后接到小喇叭输出。其系统组成如下:二.总体分析系统主要由语音处理前向通道、AD转换、单片机控制兼数据处理、DA转换、键盘显示模块及后向处理通道组成。单片机构成系统的控制中心,用来进行控制功能选择和结果显示。通过前级放大,将微弱的电信号放大到2.5v,中间由10uF的电容进行隔离,再通过300Hz3.4kHz的带通滤波器滤除50Hz的影响和高频噪声。ADC0804的参考电压选为+5V,其采集的电压信号范围是0+5V。而语音信号是双极性的,可正可负(滤波器输出信号幅值约为土2.5V),因此,有必要加一直流偏置电压(约为+2.5V),使语音信号变为单极性信号(0+5V),保
3、证ADC0809采样有效,同时也保证其具有一定的采样精度。通过反相加法器将双极性的电信号转换为0+5V的单极性信号。信号通过AD转换后进入单片机进行相应处理,然后DA转换成模拟信号输出,而DA0832输出的为电流,要通过一个运放和其内部的电阻构成I/V转换,得到的输出为0-5V的单极性电压,于是加上一个电平抬升电路,将电压转换为-2.5+2.5V的双极性电压,后极通过300Hz3.4kHz的带通滤波器使之平滑,并用音频功放放大语音信号后输出。三 电路设计1 语音输入和前置放大电路设计声电转换通过驻极体话筒实现,它具有灵敏度高、噪声低、价格低廉等诸多优点。由于驻极体麦克风获得的语音信号非常微弱,
4、需要将语音信号进行放大,为了减少噪声,这里采用低噪声宽频带的音频专用运放NE5534。采用共模信号抑制能力较强的差分放大电路,采用两只(配对)麦克风分别接入差分放大器的正负端,有效地抑制了背景噪声,差分比例放大器的电压放大倍数为R5/R3=100,其电路原理图如图所示图31 语音采集和前置放大2 带通滤波器设计前向通道中的带通滤波器用以消除混叠失真,所以称为抗混叠滤波器;后向通道中的滤波器用于滤出300Hz3.4kHz的语音信号,同时有效地抑制噪声特别是D/A转换后的数字信号,所以称为平滑滤波器。两者均由两阶低通滤波器级联两阶高通滤波器构成。图32 带通滤波器由公式可以算出其中心频率为f=10
5、10Hz,品质因素Q=0.326,Q小于10,故该带通滤波器为宽带带通滤波器,实验结果表明,该滤波器能有效滤除低频分量和高频分量,大大减少了噪声干扰,同时也滤除了多余的高频分量,消除了混叠失真,性能足以满足要求。3ADC0809及外围电路设计ADC0809的工作过程是首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 AD转换,之后EOC输出信号变低,指示转换正在进行。直到AD转换完成,EOC变为高电平,指示AD转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态
6、门打开,转换结果的数字量输出到数据总线上。图33 ADC0809及外围电路4.后向通道由DA转换,滤波,功率放大三大部分组成。DAC0832用作DA转换,滤波模块与前级滤波电路相同,功率放大采用常用的功放芯片LM386,简化了电路。考虑到对于声音信号,过多的高频分量只能增加噪声,所以后接R2,C2构成低通滤波器,截至频率合理的设定在3.4khz100hz。功放部分采用LM386来推动扬声器, LM386电源电压4-12V,音频功率0.25w。LM386功放是它的电源电压范围非常宽,最高可使用到15V,消耗静态电流为4mA,当电源电压为12V时,在8欧姆的负载情况下,可提供几百mW的功率。它的典
7、型输入阻抗为50K。图34 DAC0832及外围电路图35后项模拟通道电路5 总体电路图图36 总体电路图设计四 程序1 程序流程图2 程序#includeabsacc.h#define uchar unsigned char#define uint unsigned int#define AD_0804 XBYTE0x8000#define DA_0832 XBYTE0x9000#define led XBYTE0xff00#define KEY_H XBYTE0xfc00#define KEY_L XBYTE0xfe00uint xdata *RAM;uchar data_AD,data_
8、DA;void delay(uint z) uchar x,y; for(x=z;x0;x-) for(y=110;yy-);void luqu() led=0xfe; RAM=0x0000; while(RAM0x8000) AD_0804=0; TR0=1; while(!TF0); TR0=0; TF0=0; data_AD=AD_0804; *RAM=data_AD; RAM+; led=0xfd;void huifang() led=0x55; data_DA=*RAM; DA_0832=data_DA; led=0xaa;void main() TMOD=0x02; TH0=0x7c; TL0=0x7c; while(1) KEY_H=0xfe; delay(5); switch(KEY_L) case 0xfe: luqu(); break; case 0xfd: huifang();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1