用单片机播放.WAV文件

[复制链接]
12791|9
 楼主| lifengtao 发表于 2009-5-20 11:34 | 显示全部楼层 |阅读模式
本人一直有个想法,想把短小的.wav音频文件转换为数字(十六进制那种)然后把它存放到单片机程序中,采用查表的方法调取,通过管脚再驱动喇叭。
经常从网上看到用单片机播放一些歌曲,但歌曲已经转成数字形式存放到程序中去了,我想电脑中的短的音频文件应该也是可以的。
我现在主要用SD1800这类语音芯片,使用时还要用麦克录音,很麻烦效果也不好。我要控制播放的声音也不长,像掌声,一个单词的声音,一声枪响,就是一种类似的提示音,关键是能播放电脑中的.wav音频文件,好随时更改。
不知道大家有没有知道这方面的操作方法的,指点一下。
huangqi412 发表于 2009-5-20 13:34 | 显示全部楼层

做一个软件,把声音转成数组 PWM方音...

语音没问题
 楼主| lifengtao 发表于 2009-5-20 13:52 | 显示全部楼层

很好啊

有这个软件吗
McuIsp 发表于 2009-5-20 14:38 | 显示全部楼层

主要功夫就在这个软件了。

我编过,把wav转换成自己的格式。还有adpcm压缩。
zhousd 发表于 2009-5-20 14:56 | 显示全部楼层

俺用M64做过双声道8位PCM在PWM上的WAV播放机

做个双缓冲区(512字节*2),一边读SD卡,一边放,加上陷波器,58K的PWM就做到了20K的截止频率,非常清哳。
 楼主| lifengtao 发表于 2009-5-20 14:57 | 显示全部楼层

楼上编的是商业软件吗~

能不能把原理简单的说一下啊~
是不是就像,先用EditCool这样的音频软件把.wav文件打开,看看他的音频波形,什么时间点有多大的振幅,根据这些编出PWM输出的方波。
zhousd 发表于 2009-5-20 15:05 | 显示全部楼层

晶振才用14.7456M,还不到15M就能放44.1K

的WAV文件了,全部用C语言,其实M64可以超频到20M以上。
zhousd 发表于 2009-5-20 15:12 | 显示全部楼层

基本原理就在5楼讲了,资源就是这么多,

8位的WAV音质已经很好听了,电脑上声卡发出的8位PCM根本没法跟它比。如果再加上专用的DAC,靠!现在俺也在咽口水了。
huangqi412 发表于 2009-5-20 15:28 | 显示全部楼层

数据要压缩

machunshui 发表于 2009-5-20 15:33 | 显示全部楼层

我的做法

我的做法:
1.编一个下位机串口通信程序,把串口接收的数据存入外扩的spi接口flash芯片,如at45db161.

2.编一个上位机程序,把wav文件中的数据通过串口,发送给下位机.

3.下位机程序,把存入的多个wav文件的首地址,长度,存到at45db161刚开始的目录部分,形成简单的文件目录格式.

4.下位机工作程序,根据目录,找到wav数据首地址长度,把数据读入循环缓冲区,
pwm中断中根据循环缓冲区数据设置pwm宽度,即可播放.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

142

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部