c51中字符串函数
第6卷第3期长沙航空职业技术学院学报
Vo1.6No .3
2006年9月
CHANGS HA AERONAUTI C AL VOC ATI O NAL AND TECHN I C AL C OLLEGE JOURNAL
Sep.2006
基于C51单片机的MP3播放器的设计与实现
严 芸
(无锡商业职业技术学院,江苏无锡 214153)
摘要:介绍一种基于C51内核的单片机MP3解码系统的设计与实现,系统采用高性能51单片机和灵活的模拟音频接口,通过对M P3的编解码算法和编程的改进与优化,实现实时解码过程。
关键词:单片机;M P3;解码器
中图分类号:G467.8  文献标识码:A   文章编号:1671-9654(2006)03-033-04
收稿日期:2006-02-20
  作者简介:严芸(1982-),女,江苏无锡人,教师,从事电子方面的教学工作。
D esi gn and Rea li za ti on of M PEG -1Aud i o Layer III COD EC Ba sed on C 51M i crocon troller
Y AN Yun
(W uxi Institute of Co mm erce,W uxi J iangsu  214153)
Abstract:I n this paper a C51M icr ocontr oller -based MPEG -1Audi o Layer III real -ti m e CO 2DEC is p resented .The syste m adop ts high perfor mance M icr ocontr oller and flexible audi o interface,op 2ti m izes the algorithm ofMP3and realizes the encoding and decoding p r ocess in real ti m e.
Key words:m icr ocontr oller;MP3;decoder
  MP3是MPEG -1音频层Ⅲ(layer Ⅲ)的简称。
MPEG 音频(I O S/I EC11172-3)是目前普遍应用的音频压缩标准,其中层Ⅲ的算法最为复杂,但压缩比最大,效果较好,在低码率条件下基本能达到CD 的音质效果。低数据量和高播放品质的优点使其成为音乐存储、数字广播、网上音乐传输的主要方式。
1 MP3编码系统原理与结构
MP3为获取很高的数据压缩比,根据音频位流语法,采用了较为复杂的位流结构。MP3码流是由很多帧组成,每一帧由帧头、压缩的音频数据及辅助数据等组成。帧头是一个32比特长的数据,它包含输入输出采样率、输出比特率以及单双声道等信息。对每一帧的576(单声道,或1152,立体声)个输入音频采样压缩而得到音频数据,具体的压缩后的比特数可以根据公式得到。
图1是MP3音频编码器的一个流程图。数字
音频采样通过由两个滤波器组成的滤波器组输入到心理声学模型中,由心理声学模型的输出控制音频屏蔽等参数,最终通过量化和霍夫曼(Huff man )编码得到输出的比特流
图1 MP3编码器流程
1.1 滤波器组(Filer bank )
第3期严 芸:基于C51单片机的MP3播放器的设计与实现
MP3中的滤波器组是一个混合滤波器,由一个线性相位滤波器组和一个改进的离散余弦滤波
器(ModifiedD iscrete Cosine Transf or m ,MDCT )组成。该滤波器与MPEG Layer -I 和Layer -II 兼容。
1.2 心理模型(Percep tualModel ,or Psycho 2acoustic model )
心理模型是编码器中最重要的部分,主要由它决定该编码器的压缩质量。它主要计算每一个谱线的能量,用于进行屏蔽计算,它的输出为每一个谱线的屏蔽门限或所允许的最大噪声。如果量化后的噪声在所计算的屏蔽门限之下,其结果是压缩后的音频信号与原始音频信号无法区别。心理声学主要利用了下面的2个原理。第一是人耳的带宽是有限制的,只能感受到一定带宽范围内的声信号,因此带宽范围外的信号可以抛弃。人耳的第二个感知特性是信号的屏蔽作用。一个很强的信号将掩蔽与其频率相近的较弱的信号,但是并不能掩蔽与其频率相差很多的同样强度的信号。
2 MP3
解码系统硬件结构
图2 MP3解码系统结构框图
在该硬件系统的设计中,采用A t m el 公司生产的AT89C51S ND1C 作为主控MCU 。整个系统的结构框图如图2所示。PC 机通过US B 接口实现对U 盘的MP3歌曲、文档等数据信息的存储。系统启动后,由MCU 控制将储存于Flash 中歌曲的码流信息送入MP3解码芯片中解码,并产生解码输出。在系统的DAC 模块把解码输出转换为模拟音频声音后,经一级音频放大并驱动耳机,实现MP3歌曲的播放功能。在按键的控制下,实现对歌曲播放模式、声音音效以及歌曲选择等功能。
系统包括主控MCU 、解码器、Flash 存储系统、供电系统、按键和D /A 转换器等几部分。
2.1 解码部分
这是MP3播放器的核心部件,采用硬件解码技术。在本系统采用AT89C51S ND1C 芯片,该芯片是一块自带MPEG I/II -Layer 硬件解码器和Human I nterface 的51内核单片机。它可支持对8—320Kbp s 基本数据流的解码,支持的取样频率范围为16KHz —48KHz,非常适合于MPEG 的音频解码,并带有数字语音录音的MPEG 播放模块,具有很高的性能/价格比。解码后的信号是可以直接输出到DAC 的立体声、单声道或双声道的数字信号,SPCA751A 与DAC 的接口是可编程的。只要通过通用的串行I/O 口和控制接口就能对MPEG 比特流进行输入/输出和回放控制,系统控制器能很轻易的对MPEG 音频信号进行解码。通过一个通用
的可编程I 2
S 接口,就能把一解码的音频PC M 数据输出到外部的DAC 中,因此,大多数常用的音频DAC 都能和本芯片兼容。
2.2 存储部分目前一般采用32MB 的F LASH 存储器,32MB 的存储器能够存储36分钟128kbp s (达到CD 音质)的音乐,如果是播放16kbp s 的压缩话音,可以存储4个小时的内容。在该系统中采用了S AM 2S UNG 生产的32M F LASH 存储芯片K9F5608U0B
2.3 接口部分
一般通过PC 的US B 接口进行MP3文件的下载,传输速率可以高达12Mbp s 。在主控芯片AT89C51S ND1C 中支持US B1.0规范。
2.4 电源管理便携式MP3的体积小,可以使用3V 电池供电,同时也可以通过US B 接口取电,因此采用低电压以及进行有效的功率管理是非常必要的。
3 MP3解码系统软件结构
Layer III 采用了比较复杂的比特流结构,其编码方法前已述及,解码软件流程如图3所示。首先获得每一
帧的同步字,取得头信息,获得各相应参数,根据对头信息的解析进而获得实际的一帧音频数据。读取主数据获得缩放因子数据和霍夫曼码字,接着根据边信息中霍夫曼码本的选择信息进行霍夫曼解码,然后进行反量化,根据帧头的立体声信息(单、双声道,联合立体声、强度立体声),对反量化结果进行立体声处理。最后通过混叠处理、
长沙航空职业技术学院学报第6卷
I
M DCT 和合成滤波器重建数字音频信号
。图3 MP3解码流程
3.1 信息的读取及相应处理
由于MP3为了获得更高的数据压缩比采用较为复杂的比特流结构,当处理帧的主数据(包含缩放因子和霍夫曼码字)起始位置一般不在该帧边信息后,而是根据边信息中参数main -data -begin 的值决定主数据起始位置的前移字节数。由于main -data -begin 为9bit,其最大值可达511,由
于帧内比特数=帧的大小×位率
采样率,而对于Layer III
每帧有1152个采样。采样率有44.1KH 、48KH 、32KH 三种,码率可从32kbp s 到320kbp s 不等,故而一帧内最大字节数达到1152×320k /(32k ×8)=1440B 。根据main -data -begin 和当前字节数可确定数据缓冲区的内容和大小。在读区帧数据时,只需要将比例因子和霍夫曼码字送入缓冲区即可,而边信息中的参数则可直接作为全局变量。
3.2 读取比例因子、霍夫曼码字并进行霍夫曼解码
根据最大的量化值和信号的局部统计特性选用不同的霍夫曼码表,由于对领域量化值进行编码,故把从零到奈奎思特频率整个频率范围上的量化值分为大值区、小值区和零值区三部分,对大值
区和小值区采用不同的编码策略,大值区每两个量
化值转换为一个霍夫曼码字,而小区值每四个量化值转换为一个霍夫曼码字。考虑到可能有少量极大值的出现,为此设计一个提供额外量化值的方法,当解码出来的值等于某一数时(标准中规定为15),根据当前选用霍夫曼码表的额外比特数读入几个额外比特的数据。对于某些较大的表,采用一种快速搜索的方法,当前搜索节点的增加值为某一定数(MAXOFF =250)时,当前节点下移MXOFF,并加上该节点的移动值,使用该策略能够快速到达表的下半区,缩短了霍夫曼查表的过程及霍夫曼码字的长度。
3.3 非均匀反量化对于不同的快类型采用不同的反量化方式。每帧有两个粒度组组成,根据帧首边信息,粒度组有纯长块组、纯短块组、混合组三种类型。对于长块和短块作用了不同的反量化方式。
3.4 混迭信号的消除对于长块与特殊短块,合成滤波器组的输入在做I M DCT 处理之前要进行混迭信号消除。Layer III 的混迭信号消除采用与FFT 类似的蝶形结构。
3.5 I M DCT
经过混迭消除后的信号要进行I M DCT 变换。长块进行18点到36点的I M DCT 变换,短块进行3个6点到12点的I M DCT 变换,再将这3个长为12的输出矢量进行叠加,生成一个长为36的最终变换结果。
3.6 子带合成滤波器子带合成滤波器将32个等频带宽内的频域信号反变换成时域信号,是由初始化、I
M DCT 、采样值加窗和32个样值叠加输出等部分组成。子带合成滤波器接收到的是经过Hatt m an 解码、反量化、混迭消除及I M DCT 变换的一个通道中32个子带的样值,经过I M DCT 变换后,32个样值将会生成64个中间值。将这64个中间值输入到一个长为1024的F I F O 缓存,再在这1024个值中抽取一半,构成一个512的矢量,进行加窗运算,窗函数的系数由I S O /I EC MPEG 标准中的合成窗系数表格提供。最后将加窗结果进行叠加生成32个时域输出。
在子带合成滤波器中,通过(下转第39页)
第3期程 波,等:基于Lab V I E W的温度测量记录系统 
  单片机实现的功能如图3所示,首先将传感
器来的数字信号取出并转化为两位的十进制数,将个位和十位数分别存放在连续的内存单元中。调用显示子程序将个位、十位数分别送入数码管进行显示,同时利用显示子程序进行延时1s作为采样周期,然后以9600波特率将个位和十位依次发送给PC机。
图4的程序框图上半部分实现了从PC机的COM口每次读取个位和十位两位数的功能,开始读数据时将串口打开,读取完毕将串口关闭。由于从串口传过来的是ASC II码,需要将个位数和十位数分别依次转换成十进制数,然后再乘以不同的权值(个位数权值为1,十位数权值为10)求和即可得到温度值。程序框图
的下半部分实现的功能是将还原成十进制数字的温度值先转换成字符串再存入D盘下一个名为te st1的文本文件中,每一个采样周期存一个数据和采样日期。采样开始的同时将文件打开,结束时将文件关闭。采集的部分温度值如表1所示。
表1 部分存盘数据
t℃Date     t℃Date     142005-12-518∶01∶51152005-12-518∶01∶56 142005-12-518∶01∶52152005-12-518∶01∶57 152005-12-518∶01∶53152005-12-518∶01∶58 142005-12-518∶01∶54152005-12-518∶01∶59 152005-12-518∶01∶55152005-12-518∶02∶00
4 结论
利用LabV I E W强大的图形化程序设计方案在虚拟环境中进行串行设备通信开发提高了开发效率,将虚拟仪器技术与单片机系统相结合,有效地降低了温度采集系统的成本。应用LabV I E W编程能比较容易地实现数据存储,便于事后分析。本文由于采样率不高,所以存储的是ASC II码文件。在采样率高的环境下可以采用二进制文件存储格式,具有更快的处理速度和紧凑的文件结构,避免数据此系统除了可用于温度测量记录外,还可以
,存储的数据可用于发动机试车回放和进一步数据分析处理。
参考文献:
[1] 任清珍,张铮,黄天戌.虚拟仪器在测控系统中的应
用[J].现代计算机,2000(9):87~88.
[2] 张凯.虚拟仪器工程设计与开发〔M〕.北京:国防工
业出版社,2004.
[3] 袁渊,等.虚拟仪器基础教程[M].成都:电子科技大
学出版社,2002.
[4] 孙育才,等.新型AT89S52系列单片机及其应用
[M].北京:清华大学出版社,2004.
[责任编辑 刘敏]
  (上接第36页)I M DCT将32个等频带宽内的频域信号反变化成64个样值。该变化的运算量很大,在实际
中采用的以Lee的FCT为基础的改进型快速算法,将运算量减至原来的1/3左右,存储空间的需要也大为减少。
4 结束语
MP3为取得较好的压缩效果而采用相对复杂的技术,宽带音频信号的取样率也较高(一般为44.1kHz以上),所以MP3编解码的运算量和数据量都相当庞大。MPEG Layer III解码算法在AT89C51S ND1C上验证通过并获得较好的效果,在通过优化后可流畅播放。由于51内核单片机的性能限制,在缓冲时可能会有停顿。
参考文献:
[1] 马小虎,张明敏,严华明.多媒体数据压缩标准及实
现[M].北京:清华大学出版社,1996.
[2] A t m el.AT83C51S ND1C U ser’s Guide[Z].2002.
[3] 何立民.单片机高级教程[M].北京:北京航空航天
大学出版社,1999.
[责任编辑 刘敏]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。