msp430g2553单片机控制蜂鸣器发出音乐的程序

msp430g2553单片机控制蜂鸣器发出音乐的程序,第1张

看起来数组应该是音乐数据,其中包括四种数据,就是休止符(每个100毫秒)、歌曲结束符、音阶(给出的迹枣胡是蜂鸣器的震荡周期)、一个音阶持续的时间长度。如果你的晶振是12MHz,按照定时器中断给Count加一来看,音阶持续的时间应该是以10毫秒为单位。 Play_Song函数要求给岩激出参数i我的看法是这个i是指要播放第几段乐曲,i*217表示每段乐曲都是217个字节。本例中95数组只给出217个字节,所以只有一段乐曲,播放时需要给出参数i=0. if ( Temp1 == 0xFF ) //休止符 { TR0 = 0; Delay_xMs(100); } 所以休止符每个固定是100毫秒。 如果读到第一个不是休止符或者结束符的字节那就是音阶,而下一个字节就是这个音阶的长度或者说节拍 while(1) { FMQ = ~FMQ; Delay_xMs(Temp1); if ( Temp2 == Count ) { Count = 0; break; } } 这一段是说,如果当前音阶的时间(Temp2次定时器中断,由Count计时)还没完,就每隔Temp1毫秒震动一次蜂鸣器,就形成一个震动频率,这段时间就发出一定音调的乐音不过我也有疑惑,震荡周期如果以毫秒为单位恐怕只能发出次声波,所以以上对有关Delay_xMs函数时间的估算都可能有问题907还得看姿拦Delay_xMs函数的具体定义才行。

应该不难写的,你是要做什么?

我看看哈

#include <MSP430X14X.h> // 恩 头文件

void main(void) //主函数

{

1,设置一下宏携定时器的初始化把(定时器关闭状态) // 刚刚下在了一个430程序 里头没见定蔽数伏时器,这个比较尴尬.

P1DIR |= SCL //将SCL管脚(P1.2)设置为输出管脚 用这个管脚接超声波的控制端吧

P1DIR &= ~(SDA) //将SDA设置为输入方向 用它来接受超声波的接受信号把(超声波剩下的两个引脚是电源了)

P1OUT &= ~(SDA) //SDA管脚输出为低电平

while(1)

{

P1OUT |= SCL//SCL管脚输出为高电平

延时20us

P1OUT &= ~(SCL) //一个20us的脉冲

2. 打开定时器

while(!SDA) // 等待消息

3.关闭定时器

4.读定时器的数

5.计算一下得出meter

if(meter>1)// 你就再随便找个引脚接蜂鸣器给毕孙她高点平好了

}

不是为了分.....是希望你少copy点代码 这样会比较好

}

请采纳。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12499704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存