【STC8A8K64D4开发板】——有源蜂鸣器鸣响控制

news2024/12/28 18:28:59

学习目的

  1. 掌握有源蜂鸣器驱动电路的设计:控制方式、限流电阻的计算和确定。
  2. 了解有源蜂鸣器的特性以及和无源蜂鸣器的区别。

硬件电路设计

开发板上的蜂鸣器驱动电路如下图所示,使用的蜂鸣器是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:有源蜂鸣器鸣响控制”。

实验内容

  1. 配置驱动蜂鸣器的GPIO P2.0为推挽输出。
  2. 主循环中驱动蜂鸣器间隔性鸣响:每200ms改变一次P2.0的输出电平,即蜂鸣器以200ms的间隔鸣响。

代码编写

  1. 新建一个名称为“beep.c”的文件及其头文件“beep.h”并保存到工程的“Source”文件夹,并将“beep.c”加入到Keil工程中的“SOURCE”组。
  2. 本例中编写了两个操作蜂鸣器的函数:beep_on函数和beep_off函数,分别用于鸣响蜂鸣器和关闭蜂鸣器鸣响,他们的代码清单如下。

**代码清单:**beep_on函数

  1. /**************************************************************************
  2. 功能描述:鸣响蜂鸣器
  3. 参 数:无
  4. 返 回 值:无
  5. *************************************************************************/
  6. void beep_on(void)
  7. {
  8. BEEP_P20 = 1; //蜂鸣器鸣响
  9. }

**代码清单:**beep_off函数

  1. /**************************************************************************
  2. 功能描述:蜂鸣器停止鸣响
  3. 参 数:无
  4. 返 回 值:无
  5. *************************************************************************/
  6. void beep_off(void)
  7. {
  8. BEEP_P20 = 0; //蜂鸣器停止鸣响
  9. }
  10. 主程序“main.c”中先配置P2.0为推挽输出,之后在主循环中以200ms间隔轮流鸣响和关闭蜂鸣器鸣响,代码清单如下:

**代码清单:**主函数

  1. /**************************************************************************
  2. 功能描述:主函数
  3. 入口参数:无
  4. 返回值:int类型
  5. *************************************************************************/
  6. int main(void)
  7. {
  8. P2M1 &= 0xFE; P2M0 |= 0x01; //配置P2.0为推挽输出
  9. while(1)
  10. {
  11. beep_on(); //鸣响蜂鸣器
  12. delay_ms(200); //延时200ms
  13. beep_off(); //蜂鸣器停止鸣响
  14. delay_ms(200); //延时200ms
  15. }
  16. }

硬件连接

本实验中,控制有源蜂鸣器的引脚P2.0没有和其他电路复用,因此,没有短接跳线帽的操作,用USB数据线将开发板连接到电脑即可。

实验步骤

  1. 解压“…\第3部分:配套例程源码”目录下的压缩文件“实验2-2-1:有源蜂鸣器鸣响控制”,将解压后得到的文件夹拷贝到合适的目录,如“D\STC8”(这样做的目的是为了防止中文路径或者工程存放的路径过深导致打开工程出现问题)。
  2. 双击“…\beep\project”目录下的工程文件“beep.uvproj”。
  3. 点击编译按钮编译工程,编译成功后生成的HEX文件“beep.hex”位于工程的“…\beep\project\Objects”目录下。
  4. 打开STC-ISP软件下载程序,下载使用内部IRC时钟,IRC频率选择:24MHz。
  5. 程序运行后,可以观察到蜂鸣器鸣响200ms,之后关闭鸣响200ms,如此往复。
    t\Objects”目录下。
  6. 打开STC-ISP软件下载程序,下载使用内部IRC时钟,IRC频率选择:24MHz。
  7. 程序运行后,可以观察到蜂鸣器鸣响200ms,之后关闭鸣响200ms,如此往复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue学习——【第二弹】

前言 上一篇文章 Vue学习——【第一弹】 中我们学习了Vue的相关特点及语法,这篇文章接着通过浏览器中的Vue开发者工具扩展来进一步了解Vue的相关工作机制。 Vue的扩展 我们打开Vue的官方文档,点击导航栏中的生态系统,点击Devtools 接着我…

C/C++|物联网开发入门+项目实战|嵌入式C语言高级|简介及GCC参数|define|编译过程-学习笔记(7)

课程介绍 参考:麦子学院-嵌入式C语言高级 本套课程的定位 前导课程:掌握简单C语言的基本语法 计算机程序语言的学习思路? 基本程序设计思想+语言工具的特性 基本程序设计思想: 数据类型、运算符、条件分支、循环设计 面向对象的设计 C语言工具的特性…

数据库系统笔记CH5(初)

计组的知识 虚拟存储 IEEE754标准 5.1存储层级 二级存储器磁盘和固态硬盘 红色部分是磁道,蓝色部分是扇区,绿色指示部分是数据库中的一个块/页 块/页是我们用来存储介质的一个物理单元,数据写入磁盘以块位单位写入内存,一个块的大小一般是4KB或者8KB&…

项目管理中,这些思维误区一定要避开

项目需要在限定的时间要求完成的事情,可控的关键把握是:人、时、事。 但是,项目实施时间一般较长,总有很多项目实施结果不尽人意。那么,IT项目管理过程中,容易出现哪些思维误区呢? 1、忘记项…

react性能优化之shouldComponentUpdate的原理剖析

shouldComponentUpdate原理讲解shouldComponentUpdate是干什么的怎么使state更新而render函数不执行呢?使用shouldComponentUpdate完成性能优化当组件的state没有变化,props也没有变化,render函数可能执行吗?pureComponent的基本用…

北京小厂Java实习面经

目录1.数据库的三大范式2.事务四个特性3.知道多少种索引,分别讲讲4.主键索引和唯一索引的区别5.索引失效的场景6.数据库的日志知道哪些,分别讲讲7.redis的数据结构和应用场景8.缓存击穿是怎么产生的,解决方案9.redis中key的过期策略10.redis内…

达梦数据库支持GB18030-2022中文编码字符集证明方法

既然是证明就要做到有图有真相。 证明途径1:系统概览法 查看达梦数据库“管理工具”->“对象导航”->“管理服务器”-“系统概览”->“字符集编码”->”GB18030”. 看见”GB18030”字样就是证据之一。如果你没有看见这个字样,而是UTF8等其…

1. 大端法和小端法

int32_t num 0x01020304;一个int32_t是4个字节,在内存中的存储是高位字节在低地址,低位字节在高地址。 (数字)前者的高低是数字位数的高低,左边是高位数,右边是低位数; (地址&…

git代码使用空格缩进

1、idea设置缩进符为空格 Java 代码 golang 代码 2、设置提交仓库时的空格处理,否则 golang 代码为了减少文件大小,可能会把空格缩进改为制表符。 设置当前仓库配置 git config core.whitespace "-trailing-space,space-before-tab" 设置当前…

Pytorch深度学习实战3-7:详解数据加载DataLoader与模型处理

目录1 数据集Dataset2 数据加载DataLoader3 常用预处理方法4 模型处理5 实例:MNIST数据集处理1 数据集Dataset Dataset类是Pytorch中图像数据集操作的核心类,Pytorch中所有数据集加载类都继承自Dataset父类。当我们自定义数据集处理时,必须实…

从TOP25榜单,看半导体之变

据SIA报告显示,2022年全球半导体销售额创历史新高达到5740亿美元。尽管2022年下半年,半导体市场出现了周期性的低迷,但其全年的销售额相较2021年增长了3.3%。 近日,市调机构Gartner发布了全球以及中国大陆TOP25名半导体厂商的排名…

js数组API的时间复杂度大全

一句话总结: 数组为连续且有序的数据结构, 所以若根据下标查找则很快,index[i]一步到位就可实现查询,若遍历查找则很慢(相对而言)。而插入和删除,除了数组末尾的增删很快,其它处则很慢,因为若数组某处要插入…

【服务器数据恢复】 重装系统导致xfs文件系统分区丢失的数据恢复案例

服务器数据恢复环境: EMC某型号存储,20块磁盘组建raid5磁盘阵列,划分2个lun。 服务器故障: 管理员执行重装系统操作后发现分区发生改变,原先的sdc3分区丢失,该分区采用xfs文件系统,存储了公司重…

开放式耳机好用吗,推荐几款不错的开放式耳机

​开放式耳机是一种新型的耳机,相比于传统的耳机,开放式耳机听歌时不需要将耳朵堵上,不会因为长时间佩戴而对听力造成损害。它不需要入耳也能听到声音,在户外运动时能够及时听到环境音,避免安全隐患。现在在骨传导市面…

nodejs+vue 沃健身房管理系统

3)系统分析 本章主要是对系统可行性、系统性能、还有系统功能需求进行分析。 (4)系统设计 对系统系统功能和数据库等进行详细讲解。 (5)系统的实现 主要对个人中心、课程分类管理、用户管理、健身器材管理、健身教练管理、预约教练管理、健身课程管理、课程订单管理、健身视频管…

ESP32学习笔记08-adc单通道数据采集

8. adc单通道数据采集 8.1RTC SAR ADC 控制器 8.2ADC相关的api 8.2.1 配置adc的位宽 esp_err_t adc1_config_width(adc_bits_width_t width_bit);width_bit :位宽 返回值 ESP_OK 配置成功 ESP_ERR_INVALID_ARG 参数错误 esp32最大的宽度的12位typedef enum {

STM8S208MB -> 寄存器方式实现对Flash的连续读写操作(IAR)

代码 File: STM8S208MB_Flash_Op.c /*file: STM8S208MB_Flash_Op.cbrief: 读写Flashdata: 2023-04-14author: ArcherQAQ */#include "STM8S208MB_Flash_Op.h" #include "stdio.h"u8 dataBuf[] {0xFF, 0xFF}; // 写入Flash的数据 u8 Rec_Buf[100] {0x00…

天猫数据分析:2023年速食品(方便面)市场数据分析

我国的方便面市场是一个比较活跃的市场,其市场规模也比较庞大。近年来,随着中国经济的发展,消费者对方便面的需求量和要求也在不断变化,因此,我国方便面市场的规模和消费者的需求环境也正在不断改变。 根据鲸参谋电商数…

Excel技能之排名,小函数很强大

你还在熬夜加班搞Excel吗? 你还在用手指,指着电脑屏幕,一行一行核对数据吗? 你还在害怕被笑而不敢问同事吗? 赶紧来学Excel,收藏加关注,偷偷地进步!日积月累,必成大器&am…

12-python内存地址

1.查看内存地址 a1 print(id(a)) # 24319294835042.数据类型 (1)不可变数据类型:数值、字符串、布尔值、元组 数据存储在计算机中的某个位置,不管赋值给谁,内存地址都相同 a"jack" b"jack" prin…