当前位置: 首页 > news >正文

嵌入式技术学习——c51单片机——蜂鸣器

一、蜂鸣器介绍

蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。

蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。

有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声,频率固定

无源蜂鸣器:内部不带震荡源,需要控制器提供震荡脉冲才可以发声,调整提供震荡脉冲的频率,可发出不同频率的声音。

c51中的蜂鸣器是无源蜂鸣器

二、蜂鸣器原理图

如图所示的三极管是NPN三极管,当p11是1时,三极管导通,蜂鸣器会响 ,在我们的开发板上,就是把那个帽子戴上。使其有电原通过。

三、蜂鸣器实现

(1)用延时函数表示频率的变化。

#include"reg51.h"void delay(unsigned int n)
{while(n)--n;
}
viod main(void)
{while(1){P2=~P2;delay(3000);//控制频率改变蜂鸣器声音的尖锐}
}

单位时间内周期变化的越小,频率越大,声音越尖锐。

(2)利用定时器的计数功能,改变中断时间,来改变频率变化,使蜂鸣器声音变化。

 

#include "reg51.h"void timer0Init(void)
{	//TMOD |= (0x01<<0); //默认状态 TMOD 就是13位模式 TH0	 = 7192>>5;TL0	 = 7192&0x1F;IE   |= 0x01<<7 | 0x01<<1;TCON |= 0x01<<4; //开启定时器  
}void timer0Handler(void) interrupt 1
{	 static int n = 0;static int m=0;  //控制占空比static unsigned  int k=0 //控制频率进阶变化if (k == 1000)//让声音持续一小段时间{++m;     //从1ms开始增加k= 0;}k++;n++;if (n == (m+1))//n也在加,相当于p2 1ms翻转一次{P2 = ~P2;n = 0;}TH0	 = 7192>>5;TL0	 = 7192&0x1F;
}void main(void)
{timer0Init();while(1){}}

相关文章:

  • Android开发系列(三)Jetpack Compose 之TextField
  • 泛微开发修炼之旅--20关于Ecology中如何查询正文文件的物理文件,并修改正文中的内容的解决方案
  • Chromium 开发指南2024 Mac篇-Xcode安装(二)
  • 【PyQt5】一文向您详细介绍 self.setLayout() 的作用
  • python pandas处理股票量化数据:笔记1
  • 充电学习—7、BC1.2 PD协议
  • CHATGPT说这个运算放大器是比较器,我说这是运放典型的同相比例放大器,一个光控电路分析
  • 关于lamda表达式的使用
  • gitlab2024最新版安装
  • pip导出格式错乱问题
  • 12寸晶圆厂AGV和天车对网络建设的一些要点
  • 【LeetCode 128】 最长连续子序列
  • Dubbo 3.x源码(23)—Dubbo服务引用源码(6)MigrationRuleListener迁移规则监听器
  • C# —— 字符串的相关属性和方法
  • 事务AOP
  • [译]如何构建服务器端web组件,为何要构建?
  • 「译」Node.js Streams 基础
  • ES6系列(二)变量的解构赋值
  • Kibana配置logstash,报表一体化
  • linux安装openssl、swoole等扩展的具体步骤
  • 成为一名优秀的Developer的书单
  • 从0实现一个tiny react(三)生命周期
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 解决iview多表头动态更改列元素发生的错误
  • 精彩代码 vue.js
  • 悄悄地说一个bug
  • 区块链分支循环
  • 入门到放弃node系列之Hello Word篇
  • 用Canvas画一棵二叉树
  • 优秀架构师必须掌握的架构思维
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 最简单的无缝轮播
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # Panda3d 碰撞检测系统介绍
  • #include到底该写在哪
  • #NOIP 2014# day.2 T2 寻找道路
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1)(1.9) MSP (version 4.2)
  • (1)常见O(n^2)排序算法解析
  • (12)Linux 常见的三种进程状态
  • (23)Linux的软硬连接
  • (3)llvm ir转换过程
  • (安卓)跳转应用市场APP详情页的方式
  • (分布式缓存)Redis哨兵
  • (转)h264中avc和flv数据的解析
  • (转)一些感悟
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .NET Core 2.1路线图
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • @Valid和@NotNull字段校验使用
  • [ C++ ] 类和对象( 下 )
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件