让单片机唱歌的c语言程序是怎么弄的?

让单片机唱歌的c语言程序是怎么弄的?,第1张

其实原理很简单,就是控制单片机的某个引脚,输出一定频率的方波信号,而输出方波信号的方法,是最基础的,最简单的编程了,用定时器定时,根据信号频率算出信号周期,然后计算出定时的时间。那单片机演奏歌曲的程序,也是同样的原理,只是事先根据歌曲的简谱查出每个音阶的信号频率,再根据各音阶频率计算出定时器的初值。演奏时,按简谱的各音阶顺序输出不同的频率的信号就行了。

下表是音阶与频率对应关系表,给出常用音阶对应的定时常数。

单片机可以演奏从低音、中音、高音和超高音,四个八度共28个音符。

演奏乐曲时,就根据音符的不同数值,从半周期数据表中找到定时时间初始值,送入定时器即可控制发音的音调。

比如把表中的0xF2和0x42送到定时器,定时器按照这个初始值来产生中断,输出的方波,人们听起来,这就是低音1。

乐曲的数据,也要写个数据表,程序中以 code unsigned char sszymmh[] 命名。

这个表中每三个数字,说明了一个音符,它们分别代表:

第一个数字是音符的数值1234567之一,代表多来咪发...;

第二个数字是0123之一,代表低音、中音、高音、超高音;

第三个数字是时间长度,以半拍为单位。

乐曲数据表的结尾是三个0。


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

原文地址: http://outofmemory.cn/yw/11098675.html

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

发表评论

登录后才能评论

评论列表(0条)

保存