单片机发声参数如何计算

来源:百度知道 编辑:UC知道 时间:2024/09/21 04:03:30
我在学习单片机输出到蜂鸣器的时候有这样一段程序
bb bit p2.4 ;定义bb在下面程序中代表p2.4,连接蜂鸣器
star: clr bb ;使v1 9015导通
acall d1ms ;延时
setb bb ;使v1 9015截止
acall d1ms
ljmp star

d1ms: mov r0,#2
dloop: mov r1,#250 ;改变r0的数值将改变声音频率
djnz r1,$
djnz r0,dloop
ret

end
这里只是简单的提了一下改变r0的数值将改变声音频率
具体如何计算呢?比如要发出300hz的声音或者其他的呢?

子程序 d1ms实现的功能是延时1ms,改变R0的值将改变该子程序的延时时间长度,假如R0=2对应1ms则R0=20对应10ms。
9015是PNP三极管吧,9015通、段的时间为1个周期,你现在的程序是通1ms,断1ms,对应的声音周期是2ms,频率为1/周期=500Hz,300Hz对应的周期为3.3ms,则9015通断各1.65ms,也就是d1ms延时1.65ms即可,所以修改R0的值即可修改d1ms的延时长短,从而达到修改声音频率的目的

我的博客上有音乐程序,还有我独创的音乐书写格式,你可以去参考一下.