设计与开发

51单片机mp3 DIY大神 自己制作单片机MP3(附电路图)

小编 2024-10-06 设计与开发 23 0

DIY大神 自己制作单片机MP3(附电路图)

最开心事的事没过于每个小小的梦想通过自己的努力都能慢慢实现……

用STC12LE5A60S2单片机驱动,DS1302时钟芯片,DS18B20温度传感器,VS1003音频解码芯片在5110显示屏上显示时间温度,闹钟,播放SD卡中MP3文件等功能。

做了4年的MP3维修一直想设计个属于自己的MP3播放器,但苦于自己所学的知识有限。一直只能把它放在心里,直到2年前一个偶然的机会接触到了单片机,一开始像所有的单片机初学者一样热情很高。买块51开发板对着网上的教程慢慢的一边学习C语言,一边学习硬件设计,就这样半来年过去了,对单片机也只是有个初步的了解。除了点流水灯别的啥都不会,网上资料很多,但大多数都是些点流水灯,驱动蜂鸣器,继电器等一些基础到不能再基础的例子,想做个大点的程序,网上的资料少的可怜,于是像大多人一样开始放弃单片机,选择了学习VB,C#等编程语言。但结果都不太理想,学了点基础知识,感觉都比想向中的难学。开始自我反思,我是个搞硬件维修的,我在纯软件编程上没有一点优势,想以后在IT行业混口饭吃必需的将以前学习的硬件知识用到软件上,于是又再次选择了单片机这条路上摸所。

在实际制中感慨挺深的,所遇到的困难也远比想像的多,在做这之前呢对这个了解并不多,根本就没去想过这东西能做好吗,能实现些什么功能之类的问题。只是想用这次制作来打发时间,就这么开始了,在网上找资料,这里抄上一点那里改一下电路 原理图完成了,打算先试着做3台很快在淘宝网上买了3套所需的电子元件,通过20多个小时PCB板画好了,在网上找了家板厂做了10块PCB板 ,板跟电子元件共用了160多块钱吧,大概4天左右PCB板做好了,开始焊接PCB板发现功放IC的元件封装跟PCB对不上只好飞线连上整个硬件到此基本上完成了。

开始写软件程序,在网上找了很多相关资料但呢都不怎么全,没办法自己对着芯片手册按照时序图对寄存器一个一个的设置,时钟芯片ds1302跟温度传感器18B20的驱动程序我之前写好的可以直接使用,音频解码vs1003在买芯片时有送参考例程稍微修改下便能听到测试音,SD卡驱动没现成的代码只好对着SD卡通讯协议一遍一遍的看,程序边写边调,在串口调试助手下察看读的内容大概3天左右SD卡驱动编写完成。到此就只差fat32文件系统没搞好了,一开始呢我是想移值FAT.FS这个现成的文件系统,在网上找了好多关与它移值的方法不知是我理解能力太差还是他们进的不够细反正就是不知道怎么移值,没办法只有自己写文件系统驱动了,找了份fat32系统详解,跟fat32文件系统原理看了好几遍 对文件系统有了个初步的了解开始在电脑上用winhex软件查看sd卡中存的数据,下步就是用C语言去实现把SD卡的数据读到单片机中,这是整个制作中最难实现的部分,写了好长一段时间但呢一点思路都没有。心烦了 工作也忙了这个制作也就把它放一边了, 刚开始呢工作不怎么忙时还调试下程序,后来干脆就把它忘了,想用单片机在fat32文件系统中找出MP3文件还真不是一般的难,不知道过了多久换了份新的工作环境,新的工作量并不是很大就是无聊的很,像关在笼子样,无聊时开始我的文件系统学习,就这样时间一天天的过去了,大约4个来月后吧,我终于能将SD卡中的根目录的指定文件名的MP3文件数据给送到VS1003解码芯片中,在这fat32数据上的读取中,我深深的体会到了指针,结构体,数组等在C语言中的重要性,听到音乐的那一刻真的好辛酸 ,不容易呀。第一步到此完成了,接着我又花了几个月的业余时间给它实现了SD卡中根目录和一层子目录音乐文件读出,长文件名实现,自动播放下一曲 ,音量加减,音调调节 ,暂停,播放,下一曲,上一曲 到此完成了音乐播放的基本功能,用了段时间后发现还有许多功能要实现的 ,后又用单片机内带的eeprom实现开机后继续上次播放的歌曲和音量大小, 用单片机内带的AD模块实现电池电量的测量,用5110做了个简单的显示屏,主要显示时间,播放到第几首歌曲 音量大小,和电池电量显示,以及 闹钟功能的实现,在设计硬件时没考虑到闹钟功能的实现,现在虽然能实现闹钟功能但功耗特别大一块2000毫安的电池基本不怎么用每天就用它做闹钟 放几分钟音乐不到半个月就要充次电,本想还给它加个字库IC和TFT彩屏再移值点简单的GUI实现图片跟TXT文档的打开功能,但51单片机的硬件资源明显不够用,要想完成普通MP3的全部功能只能在我以后学习的stm32中完成,在这漫天飘雪的莫斯科只有你是我唯一打发无聊时间的朋友……

下篇基于STM32单片机彩屏MP3正在制作中主要完成在彩屏上移植UCGUI界面,显示歌曲名,歌词,显示内存卡中图片,闹钟,TXT文件打开等功能。

单片机创意小制作,ARM7音乐播放器

在校学习期间,教我单片机的王老师时常提起ARM处理器。她提醒我说,我们是计算机专业的,应该研究嵌入式系统。起因是,我喜欢单片机,而单片机偏偏在我们学校是电子系的专业。把单片机玩转了,对于计算机专业的我,就显得偏离专业了。那时,我还是头脑一热,在网上买了一个AT91SAM7S64最小系统。但是,一直没有像样地玩它。只是断断续续地写了几个简单的程序,像学习51单片机一样学它。随着时间的推移,它被遗忘在一边了。不过这几天在整理零碎时,我又开始注意到它了。

这次制作的主题是——做一款能够媲美山寨CD机的音乐播放器。随着MP3、MP4、手机、PMP等便携播放器的出现,在市场上很少看到专门卖CD机的柜台了。想想也是,现在马路上很少看到有人拿个硕大的CD机听音乐。最主要的原因,估计是CD光盘尺寸偏大,携带不便,所以现在听MP3的人越来越多了。但是,不管怎样,CD的音质还是相当好的。还记得去年,我制作了一款M8音乐播放器,朋友听了后,直接评价那音质不行。我解释说,那是8位的播放器,还是被他鄙视了。太伤我心了。于是,我又琢磨着做一款新的播放器,希望它超过普通MP3的音质。这回做好后,又特意给那位朋友试听了一下,这次他评价说,这音质的确超过普通MP3了。下面我会和大家分享制作它的过程。

主要芯片介绍

这次制作的音乐播放器使用了TI公司的PCM1770,它是24位低功耗立体声音频DAC。由于它能够直接驱动耳机,所以选择它作为音频解码器。当耳机的阻抗为16Ω时,它的输出功率为13mW。PCM1770使用的电源范围为1.6~3.6V,支持标准的I2S音频接口。对DAC的操作是通过SPI接口实现的。它的音量也由软件控制,音量控制一共分为64个等级。

电路的处理器使用Atmel公司的AT91SAM7S64。它有64KB的FLASH程序存储器,16KB的内部SRAM,是高性能的32位RISC架构的ARM7处理器,最高工作频率可达55MHz。它一共有64个引脚,PIO控制的I/O驱动电流可以达到8mA,PA0~PA3可以达到16mA,但所有I/O电流之和不能超过150mA。这款处理器具有SSC同步串行控制器,支持I2S标准,也有SPI接口,可以设定8到16位的数据长度,每个SPI接口有4个片选线。这样,处理器与DAC解码器的数据传输、控制命令的发送都可以在硬件上连接实现。

可实现功能

这个制作完成后,将CD音质的WAV文件复制到SD卡内,文件必须存放在根目录下。程序通过AT91SAM7S64的SSC串行控制器,把音频的数据流通过SSC接口传输到TI的音频DAC上。这样,耳机就播放出动听的音乐了。播放器使用普通的微动按钮控制,一共用了5个按钮,分别实现音量、选曲、播放、暂停等控制。

工作原理

整个制作,由图11.1所示的AT91SAM7 S64 最小系统(左边)、洞洞板(中间)和转接成DIP封装的PCM1770 DAC(右边)组成。

图11.1 制作所需的各部分实物

这款音乐播放器的工作原理并不复杂。主要由5大部分组成:

(1)AT91SAM7S64最小系统,比51单片机最小系统稍微复杂些。

(2)PCM1770 I2S音频解码器,用于驱动耳机或音响,播放音乐。

(3)SD卡存储卡,存放44.1kHz/16位的WAV格式的音乐文件。

(4)5个普通的微动按钮,功能分别为:控制音量、前后选择音乐和播放/暂停音乐。

(5)简单的用稳压芯片将5V的USB电源转换成3.3V的电路工作电源。

音乐播放器的原理图如图11.2所示,可分为5大部分:左上角为稳压电路,左下角为5个微动按钮,右上角为SD卡,右下角为TI的音乐DAC芯片,中间的就是AT91SAM7S64的最小系统了。

1.稳压电源

图11.2 电路原理图

它使用1117-3.3V的稳压芯片,把USB接口的5V电源转换成3.3V。4个电容起到滤波作用。稳压芯片可以采用SPX1117-3.3V、LM1117-3.3V或AMS1117-3.3V。如果使用有极性的电解电容,不要粗心地把正负极性弄反。

2. 5个微动按钮

这5个微动按钮排列成经典的上下、左右、中间的十字结构,它的控制功能大家很容易理解,分别是上下为音量控制、左右为切换歌曲控制、中间为暂停/继续播放控制。

3. SD 卡

使用了它的SPI接口,直接和ATM7的SPI接口的NPCS0、MOSI、MISO、SPCK连接,在程序中我使用了系统时钟16.9344MHz作为SPCK时钟,这样它的传输速率才可以超过CD音乐格式标准的数据流速度。

4. TI的DAC

这是这个系统最关键的地方,它需要SPI接口控制它,同时又需要I2S接口给它提供数据流。它的SPI控制接口与AT91SAM7S64的NPCS1、MOSI、MISO、SPCK引脚相连,程序通过拉低 NPCS0 与 NPCS1 这两个引脚来片选 SD 卡或 DAC 芯片。在传输数据时,可以拉低不同的片选信号来指定传输的方向。DAC的LRCK、DATA、BCK接口分别与RAM7的TF、TD、TK连接。但由于DAC芯片还需要系统时钟,它可以是128fs、192fs、256fs或384fs(fs为音乐的采样率,如44.1kHz采样率)。所以,我通过ARM7的PCK0引脚输出384fs频率的时钟。最后,还可以通过控制DAC的PD引脚为0,让DAC休眠,减低它的功耗。

5. AT91SAM7S64 最小系统

正确连接好处理器各内部控制器的电源,如VDDFALSH、VDDIO、VDDCORE、VDDPLL等,确认USB的D+上拉电阻到3.3V。在播放44.1kHz音乐时,确认使用的是16.9344MHz晶体(在下载程序时使用18.432MHz)。最后,在AT91SAM7S64的PLL RC引脚上连接 PLL滤波用的电容。这样,ARM7上电后就能运行代码了。

AT91SAM7S64的电源系统比较复杂,但还好仅仅需要单一的3.3V电压,即可解决所有供电问题。电源使用USB的5V电压,经过1117-3.3V稳压芯片稳压,然后给DAC、AT91SAM7S64、SD卡供电。AT91SAM7S64还需要1.8V的电源电压,好在它内部集成的电压调节功能,能输出1.8V电压。

AT91SAM7S64处理器只要正确连接好需要的2种电源电压(3.3V、1.8V),焊接上18.432MHz的外部晶体,并且连接上简单的USB接口电路,在物理上就能够下载程序了。注意,当使用18.432MHz的外部晶体时,烧录文件才能通过USB接口下载。但由于音乐播放器需要16.9344MHz的外部晶体,才能以正常的速率播放CD采样率(44.1kHz)的音乐。因此,下载好程序后,还需要切换晶体。这一步麻烦些。

程序首先初始化AT91SAM7S64的SPI接口和SSC接口,并使能PIOA引脚(连接按钮的引脚)和SSC接口(I2S接口)的中断。等初始化接口完毕后,程序才能通过已经正确配置的接口,初始化音频DAC、SD卡设备。等这些操作完成后,程序会通过读取SD卡的特定扇区,识别文件系统种类,并搜索根目录下的第1个音乐文件。最后,通过按钮控制,实现音乐的播放。

使用方法

先要格式化SD卡,使用FAT(FAT12与FAT16的合集)或FAT32都可以。然后,复制44.1kHz、16位的WAV音乐到SD卡上(注意,请复制到根目录)。插上USB电源后,按中间的播放/暂停按钮播放音乐(音乐播放器在上电时不能自动播放,还需要按下播放/暂停按钮才能播放)。

烧录文件的下载与使用

1. 引导代码简介

AT91SAM7S64内部含有一段叫SAM-BA BOOT的程序,它在出厂时已被固化,不会被擦除,也不会被改变。在特定的条件下,它会被复制到内部Flash中,这个复制的过程叫系统程序恢复。系统程序恢复后,下一次上电或手动复位时,SAM-BA BOOT代码就会运行了,它使用片上集成的USB或DEBUG串口与上位机通信,实现自编程。

2. 恢复启动代码

在PA0、PA1、PA2、TST这4个引脚保持高电平的状态下,上电并等待10s。由于上电时PA0、PA1、PA2默认上拉电阻使能了,所以这3个引脚可以悬空。而TST引脚内部下拉电阻使能,因此需要通过外部电路将TST引脚拉高。

10秒后当芯片再次上电时(记得恢复TST引脚为低电平),就会运行SAM-BA BOOT程序了。这时,把芯片的USB接口连接上电脑,电脑上就会发现新硬件,并自动安装驱动。当然,前提是你在电脑上已经安装了SAM-BA ISP下载软件。

3. 关于 ERASE 引脚

上电时ERASE引脚的上拉可以用来擦除内部Flash的安全位,并且会在50ms的时间内完成。它的作用是使整个内部Flash存储器的内容被清除掉。当完成这些操作后,安全位才会清除。

当你使用SAM-BA对器件编程后,执行了Enable Security Bit操作,即编程了Flash安全位,那么下一次恢复系统程序前必须拉高ERASE引脚。

4. SAM-BA 软件使用

首先,安装SAM-BA ISP软件,它会连同驱动一起安装的。这样,当把已经恢复启动代码的ARM7插入USB接口时,驱动即可自动安装,并在设备管理器里多出如图11.3所示的设备。

然后,双击软件运行,出现图11.4所示的运行画面。选择图11.4所示的连接方式“\usb\ARM0”和开发环境“AT91SAM7S64-EK”后,按“Connect”后连接。接着,烧录软件的主界面就会跳出,如图11.5所示。

图11.3

图11.4

图11.5

然后,点击“Send File”按钮,选择烧录用的BIN文件。最后,点击“Send”发送即可。期间会弹出扇区解锁确认和扇区锁定确认对话框,点击“Yes”即可。

几秒后,程序就烧录完毕了。重新上电后,音乐播放器的代码就能成功运行了。

制作简介

其实,整个制作对刚学习ARM7处理器的人也不难。买一个AT91SAM7S64的最小系统,它的32个PIO口一般都会引出来的,并用插针连接。只需要自己做底板,焊接好插座,就能方便地合并了。

我做的这个底板是用万用板制作的,尺寸大约是10cm×10cm。仔细观察的朋友,还会发现,这个底板的功能不仅仅是特意用来做音乐播放器的,还可以做许多关于ARM7的小实验。

底板的反面我用绝缘导线连接线路,这也是我目前喜欢的做法(见图11.6)。如果觉得难看,大家还可以自制PCB的底板,这样也能轻松焊接。

为了使自己的制作更美观,我又在网上买了片1.8mm厚的有机玻璃板。用小锯切割成10cm×10cm大小后,用砂纸仔细打磨。打磨好后在合适的位置上钻孔,最后用2mm的螺丝和对应的铜座固定,这个制作的外观就完成了(见图11.7)。

大家会发现制作的正面还有一根飞线,这是由于我买的最小系统,3.3V的电源插针没有向下引出,只好拿了条杜邦线连接到底板了。

图11.6 用绝缘导线连接底板背面的线路

图11.7 用有机玻璃制作播放器的外壳

相关问答

51单片机 和stm32的低功耗特性对比?

优点如下:1、STM32属于arm内核的一个版本,比传统的51单片机高级多了,有很多资源是51不具备的,如usb控制器。而且已经废除了机器周期什么的,速度不是51能比...

arm 单片机 的区别是什么- 一起装修网

一起装修网问答平台为您提供arm单片机的区别是什么的相关答案,并为您推荐了关于arm单片机的区别是什么的相关问题,一起装修网问答平台:装修问题,因我而止。

单片机 到底属不属于嵌入式系统? - 72XR1XAcm 的回答 - 懂得

单片机只是嵌入式的核心部分,通过单片机和必要的外部元件组合起来,完成一定的功能,那才称为嵌入式,比如简单的MP3就是个嵌入式系统,里面是单片机、n...

电子应用技术属于什么专业科类 - 是归人♪ 的回答 - 懂得

电子应用技术属于电子信息专业科类。电子应用技术,培养能掌握现代电子设备与通讯信息系统等方面的专业知识,得到应用电子技术实践的基本训练,具备安...

CPU和 单片机 不同在哪?-ZOL问答

这个单片机也是51单片机啊不建议用STC89C54RD试试STC12C5A60S2吧不是做计算器吗这款单片机可以用I/O口推挽输出(强上拉)直接驱动数码管不用三...

应用电子技术和电子商务哪个专业更好?发展前途更..._电子商务...

应用电子技术的就业方向:一、就应用电子专业的专业课来看,主要可以从事的工作领域:小型电子仪器仪表,比如说医疗器械(单片机);重工业,比如说钢厂(自...

用Media player和Realplayer播放网上 MP3 或视频是显示的100%...

默认程序——控制面板——将文件类型或协议与程序关联——点击你要修改的,(是MP3你就点MP3你在哪里面找你要修改的)——更改程序——如果没有迅雷点浏览——点桌...

PLC STM32不同是什么?-ZOL问答

MP3百度百度M32讨论回答(5)PLC与STM32在以下几个方面存在明显差异:1.灵...3.架构与组成:STM32只是一款单片机,类似于高级版的51单片机。它是一个小型控...

单片机 上ROM RAM EEPROM FLASH 有什么关系和不同?-ZOL问答

区别主要是他们的用途不同:现在的单片机,RAM主要是做运行时数据存储器,FLASH主...U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM...

应用电子技术好学么?

应用电子技术主要学习电子产品的设计与开发技术。其主要课程有电路、电工、电子、电子线路、单片机、微机原理等方面内容。像MP3数码产品设计、电视的控制系...

猜你喜欢