首页 理论教育 单片机产生声音原理及实用教程

单片机产生声音原理及实用教程

时间:2023-10-20 理论教育 版权反馈
【摘要】:作为单片机的重要硬件资源之一,定时器可以产生各种固定频率的方波信号,也可以产生包括“Do”、“Re”、“Me”等音阶在内的各种频率声音。在此设计中我们采用12MHz的晶振,产生的频率信号即音乐信号由P3.7口输出,信号经过放大后由蜂鸣器发出声音。2)利用单片机的内部定时器工作在计数器模式MODE1下,改变计数值THO及TLO的初始值以产生不同频率的方波。

单片机产生声音原理及实用教程

作为单片机的重要硬件资源之一,定时器可以产生各种固定频率的方波信号,也可以产生包括“Do”、“Re”、“Me”等音阶在内的各种频率声音。在此设计中我们采用12MHz的晶振,产生的频率信号即音乐信号由P3.7口输出,信号经过放大后由蜂鸣器发出声音。

乐曲中,每一音符对应着确定的频率,我们可以参照给出的各音符频率及其相应的时间常数来编写程序。根据表中所提供的常数,将其十六进制代码送入芯片里,可以奏出音符。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为94拍/min,即一拍为0.64s。其他节拍与时间的对应关系也可以从两者关系表中得到。

定时器T0工作在定时方式1,改变TH0及TL0的初始值,产生不同的音频频率。要编写的乐谱按要求以音符字节数据表的形式存放在程序中,改变乐曲就是通过改变该数据表的内容来实现的。主程序的任务是按顺序读取数据表中的字节,根据情况调用音级子程序和音长子程序,启动定时器T0进行工作。

1)要生产音频脉冲,只要算出某一音频的周期(1/频率),然后将此周期除以2,即半周期的时间。利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O口电平取反,然后重复计时此半周期时间再对I/O口电平取反,就可在I/O脚上得到此频率的脉冲。

2)利用单片机的内部定时器工作在计数器模式MODE1下,改变计数值THO及TLO的初始值以产生不同频率的方波。

3)例如频率为523Hz,其周期T=1/523Hz=1912μs,因此只要令计数器计数956μs/1μs=956,在每次计数956次时将I/O口电平取反,就可得到中音DO(523Hz)。(www.xing528.com)

计数脉冲值与频率的关系如下:

N=Fi÷2÷Fr(7.1)式中N为计算值;Fi为内部计时一次为1μs,故其频率为1MHz。

4)定时器计数值的求法如下:

T=65536-N=65536-Fi÷2÷Fr(7.2)

例如:设K=65536,F=1000000=Fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计算值。T=65536-N=65536-Fi÷2÷Fr=65536-1000000÷2÷Fr=65536-500000/Fr。低音DO的T=65536-500000/262=63627,中音DO的T=65536-500000/523=64580,高音DO的T=65536-500000/1047=65059。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈