(基于江协科技)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;
}
相关推荐
transuperb2 小时前
51单片机红外遥控
单片机·嵌入式硬件
Sui_Network4 小时前
CUDIS 健康协议在 Sui 上打造更健康的未来
人工智能·科技·web3·去中心化·区块链
故障抖机灵大师7 小时前
《小米 17:创新与争议并存的科技新品》
科技·小米17·小米新品
智者知已应修善业9 小时前
【51单片机计时器1中断的60秒数码管倒计时】2023-1-23
c语言·经验分享·笔记·嵌入式硬件·算法·51单片机
heisd_111 小时前
使用STM32CubeMX创建新的工程,使用vscode进行编码和调试
vscode·stm32·嵌入式硬件
范纹杉想快点毕业11 小时前
ZYNQ7045芯片中UART实现RS422通信详解,50000字解析,C语言,嵌入式开发,软件开发
c语言·笔记·stm32·单片机·嵌入式硬件·mcu·fpga开发
与你诗画11 小时前
电路中的 ”CT“
单片机·嵌入式硬件
沐欣工作室_lvyiyi13 小时前
基于单片机的盲人智能水杯(论文+源码)
单片机·嵌入式硬件·物联网·毕业设计·智能水杯
brave and determined13 小时前
硬件-电容学习DAY20——从零到精通的电容实战指南
单片机·嵌入式硬件·滤波·储能·硬件设计·电路设计·电容核心功能