STM32蜂鸣器andMIDI音乐
蜂鸣器的实现与led差不多,只需要写出蜂鸣器初始化函数和发声函数,然后在main函数里加入他们即可。
下面是main.c里的函数
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "buzzer.h"
int main (void)
{u16 a;RCC_Configuration();//RCC时钟类的设置LED_Init ();//led初始化KEY_Init ();//按键初始化buzzer_int();//蜂鸣器初始化BUZZER_beep();//响声while(1){if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){delay_ms(20); //防抖if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){a++;if(a>3){a=0;}GPIO_Write(LEDPORT,a);BUZZER_beep();while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); }}}
}
下面是初始化和发声函数
void buzzer_int(void)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin=BUZZER;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(BUZZERPORT,&GPIO_InitStructure);GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1));
}
void BUZZER_beep(void)
{u16 i;for(i=0;i<200;i++){GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0));delay_us(500);GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1));delay_us(500);}
}
值得注意的是,蜂鸣器不能总是处在低电平,否则容易烧坏,故在写程序时,最后一定要把IO口的电平置高。
如果想播放音乐的话,就要对照音调与频率的关系表,建立一个数组,然后用循环语句将歌曲输出出来,里面涉及到几个数学公式。
void MIDI_PLAY(void) //MIDI音乐
{ u16 i,e;for(i=0;i<39;i++){for(e=0;e<music1[i*2]*music1[i*2+1]/1000;e++){GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(0)); //蜂鸣器接口输出0delay_us(500000/music1[i*2]); //延时 GPIO_WriteBit(BUZZERPORT,BUZZER,(BitAction)(1)); //蜂鸣器接口输出高电平1delay_us(500000/music1[i*2]); //延时 } }
}
其中music1[]数组中奇数位是频率,偶数位是时间。i<39的意思是有39组音符,所以循环39次,将你所想要播放的音乐数组和MIDI_PLAY();函数写在buzzer.c文件中,在buzzer.h文件中声明void MIDI_PLAY(void);,然后在主函数文件中使用这个函数就行了,如果把它放在while循环里,就会一直循环播放。通过更改音乐数组与循环次数,可以播放不同的音乐!
STM32蜂鸣器andMIDI音乐相关推荐
- STM32蜂鸣器播放音乐实例项目 【评论区留言领取项目资料】
本文用STM32单片机蜂鸣器来演奏音乐,用的开发软件是STM32CubeIDE. 实验效果 蜂鸣器 有源蜂鸣器 内部有震荡源,只要通电就会有响声,但是声音频率固定. 无源蜂鸣器 内部不含振荡源,蜂鸣器 ...
- FPGA蜂鸣器播放音乐
最近做EDA课设,看到自己的买的板子上有蜂鸣器,所以就打算做一个FPGA控制蜂鸣器播放音乐. 这里我使用的板子是睿智助学的FPGA开发板,板子上的芯片是EP4CE6E22C8,如果是你使用的是 ...
- 基于STM32制作的音乐播放器,用PWM控制蜂鸣器
目录 效果展示 前言 一.设计背景 1.1.知识储备 二.系统设计方案 2.1.实现功能 2.2.硬件部分 2.3.软件部分 三.软件设计 3.1.设计流程图 3.2.音乐频率的设置 3.3.编程主要 ...
- stm32无源蜂鸣器定时器_STM32无源蜂鸣器播放音乐
1.STM32产生PWM波驱动无源蜂鸣器使其发声 1)查看原理图,找到对应引脚(我这里时PA1) 2)打开CubeMax,输入自己芯片的类型确定后,配置好系统时钟RCC,我这里是80Mhz,找到相应引 ...
- 蜂鸣器播放音乐 fpga实现
目录 原理 实现 原理 蜂鸣器分为有源蜂鸣器和无源蜂鸣器,即以有无震荡源分类, 有震荡源直接通直流电就可发生,无震荡源则需要通震荡波才能发声. 这里介绍无源蜂鸣器播放音乐的方法. 思路: 利用计数器产 ...
- 【FPGA】五、蜂鸣器播放音乐
文章目录 前言 一.蜂鸣器简介 二.音频音符简介 三.任务要求 四.程序设计 1.设计思路 2.程序代码 总结 前言 蜂鸣器(Buzzer)是现代常用的一种电子发声器,主要用于产生声音信号.它是一种一 ...
- 单片机并行口控制蜂鸣器播放音乐
要用单片机并行口控制蜂鸣器播放音乐,需要完成以下步骤: 设计音乐:需要先确定音乐的节拍和音符,并将其转换为代码中的数值. 设置并行口:需要将单片机的并行口配置为输出模式,以便控制蜂鸣器. 编写代码:需 ...
- 基于STM32的电子琴音乐播放器设计
基于STM32的电子琴/音乐播放器设计 文章目录 基于STM32的电子琴/音乐播放器设计 @[toc] 引言 第一章 总体设计 1.1 系统功能 1.2 主要技术性能指标 第二章 系统设计 2.1 系 ...
- arduino+无源蜂鸣器制作音乐(引入篇)——从结构到原理
前言 之前在网上看到好多关于用单片机+无源蜂鸣器制作音乐的视频,就挺有意思的,自己就在网上买了一个KC-1206的无源电磁蜂鸣器.今天来跟大家分享一下! 蜂鸣器分为两种:无源蜂鸣器和有源蜂鸣器[a)是 ...
最新文章
- Jenkins + sonarqube集成实现发布代码审计
- @transaction 提交事务_分布式事务 TCC-Transaction 源码分析——TCC 实现
- Page类的IsPostBack原理
- ihtml2document能不能根据id获取dom_回到基础:什么是DOM及DOM操作?
- RXThink 官方网站正式上线
- 再起航,我的学习笔记之JavaScript设计模式23(中介者模式)
- python for selenium 数据驱动测试
- visio 形状_分享我Visio经验(问题从来都不是问题)
- 为什么使用Binder而不是其他IPC机制
- ORACLE数据加载加本,使用oracle sqlldr加载数据
- cls_template.php on line 1072,博客 – 联发多彩网页技术博客
- Mysql (21)---连接的使用
- GridView 中 DataFormatString 的使用
- python通讯录文件读取_python通用读取vcf文件的类(可以直接复制粘贴使用)
- Solr 原理、API 使用
- socket(java) 搭建一个多人在线聊天室
- Laravel 之搜索引擎elasticsearch扩展Scout
- 企业信息化建设中流程梳理的步骤及方法
- 网工行业里的多面手,数据通信工程师2022年最新系统学习路线整理
- linux内核ppt刘小明,【陈老师华为北研所讲座PPT】从机制与策略探究Linux内核设计之道(4)...
热门文章
- 细说;(function ($, undefined){ })(jQuery); 的使用
- 白话理解java多线程之setDaemon()方法
- Android Animator(Android动画)
- 戴尔OptiPlex 7060 SSD+HHD+win10和ubuntu双系统安装
- CSP拼图问题--矩阵快速幂
- 通过evel将字符串作为函数执行函数
- 调试基恩士KV-H20S定位模块记录
- DailyFi - 9.20|NFT 平台 Vera 将于明日在 Polkastarter 上 IDO
- 解决ubantu里面报错findfont: Font family ['sans-serif'] not found. Falling back to Bitstream Vera Sans
- vue v-for循环改变循环数据视图不更新