历史上的今天
返回首页

历史上的今天

今天是:2025年01月08日(星期三)

正在发生

2018年01月08日 | 基于AT89S52 和K9F6408U0A 的语音数字系统设计

2018-01-08 来源:21ic

摘要: 在研究传统语音录放电路的基础上,提出了一种基于AT89S52 的音频信号采集、存储与处理系统。该系统以单片机AT89S52 为控制器, 采用键盘和LCD 作为人机界面,ADC0809 采集音频信号, 扩展8 MB 闪速存储器K9F6408U0A作为数字化音频信号的存储器,通过软件滤波滤除噪音;采用PWM 产生声音的原理,使存储在Flash 中的音频数据控制PWM 每个波形的占空比,通过低通滤波器将声音从PWM 的脉冲中分离,并驱动扬声器。实验表明:8 kHz 采样频率和8 位采样位数可获得清晰的语音以及较好的音乐声,语音存储时间达15 min。

数据采集技术涉及领域广,采集信号的动态范围宽,处理数据量大,对系统实时性能要求高。以数字信号的形式对信号进行处理,具有处理速度快、灵活、精确、抗干扰能力强、体积小及可靠性高等优点,满足了对信号快速、精确、实时处理及控制的要求。本设计利用了数字电路的这些优点,对传统的模拟录音电路进行了改进,以较低的成本使性能得到了提高。

1 方案论证

本设计以数字化信号的形式对音频信号进行处理,有以下3 种方案可供选择:

1)直接利用语音芯片进行语音录放。Winbond 公司的ISD系列语音芯片采用了Chip-Corded 专利技术, 声音无需A/D转换和压缩就可直接存储,不存在A/D 转换误差,在一个记录位(BIT)可存储多达250 级声音信号,相当于通常A/D 技术记录容量的8 倍。片内集成了晶体振荡器、麦克风前置放大器、自动增益控制、抗混叠滤波器、平滑滤波器、声音功率放大器等,只需很少的外围器件,就可构成一个完整的声音录放系统。

2)利用DSP 对采样信号进行处理。DSP 是专门为快速实现各种信号处理算法而设计的、具有特殊结构的微处理器,其处理速度远远超过一般的CPU。

3)利用AT89S52 作为系统主控芯片,利用ADC0809 对音频信号进行采集和A/D 转换,将转换得到的数字化音频信号存储到扩展的数据存储器中,利用软件对信号进行数字滤波,最后通过单片机输出PWM 信号来完成放音。

从经济和技术等因素考虑对上述3 种方案进行比较:直接利用语音芯片可以减少很多外围电路, 电路设计方便,但语音芯片使用不够灵活。DSP 具有强大的数字信号处理功能,使用灵活,但该芯片价格较高,不适于一般的应用。方案3)中器件均为常用芯片,易于获取,且价位不高。因此,方案3)为最佳设计方案。

2 硬件设计

图1 为系统硬件结构图。音频信号通过拾音器将声音信号转换为可以处理的电信号,前置放大电路用来对拾音器的输出进行放大, 与A/D 转换电路匹配,A/D 转换电路实现对模拟信号的编码。微处理器是系统的核心,它用来对数字化音频信号进行处理和存储,协调系统各个部分的工作,输出PWM 波来驱动输出电路。

系统硬件结构框图
系统硬件结构框图
图1 系统硬件结构框图。

2.1 单片机

单片机是系统的控制中心, 它主要实现以下的功能:控制LCD 显示语音信号的相关信息, 控制按键识别和功能选择; 控制音频数据的采集并存储在FLASH ROM, 放音时读取Flash ROM 中数据,用软件方法产生PWM 脉冲信号,实现语音的存储和回放。

2.2 声音信号拾取、放大电路

声音信号拾取电路就是将声音信号转换为电信号的装置。本设计选用麦克风,它是一种声敏电阻,其阻值随外界声音信号的变化而变化,将其串联在电路中,电阻的变化形成电压的变化,经过电容通交隔直,就得到了表征声音信号特征的电信号。

然而由于声音信号拾取电路输出电压的幅值很小,为20~25 mV,若将该信号直接与A/D 转换电路相连,由于A/D转换器最小分辨电压也为毫伏数量级, 会产生很大的误差,为了保证系统的精度,在和A/D 转换电路相连之前,需串联一个放大电路, 考虑到声音信号拾取电路的输出信号很小,放大电路的失真度和噪声对系统的精度影响最大,故将其设计为抗共模干扰强的并联负反馈放大电路, 由于音频信号的频宽较大,故选用宽频带,低输出阻抗的双运放NE5532。

2.3 A/D 转换电路

A/D 转换电路由A/D 转换器ADC0809 与系统处理器AT89S52 组成, 主要实现对放大后的声音信号进行采样。

ADC0809 与AT89S52 的电路连接如图2 所示。

ADC0809 与AT89S52 的连接电路
ADC0809 与AT89S52 的连接电路
图2 ADC0809 与AT89S52 的连接电路

从图2 中可以看到,把ADC0809 的ALE 信号与START信号接在一起,这样可使得在信号的前沿写入(锁存)通道地址,紧接着在其后沿就启动转换。启动A/D 转换只需要一条P2.7=0 指令。在此之前,要将P2.7 清零并将最低3 位与所选的通道对应的地址送入数据指针DPTR 中。ADC0809 的转换结束信号EOC 取反后与AT89S52 的INT1 相连,采用中断方式读取A/D 转换结果,并启动下一次A/D 转换。也可定时启动A/D 转换,并读取上次转换结果。


2.4 声音编码存储电路

在采样时每一采样点都会产生1 字节的数字编码信号,由于采样的频率为8 kHz, 若录音15 min, 则所需的存储空间为7.031 25 MB,故系统选用8 MB 的Flash 存储器K9F6408U0A,由于该存储器的地址线和数据线可复用[3],这样可节省I/O 接口。K9F6408U0A 的最大优点在于其命令、数据和地址均可通过8 条I/O 接口线与主控制器进行通信, 大大简化了系统的连线, 增强了系统的稳定性。除8 条I/O 接口线外,K9F6408U0A 还包括以下控制线,1)CLE: 命令锁存使能端,高电平有效。在WE 信号的上升沿,命令信号可通过I/O 口锁入命令寄存器;2)ALE:地址锁存使能端,高电平有效。在WE信号的上升沿, 地址信号可通过I/O 口锁入地址寄存器;3)CE:片选线,低电平有效。在页编程或块擦除操作期间或器件处于忙状态时,CE 高电平将被忽略,4)WE: 写使能口,命令、地址和数据在WE 信号的上升沿被锁定;5)RE: 读使能口,在该口的下降沿将数据送到I/O 口线上,并使内部列地址寄存器加1;6)WP:写保护口,低电平有效,当其为低时,编程和擦除操作禁止;7)R/B:操作状态指示信号。为低时,表示正在编程、擦除或读操作,操作结束后变高。利用上述控制线,从而方便实现系统主控制器对K9F6408U0A 的控制。AT89S52单片机与K9F6408U0A 存储接口电路如图3 所示。

AT89S52 与K9F6408U0A 存储接口电路
AT89S52 与K9F6408U0A 存储接口电路
图3 AT89S52 与K9F6408U0A 存储接口电路。

2.5 PWM 输出电路

本设计采用单片机输出PWM 信号驱动音频放大电路,PWM 输出电路如图4 所示。PWM 是一种利用微处理器的数字输出控制模拟电路的有效技术,对一系列脉冲的宽度进行调制,等效获得所需波形,并且由于没有使用D/A 转换器,系统成本减少很多。PWM 的优点是从处理器到被控系统信号都是数字形式的,无需进行D/A 转换。让信号保持为数字形式可将噪声影响降到最小。此外PWM 信号很容易通过MCU 的软件进行控制,即使电路稍微有些系统误差,易于通过软件进行校正。

图4 中, 利用单片机的P1.7 引脚输出一定宽度的PWM信号,通过三极管整形后,作用在惯性环节上,得到的输出信号PWMOUT 将作用在音频功放电路上,还原为声音。

PWM 输出电路
PWM 输出电路
图4 PWM 输出电路。

2.6 音频功率放大电路

为了使系统有足够大的输出,驱动扬声器发声,便于调节音量, 在PWM 输出电路后使用了音频信号功率放大器LM386 构建功率放大电路,如图5 所示。

音频功放电路
音频功放电路
图5 音频功放电路。

LM386 型音频功率放大器主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在其引脚1 和8 之间外接电阻和电容, 便可将电压增益调为任意值, 直至200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半, 在6 V 电源电压下, 其静态功耗仅为24 mW, 使得LM386 特别适用于电池供电的场合。PWMOUT 为PWM 输出电路的输出,扬声器为8 Ω,0.5 W。经过调试发现将电源+5 V用10 μF 和0.1 μF 的电容滤波后,会减小很多噪声,效果较好。


3 系统软件设计

系统具有录音、放音、暂停、清除存储内容等功能,各种功能由按键来选择,系统首先扫描各个按键的状态,如果有按键按下,就转往相应的处理程序,系统程序流程如图6 所示。

系统流程图
系统流程图
图6 系统流程图。

3.1 系统初始化程序

系统初始化程序主要对单片机中断、定时器、LCD 初始化、键盘、PWM、K9F6408U0A 存储接口,以及ADC0809 地址、程序中要用到的各个变量进行设置。

3.2 按键扫描程序

由于录音和暂停是由和外部中断引脚相连的2 个按键来设置,一旦按键按下就进入录音或放音程序,所以按键扫描程序用于扫描放音键和清除键是否按下。

3.3 录音程序

与外部中断0 相连的按键按下,则进入录音程序。

录音过程实质上是启动ADC0809 对模拟音频信号进行采样, 并将A/D 转换结果存储到外围数据存储器中的过程,故其主要包含对ADC0809 进行读取, 对外围数据存储器进行写入两个部分。

提取声音数据时,要注意采样频率、采样位数、存储容量与存储时间的关系,通常8 kHz 的采样频率和8 位的采样位数可获得清晰的语音以及较好的音乐声,并且占有较少的存储空间。

以8 kHz 的采样频率启动ADC0809,并读取上次采样结果,写到外扩Flash 存储器的代码片段如下:




3.4 放音程序

若P1.0 按下,则执行放音程序。放音过程实质上是读取外围数据存储器中的数据,将其转化为一定宽度的PWM 波,进行输出的过程。读取K9F6408U0A 的子函数如下:

// 函数名称: READBYTE

产生PWM 波形的步骤:1)设置定时器,产生定时中断,若采样率为11.025 kHz, 则设置定时器的定时中断频率为11.025 kHz;2)初始化PWM 模块,产生11.025 kHz 的PWM波形;3)等待定时器中断,在中断处理程序中取采样数据,并设置PWM 占空比寄存器,判断声音是否播放完成。若完成,则关定时器中断,并停止PWM 输出。

3.5 暂停程序

在录音过程中,如果需要暂时停止录音可以按下暂停键进入暂停状态, 再次按下暂停键可以返回暂停以前的状态。

程序中设置了一个变量来指示现在是应该暂停还是恢复。

3.6 存储器内容清除程序

当存储器内容已满,而又需要录音时,可以按下清除按键,清除一定容量的内容,供用户再次使用。

擦除:以块为单位进行擦除。代码片段如下。






4 调试注意事项

系统进行调试时,应注意以下方面:

1)由于在PCM(Pulse Code Modulation)编码及DPCM 编码模式下都要采用8 kHz 的采样率,所以,每次压缩中断服务程序必须在不超过125 μs 的时间内完成,因此,压缩录音处理程序的代码必须进行最大可能的优化,以减少程序执行时间,以免采样和数据处理或信息显示发生冲突,也可避免在中断采样时造成采样点的丢失。

2)在选择ADC0809 的时钟时,经典选择是640 kHz 左右,最初选择将单片机的ALE 端4 分频后作为ADC0809 的时钟信号,但发现影响了LCD 的输出显示。将ALE 改为2 分频后(用1 M 触发)作为ADC0809 的时钟信号,问题得到解决。

3)使用MAX813L 复位芯片替代RC 复位电路,使电路可靠复位,结合软件监控实现看门狗功能。

4)当采样频率为8 kHz,字长为8 位时,存储语言时长超过15 min,回放语音质量良好。

5 结束语

利用K9F6408U0A 8 MB NAND Flash 存储器和单片机PWM 功能可为单片机的应用增加语音功能。对声音采样数据的存储方式是用直接的、原始的采样数据。在具体的实际应用中,可选用内嵌A/D 转换器的STC12C5A08AD,可省去外扩ADC0809,使电路更简洁。创新之处在于不使用专用的语音芯片,实现使单片机应用系统语音的存储与回放。

推荐阅读

史海拾趣

聚洵(Gainsil)公司的发展小趣事

泰科天润(GPT)公司电子行业发展的五个故事

故事一:初创与早期发展

2011年,正值国内碳化硅产业从2英寸晶圆向4英寸迭代的关键时期,泰科天润半导体科技(北京)有限公司应运而生,成为国内最早一批建设碳化硅晶圆制造工厂的民营企业。公司初创时面临着技术、资金、市场等多方面的挑战,但凭借对碳化硅产业的坚定信念和持续投入,逐步搭建起生产线,完成了设备采购和工艺调控,为后续的快速发展奠定了坚实基础。

故事二:产品线扩展与技术创新

随着技术的不断积累和市场的逐步拓展,泰科天润的产品线日益丰富。公司不仅成功推出了600V至1700V系列的碳化硅肖特基二极管产品,实现了批量生产,还不断向更高端的技术领域迈进。2023年,泰科天润推出了多款新品,包括1200V SiC MOSFET、2000V SiC二极管等,并在市场上取得了显著的销售业绩。这些新产品的推出,不仅丰富了公司的产品线,也进一步巩固了泰科天润在碳化硅功率器件领域的领先地位。

故事三:生产线建设与产能扩张

为了满足日益增长的市场需求,泰科天润不断加大生产线的建设和产能的扩张。2023年,公司启动了北京总部基地6/8英寸生产线的建设,目前正在开展土建及桩基工程相关工作,预计2025年年初可实现通线并正式投产。此外,泰科天润还在湖南等地建设了多条生产线,实现了产能的快速增长。这些生产线的建设和产能扩张,为公司的持续发展提供了有力保障。

故事四:市场布局与业务拓展

泰科天润在市场布局上采取了多元化的战略,不仅深耕国内市场,还积极拓展国际市场。公司积极参与各类行业展会和论坛,与国内外客户和合作伙伴建立了广泛的联系。同时,泰科天润还根据不同行业的需求,推出了多套行业解决方案,进一步拓宽了市场应用领域。这些努力使得泰科天润在碳化硅功率器件市场上占据了重要的位置。

故事五:超级充电站项目

泰科天润不仅在产品研发和生产上取得了显著成绩,还在市场应用上进行了大胆尝试。2023年7月,泰科天润携手浏发集团打造的全国产碳化硅超级充电站正式投入运营。这是湖南县级城市首座集“光伏发电、电池储能、液冷超充”于一体的全碳化硅新能源汽车充电站。该项目的成功实施,不仅展示了泰科天润在碳化硅充电技术上的创新实力,也为新能源汽车充电技术的发展提供了新的思路和解决方案。

Actel公司的发展小趣事

Actel Corporation 是一家曾经在可编程逻辑器件(FPGA)领域有所建树的公司。以下是该公司发展的五个相关故事:

  1. 公司创立与初期发展: Actel Corporation成立于1985年,总部位于美国加利福尼亚州。公司创始人包括Bernard Vonderschmitt等人,致力于研发和生产可编程逻辑器件。最初,Actel专注于开发用于航空航天和国防应用的高可靠性FPGA芯片,以满足对于高度可靠性和耐辐射性的需求。

  2. 技术创新与产品推出: Actel在FPGA技术领域取得了一系列创新成果。公司引入了基于非挥发性技术(NVCM)的可编程逻辑器件,该技术使得FPGA芯片能够在断电后保持配置状态,具有低功耗、高可靠性等优点。Actel的产品涵盖了不同规模和功耗要求的市场,广泛应用于航空航天、通信、工业控制等领域。

  3. 市场拓展与国际化发展: 随着产品线的不断完善和市场认可度的提升,Actel逐步开拓了国内外市场。公司在美国设立了销售和技术支持中心,并与全球各地的合作伙伴建立了合作关系,进一步拓展了国际业务。Actel的产品远销至欧洲、亚洲等地区,赢得了广泛的市场认可。

  4. 并购与重组: 随着FPGA市场竞争的加剧和市场需求的变化,Actel在发展过程中进行了一系列并购和重组。其中最重要的一次是2010年,Actel被Microsemi Corporation收购,成为其子公司。这一并购使得Actel能够借助Microsemi的资源和实力,进一步提升产品竞争力和市场地位。

  5. 终止品牌: 尽管Actel曾经在FPGA市场取得一定成就,但随着时间的推移和市场竞争的加剧,Actel品牌逐渐退出市场。2012年,Microsemi宣布停止使用Actel品牌,并将其产品线整合到Microsemi旗下,标志着Actel品牌的终结。

Amerace Electronic Components公司的发展小趣事

随着全球环保意识的提高,Amerace Electronic Components公司积极响应绿色环保号召,将环保理念融入生产和经营中。公司采用环保材料和工艺,减少生产过程中的污染排放。同时,Amerace还致力于推动电子元件的循环利用和回收,为环保事业贡献力量。这种环保理念的践行不仅提升了公司的社会形象,也为公司的可持续发展奠定了基础。

Aydin Corp公司的发展小趣事

Aydin Corp公司诞生于电子行业的初期,当时的市场充满了机遇与挑战。创始人凭借对电子技术的深厚理解和对市场需求的敏锐洞察,决定投身于这一领域。初创时期,公司面临着资金短缺、技术瓶颈和市场竞争等多重困难。然而,通过不懈的努力和持续的创新,Aydin Corp逐渐在市场中站稳了脚跟。

Genesis Microchip公司的发展小趣事

随着第二次世界大战的爆发,全球对国防电子产品的需求激增。GI凭借其在电子技术领域的深厚积累,迅速调整战略方向,积极投身于国防电子产品的研发与生产。公司开发的潜水艇探测设备和其他关键国防电子产品在战争中发挥了重要作用,赢得了军方的高度认可。这一阶段的成功不仅为GI带来了丰厚的利润,也极大地提升了公司在电子行业中的知名度和地位。

Automatic Connector公司的发展小趣事

Automatic Connector公司自创立之初,就专注于电子连接器技术的研发与创新。公司团队不断突破传统设计,推出了多款具有高性能、高可靠性的连接器产品。随着智能手机和可穿戴设备的普及,Automatic Connector的微型连接器在市场上大受欢迎,公司因此迅速崛起。通过与知名电子设备制造商的合作,Automatic Connector逐渐在行业中树立了技术领先的形象,实现了稳健的发展。

问答坊 | AI 解惑

uboot怎么引导内核

之前编译uboot通过了才发现是交叉编译器出现问题还好算是过去,开始引导内核了。看了一下uboot的代码没有关于nand flash分区的信息,不知道该把内核映像下载到哪里。想问一下 uboot是不是没有分区信息吗,我用的是1.2.0的上面没有mtdparts的命令不 ...…

查看全部问答>

4511译码器 中的一些问题!

最近做了一个抢答器的设计,但中间有些问题弄不明白啊!知道咱们论坛里的高手多,特此来请教! 4511 后面需要连接一个七段显示器,这两个之间应该需要一个电阻的吧?需要一个多大的电阻呢? 4511连接的七段显示器能够显示0~9 ,但我只需要1~8 , ...…

查看全部问答>

第一次测试串口通讯问题.有好些疑问

# include # define BYTE unsigned char # define WORD unsigned int BYTE idata txdata[7]={\"ABCDEF\"}; sbit  P15=P1^5 ;//蜂鸣器 void main() {    BYTE h;    WORD k;    P15 = 0x00;// ...…

查看全部问答>

随谈

      原来没有接触过触摸板,正好借此机会体验一下触摸板和低功耗。因为没有之前也没有用过430的单片机,所以也没啥心得,发帖就为能够争取个    TI MSP-EXP430FR5739实验板套件  430单片机到手后主 ...…

查看全部问答>

拒绝忽悠 移动GPU全解读(二)

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 说说被忽略的Shader接下来我们回到Shader。Shader是GPU里负责计算的主要部分,同时占得面积最大,耗电也最多。当今的桌面GPU往往都不再谈三角形生成率,或是像素填充率了,给的指标都是Shader ...…

查看全部问答>

电脑监控仪

电脑监测仪主要是为了保护电脑用户的眼镜。现在人们的生活越来越离不开电脑,比如那些整天坐在电脑前做软件开发,研发工作,或其他工作的人,电脑对他们眼镜的伤害可想而知。所以为了保护广大电脑用户的眼镜,希望能开发出一种产品来给电脑用户带来 ...…

查看全部问答>

单片机学习

单片机的种类很多,想请教一下对于即将毕业的大学生,想从事这方面的工作,是需要学习那几种单片机呢?目前只学习了51,52,msp430的,请问有必要再学习其他的吗,还是把这几种学精就好呢    谢谢各位了 …

查看全部问答>

R7F0C802x Easy Start --串口开发小计

      串口是基本的通讯端口,基本上每个嵌入式处理都自带了至少一个串口了,R7F0C802x当然也不例外。本来以为R7F0C802x的串口是挺简单的东西,看来是太轻敌了,前前后后共花了一周的时间才把它搞定。下面就来总结一下R7F0C802 ...…

查看全部问答>

看看烧毁的LM2596

今天单位返修了几个设备,全部是LM2596烧毁 这个烧毁的最厉害 这个好一些 这个倒是没有烧,直接掉了一个腿 大家一块分析一下烧毁的原因,看芯片的标识是国半的,采购的价格是7块多,也像是真的。TI官网上的资料写的正常工作电压是40V ...…

查看全部问答>

ST F7大赛~智能小区控制系统~μCOSIII移植二

本帖最后由 abofly 于 2015-11-2 19:57 编辑 上一篇的工程未开启FPU,μCOS为最新最新版本,但是后期开启FPU一直出现问题,后改用3.3版本官方例程的FPU入栈方案不符合入栈顺序且造成易造成堆栈空间浪费, 本工程采用了安富莱V5开发板F4的入栈方 ...…

查看全部问答>