打印

用单片机播放.WAV文件

[复制链接]
11433|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压缩。

使用特权

评论回复
5
zhousd| | 2009-5-20 14:56 | 只看该作者

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

做个双缓冲区(512字节*2),一边读SD卡,一边放,加上陷波器,58K的PWM就做到了20K的截止频率,非常清哳。

使用特权

评论回复
6
lifengtao|  楼主 | 2009-5-20 14:57 | 只看该作者

楼上编的是商业软件吗~

能不能把原理简单的说一下啊~
是不是就像,先用EditCool这样的音频软件把.wav文件打开,看看他的音频波形,什么时间点有多大的振幅,根据这些编出PWM输出的方波。

使用特权

评论回复
7
zhousd| | 2009-5-20 15:05 | 只看该作者

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

的WAV文件了,全部用C语言,其实M64可以超频到20M以上。

使用特权

评论回复
8
zhousd| | 2009-5-20 15:12 | 只看该作者

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

8位的WAV音质已经很好听了,电脑上声卡发出的8位PCM根本没法跟它比。如果再加上专用的DAC,靠!现在俺也在咽口水了。

使用特权

评论回复
9
huangqi412| | 2009-5-20 15:28 | 只看该作者

数据要压缩

使用特权

评论回复
10
machunshui| | 2009-5-20 15:33 | 只看该作者

我的做法

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

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

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

4.下位机工作程序,根据目录,找到wav数据首地址长度,把数据读入循环缓冲区,
pwm中断中根据循环缓冲区数据设置pwm宽度,即可播放.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

142

帖子

0

粉丝