51单片机11(蜂鸣器硬件设计和软件设计)

一、蜂鸣器硬件设计

1、

2、上面两张图,是针对不同产品的电路图。像左边这一块,是我们的A2,A3,A4的一个产品对应的一个封闭器的硬件电路。而右边的这一块是对应的A5到A7的一个硬件电路。因为A5到A7的一个产品,它的各个模块都是完全独立的,所以它的控制管脚都是通过这种排针的方式引出来。你要使用那个管脚控制都可以自由搭配。

3、我们先来看一下我们的这种集成的,所谓的集成就是说我们的板载的这个硬件资源,通通都绑定到了单片机的IO口,而我们人为是无法改变的,因为我们预先已经把它控制管脚连到了单片机的管脚上面,所以必须要在编程的时候,你要指定使用我们的这个电路的一个管脚。

4、那我们来看一下这个电路,前面我们已经对这个51单片机的IO口做了简单的介绍,并且还使用这个IO口来直接控制开发板上的一个LED,那对于本章的这个蜂鸣器实验控制,我们是不是还可以使用这个单片机的IO口,来驱动这个蜂鸣器直接发出声音,当然是不可以,因为我们的51单片机的IO口,它的驱动能力比较弱,前面我们在介绍这个P0,P1,P2,P3它的内部结构的时候,我们知道,它的内部虽然有一些上拉电阻,但是驱动能力比较弱即使你外部增加了这个IO,增加了上拉,它的驱动能力也不会提高很多,而且蜂鸣器呢,它的驱动通常是需要30个毫安。而我们单片机的IO口,它的驱动能力是不足这个的,所以非常困难,即使可以勉强驱动,对于整个芯片的其他IO,剩下的那个驱动能力那就更弱了。所以说,我们不会直接使用这种IO口来驱动蜂鸣器,也就是不会直接使用这种,比如说我们现在的单片机的P25管脚,我不会直接使用P25管脚来连到这个蜂鸣器管脚上面来控制它。这样是不可以的。我们会通过一些放大电路,比如说我们会使用三极管,把电流放大,然后再驱动这个蜂鸣器来发出声音,这样呢,我们的51单片机IO口,只需要很小的电流,比如说还不到1毫安的电流就可以的驱动我们的蜂鸣器来发出声音。所以这也是我们前面常说到的单片机,通常是用来做控制。记住我们的单片机通常是用来做控制的,而不是说做驱动的。驱动自然是有一些相应的驱动电路,我们的单片机只是用来做控制一些外部的驱动电路来实现我们的一些设备的一个运行。

5、那我们来看一下我们的集成板,像我们的A2到A4,它所使用的这个驱动电路是ULN2013这个芯片,这个芯片,我们后续会介绍一下这个芯片在我们学习电机的时候,我们会介绍这里,大家只要了解,通过这个芯片,可以驱动我们的蜂鸣器发出声音,此处,先不要了解,可以不了解这个ULN2013的一个使用,只知道这个P25管脚的输出高,那么对应的蜂鸣器输出管脚是对应的是低,也就是相当于一个非门一样的一个电路。那从这个图中,我们也可以知道,像蜂鸣器我们使用的是网络标号,是BEEP,然后对应到我们的原理图里面,这里也有个BEEP,说明它们之间是连接着的。而这个OUT 5管脚那对应着的输入也是IN5,所以是P25管脚来控制我们的蜂鸣器,这里看原理图也是这样去看。然后呢,我们对这个P25管脚,所以我们只可以使用P25管脚来输出一定频率的脉冲信号来控制我们蜂鸣器发出声音,当我们P25管脚输出高,这里就输出低,它这里就有电流,电压。低的话,那么这里就是高,这里就是截止,所以通过这么一个脉冲信号,可以使我们的蜂鸣器发出声音,这是我们的这个A2到A4的这一块的一个电路的一个介绍。

6、那我们对于A5到A7的产品,它是模块独立的引出来的控制拐角,是通过这个端子,也就是这个排针,那我们可以使用一条导线,将我们的这个P25管脚进行一个连接,这样就可以实现我们的软件通用。那么我们来分析一下这个硬件的一个电路,这里使用的是一个三极管PNP的一个三极管来进行一个电流的一个放大,那么当我们这个管脚输出一个低电平的时候,那么在这个PNP 3极管这里是它的一个设计。

7、此处我们使用的是无源蜂鸣器,所以它是需要一定频率的脉冲信号才能控制它发生,也就是你说的这个P25管脚,它要连续的输入这种波形的一个信号才可以,不仅仅是输一个高或者低就能让它发生,除非你这个蜂鸣器使用的是有源蜂鸣器。假设这个BZI是一个有源蜂鸣器,那当我们的这个管脚P25输出一个低电平的时候,那这里就有电源进来,根据我们的有源蜂鸣器的导通特性,它的一个特点,它只要有电源,它就会发出声音,所以这里直接就会响,那我输出高电平的时候,这里呢截止,它就没有电源,它就会停止发声,所以有源封闭性控制相对无缘封闭性来说更简单。它就相当于我们前面操作LED一样,只需要对它一个高低电平的一个输出。而无源供电器,它是需要一定频率脉冲信号,这一定频率脉冲信号是指P25,它需要连续输出,而不是说只输一下高或者低就行了。

二、蜂鸣器软件设计

1、本章所要实现的功能是:让蜂鸣器发出声音,一段时间后再关闭,即让管脚输出一定频率的脉冲信号(高低电平)控制无源蜂鸣器。

2、要编写这个封闭器的一个控制程序,首先我们要了解一下所要实现的功能,这个蜂鸣器也就是相当于让我们的这个管脚对应的原理图里面的P25管脚,产生一定频率的脉冲信号出来,然后控制这个蜂鸣器就可以发声了,然后一段时间之后我们再将P25管脚让它输出低或者是输出高都可以,因为它没有连续的信号。即使你低或者高,它都不会发出声音。这是我们的这个软件设计的一个功能需求,知道了这个功能需求了之后,那我们接下来就可以编写我们的一个蜂鸣器的一个代码。那我们怎么来编写呢。

3、首先,要让这个无源蜂鸣器进行发声,首先要让我们的管教输出一定频率的脉冲信号,才可以进行发声,那要产生一定频率的脉冲信号,顾名思义,就是要让这个P2.5管脚不断地输出高低这么一个波,那其实对应到我们前面的LED闪烁是不是一样的,我们LED闪烁,大家应该都记得,我们的是低电平点亮,高电平熄灭,相当于就是LED闪烁,只不过这个闪烁的时候,我们把这个时间缩短了,我们肉眼看到这个时间可能是很长,我们是450个毫秒,但是在这个蜂鸣器这里450个毫秒,它是不会发出声音的,他要求的是1.5到5k赫兹,当然误差一点也是可以的。那假设的我这1k赫兹的这个频率下面,让这个蜂鸣器发出声音。1k赫兹它这是频率周期,是频率的导数,所以相当于1毫秒,因此我们周期是1毫秒。那你低电平假设我的占功比是50%,占功比前面讲述了就是高电平所占据整个周期的一个时间,这就相当于多少0.5个毫秒对不对,这里也是0.5个毫秒,所以高电平让它输出0.5个毫秒,低电平让它输出0.5个毫秒,这样不断的输出,我们的蜂鸣器就能发声了。

4、下面我们就可以编写代码了

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

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

相关文章

Python和C++全球导航卫星系统和机器人姿态触觉感知二分图算法

🎯要点 🎯马尔可夫随机场网格推理学习 | 🎯二维伊辛模型四连网格模型推理 | 🎯统计物理学模型扰动与最大乘积二值反卷积 | 🎯受限玻尔兹曼机扰动和最大乘积采样 | 🎯视觉概率生成模型测试图像 &#x1f3…

关于文档理解相关工作的一些总结

过去四年时间,都在处理结构化数据的存储优化相关的工作。最近一段时间在做RAG相关的工作。非结构数据的存储与检索,接触的也越来越多。这篇文章聊聊最近一段时间关于文档理解方面的一些心得。 文档理解 文档理解旨在从非结构化文档中提取信息并将其转化…

推荐一款uniapp拖动验证码插件

插件地址:易盾验证码 - DCloud 插件市场 具体使用方式访问插件地址自行获取

JVM:SpringBoot TomcatEmbeddedWebappClassLoader

文章目录 一、介绍二、SpringBoot中TomcatEmbeddedWebappClassLoader与LaunchedURLClassLoader的关系 一、介绍 TomcatEmbeddedWebappClassLoader 是 Spring Boot 在其内嵌 Tomcat 容器中使用的一个类加载器(ClassLoader)。在 Spring Boot 应用中&#…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(八)-通过无人机进行无线接入

引言 本文是3GPP TR 22.829 V17.1.0技术报告,专注于无人机(UAV)在3GPP系统中的增强支持。文章提出了多个无人机应用场景,分析了相应的能力要求,并建议了新的服务级别要求和关键性能指标(KPIs)。…

实现多层感知机

目录 多层感知机: 介绍: 代码实现: 运行结果: 问题答疑: 线性变换与非线性变换 参数含义 为什么清除梯度? 反向传播的作用 为什么更新权重? 多层感知机: 介绍:…

LabVIEW红外热波图像缺陷检

开发使用LabVIEW开发的红外热波图像缺陷检测系统。该系统结合红外热像仪、工业相机和高效的数据采集硬件,实现对工件表面缺陷的自动检测和分析。通过LabVIEW的强大功能,系统能够实时采集、处理和显示红外热波图像,有效提高了检测的精度和效率…

【Playwright+Python】系列 Pytest 插件在Playwright中的使用

一、命令行使用详解 使用 Pytest 插件在Playwright 中来编写端到端的测试。 1、命令行执行测试 pytest --browser webkit --headed 2、使用 pytest.ini 文件配置 内容如下: [pytest] # Run firefox with UIaddopts --headed --browser firefox效果&#xff1…

机器人相关工科专业课程体系

机器人相关工科专业课程体系 前言传统工科专业机械工程自动化/控制工程计算机科学与技术 新兴工科专业智能制造人工智能机器人工程 总结Reference: 前言 机器人工程专业是一个多领域交叉的前沿学科,涉及自然科学、工程技术、社会科学、人文科学等相关学科的理论、方…

STM32MP135裸机编程:定时器内核时钟频率计算方法

0 工具准备 STM32MP13xx参考手册 1 定时器内核时钟频率计算方法 1.1 定时器分组 STM32MP135的定时器按照时钟源不同分成了三组,如下: APB1: APB2: APB6: 1.2 定时器内核时钟频率计算方法 APB1DIV是APB1的分频系数,APB2DIV、…

Flink Window 窗口【更新中】

Flink Window 窗口 在Flink流式计算中,最重要的转换就是窗口转换Window,在DataStream转换图中,可以发现处处都可以对DataStream进行窗口Window计算。 窗口(window)就是从 Streaming 到 Batch 的一个桥梁。窗口将无界流…

制作显卡版docker并配置TensorTR环境

感谢阅读 相关概念docker准备下载一个自己电脑cuda匹配的docker镜像拉取以及启动镜像安装cudaTensorRT部署教程 相关概念 TensorRT是可以在NVIDIA各种GPU硬件平台下运行的一个模型推理框架,支持C和Python推理。即我们利用Pytorch,Tensorflow或者其它框架…

汽车的驱动力,是驱动汽车行驶的力吗?

一、地面对驱动轮的反作用力? 汽车发动机产生的转矩,经传动系传至驱动轮上。此时作用于驱动轮上的转矩Tt产生一个对地面的圆周力F0,地面对驱动轮的反作用力Ft(方向与F0相反)即是驱动汽车的外力,此外力称为汽车的驱动力。 即汽车…

Codeforces Round 957 (Div. 3)(A~D题)

A. Only Pluses 思路: 优先增加最小的数&#xff0c;它们的乘积会是最优,假如只有两个数a和b&#xff0c;b>a&#xff0c;那么a 1&#xff0c;就增加一份b。如果b 1&#xff0c;只能增加1份a。因为 b > a&#xff0c;所以增加小的数是最优的。 代码: #include<bi…

最新PHP自助商城源码,彩虹商城源码

演示效果图 后台效果图 运行环境&#xff1a; Nginx 1.22.1 Mysql5.7 PHP7.4 直接访问域名即可安装 彩虹自助下单系统二次开发 拥有供货商系统 多余模板删除 保留一套商城,两套发卡 源码无后门隐患 已知存在的BUG修复 彩虹商城源码&#xff1a;下载 密码:chsc 免责声明&…

搞定ES6同步与异步机制、async/await的使用以及Promise的使用!

文章目录 同步和异步async/awaitPromisePromise的概念 同步和异步 ​ 同步&#xff1a;代码按照编写顺序逐行执行&#xff0c;后续的代码必须等待当前正在执行的代码完成之后才能执行&#xff0c;当遇到耗时的操作&#xff08;如网络请求等&#xff09;时&#xff0c;主线程会…

解决fidder小黑怪倒出JMeter文件缺失域名、请求头

解决fidder小黑怪倒出JMeter文件缺失域名、请求头 1、目录结构&#xff1a; 2、代码 coding:utf-8 Software:PyCharm Time:2024/7/10 14:02 Author:Dr.zxyimport zipfile import os import xml.etree.ElementTree as ET import re#定义信息头 headers_to_extract [Host, Conn…

C语言 | Leetcode C语言题解之第236题二叉树的最近公共祖先

题目&#xff1a; 题解&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/typedef struct road_t {struct TreeNode *road_node; // 途径路径struct road_t *p_next; }…

[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)

文章目录 1. 安装插件 JarEditor2. 在IDEA中添加外部JAR包3. JarEditor 使用介绍 之前我们需要修改jar内文件的时候需要解压jar包&#xff0c;反编译class&#xff0c;新建java源文件&#xff0c;修改代码&#xff0c;再编译成class&#xff0c;替换jar包内的class文件。 现在…

MongoDB教程(三):mongoDB用户管理

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; 文章目录 引言一、MongoD…