1、蜂鸣器介绍
蜂鸣器,输入电压1.5-15V,输出1.5-5kHz,;
蜂鸣器分为有源蜂鸣器和无源蜂鸣器;
有源蜂鸣器通电即可发声。无源蜂鸣器需要输入脉冲信号即可发声音。
通过改变高电平的占空比即可改变声音大小
驱动蜂鸣器需要30mA电流,但是F28335 IO口最大输出电流25mA,无法驱动,于是需要加入ULN2003D,用于驱动大功率器件。
该设备输入高电平,输出低电平。
如果有源蜂鸣器,需要在基极添加一个上拉电阻接到3.3V电源,防止干扰导致蜂鸣器触发。
2、代码
beep.c
#include"beep.h"
void BEEP_init()
{
EALLOW;
GpioCtrlRegs.GPAMUX1.bit.GPIO6=0;
GpioCtrlRegs.GPADIR.bit.GPIO6=1;//输出
GpioCtrlRegs.GPAPUD.bit.GPIO6=0;
EDIS;
GpioDataRegs.GPACLEAR.bit.GPIO6=1;//输出高电平,在ULN2003设备端输出低电平
}
beep.h
#ifndef BEEP_H_
#define BEEP_H_
#include "DSP2833x_Device.h"//头文件
#include "DSP2833x_Examples.h"//例子头文件
//声明
#define BEEP_ON (GpioDataRegs.GPASET.bit.GPIO6=1)//低电平,输出高电平
#define BEEP_OFF (GpioDataRegs.GPACLEAR.bit.GPIO6=1)//高电平,输出低电平
#define BEEP_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO6=1)//翻转
void BEEP_init();//声明
#endif;
main.c主函数
#include "DSP2833x_Device.h"//头文件
#include "DSP2833x_Examples.h"//例子头文件
#include"led.h"
#include"beep.h"
void main()
{
int i;
InitSysCtrl();//系统初始化
LED_init();
BEEP_init();
while(1)
{
i++;
BEEP_TOGGLE;
if(i%1000==0)
{LED_TOGGLE;
}
delay_us(100);}}
100*1000us=100ms
100ms LED翻转一次
100us蜂鸣器翻转;
需要在InitSysCtrl配置时钟为150MHz