最开心的是每个小梦想都可以通过自己的努力慢慢实现…利用STC12LE5A60S2单片机驱动,DS1302时钟芯片,DS18B20温度传感器,VS1003音频解码芯片在5110显示屏上显示时间和温度,闹钟,播放SD卡中的MP3文件等功能。
做MP3维修4年了,一直想设计自己的MP3播放器,苦于知识有限。只能放在心里,直到两年前偶然接触到单片机。一开始我和所有初学单片机的人一样热情。买个51块钱的开发板,边面对网上教程边慢慢学习C语言和硬件设计。就这样半年过去了,我对单片机只有初步的了解。除了轻流水我什么都不会,网上资料也很多,但大多是一些不能基于轻流水的例子,行车蜂鸣器,继电器等。我想做一个更大的程序,网上的资料少得可怜,于是我和大多数人一样,开始放弃单片机,选择学习VB,C#等编程语言。但结果并不理想。学了一些基础知识,感觉比想学的东西更难学。我开始反思自己。本人从事硬件维修。我在纯软件编程方面没有优势。以后想在IT行业谋生,把之前学的硬件知识用在软件上,所以又选择了单片机。
在实际系统中,我深有感触,遇到的困难远比我想象的多。在做这个之前,我对它了解不多,更没想过它能不能做好,能实现什么功能。我就是想用这个制作来打发时间,就开始了。我在网上找资料,这里抄了一点,那里改了电路原理图。我打算先试着做三套电子元件,很快在淘宝上买了三套需要的电子元件。PCB画了20多个小时,在网上找了个板厂,做了10块PCB板,和电子元件分摊了160多块钱。大约4天后,PCB板完成并开始焊接。
我开始写软件程序,在网上找了很多相关的资料,但是没有那么全。我无法根据时序图在芯片手册中逐一设置寄存器。我之前写的时钟芯片ds1302和温度传感器18B20的驱动可以直接用。音频解码vs1003是我买芯片的时候送的参考例程,稍微修改一下就能听到测试音。SD卡驱动没有现成的代码,我只好反复看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来完成。在这白雪皑皑的莫斯科,你是我唯一可以打发无聊的人。
010-350000
010-350000
010-350000
010-350000
正在制作基于STM32单片机的下一款彩屏MP3,主要完成彩屏移植UCGUI接口、显示歌名、歌词、显示内存卡图片、闹钟、打开TXT文件等功能。
010-350000
010-350000
010-350000
010-350000
010-350000