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

news/2024/4/30 6:15:15/文章来源:https://blog.csdn.net/qq_36139768/article/details/130204345

学习目的

  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.luyixian.cn/news_show_289572.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【JavaScript】6.DOM

文章目录 DOM1. 简介2. 获取元素2.1 根据 ID 获取2.2 根据标签名获取2.3 通过 HTML5 新增的方法获取2.4 特殊元素获取 3. 事件基础3.1 事件概述3.2 事件三要素3.3 执行事件步骤 DOM 1. 简介 文档对象模型(Document Object Model,简称 DOM)&…

小红书达人种草怎么收费?

随着小红书平台的快速发展,用户数量在不断的上升,市场上也涌现出了很多的小红书营销公司,小红书营销主要是以小红书代写代发、品牌植入广告等方式来做品牌种草品宣。 小红书达人种草怎么收费这个问题,相信很多商家朋友都非常关心…

Flutter开发日常练习-pageview滑动视图动画

养小猫咪的伙伴来我的店铺逛逛吧!抖音商城搜索#早睡早起的猫咪小铺子 学着写一下滑动页面 pageview实现左右滑动视图 class SlidingContainer extends StatefulWidget {const SlidingContainer({super.key});overrideState<SlidingContainer> createState() > _Slidi…

2023零基础快速跟上人工智能第一梯队

写在前面&#xff1a;有关人工智能学什么&#xff0c;怎么学&#xff0c;什么路线等一系列问题。我决定整理一套可行的规划路线&#xff0c;希望帮助准备入门的朋友们少走些弯路。 下面我会推荐一个比较快速可行的学习模板&#xff0c;并附上我认为比较好的学习资料。 新手不建…

设计模式:创建者模式 - 适配器模式

文章目录 1.概述2.结构3.类适配器模式4.对象适配器模式5.应用场景6.JDK源码解析 - Reader 与 InputStream 1.概述 如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑&#xff0c;手机…

apache 配置与应用以及网页优化

Apache 配置与应用 --------构建虚拟 Web 主机-------- 虚拟Web主机指的是在同一台服务器中运行多个Web站点&#xff0c;其中每一个站点实际上并不独立占用整个服务器&#xff0c;因此被称为“虚拟”Web 主机。 通过虚拟 Web 主机服务可以充分利用服务器的硬件资源&#xff0c…

垃圾回收相关算法

标记阶段的算法 垃圾标记阶段&#xff1a;对象存货判断 在堆里存放着几乎所有的Java对象实例&#xff0c;在GC执行垃圾回收之前&#xff0c;首先需要区分出内存中哪些是存活对象&#xff0c;哪些是己经死亡的对象。只有被标记为己经死亡的对象&#xff0c;GC才会在执行垃圾回…

浏览器插件官方demo学习(五):键盘快捷键、数据缓存、网络请求监听

键盘快捷键 这个demo主要是介绍了&#xff0c;通过自定义键盘快捷键的方式来触发扩展。 必须要在manifest.json文件中添加commands属性组合键&#xff1a;使用组合键时必须包含 Ctrl 或 Alt 细节不介绍&#xff0c;可以自行查看官方文档。这里只看一下常用的东西。 定义组合…

【C++STL精讲】优先级队列(priority_queue)与双端队列(deque)

文章目录 &#x1f490;专栏导读&#x1f490;文章导读&#x1f337;优先级队列——priority_queue&#x1f338;什么是优先级队列&#xff1f;&#x1f338;优先级队列的基本使用&#x1f338;什么是仿函数&#xff1f;&#x1f338;优先级队列的模拟实现 &#x1f337;双端队…

vue element-ui web端 引入高德地图,并获取经纬度

发版前接到一个临时新需求 &#xff0c;需要在web端地址选择时用地图&#xff0c;并获取经纬度。 临阵发版之际加需求&#xff0c;真的是很头疼&#xff0c;于是赶紧找度娘&#xff0c;找api。 我引入的是高德地图&#xff0c;首先要去申请key &#xff0c; 和密钥&#xff0c;…

20230420使用逻辑分析仪测量摄像头的PAG7920的时钟信号

20230420使用逻辑分析仪测量摄像头的PAG7920的时钟信号 2023/4/20 19:14 在CV1826平台&#xff1a; 1、vsync信号&#xff1a;刷新率120HZ PAG7920LT: Ultra-Low Power Global Shutter Image Sensor Max. Frame Rate 180 FPS 20KSa/20KHZ 2、href行同步信号&#xff1a;KHZ级别…

Vulnhub项目:JANGOW 1.0.1

靶机地址&#xff1a;Jangow: 1.0.1 ~ VulnHub 渗透过程&#xff1a; kali ip&#xff1a;192.168.56.104&#xff0c;使用arp-scan -l查看到靶机ip192.168.56.118 对靶机进行端口探测&#xff0c;发现了21、80端口 访问80端口&#xff0c;发现site目录 点击进去后&#xff0…

【Linux】使用systemd设置开机自启动命令

目录 1 使用使用systemd实现开机自动运行命令1.1 新建一个.service文件1.2 编写.service文件1.2.1 [Unit]1.2.2 [Service]1.2.3 [Install] 1.3 启动服务并设置自启动 2 编写Systemd服务文件的要点2.1 Systemd服务文件的位置2.2 Systemd服务文件的格式2.3 Systemd服务文件的基本…

Spring事务(3)-TransactionInterceptor实际事务执行

Spring事务&#xff08;2&#xff09;-EnableTransactionManagement实现源码解析 中介绍了Spring事务开启和代理的实现&#xff0c;现在了解实际事务执行TransactionInterceptor。 TransactionInterceptor TransactionInterceptor类图 MethodInterceptor&#xff1a;AOP代理后…

IDEA社区版搭建Tomcat服务器并创建web项目

IDEA社区版搭建Tomcat服务器并创建web项目 目标 创建Web项目的目录结构可以启动Tomcat服务器编写Servlet并访问成功 问题 IDEA社区版没有创建Web工程的选项IDEA社区版没有Tomcat插件 实现步骤 针对以上两个问题&#xff0c;分步解决 问题一&#xff1a;IDEA社区版没有创建…

深入认识VirtualPrivateNetwork

目录 一、认识什么是认证&#xff1f; 1.什么是数据认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段? 2.什么是身份认证&#xff0c;有什么作用&#xff0c;有哪些实现的技术手段? 二、认识什么是VPN 1.什么VPN技术? 2.VPN技术有哪些分类? 3.IPSEC技术…

我的Qt作品(18)模仿Qt Creator IDE写了一个轻量级的视觉框架

Qt Creator的源码比较庞大。前几年我陆陆续续读过里面的源码。也写了几篇博文&#xff1a; https://blog.csdn.net/libaineu2004/article/details/104728857 https://blog.csdn.net/libaineu2004/article/details/89407333 最近一直想找机会&#xff0c;借用这个IDE的皮&…

mapreduce基础: 手写wordcount案例

文章目录 一、源代码二、运行截图 一、源代码 WordCountMapper类 package org.example.wordcount;import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Mapper;impo…

DNS服务器配置与使用【CentOS】

从本质上说&#xff0c;DNS是一个分布数据库&#xff0c;是一个树形结构&#xff08;不是网状&#xff09;——层次结构 DNS查找过程就是 回溯的过程&#xff08;递归、迭代&#xff09; www.xxx.edu.cn&#xff08;属于四层结构&#xff09; 查询DNS&#xff1a;域名到IP地址的…

【Maven 入门】第二章、Maven核心程序解压与配置

一、Maven 官网地址 首页&#xff1a; Maven – Welcome to Apache Maven(opens new window) 下载页面&#xff1a; Maven – Download Apache Maven(opens new window) 本文以maven-3.3.8为例 具体下载地址&#xff1a;https://dlcdn.apache.org/maven/maven-3/3.8.8/bina…