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

让蜂鸣器报警并退出

蜂鸣器介绍

图一为无源蜂鸣器,图二是有源蜂鸣器,

无源蜂鸣器需要提供一定的脉冲信号(通常1.5~5KHz之间)才能发出声音,有缘蜂鸣器只需要提供电源就能发出声音。

对无源蜂鸣器来说可以通过改变提供的频率(或周期)来调节蜂鸣器发出的音色;声音的大小可以通过调节占空比(高电平占一个周期的比例)。

有源蜂鸣器上电之后,音色和声音大小就是固定了,当然也有特定的,取决于厂家。

 

单片机不能通过引脚直接驱动蜂鸣器(大约30mA才能驱动),需要通过一个ULN2003来间接控制,由图可知BEEP与ULN2003中的12管脚相连,其作用可以类似于一个非门,当输入P2.5低电平,OUT5输出高电平,当输入P2.5高电平,OUT5输出低电平。

任务:让蜂鸣器发出一段声音后停止,即让P2.5管脚输出一段脉冲信号。

软件实现逻辑

#include <REGX52.H>
sbit BEEP=P2^5;//定义P2^5管脚
typedef unsigned int u16;
void delay_10us(u16 ten_us)//定义延时函数,ten_us为1 表示延时10us
{while(ten_us--);
}
void main()
{	int i=2000;//可以改变该值来改变声音持续时间while(1){while(i--){BEEP=!BEEP;delay_10us(100);// 低/高电平持续1ms,占空比50%,周期为2ms,频率为0.5KHz}i=0;BEEP=0;}}/* 	BEEP=0;delay_10us(10);BEEP=1;delay_10us(40);//高电平0.4ms,低电平0.1ms,周期为0.5ms,f为2KHz*/

 也可将while(i--)里的循环变成 下面注释掉的代码,声音更好听

http://www.xdnf.cn/news/577819.html

相关文章:

  • 判断一个元素是否在可视区域
  • 嵌入式学习的第二十五天-系统编程-标准I0与文件IO
  • Agentic Loop与MCP:大模型能力扩展技术解析
  • 06 接口自动化-框架封装思想建立之httprunner框架(下)
  • 算法--js--电话号码的字母组合
  • Manus与DeepSeek 的区别
  • 从0开始学linux韦东山教程第四章问题小结(2)
  • Java异步编程利器:CompletableFuture 深度解析与实战
  • 【C++ Primer 学习札记】函数传参问题
  • 轻量级高性能Rust HTTP服务器库Hyperlane,助力现代网络服务开发
  • C++:vector容器
  • 心知天气 API 获取天气预报 2025/5/21
  • QML定时器Timer和线程任务WorkerScript
  • 大模型评测与可解释性
  • Day 27 训练
  • Linux中的文件介绍
  • 通过美图秀秀将多张图片合并
  • 【UEFI实战】BIOS编译过程中报错“无法解析的外部符号memcpy”
  • 七: NumPy的使用
  • vue+srpingboot实现多文件导出
  • Unity中GPU Instancing使用整理
  • Python训练Day30
  • 第3周作业-1层隐藏层的神经网络分类二维数据
  • MQTT报文介绍
  • Linux内存分页管理详解
  • Jsoup解析商品信息具体怎么写?
  • 阿里发布扩散模型Wan VACE,全面支持生图、生视频、图像编辑,适配低显存~
  • FreeCAD傻瓜教程-外螺纹的绘制,利用两个实体进行布尔运算来实现
  • 《P1433 吃奶酪》
  • MCU开发学习记录19* - CAN学习与实践(HAL库) - 定时传输、触发传输和请求传输(轮询与中断实现) -STM32CubeMX