stm32单片机 代码实现歌曲——红尘情歌

简介: stm32单片机 代码实现歌曲——红尘情歌

mian.c

#include "sys.h"  
#include "delay.h"  
#include "led.h" 
#include "beep.h"
u8 music[]={
  5,10,10,5,5,9,9,16,8,8,8,9,10,5,5,16, //???????,???????
  6,8,8,6,5,10,10,16,9,8,8,6,9,16, //???????,?????
  5,10,10,5,5,9,9,16,8,8,8,6,5,10,10,16, //???????,???????
  6,11,11,6,5,10,10,16,9,8,8,6,8,16, //???????,?????
  5,12,5,5,12,5,9,16,8,6,8,8,8,10,12,16, //???????,???????!
  8,6,8,8,8,13,12,10,9,8,6,8,8,10,9,16, //??????,?????,?????
  5,12,5,5,12,5,9,16,8,6,8,8,13,12,16, //???????,??????
  8,8,8,13,12,10,9,8,6,8,8,9,8,16, //?????????,??????
};
u8 time[] = {
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, //???????,???????
  4,4,4,4,4,4,4,4,4,4,4,4,8,4, //???????,?????
  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, //???????,???????
  4,4,4,4,4,4,4,4,4,4,4,4,8,4, //???????,?????
  4,4,2,2,4,4,4,4,4,4,2,2,4,4,8,4, //???????,???????!
  4,4,2,2,4,4,4,4,4,4,4,4,4,4,8,4, //??????,?????,?????
  4,4,2,2,4,4,4,4,4,4,4,4,4,8,4, //???????,??????
  4,4,4,4,4,4,4,4,4,4,4,4,8,4, //?????????,??????
};
void Sound(u16 frq)
{   
    u32 n;
    BEEP = 0;
    if(frq != 1000) 
    {
        n = 500000/((u32)frq);
        BEEP = 0;
        delay_us(n);
        BEEP = 1;
        delay_us(n);
    }
    else
    {
      delay_us(1000);
    }         
}
void play(void)
{
         uc16 tone[] = {247,262,294,330,349,392,440,494,523,587,659,698,784,1000};//?????
u8 music[]={       
  5,5,6,8,7,6,5,6,13,13,//??
  5,5,6,8,7,6,5,3,13,13,
  2,2,3,5,3,5,6,3,2,1,
  6,6,5,6,5,3,6,5,13,13,
  5,5,6,8,7,6,5,6,13,13,
  5,5,6,8,7,6,5,3,13,13,
  2,2,3,5,3,5,6,3,2,1,
  6,6,5,6,5,3,6,1,   
  13,8,9,10,10,9,8,10,9,8,6,
  13,6,8,9,9,8,6,9,8,6,5,
  13,2,3,5,5,3,5,5,6,8,7,6,
  6,10,9,9,8,6,5,6,8
};     
u8 time[] = {       
  2,4,2,2,2,2,2,8,4, 4, //??
  2,4,2,2,2,2,2,8,4, 4,
  2,4,2,4,2,2,4,2,2,8,
  2,4,2,2,2,2,2,8,4 ,4,
  2,4,2,2,2,2,2,8,4, 4,
  2,4,2,2,2,2,2,8,4, 4,
  2,4,2,4,2,2,4,2,2,8,
  2,4,2,2,2,2,2,8,
  4, 2,2,2, 4, 2,2,2, 2,2,8,
  4, 2,2,2,4,2,2,2,2,2,8,
  4, 2,2,2,4,2,2,5,2,6,2,4,
  2,2 ,2,4,2,4,2,2,12
};     
    u32 yanshi;
    u16 i,e;
    yanshi = 10;
    for(i=0;i<sizeof(music)/sizeof(music[0]);i++)
    {
         for(e=0;e<((u16)time[i])*tone[music[i]]/yanshi;e++)
         {
          Sound((u32)tone[music[i]]);
         }      
    }
}
int main(void)
{
  delay_init();        
  LED_Init();       
  BEEP_Init();          
  BEEP = 0;
  play();
    while(1);     
}

beep.c

#include "beep.h"
void BEEP_Init(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;        
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_Init(GPIOB, &GPIO_InitStructure);   
  GPIO_ResetBits(GPIOB,GPIO_Pin_8);
}

beep.h

#ifndef __BEEP_H
#define __BEEP_H   
#include "sys.h"
#define BEEP PBout(8)
void BEEP_Init(void);         
#endif
相关文章
|
7月前
【STM32】基于HAL库的360度编码器、摇杆代码编写
【STM32】基于HAL库的360度编码器、摇杆代码编写
113 0
|
2月前
|
传感器 监控 JavaScript
千套单片机\stm32毕设课设题目及资料案列-干货分享
为帮助电子工程领域的学习者顺利毕业或掌握更多专业知识,我们精心整理了一系列单片机和STM32相关的题目及资料案例。这些资源覆盖了从毕业设计到课程设计的各个方面,包括但不限于智能小车、温度控制系统、无线通信、智能家居等多个领域。每项设计都配有详细的原理图、仿真图以及完整的文档资料,旨在帮助学生深入理解理论知识的同时,提高实际动手操作能力。无论是初学者还是有一定基础的学生,都能从中找到适合自己的项目进行实践探索。
296 8
|
4月前
|
C语言
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
【51单片机】LCD1602显示字符串,时间、时间+按键校准、秒表计时的功能代码。
|
4月前
|
C语言
51单片机汇编语言流水灯代码
51单片机汇编语言流水灯代码
100 1
|
7月前
|
传感器
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
51单片机循迹小车原理介绍和代码示例
|
6月前
|
Web App开发 传感器 Linux
【嵌入式软件工程师面经】STM32单片机
【嵌入式软件工程师面经】STM32单片机
163 1
|
6月前
|
存储 数据安全/隐私保护 芯片
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解嵌入式中FLASH闪存的特性和代码示例
【STM32】详解独立看门狗的本质和使用步骤&代码
【STM32】详解独立看门狗的本质和使用步骤&代码
|
6月前
|
传感器 数据格式
【STM32】DHT11温湿度模块传感器详解&代码
【STM32】DHT11温湿度模块传感器详解&代码