登录站点

用户名

密码

利用PWM实现音乐播放

1已有 3014 次阅读  2009-10-14 10:23   标签PWM  音乐  播放 

音频有两种输出方式:Speech ModeTone Mode。它们的区别在于输出的控制机理不同,前者是用与声音数据采样率相同的速率将声音数据通过数/模转换通道还原成音频电压或电流输出,可用于还原语音、音乐等各种声音;后者则通过控制声波振动的频率来决定发出的声音音调的高低,通常用于发出音乐。

 

本例利用SPMC65定时器的PWM输出功能实现Tone Mode音乐播放,通过输出不同的频率给扬声器,可以发出DoReMiFaSoLaTi 7个音符。

 

1  功能规格

 

采用SPMC65P2404A芯片.外接普通的小喇叭(8Ω,05W)播放音乐《茉莉花》,用一个按键来控制音乐的播放和停止。

 

2  硬件设计

 

音乐播放的硬件原理图如下,PA7连接一个按键,用于控制音乐播放和停止;PWM波形从PB3发出,由三极管驱动扬声器发出音乐,如图1023所示。

 


3  软件设计

 

    本例采用Timerl12 bit PwM方式输出,占空比50%,实现音频调频。音符和声音频率对照如表l03所列。

 

根据各音符对应的频率,可以计算出PwMl计数器的重装值,当需要发出某个音符时,只需把相应的计数器重装值赋给PWM1计数器即可。以高音La为例,重装值的计算方法是:

 

高音La的频率是1 480 HzTimerl的计数频率为Fcpu128,因此Timerl的计数次数应为Fcpu1281 480。当Fcpu8 MHz时,计数次数为42(2Ah)。所以PWM1计数器的重装值为1000h2Ah=FD6h

 

音符的节拍是通过控制PWM波形的持续实现的。音符节拍和持续时间对照表如表104所列。



乐曲是由特定节拍的音符组合而成,为便于播放乐曲,对乐谱格式做出如下定义:

 

在程序中,将十六分音符的持续时间300 ms作为一个时基,计为1,那么600 ms可以表示为2,依此类推。音调分为高音、中音、低音,将其计为2l0。曲谱中每个音符用两个字节来描述,第一个字节是音调,范围从17;第二个字节的低4位表示该音符的持续时间,高4位表示该音符属于高音、中音还是低音。曲谱的最后用0表示结束符。下面是乐曲“茉莉花”的曲谱表。



音乐播放程序的主循环时间为4 ms。利用Timer base定时,采用查询方式检测4 ms的到来。主程序流程如图1024所示。

 

音乐播放子程序流程如图1025所示。



音乐播放子流程的部分代码如下:





上一篇: 定时器x(定时器模式)的应用实例 下一篇: SPMC65P2404A在智能电饭煲中的应用

分享 举报

发表评论 评论 (1 个评论)

涂鸦板