#51单片机# 用中断实现蜂鸣器

2023-05-16

蜂鸣器常作为提示音,用于计算机、打印机、万用表等设备中。提示音一般很简单,能响就行。

某单片机的蜂鸣器原理图:
一张蜂鸣器原理图
该单片机的CPU原理图:
与之配套的CPU原理图
下面这段程序用到了中断的算法,实现了蜂鸣器在4kHz和1kHz频率下的发声。

#include <reg52.h>

sbit Buzz = P0^7;//蜂鸣器控制引脚
unsigned char T0RH = 0;//T0重载值的高字节
unsigned char T0RL = 0;//T0重载值的低字节

void StartBuzz(unsigned int frequ);
void StopBuzz();

void main()
{
	unsigned int i;

	TMOD = 0X01;//设置定时器模式
	EA = 1;//中断使能总开关

	while(1)
	{
		StartBuzz(4000);//以4kHz启动蜂鸣器
		for(i=0;i<40000;i++);
		StopBuzz();	   //关闭蜂鸣器
		for(i=0;i<40000;i++);
		
		StartBuzz(1000);//以1kHz启动蜂鸣器
		for(i=0;i<40000;i++);
		StopBuzz();	   //关闭蜂鸣器
		for(i=0;i<40000;i++);

	}

	Buzz  = 0;
}

//启动蜂鸣器,frequ指蜂鸣器工作频率
void StartBuzz(unsigned int frequ)
{
	unsigned int reload;//计算所需的定时器重载值

	reload = 65536- (11059200/12)/(frequ*2);//根据传入的形参frequ,计算定时器重载值

	T0RH =(unsigned char)(reload>>8); //将16位的reload分成2个8位的数值,分别存入T0重载值的高位和低位
	T0RL = (unsigned char)reload;

	TH0 = 0XFF;
	TL0 = 0XFE;
	ET0 = 1;//使能T0中断
	TR0 = 1;//启动T0
}

//关闭蜂鸣器
void StopBuzz()
{
	ET0 = 0; //禁用T0中断
	TR0 = 0; //关闭T0
}

//中断服务函数,用于控制蜂鸣器发声
void InterrupteTimer0() interrupt 1
{
	TH0 = T0RH;	//重新加载重载值
	TL0 = T0RL;

	Buzz = ~Buzz;//反转蜂鸣器控制电平
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#51单片机# 用中断实现蜂鸣器 的相关文章

  • 【Microsoft COCO数据集介绍以及简单使用】

    Microsoft COCO数据集介绍以及简单使用 文前白话1 MSCOCO数据集介绍2 COCO数据集格式说明3 数据集下载4 COCO API pycocotools 其它的COCO API Reference 文前白话 本文介绍Mic
  • linux装SSH服务以及防止SSH暴力破解

    需要安装的包 xff1a openssh clients 6 6 1p1 22 el7 x86 64 openssh server 6 6 1p1 22 el7 x86 64 配置文件中常用参数的介绍 xff1a vim etc ssh s
  • 【Linux 切换 ES(elasticsearch)用户】

    Linux服务器里面有些操作不能用root用户操作ES xff0c 需要切换用户操作启动 1 切换用户命令 su 用户名 或者 ssh 用户名 64 服务器ip地址 su span class token operator span es
  • [DSA] 数字血管造影系统-硬件篇

    根据一下资料整理和增删 xff1a http www china radiology com showtopic 6451 aspx 2008年的资料 xff0c 但可以作为入门资料 xff0c 讲述了很多基本概念 http blog cs
  • QT修改QPushButton的背景色和文字颜色

    Qt中QPushButton背景颜色设置方法 不管我设置不是画笔颜色 xff0c 依然不管用 xff0c 一查才知道自己错了 因为在windows中QPushButton的颜色涉及到样式表 xff0c 所以应该设置样式表才可以 xff0c
  • anaconda释放空间

    学习内容 xff1a conda clean 后面可以跟很多超参 xff0c 不同超参有不同的功能 xff1a 可选参数 xff1a span class token operator span h span class token ope
  • Qt线程:QThread

    一 描述 一个QThread对象管理程序内的一个线程 xff0c QThreads在run 中开始执行 默认情况下 xff0c run 通过调用exec 启动事件循环 xff0c 并在线程内部运行一个Qt事件循环 可以通过使用 QObjec
  • 论文精讲 | CVPR 2022|RHFL-对抗噪声的联邦学习

    模型异构的联邦学习 xff0c 是一种每个client拥有互不相同模型的联邦学习任务 xff0c 其能够解决联邦学习中每个成员希望独立设计自己模型的需求 xff0c 但目前同样面临着来自数据层面和成员层面的各种挑战 xff0c 比如数据标记
  • Android音频简介

    1 基本概念 1 1 播放模式 xff1a Deep buffer playback Android开发中最常用的播放模式 xff0c 音乐等对时延要求不高的声音输出采用该模式 边加载边播放 xff0c 由AP进行解码 Low latenc
  • vnc显示远程桌面

    搜了很多教程 xff0c 大部分都试了还是不能正常显示Ubuntu18 04的桌面 xff0c 最后找到了一篇文章 xff1a 使用 VNC 显示 Ubuntu Server 的图形化界面 可以让我的vnc正常显示的配置 首先 在服务器终端
  • 面试中常被提到的最左前缀匹配原则

    最左前缀匹配原则 xff1a 在MySQL建立联合索引时会遵守最左前缀匹配原则 xff0c 即最左优先 xff0c 在检索数据时从联合索引的最左边开始匹配 要想理解联合索引的最左匹配原则 xff0c 先来理解下索引的底层原理 索引的底层是一
  • njupt 字典序最大的出栈序列

    题意 xff1a 给出入栈序列 A xff0c 保证 A 各个元素值各不相等 xff0c 输出字典序最大的出栈序列 如入栈序列 A 61 1 2 9 4 6 5 则字典序最大的出栈序列为9 6 5 4 2 1 栈的性质就是先进后出 xff0
  • SD-WAN设备白盒刷机

    1 启动U盘插入盒子USB接口 2 PC与盒子通过串口线连接 xff0c 波特率为115200 3 加电 4 WAN接口接入网络 xff0c 保证可以访问外网 5 cd var 6 scp 64 122 96 93 166 root Fle
  • Android手机控制ZigBee板上LED

    环境 xff1a Windows 编译器 xff1a IAREW8051 8 1 硬件 xff1a CC2530 协议栈 xff1a ZStack CC2530 2 3 0 1 4 0 手机 xff1a Android4 1 2 又重新开始
  • Windows 10 WSL2 安装Linux Xfce图形界面

    一 更新ubuntu 18 04 LTS软件源 xff0c 推荐使用国内的软件源 1 备份配置文件 xff1a cp a etc apt sources list etc apt sources list bak 2 修改sources l
  • Ubuntu终端快捷键打不开解决

    ubuntu快捷键打不开终端 问题描述 xff1a 快捷键打不开终端 xff0c 加装python3 9后 xff0c 就出现了gnome terminal报错和快捷键无法打开终端的问题 解决方法 xff1a cd usr lib pyth
  • 解决Win10 WSL2 IP地址经常变动导致docker容器无法正常访问

    前提是Win10已经安装好WSL2 xff0c 且linux发行版已经安装docker 安装wsl2host wsl2host下载地址 xff08 https github com shayne go wsl2 host releases
  • 关于BUG_ON()的一点笔记

    关于BUG ON 的一点笔记 最近在看isp1362的驱动经常看到这个BUG ON 在网上找了些相关资料 xff0c 现总结如下 先看代码吧 lt asm generic bug h gt ifndef HAVE ARCH BUG defi
  • 操作系统的各个版本和版本号对应

    内核中使用PsGetVersion 函数可以查询到当前的操作系统信息 BOOLEAN PsGetVersion PULONG MajorVersion OPTIONAL PULONG MinorVersion OPTIONAL PULONG
  • 云计算适合大专生学吗?

    云计算适合大专生学吗 xff1f 对于大专毕业生来说 xff0c 云计算的确是一个不错的选择 xff0c 因为云计算技术应用专业 xff0c 主要就是专科院校在办学 不管你是计算机相关专业的 xff0c 还是零基础想学习都是可以的 xff1

随机推荐

  • 收藏,最简单易懂的MapReduce使用讲解

    对于MapReduce相信大家并不陌生 xff0c 它是大数据Hadoop家族中最重要的成员之一 xff0c 是一个运行在Hadoop平台上的分布式计算框架 xff0c 对于大数据这块 xff0c 大家总是觉得高深莫测 xff0c 浅尝辄止
  • gcc-7.5.0源码安装

    由于想学习gcc 收集资料时发现了一本关于gcc源代码相关的书籍 xff0c 书中基于的版本是gcc 4 4 0 于是想重新编译一个带调试信息的版本 刚开始在ubuntu18 04上安装gcc 4 4 0时没有成功 xff0c 感觉是用系统
  • hdfs shell 操作基本语法

    hdfs用户切换并查看文件 xshell登陆到linux服务器 root 用户切换 以hdfs用户登陆查看创建的hive数据库是否以文件夹的形式存在hive文件目录下 su hdfs hdfs dfs ls apps hive wareho
  • js 多级对象数组删除对象

    let firstIndex 61 null let secondIndex 61 null const findItemNested 61 arr itemId nestingKey 61 gt arr reduce a item myI
  • Aarch64安装Anaconda Pytorch Torchvision

    1 Anaconda wget https github com Archiconda build tools releases download 0 2 3 Archiconda3 0 2 3 Linux aarch64 sh sudo
  • 扩大VMWARE里面虚拟硬盘大小(*.vmdk)

    http blog csdn net bshawk archive 2008 01 28 2070587 aspx 最近编译2 6 22的内核时 xff0c 发现虚拟机器FC6硬盘空间不够了 xff0c 于是乎 xff0c 想扩展下硬盘的大
  • c#加载xml文件

    C 加载xml文件 XmlDocument xmlDoc 61 new XmlDocument xmlDoc Load Application StartupPath 43 34 34 43 34 xml xml 34 加载xml文件 Xm
  • zram

    wiki zram是Linux内核的一个模块 xff0c 之前被称为 compcache zram通过在RAM内的压缩块设备上分页 xff0c 直到必须使用硬盘上的交换空间 xff0c 以避免在磁盘上进行分页 xff0c 从而提高性能 由于
  • 英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器

    本系列的其它几篇文章 xff1a 英飞凌 AURIX 系列单片机的HSM详解 xff08 1 xff09 何为HSM 英飞凌 AURIX 系列单片机的HSM详解 xff08 2 xff09 与HSM相关的UCB和寄存器 英飞凌 AURIX
  • MySQL数据库知识点总结

    1 什么是 MySQL MySQL 是 种关系型数据库 xff0c 在 Java 企业级开发中 常常 xff0c 因为 MySQL 是开源免费的 xff0c 并 且 便扩展 阿 巴巴数据库系统也 量 到了 MySQL xff0c 因此它的稳
  • 论文笔记-Towards Scene Understanding-Unsupervised Monocular Depth Estimation

    论文信息 标题 xff1a Towards Scene Understanding Unsupervised Monocular Depth Estimation with Semantic aware Representation作者 x
  • 结合 Casbin 对 http 请求做 RBAC 鉴权以及添加请求路由参数支持

    目录 总结 背景 实操 安装 Casbin 创建一个 Casbin 模型 创建一个 Casbin 策略 加载 Casbin 模型和策略并创建一个路由 总结 在本文中 xff0c 我们将介绍如何结合 Casbin 对 HTTP 请求进行基于角
  • Git—— master|RELEASE1/1

    当提交代码时 xff0c 多人合作避免不了要冲突 公司就我一个前端 xff0c 所以我一般情况下几乎不习惯pull代码 记录一下今天的执行过程 1 在vscode工具中操作更新的代码 2 在Git Bash中push 代码 span cla
  • 【FPGA】Mint20.3系统安装VCS2018环境

    mint系统是目前新手入手linux系统最为容易的系统版本 xff0c 其界面与Windows系统高度重合 vcs是IC开发常用的系统仿真工具 xff0c 但vcs工具的安装是一个很头疼的事情 xff0c 本篇展现在mint20 3系统安装
  • kubernetes使用flannel网络插件服务状态显示CrashLoopBackOff

    使用Kubeadm安装K8s集群 xff0c 在安装flannel网络插件后 xff0c 发现pod kube flannel ds 一直是CrashLoopBackOff 报错内容如下 xff1a log is DEPRECATED an
  • 用Python写了个金融数据爬虫,半小时干了全组一周的工作量

    最近 xff0c 越来越多的研究员 基金经理甚至财务会计领域的朋友 xff0c 向小编咨询 xff1a 金融人需要学Python么 xff1f 事实上在2019年 xff0c 这已经不是一个问题了 Python已成为国内很多顶级投行 基金
  • SSIS_数据流转换(Union All&合并联接&合并)

    Union All xff1a 与sql语言 Union All 一样 xff0c 不用排序 xff0c 上下合并多个表 Union All转换替代合并转换 xff1a 输入输出无需排序 xff0c 合并超过两个表 合并联接 xff1a 有
  • LACP协议:链路聚合/华为交换机LACP

    链路聚合的3种模式 61 61 61 61 61 gt 手工聚合 静态聚合 动态聚合 手工聚合 xff1a 手工汇聚概述 xff1a 手工负载分担模式是一种最基本的链路聚合方式 xff0c Eth Trunk 接口的建立 xff0c 成员接
  • Pytorch中Tensor和numpy数组的互相转化

    Pytorch中Tensor和Numpy数组的相互转化分为两种 xff0c 第一种转化前后的对象共享相同的内存区域 xff08 即修改其中另外一个也会改变 xff09 xff1b 第二种是二者并不共享内存区域 共享内存区域的转化 这种涉及到
  • #51单片机# 用中断实现蜂鸣器

    蜂鸣器常作为提示音 xff0c 用于计算机 打印机 万用表等设备中 提示音一般很简单 xff0c 能响就行 某单片机的蜂鸣器原理图 xff1a 该单片机的CPU原理图 xff1a 下面这段程序用到了中断的算法 xff0c 实现了蜂鸣器在4k