51单片机学习笔记(七) -蜂鸣器

2023-11-04


一、蜂鸣器的概念

1、分类

1、无源蜂鸣器:必须方波信号驱动才能发声;
2、有缘蜂鸣器:给高电平驱动即可发声;

2、工作原理

1、无源蜂鸣器:波信号(PWM)输入谐振装置转换为声音信号输出;
在这里插入图片描述

2、有缘蜂鸣器:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号;
在这里插入图片描述

3、原理图

J7连接到P0.0

在这里插入图片描述


二、让蜂鸣器响起来

延时函数

void Delay(int time)
{
	unsigned int cnt = 100;
	while(time)
	{
		time--;
		while(cnt)
			cnt--;
	}
}

主函数

#include <reg51.h>

sbit BZ = P0^0;

void Delay(int time);

void main()
{
	while(1)
	{
		BZ = !BZ;
		Delay(10);
		
	}
}

三、用定时器控制蜂鸣器音调

定时器初始化

void Timer_Init(void)
{
	TMOD = 0x01;
	TH0 = (65535 - CNT) >> 8;
	TL0 = (65535 - CNT) & 0x00FF;
	TR0 = 1;                             //打开定时器
	ET0 = 1;                             //打开定时器中断
	EA = 1;	                             //打开总中断
}

中断函数

void Tm0_isr() interrupt 1 using 1
{
	BZ = !BZ;
	EA = 0;
	TH0 = (65535 - CNT) >> 8;
	TL0 = (65535 - CNT) & 0x00FF;
	EA = 1;
}

主函数

#include <reg51.h>

sbit BZ = P0^0;

#define CNT 50

void Timer_Init(void);

void main()
{
	Timer_Init();
	while(1)
	{

	}
}

四、蜂鸣器发出滴滴声

在上一节的基础上,修改中断函数即可,代码如下:

void Tm0_isr() interrupt 1 using 1
{
	static unsigned int count = 0;
	ET0 = 0;
	count++;
	if(count < 5000)
	{
		BZ = !BZ;
	}
	else if(count < 10000)
	{
		BZ = 1;
	}	
	else
		count = 0;
	TH0 = (65535 - CNT) >> 8;
	TL0 = (65535 - CNT) & 0x00FF;
	ET0 = 1;
}

总结

1、本节介绍了有源蜂鸣器和无源蜂鸣器的工作原理;
2、复习了定时器、计数器、I/O的操作方法;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机学习笔记(七) -蜂鸣器 的相关文章

随机推荐

  • 全桥DCDC输出电压和变比占空比的关系

    在做各种数千瓦到数十千瓦的变换器的过程中 辅助电源总是如影随形 但是我从来没有专门去做过它们 有时候遇到这方面的问题需要解决的时候 对其基本原理竟一时懵逼了 一下图为例 列出今天的疑问 输出电压和占空比 变压器变比的关系 经过一番思考和查阅
  • vue-styled-components

    1 安装 npm install vue styled components 2 在一个组件中引入
  • LabVIEW必知

    介绍 基础知识 数学函数 矩阵数学 数据采集 介绍 传感器和信号 硬件 采集数据 操作数据采集系统需要软件 而这正是LabVIEW发挥作用的地方 LabVIEW旨在与National Instruments数据采集系统一起使用 在收集数据之
  • 微服务(Microservice)那点事

    WHAT 什么是微服务 微服务简介 这次参加JavaOne2015最大的困难就是听Microservice相关的session 无论内容多么水 只要题目带microservice 必定报不上名 可见Microservice有多火 最喜欢其中
  • VUE3 学习笔记(七)动态样式 class 实现

    目录 一 绑定 HTML class 1 绑定对象 2 绑定数组 3 在组件上使用 二 绑定内联样式 1 绑定对象 2 绑定数组 3 自动前缀 4 样式多值 数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式 因为
  • php GD库做水印功能,合并图片

    1 创建一个适应大小的底层图片 2 读取需要拼接的图片 dst data file get contents dst src dst img imagecreatefromstring dst data 3 把读取的图放到指定的位置 这里需
  • Redis吊打面试官的经典面试题整理

    编程界的小学生 1 Redis为什么是key value的 为什么不是支持SQL的 这题第一眼看到有点懵逼 选择key value的原因 key value简单粗暴 使用方便 效率更佳 为什么不支持sql 因为redis的内存模型是一个ha
  • OSG中的示例程序简介

    1 example osganimate一 演示了路径动画的使用 AnimationPath AnimationPathCallback 路径动画回调可以作用在Camera CameraView MatrixTransform Positi
  • apt-get 自动补全包名

    转自 http blog csdn net seasonkky article details 6321150 现象 bash的一般命令补全正常 apt get install 的包名无法自动补全 解决 实际上 在运行这句后 就可以自动补全
  • Go(六)切片

    目录 引子 切片 切片的定义 切片的长度和容量 切片表达式 使用make 函数构造切片 切片的本质 判断切片是否为空 切片不能直接比较 切片的赋值拷贝 切片遍历 append 方法为切片添加元素 切片的扩容策略 使用copy 函数复制切片
  • onInterceptTouchEvent和onTouchEvent调用关系详解

    一 onTouch onTouch是View中OnTouchListener接口中的方法 处理View及其子类被touch是的事件处理 当然 前提是touch时间能够传递到指定的view Q1 为什么会传递不到呢 Java代码 Interf
  • 供需匹配优化优化算法【matlab】

    一 算法流程 应用背景 共享停车预约系统的构成主体 即车位供给用户 停车用户和运营管理者 并对预约系统的运营模式进行了分析 为本文所构建的模型提供了相应的理论基础 其次 在已知所有预约需求停车信息的前提下 基于介绍的定时型决策预约运营模式
  • 光线追踪渲染实战(四):微平面理论与迪士尼 BRDF,严格遵循物理!

    项目代码仓库 GitHub https github com AKGWSB EzRT gitee https gitee com AKGWSB EzRT 目录 前言 0 前情回顾 1 微平面理论 2 BRDF 介绍 3 迪士尼原则的 BRD
  • python读取excel文件,对内容分类排序,显示每类的前5行

    先读取excel文件 然后再分类显示 创建文件 import pandas as pd data pd read excel path1 path1Excel路径 data1 data groupby by 字段 head 5 print
  • [电动智能汽车-1]:原理 - 纯电动汽车的工作原理

    目录 第1章 纯电动汽车的工作原理 1 1 汽车的演进路线 1 2 传统汽车的简化模型 1 3 纯电动汽车的简化模型 1 4 纯电动汽车的驱动模型 1 5 电动车与燃油车的比较 第2章 纯电动汽车 非智能驾驶 内部工作原理 2 1 逻辑结构
  • 用C语言如何编程一道选择题,使用C语言编写一道简单的编程题

    C语言 是一种通用的 过程式的编程语言 广泛用于系统与应用软件的开发 具有高效 灵活 功能丰富 表达力强和较高的移植性等特点 在程序员中备受青睐 C语言是世界上最流行 使用最广泛的高级程序设计语言之一 今天小编要为大家分享的一篇教程就是 使
  • vue项目background-image引入背景图报错

    之前写好的代码明明运行很正常 今天早上突然在预发环境挂掉了 31mERROR in node modules extract text webpack plugin dist loader js omit 1 remove true nod
  • UE4 UPROPERTY属性修饰符用bool变量控制变量是否可编辑

    meta EditCondition bool变量 UPROPERTY EditAnyWhere BlueprintReadWrite Category UPROPERTY Test bool A UPROPERTY EditAnyWher
  • 【Angular2】模板语法之 ngModel

    NgModel实现双向绑定及其实现原理 讨论 ngModel 之前 先讲下属性绑定和事件绑定 在属性绑定中 值从模型中流动到视图上的目标属性 通过把属性名放在方括号中来标记出目标属性 这是从模型到视图的单向数据绑定 在事件绑定中 值从视图上
  • 51单片机学习笔记(七) -蜂鸣器

    文章目录 一 蜂鸣器的概念 1 分类 2 工作原理 3 原理图 二 让蜂鸣器响起来 三 用定时器控制蜂鸣器音调 四 蜂鸣器发出滴滴声 总结 一 蜂鸣器的概念 1 分类 1 无源蜂鸣器 必须方波信号驱动才能发声 2 有缘蜂鸣器 给高电平驱动即