(基于江协科技)51单片机入门:9.蜂鸣器

蜂鸣器

蜂鸣器是一种将电信号转换为声音信号的器件

蜂鸣器按驱动方式分可分:

1.有源蜂鸣器

内部自带震荡源,将正负极接上直流电压即可持续发声,频率固定

2.无源蜂鸣器

内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

蜂鸣器的BZ于步进电机模块接通

ULN2003D

会进行取反 7B 给 1 ,7C收到0

7B 给 0 ,7C收到1

所以7B 给 1 才能驱动蜂鸣器

也就是控制P15,去控制蜂鸣器

低音a为基准频率 440

中音a 是低音的两倍 880

高音 a 是低音的4被 1760

低音a和低音a#的差值是 440*2^(1/12)

1/12=0.083

2^0.083=1.0592

440*1.0592=466.048

1.矩阵按键按下驱动蜂鸣器

cpp 复制代码
#include <REGX52.H>
#include "key.h"
#include "Delay.h"
sbit buzzer = P2^5;

void lig(int num1,int num2)
{
	unsigned char arr[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F };
	switch(num1)
	{
		case 1:P2_4=0,P2_3=0,P2_2=0;break;
		case 2:P2_4=0,P2_3=0,P2_2=1;break;
		case 3:P2_4=0,P2_3=1,P2_2=0;break;
		case 4:P2_4=0,P2_3=1,P2_2=1;break;
		case 5:P2_4=1,P2_3=0,P2_2=0;break;
		case 6:P2_4=1,P2_3=0,P2_2=1;break;
		case 7:P2_4=1,P2_3=1,P2_2=0;break;
		case 8:P2_4=1,P2_3=1,P2_2=1;break;
	}
	P0 = arr[num2];
}


int main()
{
	unsigned char ret_key = 0;
	unsigned int i = 0;
	while(1)
	{
		ret_key = key();
		if(ret_key)
		{
			for(i = 0; i < 500; i++)
			{
					buzzer = !buzzer;
					Delay(1);
			}
		lig(1,ret_key%10);
		}
	}
	return 0;
}
相关推荐
中烟创新7 天前
灯塔AI智能体获评“2025-2026中国数智科技年度十大创新力产品”
大数据·人工智能·科技
Lester_11017 天前
STM32霍尔传感器输入口设置为复用功能输入口时,还能用GPIO函数直接读取IO的状态吗
stm32·单片机·嵌入式硬件·电机控制
LCG元7 天前
低功耗显示方案:STM32L0驱动OLED,动态波形绘制与优化
stm32·嵌入式硬件·信息可视化
三佛科技-187366133977 天前
120W小体积碳化硅电源方案(LP8841SC极简方案12V10A/24V5A输出)
单片机·嵌入式硬件
z20348315207 天前
STM32F103系列单片机定时器介绍(二)
stm32·单片机·嵌入式硬件
Alaso_shuang8 天前
STM32 核心输入、输出模式
stm32·单片机·嵌入式硬件
脚后跟8 天前
AI助力嵌入式物联网项目全栈开发
嵌入式硬件·物联网·ai编程
2501_918126918 天前
stm32死锁是怎么实现的
stm32·单片机·嵌入式硬件·学习·个人开发
weixin_Todd_Wong20108 天前
联咏科技Novatek的系统级芯片(SoC) NT98692PG - ND 主要规格
科技
云卓SKYDROID8 天前
无人机实时信号传输技术要点解析!
科技·无人机·高科技·云卓科技