Section 8

    科技2024-07-02  71

    Section 8_蜂鸣器实验

    1.蜂鸣器介绍2.蜂鸣器模块电路3.编写蜂鸣器控制程序beep.cbeep.hmain.c

    1.蜂鸣器介绍

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

    蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 (1)压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。 (2)电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场,振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。

    改变单片机引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。 改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小。

    左有源 右无源

    2.蜂鸣器模块电路

    3.编写蜂鸣器控制程序

    蜂鸣器控制程序主要分为 2 大块: (1)使能蜂鸣器端口时钟、初始化GPIO。APP新建文件夹beep (2)主函数控制。

    beep.c

    #ifndef _beep_H #define _beep_H #include "system.h" #define BEEP_Pin (GPIO_Pin_8) //定义BEEP管脚 #define BEEP_Port (GPIOF) //定义BEEP端口 #define beep PFout(8) //BEEP PF8 void BEEP_Init(void); #endif

    beep.h

    #include "beep.h" /******************************************************************************* * 函 数 名 : BEEP_Init * 函数功能 : 蜂鸣器初始化 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void BEEP_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE); //使能端口F时钟 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT; //输出模式 GPIO_InitStructure.GPIO_Pin=BEEP_Pin;//管脚设置F8 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;//速度为100M GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;//推挽输出 GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;//上拉 GPIO_Init(BEEP_Port,&GPIO_InitStructure); //初始化结构体 GPIO_SetBits(BEEP_Port,BEEP_Pin); //关闭蜂鸣器 }

    main.c

    /******************************************************************************* * 实 验 名 : 蜂鸣器实验 * 实验说明 : * 连接方式 : * 注 意 : 蜂鸣器驱动程序在beep.c内 *******************************************************************************/ #include "system.h" #include "SysTick.h" #include "led.h" #include "beep.h" /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ int main() { SysTick_Init(168); LED_Init(); BEEP_Init(); while(1) { led1=!led1; beep=!beep; delay_ms(1000); //精确延时1s } }
    Processed: 0.009, SQL: 9