单片机高手来制作音乐播放器(单片机学习之十几行代码完成MP3播放器DIY)

我不怕自己努力了不成功,我只怕比我成功的人,比我更努力。

今天开始给大家分享干货啦!!

MP3播放器,很多年以前可是很流行的,而且价格不菲,现在一个智能手机不近打败了MP3,连数码相机,单反相机也几乎全部干掉了,这就是趋势,跟不上趋势终将被淘汰。

我们这里演示MP3主要是前面项目里面正好用到了这个模块,而且对于新手来也容易上手,学习这个例子呢,其实你可能会感叹,产品开发原来也不难嘛!!事实也确实如此,开发产品其实就是把现有的技术拿来组装,要不怎么说工程师呢,其实就是干货的,农民工差不多,都是搬砖的,呵呵,扯远了。但是要真正开发出一款好产品,不仅仅是简单组合,而是要组合的恰到好处,即好看,又可靠,这才是合格产品设计师,往大了说才是合格的架构师。

单片机高手来制作音乐播放器(单片机学习之十几行代码完成MP3播放器DIY)(1)


言归正传,我们今天的例子是基于ARM的,说到ARM可能大家首先想到的是ST公司的STM32系列,确实现在单片机领域STM32占领了32位单片机领域的大半边天,但是TM32太贵了,这里给大家推荐一个兆易创新的GD32F130,国产的芯片性价比更高,稳定性也不错。这次MP3播放器也是给予这个芯片演示的。

MP3播放器的功能比较简单,就是在主循环里面,循环播放SD卡里面预存的8个MP3歌曲,所以流程图太简单,就不上了,直接上代码了,总共十几行代码。

int main(void)

{

int song=0;//定义当前播放的歌曲

rcu_config();//配置模块时钟

gpio_config();//GPIO初始化

gd_eval_ledinit(LED1);//LED指示灯初始化

systick_config();//系统时钟初始化

uartInit();//串口初始化,通过串口给MP3模块发指令

delay_1ms(1000); //延时1000ms,主要是等待MP3模块上电初始化完成,否则的话发指令会不响应

SendDataN((uint8_t *)(Command1[0]),6);//设置音量大小

delay_1ms(100); //延时100毫秒

SendDataN((uint8_t *)(songs[song ]),7); //播放第一首歌曲,同时song指向下一首要播放的歌曲

while (1)//主循环

{

delay_1ms(1000*60); //延时1分钟,一首歌曲播放一分钟后切换到下一首

SendDataN((uint8_t *)(songs[song ]),7); //发送播放歌曲指令,同时song指向下一首要播放的歌曲

if(song>7)song=0;//歌曲总共有8首,播放到最后一首后,回到第一首循环播放

}

}

最后上效果视频:

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页