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月前
|
传感器 算法 物联网
基于STM32单片机的疫情防控系统(一)
基于STM32单片机的疫情防控系统(一)
|
3月前
|
存储 芯片 内存技术
STM32单片机串口一键下载电路与操作方法详解
STM32单片机串口一键下载电路与操作方法详解
183 0
|
3月前
|
Linux API 芯片
POWERLINK协议在stm32单片机+w5500移植成功经验分享
POWERLINK协议在stm32单片机+w5500移植成功经验分享
|
3月前
|
监控 网络协议 Linux
POWERLINK协议源码(最新)在stm32单片机上的移植指南
POWERLINK协议源码(最新)在stm32单片机上的移植指南
|
3月前
QT上位机串口+STM32单片机项目(二)
QT上位机串口+STM32单片机项目
|
3月前
QT上位机串口+STM32单片机项目(一)
QT上位机串口+STM32单片机项目
127 0
(嵌入式系列)STM32系列单片机的GPIO简介
(嵌入式系列)STM32系列单片机的GPIO简介
(嵌入式系列)STM32系列单片机的GPIO简介
|
3月前
|
传感器 存储 数据采集
单片机基于stm32单片机的数字温度计设计_kaic
古往今来,陶瓷在我们的生活中一直都是不可或缺的物品,而随着当今社会经济的快速发展,人们对于这些高档陶瓷产品的使用性能和产品质量上的要求也愈加严格。那么在陶瓷品的生产过程中,想要提高陶瓷品的品质和合格率,能够随时监测温度的温度计是必不可少的。 本课题的研究是基于单片机控制技术,设计出能够在陶瓷升温阶段对陶瓷温度进行检测和报警的温度计,以满足生产过程中对温度的实时检测的需求。 本文详细的阐述了温度计的设计原理以及它的硬件组成模块和软件设计方案。本课题是基于STM32单片机,使用K型热电偶温度传感器进行温度采集再通过OLED显示温度,并通过蓝牙模块进行远程控制和监测。在本课题的制作中,也考虑了本系统
|
4月前
|
存储 芯片 UED
【STM32】单片机模式配置&FlyMcu串口下载固件&STLINK Utility
【STM32】单片机模式配置&FlyMcu串口下载固件&STLINK Utility
推荐文章
更多