基于S3C2410的简单音乐播放器的实现
2015-10-21臧金梅孙灿郇涛
臧金梅 孙灿 郇涛
摘 要 随着信息技术的飞速发展,嵌入式技术得到了广泛的应用与发展。本文设计了基于ARM的简单音乐播放器,该系统能根据实际情况进行简谱显示、选曲、开始和结束等,实现了简单的音乐播放控制,通过设计进一步了解并加深对ARM的认识,模拟音乐播放器的实现。
关键词 ARM 音乐播放器 S3C2410
随着科学技术的发展和人们生活水平的提高,VCD、DVD、MP3等媒体的播放系统也日趋成熟。嵌入式系统以其可靠性高、实时性强、系统配置低等优势,广泛应用在工业控制、消费电子、信息家电等领域,媒体播放控制就需要这样的系统来完成。本文将使用ARM系统,模拟简单的音乐播放器。
一、系统设计方案
(一)设计要求
本设计是在武汉创维特信息技术有限公司的ARM9教学实验箱上完成,模拟了简单的音乐播放器。利用Timer0产生PWM脉冲控制蜂鸣器,不同的频率对应不同的音调,从而播放出不同的歌曲,具体设计要求如下:
(1) 实现播放音乐的开始和结束;
(2) 有选曲的功能,能播放下一首歌曲;
(3)使用数码管来同步显示歌曲的简谱。
(二)系统流程
由于此系统较为简单,故采用自上而下的设计方法,进行程序设计;对音乐的开始和结束、以及选曲,采用中断的方法,由中断处理程序处理。程序流程如图1所示:
二、嵌入式開发环境说明
硬件方面,我们使用S3C2410实验箱的串口与PC机串口连接,通过JTAG口的ARM仿真器把实验箱和PC机连接。
软件方面,我们使用与实验箱配套的ADT软件开发。
三、典型功能实现
(一)定义数组
包括音调的数组、某个乐曲简谱的数组和乐曲节拍的数组。音乐的音高与频率是对应的,不同的频率驱动蜂鸣器会使蜂鸣器产生不同音高,因此首先要确定音调和频率之间的关系,如频率为1300赫兹的音就是中音的“1”,频率为1462赫兹的音为“2”,频率为1625赫兹的音为“3”……等等。所以需要定义一个数组,存放各种音调的频率值,顺序为中音、低音、高音,这样,根据简谱调用频率值时,只要直接用简谱做下标,但要注意,中音的下标为1-7(下标0空闲不用),低音下标为8-14,高音为15-21。
简谱和节拍都是包含多个值的变量,所以也要用数组存储其元素,并且,简谱可以做为音调的下标,而节拍,只要把最短音定为1,其他定为1的倍数,利用延时程序的倍数关系实现,具体实现如下:
void main(void)
{
……
//音调数组,分别对应中、低、高音的1-7
const int music_freq[]
={0,1300,1462,1625,1736,1950,2166,2437,650,731,812,868,975,
1083,1218,2600 };
//世上只有妈妈好的简谱
const int music[]
={6,5,3,5,15,6,5,6,3,5,6,5,3,1,13,5,3,2,2,3,5,5,6,3,2,1,5};
//世上只有妈妈好的节拍
const int music_dly[]
={3,1,2,2,2,1,1,4,2,1,1,2,2,1,1,1,1,4,3,1,2,1,1,2,2,4,};
}
(二)数码管显示简谱
通过数码管实时显示歌曲的简谱,这个操作放在播放歌曲函数中即可,实现如下:
for(delay=0;delay {rTCON=0x0;*((unsigned char *)0x10000006) = 0; *((unsigned char *)0x10000004) = seg7[b[i]]; } 四、结束语 本文设计实现了基于ARM9 平台的简单音乐播放器,该系统实现了歌曲简谱的显示、开始和结束等功能,基本实现了嵌入式播放器的功能需求,很好地模拟了音乐播放器的功能,而且操作简单、方便。 参考文献: [1]章坚武,董平,马勇.一种嵌入式多媒体播放器的硬件设计与实现[J].电子器件,2006,29( 4) : 1123-1125. [2]郁峰.基于嵌入式文件系统的MP3 播放器的设计和实现[D].苏州:苏州大学,2009. [3]李彬.基于应用程序的嵌入式Linux 内核自动裁剪[D].东南大学:计算机应用专业,2006. (作者单位:山东信息职业技术学院)