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

Stm32_2:蜂鸣器、按键、继电器

1.蜂鸣器

1.蜂鸣器的种类

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

2.蜂鸣器的控制方式

  • 有源蜂鸣器:内部有震荡源,只要通电即可自动发出固定频率的声音。(频率固定无法控制音色)
  • 无源蜂鸣器:内部无震荡源,需要外部脉冲信号驱动发声,声音频率可变。(可改变频率来改变音色)

3.区分蜂鸣器

从外观上来看两种蜂鸣器形状相似,有源蜂鸣器底部有黑胶密封

无源蜂鸣器底部可以看到电路板,两种蜂鸣器都标注有正负极。

4.GPIO控制蜂鸣器

软件设计:

初始化系统:

  • 初始化GPIO外设时钟
  • 初始化蜂鸣器引脚

输出电平控制蜂鸣器

#include "buzzer.h" #include "stm32f10x.h" void buzzer_init(void) { GPIO_InitTypeDef buzzer_init; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); buzzer_init.GPIO_Pin = GPIO_Pin_5; buzzer_init.GPIO_Speed = GPIO_Speed_10MHz; buzzer_init.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOA,&buzzer_init); }

2.按键

1.深入理解GPIO输入

GPIO的特点:

  • 具有内部上拉或下拉的功能
  • 可以使用外部下拉或上拉

按键连接示意图:

即:按键按下时,引脚连接低电平

2.按键控制LED灯

软件设计:

初始化系统:

  • 初始化GPIO外设时钟
  • 初始化按键和LED的引脚

检测按键输入的电平来控制LED灯

#include "key.h" #include "stm32f10x.h" void Key_Init(void) { GPIO_InitTypeDef key_structure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC,ENABLE); key_structure.GPIO_Pin = GPIO_Pin_0; key_structure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA,&key_structure); key_structure.GPIO_Pin = GPIO_Pin_13; key_structure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOC,&key_structure); }
#include "stm32f10x.h" #include "main.h" #include "led.h" #include "buzzer.h" #include "key.h" #include "Delay.h" void delay(uint16_t time) { uint16_t i = 0; while(time --) { i = 12000; while(i --); } } int main() { led_init(); buzzer_init(); Key_Init(); Delay_Init(); GPIO_SetBits(GPIOA,GPIO_Pin_1);//灯灭 while(1) { if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) == 0) { GPIO_ResetBits(GPIOA,GPIO_Pin_1); } if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13) == 0) { GPIO_SetBits(GPIOA,GPIO_Pin_1); } } }

注:先让灯灭掉,继电器也一样

3.继电器

1.继电器的工作原理

继电器是一个电控开关,工作原理基于电磁感应,继电器包括一个电磁线圈和一组触点。常用于控制高电流或高电压的电路,例如自动控制原理,电力系统和自动化设备中, 由于可靠性和电气隔离的特性可以实现小电流控制大电流,继电器在各种应用中都有广泛 的用途。

2.继电器的引脚说明

1. VCC(+):供电正极,连接此引脚到电源,以提供继电器所需的电流

2. GND(-) : 地,连接此引脚到电源的负极或者地。

3. IN :控制输入信号,通常用于连接控制信号,当该信号变化,继电器切换状态。

4. COM(common): 公共端,通常是中间的触点,与常开或常闭触点相连。

5. NO(Normally Open): 常开接口,继电器吸合前悬空,吸合后于COM连接。

6. NC(Normally Closed):常闭接口,继电器吸合前与COM连接,吸合后悬空。

3.继电器状态监测

红灯(电源指示灯)亮起,意为正常工作

绿灯(信号指示灯),绿灯亮了,继电器是连接状态,闭合状态,绿灯暗了,继电器是断开状态

杜邦线排查:

首先连接VCC和GND,红灯亮起

是用IN口检测工作电压,如果VCC接3.3V,IN不管接高低电平,绿灯都量,说明3.3V不是工作电压。如果IN接地,绿灯亮;接电源,绿灯灭,说明继电器的工作电压是3.3V,且是低电平连通

3.单片机控制继电器软件开发流程

初始化系统:

  • 初始化继电器IN引脚对应的GPIO外设时钟
  • 初始化继电器IN的引脚GPIO输出模式

输出电平控制继电器开和关

#include "stm32f10x.h" #include "Delay.h" void Delay_Init(void) { GPIO_InitTypeDef Delay_Initstructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); Delay_Initstructure.GPIO_Pin = GPIO_Pin_0; Delay_Initstructure.GPIO_Mode = GPIO_Mode_Out_PP; Delay_Initstructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_Init(GPIOA,&Delay_Initstructure); }
#include "stm32f10x.h" #include "main.h" #include "led.h" #include "buzzer.h" #include "key.h" #include "Delay.h" void delay(uint16_t time) { uint16_t i = 0; while(time --) { i = 12000; while(i --); } } int main() { led_init(); buzzer_init(); Key_Init(); Delay_Init(); GPIO_SetBits(GPIOA,GPIO_Pin_0); while(1) { GPIO_ResetBits(GPIOA,GPIO_Pin_0); delay(1000); GPIO_SetBits(GPIOA,GPIO_Pin_0); delay(1000); } }
http://www.cnnetsun.cn/news/70035.html

相关文章:

  • 整体设计 之28 整体设计 架构表表述总表的 完整程序(之27 的Q268 )(codebuddy)
  • 云手机 实体手机的云端延伸
  • 交换机和网卡的 PFC 机制工作原理与实例解析
  • UI自动化测试常见面试题
  • Linux OOM 问题之 DMSERVER 受害者
  • Flutter引擎裁剪与鸿蒙方舟编译协同优化
  • STM32CubeMX的main.c开头介绍
  • 26.MPSOC FPGA linux读AHT20传感器
  • 嵌入式系统时序图完全指南:从原理到实战
  • 小团队与大团队的管理差异
  • [CISCN2019 华东南赛区]Web4
  • AI编程革命!Claude Skills大揭秘:小白也能快速上手的Agent开发神器,大模型开发者必看!
  • 内点法求最优潮流附matlab代码
  • 三相PWM整流器有限集模型预测电流控制附Simulink仿真模型
  • 光伏四可“可观”功能:光伏电站全景数字化的底层支撑技术
  • 如何用FLUX.1-dev镜像在本地部署下一代AI绘画模型?
  • 基于 Comsol 移动网格方法的激光熔池流动数值模拟
  • BLDC无刷直流电机Matlab仿真:转速电流双闭环控制及有感无感换相方式研究
  • [光学原理与应用-491]:水冷机、零气模块CDA、功率计等影响266皮秒紫外激光器的种子源1064nm功率稳定性结果的主要因素有哪些?
  • 昆仑通态MCGS与欧姆龙E5CC温控器通讯实战:PID模式及输出启停控制
  • 通达信〖逆势突破强牛〗指标公式 逆市环境中率先突破前期重要压力位 较强内在上涨动力
  • 基于扰动观测器的永磁同步电机(PMSM)模型预测控制(MPC)仿真探索
  • AEB联合仿真算法设计:Carsim2019.0+Matlab/Simulink2021a实现...
  • Java毕设选题推荐:基于springboot个人博客系统的设计与实现基于SpringBoot+Vue个人博客系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于springboot停车场车位预约系统基于Java springboot停车场管理系统停车位预约【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Java毕设选题推荐:基于springboot的无人化、线上化、数据化海洋馆预约系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • Ascend C高级API应用:InitGlobalMemory与Pad操作的底层原理
  • Java毕设选题推荐:基于Java Web的新能源汽车信息咨询服务基于SpringBoot+Vue的新能源汽车信息咨询服务的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:OPA 集成指南:从原理到实践
  • Object.defineProperty和Proxy实现拦截的区别