单片机学习-蜂鸣器如何发出声音

硬件电路

软件编写

①发出声音

复制代码
#include "reg52.h"
typedef unsigned int u16;   // 重新定义 类型
typedef unsigned char u8;	// 重新定义 类型

sbit BEEP = P2^5;  //定义 P2第五个管教  为BEEP 
// 延时函数
void delay_time(u16 times)
{

	while(times--);
}   

void main()
{
	u16 i = 2000;   // 为什么定义这个 i , 这个i  是 执行多少次频率
	while(1)
  	{
  		while(i--)	 // i 递减2000次  发出声音的时长
		{
		 	BEEP =!BEEP;  
			 // ! 逻辑非运算  BEEP默认有上拉电阻,P2^5 是高电平 使用非运算 BEEP为0 低电平	,等下一次循环还是为低 ,
			 // 低-高,一次循环  循环2000 次
			delay_time(200);   // 延时100ms
		}
		i =0;   
		// 2000次循环结束 将 i 清零
		BEEP = 0; 
		// 循环结束 将BEEP  为低电平 关闭蜂鸣器
  	}
}

BEEP =! BEEP 为何使用 非运算,这里面 P2 的管脚默认 有上拉电阻,P2^5 输出高电平

每次循环 非运算一下 为低电平 ,产生那种评率 0 1 0 1 0 1 循环下去

②改变音色

复制代码
BEEP = 0;
delay_time(100);
BEEP = 1;
delay_time(200);
// 改变音色 修改它的频率
// 改变频率 周期的 高低的周期 就是 高低电平的时间
相关推荐
MartinYeung53 分钟前
[论文学习]大型语言模型中个人可识别资讯(PII)的机器遗忘技术:UnlearnPII 基准与 PERMU_tok 方法的深度分析
人工智能·学习·语言模型
日拱一卒的小田7 分钟前
ZYNQ学习笔记2-ZYNQ的UART控制器1
单片机·嵌入式硬件
fanged9 分钟前
Linux内核学习21--V4L2学习3(应用)(TODO)
学习
我想走路带风39 分钟前
OPENWRT-Day01
stm32·单片机·嵌入式硬件
ACP广源盛139246256731 小时前
GSV2221@ACP#DP 1.4 MST 多屏转换芯片,物理 AI 多模态交互的视觉中枢
大数据·人工智能·嵌入式硬件·gpt·spark
GHL2842710902 小时前
PowerShell快捷键学习
学习
云栖梦泽2 小时前
Linux内核与驱动:pinctl子系统和GPIO子系统
linux·单片机·嵌入式硬件
电气_空空2 小时前
基于 LabVIEW 的单片机串口通信设计
单片机·嵌入式硬件·毕业设计·labview
半导体守望者3 小时前
AE电源闭环控制——反应溅射的集成解决方案
经验分享·学习·机器人·自动化·制造
小饕3 小时前
RAG学习之【向量数据库】Milvus 从入门到精通:索引、检索、混合搜索一篇打通(RAG 必备)
数据库·人工智能·学习·milvus