51单片机如何控制蜂鸣器发出不同声调

来源:百度知道 编辑:UC知道 时间:2024/09/20 19:51:13
如题,蜂鸣器应该是单一声调的,但是我单片机实验板上的光碟自带程序可以控制单片机唱歌,不过是汇编的,我看不懂,我是用C写程序我开始是想利用延时控制蜂鸣器每秒钟发生次数,这样就控制了频率 但是不能达到预期效果,我想问问,要控制蜂鸣器发出不同声调的思路是什么呢? 哪位大哥告诉一下,万分感谢~~~~~~·
希望能得到比较详细的答案 我是用软件延时 和定时器原理应该差不多 但是 达不到预期效果 最好能给出简单的C流程~ 谢谢

我这里有现成的程序,把分给我,留下信箱,我就给你发过去,呵呵。我利用软件定时和中断方式都有,可以演奏音乐,不过蜂鸣器演奏的实在够难听。

看来楼主对程序不感兴趣,我还是告诉你吧,你定时必须知道准确的定时时间,音乐中DO RE MI-----SI都是有一定的频率也就是Hz,都如下:
c1:262Hz--thtl=0xf8b3
d1:294Hz--0xf972
e1:330Hz--0xfa14
f1:349Hz--0xfa66
g1:392Hz--0xfb03
a1:440Hz--0xfb8f
b1:494Hz--0xfc0b
前面是HZ,后面是我用硬件定时得到的TH和TL的值。
比如你想发C1的音,先用软件定一个262*2Hz的延时反复调用,在一个周期内使buzzer响,再接着一个周期使buzzer不响,如此反复就得到了262Hz的声音,也就类似发出了C1的声音。
反正是够难听的。

主要是控制I/O输出的高低电平的频率不同来控制声调,可以用定时器来模拟PWM实现。输件延时是把整个程序停了那么长时间,是不行的。用定时器.

这种牵涉到频率的东西,一定不能在主循环里用大的delay_ms()类影响主循环时间的程序,采用定时中断,先定义一个1ms左右的定时器,然后定义一段时间,例如10ms,这个时间就是一个周期,会影响发声音调的,在10ms的时间内可以响5ms,停5ms,这个要通过自己调试的。这里也只能初略的说下,有必要的话加下QQ:183252673

  1. 设定频率不一样就可以发出不同的声调了。

  2. 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

  3. 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。

你的思想是对的,控制定时器的溢出率就能控制频率。

可能是你改变的频率不对吧,要达到