有源跟无源,其实就是蜂鸣器的内部是否带有一个振动源,不过就因为硬件的一点点差异,导致编写代码会出现很大的区别。
单片机程序如下:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit beep = P0^7;
- void Delay(uint time)//延时函数,有参函数
- {
- uint i,j;
- for(i=time; i>0; i--)
- for(j=110; j>0; j--);
- }
- void Buzzer(uint Number,uint Time) //可以选择鸣响次数和音频
- {
- uint i=0,j=0,k=0;
- for(i = 0; i < Number; i ++)
- {
- for(j=0; j<Time; j++)
- {
- beep = !beep; //beep取反
- for (k=0; k<100; k++); //需要产生方波,调节音频
- }
- Delay(100); //间隔时间
- }
- beep = 1; //注意PNP=0;NPN=1关闭蜂鸣器,否则三极管电流会很大。
- }
- void main()
- {
- while(1)
- {
- Buzzer(50,1000); //任意调节参数,选择自己喜欢的鸣叫次数和音频
- }
- }
复制代码
所有资料51hei提供下载:
无源蜂鸣器驱动.zip
(25.87 KB, 下载次数: 21)
|