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
相关文章
|
1月前
|
存储 算法 编译器
如何优化单片机程序里面的C代码方法
如何优化单片机程序里面的C代码方法
20 0
|
3月前
|
传感器 编解码 数据处理
毕业设计|基于STM32单片机的水位浑浊度检测设计
毕业设计|基于STM32单片机的水位浑浊度检测设计
268 0
|
3月前
|
传感器 物联网 芯片
毕业设计 基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测
毕业设计 基于STM32单片机无线ZIGBEE智能大棚土壤湿度光照检测
|
3月前
|
芯片
毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计
毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计
|
4月前
|
人工智能 安全 搜索推荐
单片机毕业设计|基于stm32智能快递箱设计
随在当今的社会,网上购物以及线下获取快递己经成为日常生活中很重要的一个组成部分,电子商务的发展也带来了快递业的繁荣。这对快递业而言,是一个巨大的发展机遇,同时也是一个不可忽视的挑战。当前,快件运输的安全性越来越受到大家的重视,对快件的服务要求也越来越高。但就目前的快递行业来说,也面临着这样那样的问题,比较经常遇到送快递的到了,业务不在家,取快递时间对不上等。在此基础上,提出了一种以STM32为核心的智能化快递柜。本快递柜的主要功能有,指纹解锁功能,按键功能,警报功能,继电器柜门开锁功能,验证码功能,主要设计加入了指纹解锁功能。本系统以STM32F103为主控芯片,配置了指纹传感、4*4矩阵键盘
133 0
|
25天前
|
芯片
stm32f4外设学习篇(代码集合)(一)
stm32f4外设学习篇(代码集合)
|
1月前
STM32控制SG90舵机原理及代码
STM32控制SG90舵机原理及代码
27 1
|
3月前
|
人工智能 安全 搜索推荐
单片机毕业设计|基于stm32智能快递箱设计
单片机毕业设计|基于stm32智能快递箱设计
|
3月前
|
缓存 编译器 程序员
嵌入式开发环境Vscode开发STM32单片机程序
嵌入式开发环境Vscode开发STM32单片机程序
55 0
|
3月前
|
算法 C语言 智能硬件
stm32单片机实现电机的PID控制
stm32单片机实现电机的PID控制
83 0