单片机学习 2-蜂鸣器

2023-05-16

蜂鸣器

蜂鸣器介绍

在这里插入图片描述

压电式蜂鸣器(无源蜂鸣器)发出声音必须提供一定频率的脉冲信号。1.5~5000HZ。频率周期固定,高电平占用周期内时间不同,音调不同;高电平占用比不变,周期不同,音色不同。体积较大。

电磁式蜂鸣器(有源蜂鸣器)发出声音只需要提供电源。体积较小。

51开发板使用的是压电式蜂鸣器。

电路设计

一、截止状态:当加在三极管发射结的电压小于PN结的导通电压,基极电流为零,集电极电流和发射极电流都为零,三极管这时失去了电流放大作用,集电极和发射极之间相当于开关的断开状态,我们称三极管处于截止状态。

二、放大状态:当加在三极管发射结的电压大于PN结的导通电压,并处于某一恰当的值时,三极管的发射结正向偏置,集电结反向偏置,这时基极电流对集电极电流起着控制作用,使三极管具有电流放大作用,其电流放大倍数β=ΔIc/ΔIb,这时三极管处放大状态。

三、饱和导通状态:当加在三极管发射结的电压大于PN结的导通电压,并当基极电流增大到一定程度时,集电极电流不再随着基极电流的增大而增大,而是处于某一定值附近不怎么变化;

这时三极管失去电流放大作用,集电极与发射极之间的电压很小,集电极和发射极之间相当于开关的导通状态。三极管的这种状态我们称之为饱和导通状态。

在这里插入图片描述

在这里插入图片描述

  1. 左边为A2-A4开发板(集成电路),右边为A5-A7开发板(需要自己连线,将P2^5管脚与J7连接)。

  2. 根据三极管工作原理,基极输入高电平(1),电路截止(蜂鸣器不响),输入低电平(0),电路导通(蜂鸣器发声)。

  3. 有源蜂鸣器输入低电平即可发声,无源蜂鸣器必须连续输入产生脉冲信号才可发声。

  4. 不可以直接使I/O端口直接连接蜂鸣器端口,因为蜂鸣器必须要30mA电流才可以驱动成功。所以I/O端口得先通过放大电路(三极管)进行电流放大。

  5. I/O IN5输入高,OUT5输出低。IN5输入低,OUT5输出高。注意中间存在与非门。

软件设计

在这里插入图片描述

无源蜂鸣器发声频率范围1.5KHz-5KHz。T=1/f

周期约为1ms(可以存在误差),即若高低电平占空比均为50%,则高低电平都为0.5ms。

#include"reg52.h"

typedef unsigned int u16;

sbit BEEP=P2^5;
void delay_10us(u16 ten_us)
{
		while(ten_us--);
}
void main()
{
	 u16 i=2000;
	while(1){
		{
			while(i--){   //周期为1ms
//		BEEP=!BEEP;       //方法1
//		delay_10us(50);  
		BEEP=1;           //方法2
		delay_10us(40);// 0.4ms=400us 实际输出低电平
		BEEP=0;
		delay_10us(60);// 600us
			}
			i=0;
			BEEP=0; //使蜂鸣器输出g电平
		}
}	
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单片机学习 2-蜂鸣器 的相关文章

  • B 中等题 LeetCode

    中等题 按出题指数排列 1 2 两数相加 给出两个 非空 的链表用来表示两个非负的整数 其中 xff0c 它们各自的位数是按照 逆序 的方式存储的 xff0c 并且它们的每个节点只能存储 一位 数字 如果 xff0c 我们将这两个数相加起来
  • 回文串 leetcode

    1 125 验证回文串 给定一个字符串 xff0c 验证它是否是回文串 xff0c 只考虑字母和数字字符 xff0c 可以忽略字母的大小写 说明 xff1a 本题中 xff0c 我们将空字符串定义为有效的回文串 示例 1 输入 34 A m
  • 回溯法 题目 leetcode

    1 22 括号生成 数字 n 代表生成括号的对数 xff0c 请你设计一个函数 xff0c 用于能够生成所有可能的并且 有效的 括号组合 示例 xff1a 输入 xff1a n 61 3 输出 xff1a 34 34 34 34 34 34
  • 买卖股票系列问题 Leetcode题目

    leetcode 刷题记录 一 买卖股票系列问题 1 121 买卖股票的最佳时机 给定一个数组 xff0c 它的第 i 个元素是一支给定股票第 i 天的价格 如果你最多只允许完成一笔交易 xff08 即买入和卖出一支股票一次 xff09 x
  • 区间问题 LeetCode

    表示重点复习题 xff0c 没做出来 区间问题 1 56 合并区间 给出一个区间的集合 xff0c 请合并所有重叠的区间 示例 1 输入 intervals 61 1 3 2 6 8 10 15 18 输出 1 6 8 10 15 18 解
  • 网格DFS LeetCode

    岛屿问题 DFS 200 岛屿数量 给你一个由 1 xff08 陆地 xff09 和 0 xff08 水 xff09 组成的的二维网格 xff0c 请你计算网格中岛屿的数量 岛屿总是被水包围 xff0c 并且每座岛屿只能由水平方向和 或竖直
  • 括号题目 Leetcode

    括号系列问题 Leetcode 20 有效的括号 给定一个只包括 39 39 xff0c 39 39 xff0c 39 39 xff0c 39 39 xff0c 39 39 xff0c 39 39 的字符串 s xff0c 判断字符串是否有
  • 回溯 组合 排列 生成 LeetCode

    回溯 组合 排列 生成 算法题目 77 组合 给定两个整数 n 和 k xff0c 返回 1 n 中所有可能的 k 个数的组合 示例 输入 n 61 4 k 61 2 输出 2 4 3 4 2 3 1 2 1 3 1 4 解法1 回溯 递归
  • Centos 7安装Python3环境

    目录 1 安装依赖环境2 下载Python压缩包3 解压Python压缩包4 编译安装4 1 编译前安装相关软件4 2 创建安装目录4 3 生成编译脚本4 4 编译和安装4 5 检查 5 建立软链接6 设置Python3的环境变量6 1 设
  • Linux命令c++filt

    一个简单的linux命令 xff0c 确实不值得大费周折 xff0c 但是 xff0c 在实际的开发过程中 xff0c 却帮助很大 xff0c 在编译cgi xff0c 修改函数的调用之后获得函数的符号名 xff0c 就可以看到这个函数的定
  • 子序列 子数组问题 Leetcode

    子序列 子数组问题 53 最大子序和 给定一个整数数组 nums xff0c 找到一个具有最大和的连续子数组 xff08 子数组最少包含一个元素 xff09 xff0c 返回其最大和 示例 1 xff1a 输入 xff1a nums 61
  • 用devstack快速部署 openstack

    本人openstack小白一名 xff0c 在部署openstack时出现了很多不可逾越的错误 xff0c 只好借助于工具 在用devstack安装openstack之前 xff0c 先用的openshit进行安装 但是出现了无法连接数据库
  • Debain 10安装使用中文输入法

    Debain 10安装使用中文输入法 近来因工作需要 xff0c 需在虚拟机上搭建服务 xff0c 公司虚拟机上用的是Debain系统 xff0c 在使用的过程中觉着没有中文输入法极其不爽 xff0c 于是按照网上多篇教程一步步尝试至最终切
  • 【算法题】素数伴侣-用匈牙利算法解决二分图匹配问题

    描述 输入一个字符串 xff0c 内容是一个不重复的整数数组 若数组中两个数相加为素数 xff0c 那么这两个数可以配对 xff0c 即素数伴侣 一个数字只能配对一次 输出最大配对数 示例 输入 xff1a 4 2 5 6 13 输出 xf
  • MAX30102

    include 34 myiic h 34 include 34 delay h 34 初始化IIC void IIC Init void GPIO InitTypeDef GPIO InitStructure RCC gt APB2ENR
  • linux系统开机自动挂载分区

    以挂载分区 dev sdb1为例 1 查看所有的分区 xff1a sudo fdisk l 1 修改分区类型 fdisk dev sdb 输入m可以查看帮助 xff0c 修改分区类型需要使用t命令 xff0c 并输入分区类型标号 2 查看分
  • Python文件处理相关函数

    文件 xff0c 文件夹 xff0c 压缩包处理模块模块 shutil模块 引入 xff1a import shutil shutil是对OS中文件操作的补充 xff1a 移动 复制 打包 压缩 解压 1 copy文件内容到另一个文件 xf
  • Python多线程

    线程的创建 加入 锁 待补充完善
  • noVNC压缩包下载

    1 浏览器器输入地址 Git地址 xff1a GitHub Where the world builds software GitHub https github com 2 搜索noVNC 3 选择novnc noVNC 4 点击发行版本
  • Python数据类型(结构)

    Python复合数据类型之一 列表 即写在方括号之间 用逗号隔开的数值列表 列表内的数值不必全是相同的类型 list1 span class token operator 61 span span class token punctuati

随机推荐