基于16单片机对录音与播放系统设计

更新时间:2024-03-01 00:47:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

专业综合设计报告

项目名称: 录音播放控制器设计

学生姓名: 同组同学:

专业名称:电气技术教育 班 级:

指导教师:张永利等

项目起止日期:2012年3月12日至2012年3月30日

目 录

摘 要.............................................................................................................................. 1 1 概 述.......................................................................................................................... 2 2 总体设计方案............................................................................................................ 3

2.1系统工作原理.................................................................................................. 3 2.2系统功能.......................................................................................................... 3 3 系统硬件设计............................................................................................................ 4

3.1 Atmega16单片机............................................................................................ 4

3.2.1主要特征............................................................................................... 5 3.2.2录放音操作方式................................................................................... 6

4 系统软件设计............................................................................................................ 7

4.1软件设计思想.................................................................................................. 7 4.2软件模块.......................................................................................................... 7 5 系统调试.................................................................................................................. 11

5.1 系统硬件调试............................................................................................... 11 5.2 系统软件调试............................................................................................... 11 设计体会...................................................................................................................... 12 参考文献...................................................................................................................... 13 附 录:程序.................................................................................................................. 14

- 2 -

摘 要

随着计算机技术的发展和在控制系统中的广泛应用,以及设备向小型化、智能化的发展,作为高新技术之一的单片机以其体积小,功能强,价格低,使用灵活等特点,显示出出很强的生命力。可以认为,单片机技术已经成为现代电子技术的十分重要的技术之一,可以使设计的电子产品更具智能化和先进性。进入21世纪以来,开发推出单片机的公司很多,各种高性能单片机芯片市场也异常活跃,新技术的不断采用,更加使单片机的种类、性能以及应用领域不断扩大和提高。

本次课程设计主要目的是制作一个基于单片机的数码录音和播放系统。 单片机具有体积小、集成度高、易扩展、可靠性高、功耗低、结构简单、中断处理能力强等特点,特别适用于数字语音录放和语音识别等数字应用领域。 本次录音播放控制器设计是采用低功耗单片机Atmega16做主控芯片,通过外接电路连接I/O接口控制语音芯片ISD1820来实现8-20s声音的录制与播放,并利用单片机的定时器功能对录制时间进行监测,使录制声音的时间不超过20s。同时将录制时间显示于数码管上实现人机界面的功能。该系统设计成本较低,使用范围较广,在儿童玩具等领域有较好的发展前景。

关键词:Atmega16;语音芯片ISD1820;数码管;人机界面

1

1 概 述

随着电子技术的快速发展,语音处理技术越来越多在工业、交通、通信等领域得到应用。语音处理的理论和技术也日趋完善和成熟。人们对语音技术的实际需求也越来也迫切,使得语音处理实用化产品不断出现。

语音录音播放设备在人们的生活娱乐中一直以不同种类为人们提供各种各样的服务。例如,复读机的出现为学习外语提供了便利,它不仅仅是一种学习工具,更是一种科学的学习方法;录音播放电话机,用来记录通话双方的谈话内容以备参考,并在主人外出时,可在录音播放中留言并收录呼叫方的留言以便事后处理,大大的减少了一些不必要的麻烦。从老式的晶体管录音机到今天的微型录放机不断发展的过程,说明在人们的生活娱乐中语音录音播放设备占有越来越重要的地位,通过录音播放享受生活已经成为人们不可缺少的生活方式。 如今,随着消费类电子的兴起和繁荣以及各类芯片的发展,人们对录音播放设备的需求也不断的增多,录音播放设备应用的领域也不断增加。从以往在生活中的应用渐渐发展到语音识别、语音控制方面的应用。传统的录放解决方案存在电路体积大、录放效果差、稳定性欠佳等弊端逐渐展现出来。语音录音播放系统也在不断的改进传统的录放所存在弊端。并向着体积小、录放效果好、稳定性强、系统更完善的方向发展。本次的录音播放控制器设计正是符合了录音播放设备的这种发展大环境,满足了人们的需要。

2

2 总体设计方案

2.1系统工作原理

本系统是由Atmega16单片机、按键、音频输入、音频输出和数码管等五个主要部分通过硬件电路的连接组合在一起而组成,并通过一系列的操作来完成对语音芯片ISD1820的录音/播放功能。 系统的主要器件结构框图如图2-1所示。

按键ISD4004扬声器Atmega16单片机MIC数码管ISD1820扬声器

图 2-1 录音播放控制器结构框图

2.2系统功能

本系统是由Atmega16单片机、按键、音频录入、音频输出和数码管等五主要部分通过硬件电路的连接组合在一起而组成,并通过一系列的操作来完成对语音数据的录音播放功能。各部分实现的功能为:

Atmega16单片机:录音播放的系统主要部件,并实现录音编码后的数据存储功能。

按键部分:完成对系统的手动控制;按下按键PD2开始录音,同时数码管从0开始计时;按下按键PD3开始播放录音,同时并显示录音时间。按下按键RETEST 复位等待重新开始。

音频录入部分:完成对外来语音数据的采集录入。通过MIC采样语音数据,并经内置自动增益电路处理、AD转换后,编码并存储到存储器中。

音频输出部分:主要是将Atmega16两路音频输出端通过语音集成放大器放 大,经喇叭播放。

3

3 系统硬件设计

3.1 Atmega16单片机

Atmega16是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,Atmega16的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。

Atmega16具有一整套的编程与系统开发工具,包括:C语言编译器、宏汇编、程序调试器/软件仿真器、仿真器及评估板。Atmega16(引脚图如图3-1所示)是一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

本系统采用ATmega16单片机作为中央处理器,通过中断技术来控制ISD1820语音芯片的录音与播音,SPI通信方式控制ISD4004语音芯片,检测按键来进行语音录/播放功能等。引脚图如图1-1所示。采用先进的RISC 结构,集成了JTAG接口,可以通过JTAG 接口实现对Flash、EEPROM、熔丝位和锁定位的编程,提高了调试的效率。

图 3-1 ATmega16引脚图

ATmega16单片机外设特点:

– 两个具有独立预分频器和比较器功能的8 位定时器/ 计数器 – 一个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器

4

列。

– 四通道PWM

– 8路10 位ADC

– 片内模拟比较器

3.2.1 ISD1820主要特征

3.2 语音录放电路ISD1820

– 面向字节的两线接口

– 两个可编程的串行USART

– 具有独立振荡器的实时计数器RTC

ATmega16单片机的最小系统,如图3-2所示。

– 可工作于主机/ 从机模式的SPI 串行接口

– 具有独立片内振荡器的可编程看门狗定时器

图 3-2 Atmega16单片机最小系统原理图

(3)外接电阻调整录音时间; (4)3v单电源工作。

(1)自动节电,维持电流0.5uA; (2)边沿/电平触发放音;

ISD1810,它的基本结构与ISD1110、1420完全相同,采用CMOS技术,内含振

荡器,话筒前置放大,自动增益控制,防混淆滤波器,扬声器驱动及FLASH阵

美国ISD公司于2001年最新推出一种单片8-20秒单段语音录放电路

5

ISD1820的管脚图如图3-3所示。

图 3-3 ISD1820管脚图

3.2.2录放音操作方式

按住REC录音按键不放即录音,RECLED灯会亮起,松开按键录音停止。放音有三种情况:

(1)沿触发放音,按PE键一下即将全段放音,除非断电或放音结束,否则不停止放音;

(2)电平触发放音,按住PL键时即放音,松开按键即停止;

(3)循环放音,置循环放音开关闭合,按动PE键即开始循环放音,只能断电才能停止。

语音芯片ISD1820与ATmega16单片机的连接图如图3-4所示。

图 3-4 录音芯片ISD1820接口电路

6

4 系统软件设计

4.1软件设计思想

总体思路把系统分为录音和放音两种状态,状态的改变用按键控制。录放音都放在中断服务程序里处理,主程序只处理键盘事件。主程序先对系统进行初始化,然后只处理键盘事件,判断按键值,并据此设置相应的系统状态。中断服务程序是通过定时器中断进入的。在中断服务程序中,先判断系统当前的状态,根据系统状态进行相应操作。如果是录音状态,就去取ADC结果进行数字滤波,把滤波结果保存到ISP Flash芯片中,最后清中断标志退出中断服务;

如果是放音状态,就从ISP Flash芯片中读出数据,进行DAC,最后清中断标志退出中断服务;如果是停止状态,就不进行其它操作,直接清中断标志就退出中断服务程序。其主流程图如图4-1所示。

初始化扫描键录音键停止键播放键无键大于20s否是记录录音时间录音状态设置停止状态设置播放状态设置数码管计时停止录音系统状态判断处理

图 4-1 主程序流程图

4.2软件模块

系统软件模块主要分为:数码管显示模块、ISD1820模块、键盘输入模块三个模块。

1、数码管显示模块程序如下: //#pragma data:code 软件自身带有

uchar const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

void show(uint i,uint j)//显示函数 {

7

DDRA=0xff;// 1输出 0输入 DDRn DDRC=0xff;

PORTA=0x00;//1高电平 0低电平 PORTn PORTC=0x00; PORTC=table[i];

PORTA|=BIT(j);//BIT(2) 0000 0100 delay_us(1); }

2、ISD1820模块程序如下: void main() {

//uchar a; DDRB=0XFF;

DDRD=0X00;//DDRD&=0xf3;//1111 0011 PORTD=0xFF; DDRC=0xff; PORTB=0x00; //TCCR1B=0X04; TCNT1H=0XFe; TCNT1L=0XC7; TIMSK|=BIT(2); SREG|=BIT(7); while(1) {

if(PIND==0xfb) { num=0; num1=0;

8

TCCR1B=0X04;//8分频 PORTB&=0x00;

PORTB|=0x40;//开始录音 }

if(PIND==0XF7)//当有按下INT1的时候,启动中断函数 {

PORTB&=0x00; delay_us(10);

PORTB|=0x80;//开始播音 i++;

MCUCR=0X00;

GICR=0X80; PORTD=0xFF; }

show(num1/10,0);//秒 十位 show(num1,1);//秒 个位 show(num/10,2);//毫秒 十位 show(num,3);//毫秒 个位 } }

3、键盘输入模块程序如下:

#pragma interrupt_handler miao:9 void miao()//计时 每次溢出 10ms { a=1; num++; if(num==100) { num1++;

9

if(num1==20)//当到达20秒的时候,停止计时 {

while(a)

{

show(num1/10,0); show(num1,1); show(num/10,2);

show(num,3);

if(PIND==0XF7)//当有按下INT1的时候,开始播音 {a=0;}

}

}

num=0; }

TCNT1H=0XFE; TCNT1L=0XC7; }

#pragma interrupt_handler baochi:3

void baochi()//按下INT1的时候,保持秒数并开始播放录音 { if((i==1)) { while(i) {

show(num1/10,0); show(num1,1); show(num/10,2); show(num,3);

if(PIND==0XFB)//当有按下INT0的时候,结束INT1中断,返回主函数

{i=0; }

} }

}

10

5 系统调试

5.1 系统硬件调试

系统硬件调试主要对已经焊接好的电路进行调试主要有以下几部分:

1.ATmega16单片机的最小系统调试,通过ISP接口对单片机下载程序,观察单片机运行情况,并根据出现的异常情况进行电路调整。

2.音频放大电路调试,把计算机输出的音频信号接入音频放大电路中,观察信号的失真程度,调节电位器观察输出的信号变化。

5.2 系统软件调试

系统软件调试主要对已经调试好的电路进行软件调试主要通过语音芯片ISD1820的软件调试,通过按键来控制I/O口的输出,来控制ISD1820的录音/播放,通过扬声器来确认录制的语音是否正确。

11

设计体会

通过本次专业综合设计,使我们对单片机的了解更加深一步,我发现只有自己动手认真做才能熟能生巧,还有对材料的整理和理解。我刚开始对单片机没有什么概念,通过请教老师和同学,使我慢慢的对单片机有了了解,然后从简单的程序开始学起,经过三个星期的学习,我现在能独自编写出本次综合设计的程序了,很有成就感。本次设计运用到的知识有很多方面,尤其是Atmega16单片机,引脚多,硬件内部线路接通,用起来很方便,还有ISD1820语音芯片与Atmega16单片机之间的连接,以及如何使用ISD1820芯片。

对于硬件方面主要就是看懂电路原理图,对引脚作用的熟悉。对于软件方面则是灵活运用单片机有关的程序语言,还有很多扩展功能,本次设计我们最大的成功之处是在这整个过程,动手动脑解决一个又一个的难题,充分体现我们学校的“动手动脑,全面发展”的校训。希望学校能提供更多的实习机会给我们,使我们学习的理论知识能与实际相结合。

12

参考文献

[1]谭浩强编著.c程序设计.北京:清华大学出版社,1999年. [2]夏宽理编著.c语言与c程序设计.上海:复旦大学出版社,1994年.

[3]窦振中编著.单片机外围器件实用手册一存储器分册.北京:北京航空航天大学出版社, 1998年.

[4]刘海成. AVR单片机原理及测控工程应用:基于ATmega48/ATmega16.北京:北京航空航 天大学出版社,2008.

[5]杨正忠,耿德根. AVR单片机应用开发指南及实例精解.北京:中国电力出版社,2008. [6] 海涛. ATmega 系列单片机原理及应用——C语言教程.北京: 机械工业出版社,2008. [7] 张军. AVR单片机应用系统开发典型实例.北京:中国电力出版社,2005. [8] 沈文、詹卫前等. AVR单片机C语言开发入门指导.北京:清华大学出版社,2003.

13

附 录:程序

/*** 单片机接口:

PC0~7>>>>>>>>>>>>>>数码管段选 PA0~3>>>>>>>>>>>>>>数码管位选

PB6>>>>>>>>>>>>>>>>REC ISD1820开始录音 PB7>>>>>>>>>>>>>>>>PLAYL ISD1820开始播音

PD2>>>>>>>>>>>>>>>>INT0 从0开始计时,并开始录音 PD3>>>>>>>>>>>>>>>>INT1 保持录音时间,并开始播放录音 按下 RETEST 清零

********************************************************/

#include #include

#define uchar unsigned char #define uint unsigned int uchar num=0; //毫秒 uchar num1=0; //秒 uint i=0; uchar a=0;

//#pragma data:code 软件自身带有

uchar const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//*******************延时 us void delay_us(int t) { do t--;

while(t>1); }

//*******************延时 ms void delay_ms(uint t) {

while(t!=0) {

delay_us(1142);

t--; } }

void show(uint i,uint j)//显示函数 {

14

DDRA=0xff;// 1输出 0输入 DDRn DDRC=0xff;

PORTA=0x00;//1高电平 0低电平 PORTn PORTC=0x00; PORTC=table[i];

PORTA|=BIT(j);//BIT(2) 0000 0100 delay_us(1); }

#pragma interrupt_handler miao:9 void miao()//计时 每次溢出 10ms { a=1; num++;

if(num==100) {

num1++;

if(num1==20)//当到达20秒的时候,停止计时 {

while(a)

{

show(num1/10,0); show(num1,1); show(num/10,2);

show(num,3);

if(PIND==0XF7)//当有按下INT1的时候,开始播音 {a=0;} } }

num=0; }

TCNT1H=0XFE; TCNT1L=0XC7; }

#pragma interrupt_handler baochi:3

void baochi()//按下INT1的时候,保持秒数并开始播放录音 { if((i==1)) {

while(i) {

show(num1/10,0); show(num1,1); show(num/10,2);

show(num,3);

if(PIND==0XFB)//当有按下INT0的时候,结束INT1中断,返回主

15

函数

{i=0; }

} }

}

void main() {

//uchar a; DDRB=0XFF;

DDRD=0X00;//DDRD&=0xf3;//1111 0011 PORTD=0xFF; DDRC=0xff; PORTB=0x00; //TCCR1B=0X04; TCNT1H=0XFe; TCNT1L=0XC7; TIMSK|=BIT(2); SREG|=BIT(7); while(1) {

if(PIND==0xfb) {

num=0; num1=0;

TCCR1B=0X04;//8分频 PORTB&=0x00;

PORTB|=0x40;//开始录音 }

if(PIND==0XF7)//当有按下INT1的时候,启动中断函数 {

PORTB&=0x00; delay_us(10);

PORTB|=0x80;//开始播音 i++;

MCUCR=0X00;

GICR=0X80; PORTD=0xFF; }

show(num1/10,0);//秒 十位 show(num1,1);//秒 个位 show(num/10,2);//毫秒 十位 show(num,3);//毫秒 个位 } }

16

本文来源:https://www.bwwdw.com/article/upja.html

Top