当前位置: 首页 > news >正文

深圳 网站科技山西网络推广

深圳 网站科技,山西网络推广,wordpress4.9.7,旅游电商网站建设方案14.1关于蜂鸣器 蜂鸣器是一种常见的电子发声元器件,采用直流电压供电,广泛应用于计算机、打印机、报警器、电子玩具、汽车电子设备等产品中,常见的蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。 有源蜂鸣器:内部有震荡源,只…

14.1关于蜂鸣器

蜂鸣器是一种常见的电子发声元器件,采用直流电压供电,广泛应用于计算机、打印机、报警器、电子玩具、汽车电子设备等产品中,常见的蜂鸣器可分为有源蜂鸣器和无源蜂鸣器。

有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。

无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频率可变。

两种蜂鸣器实物如图 14.1.1 所示,从外观上来看两种蜂鸣器形状相似,有源蜂鸣器底部有黑胶密封,无源蜂鸣器底部可看到电路板(图中绿色部分),两种蜂鸣器都标注有正负极。

在这里插入图片描述

14.2硬件设计

通常蜂鸣器需要的驱动电流比较大,使用GPIO直接驱动蜂鸣器比较吃力,通常使用如图 14.2.1 所示电路。由GPIO控制三极管通断,蜂鸣器由系统电源驱动,MCU只需要很小的电流便可控制蜂鸣器。 Q1为NPN三极管,发射极(E)接地,基极(B)接单片机引脚PA8,集电极(C)接蜂鸣器到电源。
当PA8输出低电平,UBE<Uon,三极管断开,此时蜂鸣器不工作。
当PA8输出高电平,UBE>Uon,三极管导通,此时蜂鸣器工作。
在这里插入图片描述

14.3软件设计

14.3.1软件设计思路

实验目的:本实验通过控制GPIO输出指定频率,驱动蜂鸣器发声。

  1. 引脚初始化:GPIO端口时钟使能、GPIO引脚设置为输出(PA8);
  2. 封装蜂鸣器函数:其中方波周期的延时,使用HAL库延时函数HAL_Delay()实现;
  3. 主函数改变方波的延时时间(即改变其周期),控制蜂鸣器声音;

本实验配套代码位于“5_程序源码\7_GPIO—蜂鸣器\”。

14.3.2软件设计讲解

  1. GPIO选择与接口定义

代码段 14.3.1 蜂鸣器引脚宏定义(driver_buzzer.h)

/*********************
* 引脚宏定义
**********************/
#define Buzzer_GPIO_PIN GPIO_PIN_8
#define Buzzer_GPIO_PORT GPIOA
#define Buzzer_GPIO_CLK_EN() __HAL_RCC_GPIOA_CLK_ENABLE()
/*********************
* 函数宏定义
**********************/
#define Buzzer(flag) HAL_GPIO_WritePin(Buzzer_GPIO_PORT, Buzzer_GPIO_PIN, flag?GPIO_PIN_SET:GPIO_PIN_RESET)

根据原理图可知蜂鸣器的控制引脚是PA8,因此引脚组和引脚号分别对应GPIOG、GPIO_PIN_8,引脚
时钟使能函数是__HAL_RCC_GPIOA_CLK_ENABLE()。对其输出函数宏定义成接口Buzzer(flag),flag为1时输出高电平,三极管导通,flag为0时输出低电平,三极管不导通。

  1. GPIO初始化

代码段 14.3.2 蜂鸣器引脚初始化(driver_buzzer.c)

/*
* 函数名:void BuzzerInit(void)
* 输入参数:无
* 输出参数:无
* 返回值:无
* 函数作用:初始化蜂鸣器的引脚
*/
void BuzzerInit(void) {
// 定义 GPIO 的结构体变量
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 使能蜂鸣器的 GPIO 对应的时钟
Buzzer_GPIO_CLK_EN();
GPIO_InitStruct.Pin = Buzzer_GPIO_PIN; // 选择蜂鸣器的引脚
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 设置为推挽输出模式
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; // 引脚反转速度设置为快
// 初始化引脚配置
HAL_GPIO_Init(Buzzer_GPIO_PORT, &GPIO_InitStruct);
// 关闭蜂鸣器
Buzzer(0); }

引脚初始化内容与前面LED类似,这里不再赘述。

  1. 方波输出函数

代码段 14.3.3 方波输出函数(driver_buzzer.c)

/*
* 函数名:void ControlBuzzerRang(uint16_t period)
* 输入参数:period-蜂鸣器发出响声的周期,f=1/(2*period)
* *输出参数:无
* 返回值:无
* 函数作用:输出方波
*/
void ControlBuzzerRang(uint16_t period)
{
Buzzer(1);
HAL_Delay(period);
Buzzer(0);
HAL_Delay(period); }

通过HAL_Delay()延时函数来实现方波周期的变换,从而控制PA8输出方波的频率来改变蜂鸣器发声的
响度。

  1. 主函数测试

代码段 14.3.4 蜂鸣器主函数(main.c)

// 初始化蜂鸣器
BuzzerInit();
while(1) {
for(i=0; i<10; i++) {
ControlBuzzerRang(i); // 蜂鸣器响 i ms,然后不响 i ms,构成一个 1/(2*i)kHz 频率的蜂鸣器响应
} }

首先对蜂鸣器的引脚进行初始化;然后通过一个for()循环改变局部变量i的值使其从0每次递增1至10,
而这个i就是方波输出周期的一半。通过改变局部变量i来改变方波的周期,从而改变蜂鸣器的音调。

蜂鸣器实验本质和LED实验一样,生活中很多模块也一样,只需要控制GPIO即可控制模块,实现相应
效果。

这里只是简单的控制了蜂鸣器供读者参考,在一些应用中,通过定时器或PWM控制蜂鸣器频率,实现
播放简单音乐。

14.4实验效果

本实验对应配套资料的“5_程序源码\7_GPIO—蜂鸣器\”。打开工程后,编译,下载,可以听到蜂鸣器
发出声音。


百问网技术论坛:
http://bbs.100ask.net/

百问网嵌入式视频官网:
https://www.100ask.net/index

百问网开发板:
淘宝:https://100ask.taobao.com/
天猫:https://weidongshan.tmall.com/

技术交流群(鸿蒙开发/Linux/嵌入式/驱动/资料下载)
QQ群:869222007(已满)752871361

单片机-嵌入式Linux交流群:
QQ群:536785813

http://www.lbrq.cn/news/2759365.html

相关文章:

  • 网站改版定位策划书今日热点新闻头条
  • 湖北网络建设公司网站南京今天重大新闻事件
  • wordpress 最新漏洞班级优化大师官方网站
  • 网站建设武汉谷歌浏览器搜索引擎入口
  • 做miui主题网站广告投放平台有哪些
  • 中交建设集团网站无排名优化
  • 网站系统维护要多久百度在全国有哪些代理商
  • 许昌做网站团队武汉seo网站推广
  • 网站seo策略网络营销的营销理念
  • 网站建设流程分为三个步骤国内免费推广产品的网站
  • 职业生涯规划大赛演讲稿5分钟深圳网站seo服务
  • 关于网站空间百度搜索页
  • 怎么样用ps做网站百度网页版网址
  • 成都市网站制作一站式网络营销
  • 网站与微信结合百度官网网站
  • 只做一种产品的网站百度推广怎么弄
  • 产品展示型网站有哪些百度seo搜索引擎优化
  • 大连做网站谁家售后好今日头条国际军事新闻
  • 武汉 门户网站建设市场调研分析报告怎么写
  • 衡水教育行业网站建设电脑培训班附近有吗
  • 大悟网站开发湖南正规seo优化
  • dede网站收录百度法务部联系方式
  • 网站页面术语长沙网站开发制作
  • 婚恋网站制作要多少钱长沙做搜索引擎的公司
  • 手机网站优化免费数据分析网站
  • 学做缝纫的网站云南网络营销公司哪家好
  • 网站做百度竞价引流费用多少钱外包接单平台
  • the 7 wordpress主题教程广东网站优化公司
  • wordpress本地调试慢企业网站排名优化公司
  • 杭州做网站的好公司有哪些广州网络推广平台
  • 云原生事件驱动引擎(RocketMQ-EventBridge)应用场景与技术解析
  • Git+Jenkins 基本使用
  • 网络常识-SSE对比Websocket
  • 旋钮键盘项目---foc讲解(闭环位置控制)
  • 一起Oracle 19c bug 导致的业务系统超时问题分析
  • Java 大视界 -- Java 大数据分布式计算在基因测序数据分析与精准医疗中的应用(400)