基于51单片机的数码录音放音系统设计

发布日期:2023-03-10
基于51单片机的数码录音放音系统设计

电工优优今天要和大家分享的单片机相关信息,接下来我将从基于51单片机的数码录音放音系统设计这个方面来介绍。

引言

在经济不断发展,电子科学技术迅猛提升的现今。数码录音对于现如今的众多电子产品来说,已是常带有的功能了,它已经被用在了许多的地方。例如手机、电脑等人们常用的电子设备上,以及社交App微信、QQ等,语音信息为人们的生活提供了很大便利。在工业生产、交通、通信等方面的运用得到不断创新。

在你无法凭借记忆记住重要谈话,或者重要会议的重要内容的时候,它便体现除了它的优势,清晰完整无误的记录下你要记录的东西,而你能够拿出更多的时间来处理其他事情。

本次设计的数码录音放音系统,就是在此基础上添加一些更适用的功能,能录制多条语音信息的同时还能实现快进快退、继续暂停功能。能从录音中更好的提取的信息。设计具有一定的应用价值。

1 系统概述

1.1 任务要求

综合运用所学的模拟电子技术、数字逻辑电路、C语言、单片机原理及应用、传感器等专业知识,设计出一套数码录音放音系统。系统实现录音、放音、播放停止、快进快退、删除、显示相关信息等功能。

1.2 主要研究内容

本次设计就利用单片机和语音芯片来实现一个数码录音放音系统。对于数码录音放音系统的最基本要求便是可以录音、播放、暂停、快进、快退、显示相关信息、录音条目选择、删除要求。STC89C52该款单片机资源丰富,再加上与ISD4004语音芯片的结合来实现语音的存储与回放,通过单片机的控制可以实现语音的录放的功能。

主要研究内容由信号处理模块、语音录放模块、和音频放大模块三部分组成。并选用STC89C52为主控器。利用51型单片机对ISD语音芯片的控制实现对语音的录、放。并加入功放、麦克、扬声器等人性化功能。

采用语音芯片进行信号处理并把处理结果送往主控器。由主控器控制语音模块的录放。语音录放模块主要由ISD语音芯片及一些外围元件组成,主要完成语音的录放及语音的存储等。音频放大模块主要由LM386及部分外围器件构成,主要是对录放的声音信号进行放大。

鉴于此, 本系统的设计采用ISD4004语音芯片和STC89C52单片机的结合,完成数码录音录放系统的设计。并通过一些外部人机交互功能,设计出一套数码录音放音系统。系统实现录音、放音、播放停止、快进快退、删除、显示相关信息等功能。

2 设计方案及元器件介绍

2.1系统设计总体方案

数码录音放音系统的主要功能是实现语音的录音、播放与停止、快进与快退、删除、播放选择以及能显示相关信息。要实现语音的录音、播放与停止、快进与快退、删除、播放选择的方法很多,可供选择的器件也很多。由于单片机等微控制器的出现和数字电路技术的发展,使得现在语音的录音与放音、快进与快退变得易于实现。本系统设计采用单片机作为微控制器。选用字长为8位的STC89C52单片机作为控制器。

目前能与单片机配合使用实现本系统设计的语音芯片有很多,其中不乏性能优越的语言芯片。ISD公司生产的ISD4004语音芯片就是一款性能优越的语音芯片。ISD4004芯片采用CMOS技术,内含振荡器、防混淆滤波器、平滑滤波器、音频放大器、自动静噪及高密度多电平闪烁存贮阵列。引脚包括电源、时钟、语音信号模拟输入/输出端、与MCU接口(SPI接口)几部分。芯片采用多电平直接模拟量存储技术,每个采样值直接存贮在片内闪烁存贮器中,因此能够非常真实、自然地再现语音。

ISD4004系列单片录放时间为8~16 min,采样频率可为4.0/5.3/6.4/8.0 kHz,频率越低,录放时间越长,而音质则有所下降。芯片设计基于所有操作必须由微控制器控制,操作命令可通过串行通信接口(SPI或Mi—crowire)送入。由于ISD4004的众多优点,本设计就采用它作为录放音器件。

数码录音放音系统设计主要有六个部分,录音模块部分、放大器部分、控制处理部分、数据存储部分、中断按键部分、显示部分。如图2-1所示。

以STC89C52单片机作为主控器,通过ISD4004语音芯片进行语音的录制与播放。由语音采集电路采集的经过ISD4004的处理与保存,录好的语音信息再通过LM386功放进行信号的放大再播放。中断按键与单片机相连接通过单片机的控制从而实现系统的功能。LCD1602与单片机配合显示数码录音放音系统的各种信息。以上为本次设计的电路设计总体方案。

2.2主要器件介绍

2.2.1 ISD4004语音芯片

ISD4004语音芯片与其他类型语音芯片相比, ISD4004具有如下优点: 首先是记录声音没有段长度限制, 并且声音记录不需要A/D 转换和压缩。其次, 片内信息存于FLASH存贮器中,可在断电情况下保存100 年(典型值),反复录音10 0000次。此外ISD4004具有记录时间长(8-16分钟, 本次设计采用的为8分钟的ISD4004语音芯片)的优点。最后ISD4004开发应用还具有所需搭配的电路较为简单的优点。ISD4004芯片管脚如图2-2所示。

芯片采用的多电平直接模拟量存储技术, 每个采样值直接存贮在片内FLASH存贮器中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,避免了一般固体录音电路因量化和压缩造成的量化噪声和"金属声"。基于以上的优点,这也是我这次论文选择该语音芯片的原因。

ISD4004芯片有如下特点:

(1)单片8至16分钟语音录放。

(2)内置微控制器串行通信接口。

(3)3.3V单电源工作。

(4)多段信息处理。

(5)工作电流25-30mA,维持电流1μA。

(6)不耗电信息保存100 年(典型值)。

(7)高质量、自然的语音还原技术。

(8)100000次录音周期(典型值)。

(9)自动静噪功能。

(10)片内免调整时钟,可选用外部时钟。

该芯片的上电顺序:器件延时TPUD后才能开始操作。因此,用户发完上电指令后,必须等待 TPUD,才能发出一条操作指令。

例如从00 从处发音,应遵循如下时序:

发POWERUP 命令;

等待TPUD(上电延时);

发地址值为00 的SETPLAY 命令;

发PLAY 命令器件会从此00 地址开始放音,当出现EOM 时,立即中断,停止放音。

如果从00处录音,则按以下时序:

发POWERUP命令;

等待TPUD(上电延时);

发POWERUP命令

等待2倍TPUD;

发地址值为00的SETREC命令;

发REC命令,器件便从00地址开始录音,一直到出现OVF(存贮器末尾)时,录音停止。

表2-3 ISD4004指令表

2.2.2 LCD1602液晶显示

LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5X7或者5X10等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有也有间隔起到了字符间距和行间距的作用,正因为如此,所以他不能很好的显示图形。目前常用16*1,16*2,20*2和40*2行等的模块。

一般的LCD1602字符型液晶显示器的内部控制器大部分为HD44780,能够显示英文字母、阿拉伯数字、日文片假名和一般性符号。

LCD1602是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块。一般1602字符型液晶显示器实物如图2-4如下。

LCD1602具有如下特性:

(1)+5V电压,对比度可调

(2)内含复位电路

(3)提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能

(4)有80字节显示数据存储器DDRAM

(5)内建有160个5X7点阵的字型的字符发生器CGROM

(6)8个可由用户自定义的5X7的字符发生器CGRAM

2.2.3 STC89C52RC单片机

STC89C52RC是宏晶科技公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52RC使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52RC为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52RC 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。其引脚图如图2-4所示。

其内部结构主要组成为:

(1)8位CPU,8kbytes程序存储器(ROM);

(2)256bytes的数据存储器(RAM);

(3)32条I/O口线,111条指令,大部分为单字节指令;

(4)21个专用寄存器;

(5)3个可编程定时/计数器,6个中断源,2个优先级;

(6)I/O口:4个8位并行I/O口,既可用作输入,也可用作输出;

(7)T/C:3个定时/记数器,既可以工作在定时模式,也可以工作在记数

图2-5 STC89C52引脚图

模式;

(8)一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;

(9)片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率为12M。

2.2.4 LM386音频功率放大器

LM386是国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。LM386的封装形式有塑封8引线双列直插式和贴片式,原理图如图2-6所示。

图2-6 LM386芯片

特性:

(1)静态功耗低,约为4mA,可用于电池供电;

(2)工作电压范围宽,4-12V or 5-18V;

(3)外围元件少;

(4)电压增益可调,20-200;

(5)低失真度;

3 硬件设计

3.1 系统各部分电路设计

3.1.1单片机最小系统电路单片机最小系统,也称为最小应用系统,它是指由最少元件组成可以使单片机正常工作的系统。单片机最小系统大致包括电源电路、复位电路、晶振电路三部分组成。单片机最小系统电路如图3-1所示。

图3-1单片机最小系统

电源电路:作为电子元器件,单片机也是需要供电的。单片机供电有一个范围,本系统使用的STC89C52单片机,它一般使用5V电源。在使用的时候,可以从USB接口当中获取5V电源。为此搭建了电源电路如图3-2所示。

图3-2电源电路

复位电路:单片机通电需要复位一次,因此,复位电路也是单片机最小系统的一部分。由电容C1与电阻R07组成的复位电路。单片机通常有一个低电压复位引脚,即当输入到低电平时,单片机复位。当电阻给电容器充电时,电容器的电压缓慢上升到VCC。当芯片复位脚接近低电平时,芯片复位接近VCC,因此芯片停止复位并完成复位。

晶振电路:单片机正常工作是需要一个时钟的,因此需要在晶振引脚外接一个晶振。单片机有两个引脚为外部晶振的输入口,晶振的两端接这两个IO口。把晶振直接的连接在IO口上会导致系统工作不稳定,因为在晶振启振一瞬间会产生电感,为了消除电感带来的干扰,可分别在晶振的两端接电容到地,这两个电容取值在10~33P之间即可,从而让晶振工作的时候更加稳定。

3.1.2 LCD1602显示电路

数据端口D0至D7与单片机P0.0至P0.7的I/O口相连用于数据的传输,数据/命令选择RS与单片机P2.7相连,读/写选择接电源地线(高电平时进行读操作,低电平时进行写操作)。使能端E连接单片机P2.6口。由单片机P2.6与P2.7端进行控制。LCD1602显示电路如图3-3所示。

图3-3LCD1602显示模块

3.1.3 信号收集放大处理电路

信号收集放大处理电路由ISD4004语音芯片与LM386芯片组成。ISD4004语音芯片主要负责采集信号。LM386芯片主要负责信号的放大处理。由于ISD4004语音芯片需要3.3V的电压供电。因此需要搭建一个由3.3V的芯片(AMS117-3.3V电源稳压芯片)组成的电路,把5V电压转成3.3V从而给ISD4004语音芯片供电。3.3V电压如图3-4所示。

图3-4 3.3V电压电路

片选端口(SS)连接于单片机P3.6口。串行输出端口(MOSI)连接于单片机P3.5口。芯片数据地(Vssd)与模拟地(Vssa)全部与地线相接。外部时钟(XCLK)连接地线。同相模拟输入(IN+)与反相模拟输入(IN-)分别与电容、电阻以及麦克风组成信号采集电路。自动静噪(AMCAP)接电容接地。音频输出(AUDOUT)与电位器R22串联接与LM386芯片信号输入端口进行信号的放大处理。电位器R22的作用是调节音量大小。LM386两个增益端口1脚与8脚相连,中间串联一个1K电阻与一个10uF的电容。当两个增益端口相连10uF的电容时,电压放大倍数为200倍。5脚(Vout)为信号输出端口串联电容C10连接喇叭可放音。信号收集放大处理电路如图3-5所示。

图3-5信号收集放大处理模块

3.1.4 按键控制电路 (楷体小四号)

按键控制模块由按键开关S0-S4分别与单片机的P1.2-P1.6端口连接,用于控制单片机实现系统功能。S0为录音条目切换,S1为录音按键,S2为放音按键S3为删除按键,S4为退出按键。按键控制电路如图3-6所示。

4 软件设计

4.1 程序总体设计

本次毕业设计的程序用全部由C语言编写完成,编程软件用的是Keli uVision5来进行程序的编写。编写程序时采用多文件编写方式,运用时在主函数里调用即可。

设计以MCS-51系列的单片机作为主控核心,ISD4004做录放音部分及外部电路组成的一个数码录音放音系统。系统实现录音、放音、播放停止、快进快退、删除、显示相关信息等功能。

程序设计中由以下几个主体部分组成,主程序处理部分、按键处理部分、ISD4004语音处理部分、LCD1602信息显示部分。程序以多文件方式进行编写,更易于对程序的处理与调用。

程序流程图如图4-1所示。

图4-1程序总体框图

主程序如下;对LCD1602进行初始化,并显示上电后的信息,再对ISD、计数器进行初始化,打开芯片使能端并延时。在while循环中调用各部分函数,使之显示数码录音放音系统的功能。

void main()

{

lcd1602_init();

L1602_string(1,1,"lcd init");

isd_init();

isd_stop();

timer_init();

EA = 1;

delay_ms(10);

while(1)

{

key_handle();

isd4004_handle();

lcd1602_handle();

}

}

4.1.1 ISD录音程序设计

录音程序设计大致为三部分,即通信命令函数(SendCmd)、自动放音函数(isd_autoplay)、自动录音函数(isd_autorecord)。

通信命令函数:内容主要包括ISD芯片通信端spi开启与关闭,以及录放音地址的配置,还有命令的调用。

void SendCmd(unsigned char cmd,unsigned int addr)

{

unsigned char ar;

SS=0; //ss=0,打开spi通信端

delay(5);

ar=(unsigned char)(addr);

spi_send(ar); //发送地址低位

ar=(unsigned char)(addr>>8);

spi_send(ar); //发送地址高位

spi_send(cmd);//发送命令

SS=1;

delay(5);

SCLK=0;

}

5 系统测试

5.1 系统实物

5.2 系统实现功能概况

系统上电之后,按下自锁开关LCD1602会进入录音条目选择界面。按键开关从左至右功能分别为条目选择、录音、播放、删除、退出。条目选择共4条,共可以录音4条语音信息。选择相对应的条目可以实现录音、播放、删除。

当按下录音键后,系统开始录音。录音完毕时,按下退出键。再按播放键可播放录音内容,同时第一个按键能实现快进,第二个按键能实现快退,第三与第四按键能实现继续与停止。只有在播放模式下这四个按键才能实现快进、快退、继续与停止的功能。

选择相对应的条目,在按下删除键即可删去该条目的语音信息。通过调节电位器可以调节喇叭音量大小。

5.3 系统的不足及改进方式

本系统在播放录音时会有少量的噪音,可能由以下原因造成:

(1)整个系统完全是手工焊制,线路之间存在干扰;

(2)ISD4004语音芯片的数字地与模拟地没有分别走线,全部接到了一起,存在干扰;

(3)语音输入放大电路的放大倍数不够,噪声没有得到足够的抑制。

另外由于语音芯片的限制,该录音芯片时间过短,可选取存储空间大一些的芯片来取代。该语音芯片也不是数字信息存储,不能和PC端交互,在改良时,可以选取数字存储类的芯片。

整个系统的设计合理,外围电路结构简单,方便调试;单片机余留有I/0 口,方便系统的升级和扩展;单片机的所有程序均使用c一51进行编写,方便调试和阅读。整个系统工作稳定,操作方便。本设计的设计原理完全可以用在公共汽车上,作为语音报站器使用,也可以用在银行和医院等一些需要自动播报语音信息的公共场所。在本设计的基础上稍加扩充,就可以满足实际应用的需要。