由于无源蜂鸣器没有内部驱动电路。无源蜂鸣器工作的理想输入信号是方波信号,如果给予直流信号,蜂鸣器是不响应的,因为磁路恒定,钼片不能振动发音。#include<reg52h>sbit buzzer=P2^0;sbit D1=P1^0;
delay() // 让P10口延时1秒
{ unsigned int i,j;
for (i=0;i<500;i++)
for (j=0;j<358;j++);
}fasheng() //发声子程序
{ unsigned int a,x;
for (a=0;a<2700;a++) //for循环让蜂鸣器发声1秒
{
buzzer=!buzzer;
for (x=0;x<45;x++); //45为蜂鸣器发声频率,可调
}}
void main()
{
while (1)
{
D1=0; //P10口LED点亮
fasheng(); //P20发声1S
D1=1; //P10口LED熄灭
delay(); //延时1秒
}
}
所有信号都是MCU输出的控制信号。具体信号如下。
1、MOT1-4是步进电机驱动信号。输出的是脉冲信号。四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
2、MOT5为直流电机驱动信号。
3、JD1 drive为继电器驱动信号。
4、BEEP1为蜂鸣器驱动信号。要使其持续发生输出频率脉冲信号。
1:无源蜂鸣器无正负极之分(这个你是知道的),这是很好装接(如果要动手),用三极管推下一下信号
2:NPN管子直接串入集电极,基极加一个电阻既可
2:pnp管子直接串入发射极,基极加一个电阻既可首先要设置IO口连接PWM功能,应该是P2SEL |= 0x08。然后要初始化TA,初始化TA的方法可以参照以下:
CCR0 = 16; // PWM Period/2
CCTL1 = OUTMOD_6; // CCR1 toggle/set
CCR1 = 16/2; // CCR1 PWM duty cycle
TACTL = TASSEL_1 + MC_3; // ACLK, up-down mode
声音频率应该在1024Hz,可以听出来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)