网站首页 > 技术文章 正文
学习目的
- 掌握有源蜂鸣器驱动电路的设计:控制方式、限流电阻的计算和确定。
- 了解有源蜂鸣器的特性以及和无源蜂鸣器的区别。
硬件电路设计
开发板上的蜂鸣器驱动电路如下图所示,使用的蜂鸣器是3V有源蜂鸣器,这里,我们有必要了解一下有源蜂鸣器和无源蜂鸣器的区别:
- 有源蜂鸣器:有源蜂鸣器内部带震荡源,所以只要通电就会鸣响。
- 无源蜂鸣器:内部不带震荡源,用直流信号无法令其鸣响。必须用频率信号去驱动他才会鸣响。
所以,对于有源蜂鸣器来说,只要通电就会鸣响。为了实现控制有源蜂鸣器的鸣响,我们的电路中就需要一个“开关”来实现有源蜂鸣器接通或断开电源。在开发板上,是使用NPN三极管9013来实现“开关”的功能的,通过单片机的引脚P2.0输出高低电平控制“开关”的接通和断开,即:
- 当P2.0输出逻辑0,即低电平时,9013基极电压约为0V,基极没有电流,因此集电极也没有电流流过,三极管处于截止状态,即蜂鸣器和GND之间“断开”,蜂鸣器不鸣响。
- 当P2.0输出逻辑1,即高电平时,9013饱和导通,即蜂鸣器和GND之间“接通”,蜂鸣器鸣响。
电路中的R11是为了保证P2.0输出逻辑0时三极管可靠的截止。
图1:有源蜂鸣器驱动电路
有源蜂鸣器占用的STC8A8K64D4的引脚如下表:
表1:有源蜂鸣器引脚分配
名称 | 引脚 | 说明 |
有源蜂鸣器 | P2.0 | 独立GPIO |
软件设计
GPIO配置
本实验中只需将STC8A8K64D4的引脚P2.0配置为推挽输出,并输出高低电平即可(高电平鸣响蜂鸣器,低电平关闭蜂鸣器鸣响),原理和LED实验一样,参见“第2-1讲:点灯实验”中GPIO部分的描述即可。
蜂鸣器鸣响实验
- 注:本节的实验是在“实验2-1-3:流水灯(自编驱动文件方式)”的基础上修改,本节对应的实验源码是:“实验2-2-1:有源蜂鸣器鸣响控制”。
实验内容
- 配置驱动蜂鸣器的GPIO P2.0为推挽输出。
- 主循环中驱动蜂鸣器间隔性鸣响:每200ms改变一次P2.0的输出电平,即蜂鸣器以200ms的间隔鸣响。
代码编写
- 新建一个名称为“beep.c”的文件及其头文件“beep.h”并保存到工程的“Source”文件夹,并将“beep.c”加入到Keil工程中的“SOURCE”组。
- 本例中编写了两个操作蜂鸣器的函数:beep_on函数和beep_off函数,分别用于鸣响蜂鸣器和关闭蜂鸣器鸣响,他们的代码清单如下。
代码清单:beep_on函数
- /**************************************************************************
- 功能描述:鸣响蜂鸣器
- 参 数:无
- 返 回 值:无
- *************************************************************************/
- void beep_on(void)
- {
- BEEP_P20 = 1; //蜂鸣器鸣响
- }
代码清单:beep_off函数
- /**************************************************************************
- 功能描述:蜂鸣器停止鸣响
- 参 数:无
- 返 回 值:无
- *************************************************************************/
- void beep_off(void)
- {
- BEEP_P20 = 0; //蜂鸣器停止鸣响
- }
- 主程序“main.c”中先配置P2.0为推挽输出,之后在主循环中以200ms间隔轮流鸣响和关闭蜂鸣器鸣响,代码清单如下:
代码清单:主函数
- /**************************************************************************
- 功能描述:主函数
- 入口参数:无
- 返回值:int类型
- *************************************************************************/
- int main(void)
- {
- P2M1 &= 0xFE; P2M0 |= 0x01; //配置P2.0为推挽输出
- while(1)
- {
- beep_on(); //鸣响蜂鸣器
- delay_ms(200); //延时200ms
- beep_off(); //蜂鸣器停止鸣响
- delay_ms(200); //延时200ms
- }
- }
硬件连接
本实验中,控制有源蜂鸣器的引脚P2.0没有和其他电路复用,因此,没有短接跳线帽的操作,用USB数据线将开发板连接到电脑即可。
实验步骤
- 解压“…\第3部分:配套例程源码”目录下的压缩文件“实验2-2-1:有源蜂鸣器鸣响控制”,将解压后得到的文件夹拷贝到合适的目录,如“D\STC8”(这样做的目的是为了防止中文路径或者工程存放的路径过深导致打开工程出现问题)。
- 双击“…\beep\project”目录下的工程文件“beep.uvproj”。
- 点击编译按钮编译工程,编译成功后生成的HEX文件“beep.hex”位于工程的“…\beep\project\Objects”目录下。
- 打开STC-ISP软件下载程序,下载使用内部IRC时钟,IRC频率选择:24MHz。
- 程序运行后,可以观察到蜂鸣器鸣响200ms,之后关闭鸣响200ms,如此往复。
猜你喜欢
- 2024-09-10 【STM32F103ZET6开发板】第2-1讲:GPIO硬件设计及原理介绍
- 2024-09-10 【STM32F103ZET6开发板】第2-5讲:外部中断EXTI
- 2024-09-10 关于Linux 进程编程入门(进阶)(linux进程代码)
- 2024-09-10 「STC8A8K64D4开发板」第2-12讲:数码管显示
- 2024-09-10 【STM32F103ZET6开发板】第2-6讲:USART串口通信
- 2024-09-10 【STM32F103ZET6开发板】第2-3讲:GPIO输出驱动蜂鸣器
- 2024-09-10 【STM32F103ZET6开发板】第2-2讲:GPIO输入按键检测
- 2024-09-10 【STM32F103ZET6开发板】第3-7讲:电子墨水屏显示
- 2024-09-10 【STM32F103ZET6开发板】第2-4讲:触摸按键输入检测
- 2024-09-10 MySQL数据库审计核心实现(内有代码)
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)