基于STC12C5A60S2的U盘音频播放器设计

发布者:SparklingBeauty最新更新时间:2012-11-08 来源: 现代电子技术 关键字:U盘  MP3播放器  STC12C5A60S2  VS1003 手机看文章 扫描二维码
随时随地手机看文章
    U盘即闪存盘,是一种用闪存进行数据存储的介质,通常使用USB插头。U盘体积极小、重量轻、可热插拔也可以重复写入。自其面世后,迅速普及并取代传统的软盘,成为主要的便携存储模式。随着U盘体积的不断减小、存储容量却不断加大,使得U盘的使用范围也不断拓展。然而U盘所储存的数据,现今仍大多通过计算机提取并进行处理,这也局限了U盘的发展范围。
    笔者认为,针对某一特定功能,剥离相应数据对计算机的依赖性,一方面可充分利用U盘数据,另一方面也发挥出USB协议的通用性,使U盘实现所用即所得的便携特性。基于此,设计了U盘MP3播放器电路,主要完成U盘存储的音频文件的数据提取及功能运行任务。该播放器等同于个人计算机的音频处理模块,不仅可识别、提取U盘所存储的MP3、WMA或MIDI格式的文件,并可自行完成音频解码等数据处理工作,最后送入扬声器或耳机进行播放。

1 播放器组成原理框图
    播放器组成原理如图1所示,共由3个主要模块组成:单片机处理模块,由STC12C4A60S52单片机及其外围电路组成;U盘读写模块,由CH375及其外围电路组成;为音频解码模块,由VS1003芯片及其外围电路组成。

a.jpg


    播放器的工作过程是:MCU通过CH375读取来自USB存储设备的数据,并依据功能键的控制指令,将USB存储设备的相关数据送入音频解码模块,在VS1003解码后,送入扬声器或耳机。设置6个人机交互功能按键,分别实现播放、暂停、上一曲、下一曲、增大音量、减小音量等基本操作功能。

2 硬件电路设计
    如图1所示,主要完成U盘读写、单片机处理及音频解码3个模块的电路设计。
2.1 U盘读写模块
    U盘读写模块由CH375及其外围电路组成,其构成如图2所示。

b.jpg


    CH375是USB总线通用接口芯片,支持USB主机及从设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。在USB主机方式下,CH375还提供了串行通讯方式,通过串行输入、输出和中断输出与单片机/DSP/MCU/MPU等相连接。[page]

    CH375的USB主机方式支持常用的USB全速设备,外部单片机可通过CH375按照相应的USB协议与USB设备通讯。CH375还内置了处理Mass-Storage海量存储设备的专用通讯协议的固件,外部单片机可以直接以扇区为基本单位读写常用的USB存储设备。
    设计中,CH375采用主机方式,图中J1为USB插座,可连接U盘等存储设备,D1为指示LED,当检测到USB设备连接时灯亮。当TXD引脚连接到地时,CH375工作在并口方式,此时图中JP1接口D0~D7为双向数据总线,连接单片机。
    单片机连接图中JP2接口,通过程序控制CH375,其功能及特性如表1所示。

c.jpg


    单片机通过写命令来和数据来控制CH375,并通过CH375获得U盘数据。CH375内置相关的固件程序,自动处理了USB等协议。单片机可以通过CH375直接获取U盘扇区的数据,因此只需处理FAT文件系统层就可以实现对U盘文件的操作。
2.2 MCU模块
    MCU模块,由STC12C4A60S52单片机及其外围电路组成。STC12C5A60S2是宏晶科技生产的单时钟/机器周期的单片机,指令代码完全兼容传统8051,但速度快8~12倍,提供Flash程序存储器60 kByte,1 kByte的EEPROM,片上集成1 280 Byte RAM。工作电压5.5~3.5 V,内部集成MAx810专用复位电路,4个定时器,2个串口,2路PWM,8路高速10位A/D转换,ISP/IAP,内置看门狗电路,外部掉电检测电路等。

d.jpg


    图3为播放器MCU模块的硬件电路原理图,其中,JP4为电源输入接口,D1为电源指示灯,排阻Rp1为P0口的上拉电阻。JP2和JP3接到U盘读写模块对应的接口上。由于单片机在5 V电源下工作,而VS1003在3.3 V电源下,所以工作P1口应该接限流电阻到JP1再到音频解码模块对应的接口上。电路设置5个功能按键,“UP”为增大音量,“DOWN”为减小音量,“LEFT”为选择上一曲,“DOWN”为选择下一曲,而“PLAY”为播放/暂停键。
2.3 音频解码模块
    音频解码模块,由VS1003芯片及其外围电路组成。VS1003是一个单片MP3/WMA/MIDI音频解码器和ADPCM编码器。它包含一个高性能低功耗的DSP处理器核VS_DSP、工作数据存储器、为用户应用提供5 kB的指令RAM和0.5 kB的数据RAM、串行控制和数据接口、4个常规用途的I/O口、1个UART、1个高品质可变采样率的ADC和立体声DAC、1个耳机放大器和地线缓冲器。
    VS1003通过一个串行接口接收输入的bit流,可作为—个系统的从机。输入的bit流被解码,然后通过数字音量控制器到达1个18位过采样多位ε-△DAC。VS1003通过串行总线控制解码器,除了基本解码功能,在用户RAM中还可以做其他特殊应用,例如DSP音效处理。

e.jpg


    图4为播放器的VS1003外围硬件电路原理图,其中,AVDD为模拟正电源3.3 V,CVDD为数字正电源2.5 V,IOVDD为I/O正电源3.3 V,模拟地与数字地用0电阻隔离。J1、J2均为3.5音频插座,J1为音频输出,J2为音频输入。
    单片机通过对VS1003寄存器的写入来设置VS1003芯片,对VS1003数据缓冲区写入数据,使其解码。

[page]

3 软件程序流程图
    单片机程序主要解决读取CH375数据,和写入VS1003寄存器用于播放音乐两个问题。其中,5种功能分别与图3的5个功能按键一一对应。软件程序流程图如图5所示。

f.jpg



4 结束语
    如图所示,旨在将音频处理功能从计算机剥离,拓展U盘使用范围,设计了针对U盘音频文件数据处理的播放器电路,并用C语言编写了相关程序。该电路主要由3个模块构成,其中主控器选用增强型51单片机STC12C5A60S2,语音解码芯片采用芬兰VLSI公司的VS1003,而USB设备接口芯片选用南京沁恒公司的CH375,采用USB主机方式,外部单片机无需处理USB协议,就可直接以扇区为基本单位读写常用USB存储设备。
    实际运行结果证明,该播放器完全符合设计预期,U盘即插即用,不仅可播放U盘中指定目录中的MP3文件、WMA文件、MIDI文件,还可以通过按键控制,实现各种功能。整个系统电路的性价比较高,具有较强的可拓性。

关键字:U盘  MP3播放器  STC12C5A60S2  VS1003 引用地址:基于STC12C5A60S2的U盘音频播放器设计

上一篇:基于STC89C52/MAX1771的LED调光系统电路分析
下一篇:基于STC12C5A60S2的教育机器人的设计与实现

推荐阅读最新更新时间:2024-03-16 13:12

STM32 USB 使用芯片内部flash模拟U盘
这次是实现一个使用STM32内部的flash模拟一个U盘。我使用的STM32芯片是STM32F103ZE,该芯片有512K的内部flash,本次工程,我准备用最后的400K空间来模拟一个U盘。本次的工程在之前用NAND或SD卡模拟U盘的工程基础上进行修改。 首次要做的是在外设库组中添加stm32f10x_flash.c文件,因为涉及到内部flash,所以必须添加此文件。接下去,需要修改的文件只有mass_mal.c和memory.c两个了。 先来讲讲memory.c,这个文件修改量很小。在函数的前面,我们可以看到有个:uint32_t Data_Buffer ;数组的定义,该数组的数组元素个数,跟大家所使用的存储器的块大小
[单片机]
stc12c5a60s2 0-30电压测量 有注释
#include STC12C5A60S2.H #include intrins.h #define uchar unsigned char #define uint unsigned int #define ulong unsigned long /*Define ADC operation const for ADC_CONTR*/ #define ADC_POWER 0x80 //ADC 电源控制位 10000000 0X80 / #define ADC_FLAG 0x10 //ADC 完成标志 00010000 0x10 #define ADC_START 0x08
[单片机]
STC12C5A60S2 ADC查询方式
/*------------------------------------------------------------------*/ /* --- STC MCU Limited ---------------------------------------------*/ /* --- STC12C5Axx Series MCU A/D Conversion Demo -------------------*/ /* --- Web: www.STCMCU.com -----------------------------------------*/ /* If you want to use the program o
[单片机]
基于官方库的STM32操作U盘注意的问题
前几天调试了stm32f105基于官方库STM32_USB-Host-Device_Lib_V2.2.0的示例代码读取优盘,调试成功。 在官方库文件STM32_USB-Host-Device_Lib_V2.2.0下Project/USB_Host_Examples/MSC,打开工程。根据你的外部晶振,需要修改系统频率和USB时钟设置。 我用的外部晶振是8M的为例,打开文件system_stm32f10x.c文件,找到函数static void SetSysClockTo72(void) 以下为源码 /** * @brief Sets System clock frequency to 72MHz and configu
[单片机]
基于STC12C5A60S2的教育机器人的设计
目前许多高等教育院校采用教育机器人进行课堂教学和培养学生的创新能力。本文设计的教育机器人通过红外光电传感器阵列检测路面信息并利用模糊自整定PID算法将采集的路面信息和电机运行数据进行实时处理,实现教育机器人的智能巡航并将机器人的状态显示输出。   1 机器人的组成及工作原理   机器人由硬件和软件两部分组成。采用STC12CSA60S2单片机作为系统控制的核心部件,完成路面信息检测、直流电机控制、电机转速检测、数码管显示、蜂鸣器报警以及键盘输入等功能,硬件系统框图如图1所示。      软件部分主要完成路况检测、PID电机控制、输入输出人机接口,可实现各种机器人巡航动作、智能循迹等功能。   2 STC12系
[单片机]
基于<font color='red'>STC12C5A60S2</font>的教育机器人的设计
STM32cube直接生成内部FLASH做U盘的程序注意事项
使用STM32cube配置好相关引脚,开启USB的Mass Storage Class功能 USB_DEVICE中的MSC_MEDIA_PACKET可以设置大一点,增大缓冲区可以提高速度,对于外部spi-flash来说,要大于4096bytes 增加堆栈大小,否则USB无法正常工作 usbd_storage_if.c添加代码: #define FLASH_START_ADDR 0x08010000 // #define FLASH_PAGE_NBR 90 // 30K int8_t STORAGE_GetCapacity_FS(uint8_t lun, uint32_t *block_nu
[单片机]
车载MP3播放器与FM发射器朝时尚化迈进
中国是全球最大的车载MP3播放器和FM发射器的制造中心,占全球产量的60~70%,据估计去年全年出口约为2,000万台。受全球车载音频产品需求上升影响,2008年中国产量预计将增长超过10%。为应对需求增长,厂商需要扩大产能,然而过去两、三年高涨的生产成本和激烈的价格战使多数制造商不准备大幅扩产,同时也有部分公司将产能逐步转向其他车载电子产品,减少车载MP3播放器和FM发射器的销量,仅有少数新厂可能加大投入。 中国车载MP3播放器与FM发射器生产集中在广东省境内,特别是深圳及周边地区。深圳在电子产品研发与生产方面优势明显,拥有成熟的产业供应链,包括方案和零件供应商以及注塑、贴片和组装服务提供商,此外该地区还有大量专门从
[汽车电子]
小米随身WiFi U盘版发布:8GB 售49.9元
随身WiFi 8GB U盘版已上线小米官网   小米称随身WiFi 8GB U盘版采用了MLC闪存颗粒,读写速度要比普通U盘更快,寿命比同类产品长5倍。它内置了独立的钢片天线,信号更好,并且无需驱动即可使用。  新浪手机讯 11月17日下午消息,小米官网新上线了随身WiFi 8GB U盘版,售价49.9元。除了具备原有随身WiFi的特性之外,还内置了8GB存储空间。   小米随身WiFi 8GB U盘版可以将U盘内的文件同时无线分享给多台设备,如手机、Pad、笔记本电脑等,无需再将U盘插来拔去浪费时间,传输数据也不再依赖于数据线,它还自带1TB快盘云存储,支持小米帐号登录,文件存储也更安全。   小米随身WiFi U
[手机便携]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved