18:蜂鸣器

蜂鸣器

  • 1、蜂鸣器的介绍
  • 2、编程让蜂鸣器响起来
  • 3、通过定时控制蜂鸣器
  • 4、蜂鸣器发出滴滴声(间歇性鸣叫)

1、蜂鸣器的介绍

蜂鸣器内部其实是2个金属片,当一个金属片接正电,一个金属片接负电时,2个金属片将合拢,在合拢的一瞬间发生碰撞,如何发出声音。

分类:分为有源蜂鸣器和无源蜂鸣器。
无源蜂鸣器的发声原理:
(1)快速的给2个金属片进行充电和断电进行发出声音,所以通过脉冲波形来控制。
(2)音调的控制:音调如何控制,音调受震动频率控制,就等于控制信号的频率。频率越高音调越高,听起越刺耳。
(3)声音大小如何控制:由硬件决定的,没法写代码去控制声音大小。
缺点:要自己调节合适频率(太高超声波,太低次声波),不然蜂鸣器不会响。

有源蜂鸣器:
(1)内置震荡电路后形成有源蜂鸣器,直接加电就会响(但是频率规定了的)。
(2)有源蜂鸣器也可以用频率信号驱动。

2、编程让蜂鸣器响起来

在这里插入图片描述
P0.0接上J8

设置频率为1000Hz,则周期为1/1000=1ms,则我们设置延迟为0.5ms(500us)即可。

#include <REGX51.H>

sbit FMQ = P1^0;

void delay500us(void)   //延迟为0.5ms
{
    unsigned char a,b;
    for(b=99;b>0;b--)
        for(a=1;a>0;a--);
}

void main(void)
{ 
	while(1)
	{
		FMQ = 1;
		delay500us();
		FMQ = 0;
		delay500us();
	}
}

3、通过定时控制蜂鸣器

设置一个频率为5000Hz的蜂鸣器用定时器来控制,其主任务静态数码0到F循环显示。
5000Hz–>1/5000Hz=0.2ms=200us(周期),则定时设置为100us即可
外部晶振为12MHz通过12分频–>1MHz–>1/1MHz=1us–>100个脉冲信号

#include <REGX51.H>
#define SMG P0
sbit FMQ = P1^0;

/****定时到时执行的中断程序****/
void DingShi() interrupt 1
{
	/*每一次定时到后都要重置脉冲个数,以便进行第二次定时*/
	TL0 = 0X9C;             //低8位为1001 1100
	TH0 = 0XFF;             //高8位为1111 1111
	FMQ = !FMQ;
}

void delay(void)//延迟函数
{
	unsigned char a,b;
	for(a=200 ;a>0 ;a--)
	   for(b=200 ;b>0 ;b--)
	         ;
}

void main(void)
{
	unsigned char i;
	TMOD = 0X01;            //0000 0001 使用的是T0定时器,工作模式是16位定时器
	/****设置脉冲个数位100个,既为0.1ms,则65536-100=65436***/
	TL0 = 0X9C;             //低8位为1001 1100
	TH0 = 0XFF;             //高8位为1111 1111
	TR0 = 1;                //计数器,开始计数
	ET0 = 1;			    //开启T0中断
	EA = 1;                 //开启中断总开关
	

	while(1)//执行主任务
	{
		unsigned char val[16] = {0xc0, 0xf9, 0xa4, 0xb0,
	0x99, 0x92, 0x82, 0xf8, 
	0x80, 0x90, 0x88, 0x83, 
	0xc6, 0xa1, 0x86, 0x8e};//0到F的数码表	
		
			for(i=0 ;i<=15 ;i++)
		{
			SMG = val[i];
			delay();
		}
	}
}

4、蜂鸣器发出滴滴声(间歇性鸣叫)

让蜂鸣器响半秒,停半秒这样的不断循环。由上面可得周期为200us,定时设置为100us。
则半秒0.5s/100us=5000。我们定义2个标准变量count和flag。

在这里插入图片描述

#include <REGX51.H>
#define SMG P0
sbit FMQ = P1^0;


unsigned int count;
unsigned char flag = 0;

/****定时到时执行的中断程序****/
void DingShi() interrupt 1
{
	/*每一次定时到后都要重置脉冲个数,以便进行第二次定时*/
	TL0 = 0X9C;             //低8位为1001 1100
	TH0 = 0XFF;             //高8位为1111 1111
	if(flag == 0)           //蜂鸣器响
	{  count--;
			if(count == 0)
			{
				 flag = 1;
			}
			else  
			{				
				FMQ = !FMQ;
			}
	}
	
	else                    //蜂鸣器不响            
	{  count++;
			if(count == 5000)
			{
					flag = 0;
			}		
	}

}

void delay(void)//延迟函数
{
	unsigned char a,b;
	for(a=200 ;a>0 ;a--)
	   for(b=200 ;b>0 ;b--)
	         ;
}

void main(void)
{
	unsigned char i;
	TMOD = 0X01;            //0000 0001 使用的是T0定时器,工作模式是16位定时器
	/****设置脉冲个数位100个,既为0.1ms,则65536-100=65436***/
	TL0 = 0X9C;             //低8位为1001 1100
	TH0 = 0XFF;             //高8位为1111 1111
	TR0 = 1;                //计数器,开始计数
	ET0 = 1;			    //开启T0中断
	EA = 1;                 //开启中断总开关
	count = 5000;
	flag = 0;

	while(1)//执行主任务
	{
		unsigned char val[16] = {0xc0, 0xf9, 0xa4, 0xb0,
	0x99, 0x92, 0x82, 0xf8, 
	0x80, 0x90, 0x88, 0x83, 
	0xc6, 0xa1, 0x86, 0x8e};//0到F的数码表	
		
			for(i=0 ;i<=15 ;i++)
		{
			SMG = val[i];
			delay();
		}
	}
}

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

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

相关文章

CTFshow web(命令执行 41-44)

web41 <?php /* # -*- coding: utf-8 -*- # Author: 羽 # Date: 2020-09-05 20:31:22 # Last Modified by: h1xa # Last Modified time: 2020-09-05 22:40:07 # email: 1341963450qq.com # link: https://ctf.show */ if(isset($_POST[c])){ $c $_POST[c]; if(!p…

springboot微信小程序 uniapp学习资料分享系统v9uy4

理论意义 当今网络教学已成为各国教育改革 和发展的趋势。因此&#xff0c;构建一个适合交互式课堂教学模式的教学平台就成了当务之 急。 在国内高校&#xff0c;目前交互平台主要用于网络学院的远程教学&#xff0c;至于校园内的正规教学&#xff0c;老师自发建立课程主页的比…

【SpringBoot】JWT令牌

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;SpringBoot ⛺️稳重求进&#xff0c;晒太阳 什么是JWT JWT简称JSON Web Token&#xff0c;也就是通过JSON形式作为Web应用的令牌&#xff0c;用于各方面之间安全的将信息作为JSON对象传输…

基于 Python opencv 的人脸识别的酒店客房入侵系统的检测

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

信息安全省赛杂项题解题思路

task1 直接查看文件属性即可得到 flag task2 载入 HxD 中&#xff0c;搜索 flag 即可得到 task3 也是同样的操作&#xff0c;载入 HxD 中搜索 flag task4 打开题目的压缩包发现被加密了&#xff0c;这个题目的标题提示的很明显&#xff0c;就是四位数加密 四位数加密的 zip…

排序算法---归并排序

原创不易&#xff0c;转载请注明出处。欢迎点赞收藏~ 归并排序是一种常见的排序算法&#xff0c;它采用了分治的思想。它将一个待排序的数组递归地分成两个子数组&#xff0c;分别对两个子数组进行排序&#xff0c;然后将排好序的子数组合并成一个有序数组。 具体的归并排序过…

探索ChatGPT-4:智能会话的未来已来

深入了解ChatGPT-4&#xff1a;前沿AI的强大功能 ChatGPT-4是最先进的语言模型之一&#xff0c;由OpenAI开发&#xff0c;它在自然语言理解和生成方面的能力已经达到了新的高度。如今&#xff0c;ChatGPT-4已经被广泛应用于多个领域&#xff0c;从教育到企业&#xff0c;再到技…

攻防世界 CTF Web方向 引导模式-难度1 —— 1-10题 wp精讲

目录 view_source robots backup cookie disabled_button get_post weak_auth simple_php Training-WWW-Robots view_source 题目描述: X老师让小宁同学查看一个网页的源代码&#xff0c;但小宁同学发现鼠标右键好像不管用了。 不能按右键&#xff0c;按F12 robots …

C语言操作符详解

操作符的分类 • 算数操作符 &#xff1a; 、 - 、 * 、 / 、 % • 移位操作符 &#xff1a; << 、 >> • 位操作符 &#xff1a; & 、 | 、 ^ • 赋值操作符 &#xff1a; 、 、 - 、 * 、 / 、 % 、 << 、 >> 、 & 、 |…

Ubuntu 22 部署Zabbix 6.4

一、安装及配置postgresql sudo apt-get update sudo apt-get install postgresql postgresql-client 修改配置文件&#xff0c;配置远程访问&#xff1a;&#xff08;PostgreSQL安装路径下的data&#xff0c;也是安装时data的默认路径&#xff09;data目录下的 pg_hba.conf …

ctfshow-web21~28-WP

爆破(21-28) web21 题目给了一个zip文件,打开后解压是爆破的字典,我们抓包一下网址看看 发现账号和密码都被base64了,我们发送到intruder模块,给爆破的位置加上$符圈住 去base64解码一下看看格式

项目02《游戏-04-开发》Unity3D

基于 项目02《游戏-03-开发》Unity3D &#xff0c; 因前三集资源以及代码冗余问题&#xff0c;本次项目对前三集进行了重做&#xff0c;资源及代码如下&#xff0c; 首先导入场景及人物资源&#xff0c; 为人物添加动画控制器Animator组件&#xff0c; 创建动画控…

【网工】华为设备命令学习(Telnet)

本次实验AR3为我们实际中远程的路由&#xff0c;AR4模拟我们的设备&#xff0c;最终实现Telnet的远程控制路由&#xff01; 本次笔记主要记录Telnet技术实现原理&#xff0c;后续再补充具体配置代码。 Telnet协议是TCP/IP协议族中的一员&#xff0c;是Internet远程登录服务的…

【Fabric.js】监听画布or元素的点击、选中、移动、添加、删除销毁、变形等各事件

在fabric使用过程中&#xff0c;如果想要玩各种花样&#xff0c;那么fabric的事件监听是一定、必须、肯定要掌握&#xff01;&#xff01;&#xff01; 例子就用vue项目组件里的代码&#xff0c;fabric的使用跟vue、react、angular之类的框架都没任何关系&#xff01; 并且本de…

【Web】Spring rce CVE-2022-22965漏洞复现学习笔记

目录 原理概览 漏洞简述 Tomcat AccessLogValve 和 access_log 例题: 原理概览 spring框架在传参的时候会与对应实体类自动参数绑定&#xff0c;通过“.”还可以访问对应实体类的引用类型变量。使用getClass方法&#xff0c;通过反射机制最终获取tomcat的日志配置成员属性…

鸿蒙开发-UI-图形-图片

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 鸿蒙开发-UI-气泡/菜单 鸿蒙开发-UI-页面路由 鸿蒙开发-UI-组件导航-Navigation 鸿蒙开发-UI-组件导航-Tabs 文章目录 一、基本概念 二、图片资源加载 1. 存档图类型数据源 2.多媒体像素图 三、显示矢量图 四、图片…

疑似针对安全研究人员的窃密与勒索

前言 笔者在某国外开源样本沙箱平台闲逛的时候&#xff0c;发现了一个有趣的样本&#xff0c;该样本伪装成安全研究人员经常使用的某个渗透测试工具的破解版压缩包&#xff0c;对安全研究人员进行窃密与勒索双重攻击&#xff0c;这种双重攻击的方式也是勒索病毒黑客组织常用的…

MySQL篇之索引

一、定义 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构(有序)。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff08;B树&#xff09;&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff0…

数字图像处理实验记录九(数字形态学实验)

一、基础知识 1.形态学&#xff0c;用于从图像中提取对表达和描绘区域形状有意义的图像分量&#xff0c;使后续的识别工作能够抓住目标对象最为有本质的形状特征&#xff0c;如边界连通区域等。 2.膨胀运算&#xff1a;膨胀会使目标区域范围“变大”&#xff0c;将于目标区域接…

TCP和UDP相关问题(重点)——8.TCP的拥塞控制怎么实现的?

在某段时间内&#xff0c;若对网络中某一资源的需求超过了该资源所能提供的可用部分&#xff0c;网络性能就会变坏&#xff0c;比如在高速公路上行驶的车辆&#xff0c;如果一时期内涌入了太多的车辆&#xff0c;道路将变得拥堵&#xff0c;交通状况变差。网络中也是一样&#…
最新文章