找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2749|回复: 4
打印 上一主题 下一主题
收起左侧

《父亲节》STM32蜂鸣器实现筷子兄弟的<父亲> 附源程序

[复制链接]
跳转到指定楼层
楼主
ID:763998 发表于 2020-6-21 21:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include "beep.h"

  2. /**********************************************************************
  3. *函数名:BEEP_Init
  4. *功  能:蜂鸣器初始化
  5. *参  数:无
  6. *返  回:无
  7. *备  注:
  8. 引脚          点蜂鸣器电平                模式                                                速度
  9. PC3                        高电平                                        通用推挽输出                50M
  10. **********************************************************************/
  11. void BEEP_Init(void)
  12. {  
  13.        
  14.         #if 1
  15.                 RCC->APB2ENR |= 1<<4;//开启PC口时钟
  16.                 GPIOC->CRL &=~(0XF<<4*3);//清PC3
  17.                 GPIOC->CRL |=(0X3<<4*3);//通用推挽输出 50M
  18.           GPIOC->ODR &=~(3<<1);//关蜂鸣器       
  19.         #else
  20.           GPIO_InitTypeDef  GPIO_InitStructure;
  21.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能C端口时钟
  22.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;         
  23.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出
  24.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
  25.     GPIO_Init(GPIOC, &GPIO_InitStructure);//PC3
  26.     GPIO_ResetBits(GPIOC,GPIO_Pin_3);//关蜂鸣器       
  27.         #endif
  28. }

  29. /**********************************************************************
  30. *函数名:BEEP_Sound
  31. *功  能:控制蜂鸣器发声频率
  32. *参  数:f---频率
  33. *返  回:无
  34. *备  注:
  35. **********************************************************************/
  36. void BEEP_Sound(u32 f)
  37. {
  38.         u32 time;//半周期
  39.         if(f > 10)//判断休止符
  40.         {
  41.                 time = 500000/f;//  1/f/2=0.5/f (s) = 500/f (ms) = 500000/f (us)
  42.                 BEEP = 1;
  43.                 delay_us(time);
  44.                 BEEP = 0;
  45.                 delay_us(time);
  46.         }else
  47.                 delay_us(143*f);
  48.                        
  49. }
  50. //音
  51. typedef enum{
  52.         CL1=262,//低音
  53.         CL2=294,
  54.         CL3=330,
  55.         CL4=349,
  56.         CL5=392,
  57.         CL6=440,
  58.         CL7=494,
  59.         CM1=523,//中音
  60.         CM2=587,
  61.         CM3=659,
  62.         CM4=698,
  63.         CM5=784,
  64.         CM6=880,
  65.         CM7=988,
  66.         CH1=1047,//高音
  67.         CH2=1175,
  68.         CH3=1319,
  69.         CH4=1397,
  70.         CH5=1568,
  71.         CH6=1760,
  72.         CH7=1967,
  73.         POP=1,//休止符
  74.        
  75. }Music_TypeDef;

  76. //父亲
  77. void play_Music_1(void)
  78. {
  79.         //音谱
  80.         u32 music[]={
  81.                                                         CM1,CL5,CM1,CM3,CM4,CM4,CM3,CM2,CM1,
  82.                                                         CM1,CL5,CM1,CM2,CM3,CM3,POP,
  83.                                                         CM1,CL5,CM1,CM3,CM4,CM3,CM2,CM1,
  84.                                                         CM3,CM2,CM2,CM1,CM1,CM1,POP,
  85.                                                         CM1,CL5,CM1,CM3,CM4,CM3,CM2,CM1,
  86.                                                         CM6,CM5,CM5,CM4,CM4,CM3,POP,
  87.                                                         CM1,CL5,CM1,CM3,CM4,CM3,CM2,POP,CM1,
  88.                                                         CM3,CM2,CM2,CM1,CM1,POP,CM1,
  89.                
  90.                                                         CL6,CM6,CM6,CM5,CM3,CM3,POP,CM3,
  91.                                                         CM4,CM5,CM1,CM5,CM5,CM3,CM1,CL7,
  92.                                                         CL6,CM6,CM6,CM7,CM5,CM5,POP,CM5,
  93.                                                         CM6,CM5,CM4,CM4,CM3,CM3,CM2,CM2,
  94.                                                         };
  95.         //节拍
  96.         u8 time[] = {2,2,1,2,1,2,2,1,3,        ////时间-- 4代表一拍(400ms)
  97.                                                          2,2,1,2,1,4,4,
  98.                                                          2,2,1,3,2,2,1,3,
  99.                                                          2,2,1,2,1,4,4,
  100.                                                          2,2,1,3,2,2,1,3,
  101.                                                          2,2,1,2,1,4,4,
  102.                                                    2,2,1,3,2,1,1,3,1,
  103.                                                          2,2,1,3,4,2,2,
  104.                                                          4,3,1,2,1,1,3,1,
  105.                                                          2,2,2,1,1,4,2,2,
  106.                                                          4,3,1,2,1,1,3,1,
  107.                                                          2,1,1,2,2,6,2,4,
  108.                };       
  109.         u32 delayShow;
  110.         u16 i,j;
  111.         delayShow = 7;//控制播放快慢
  112.         for(i=0;i<sizeof(music)/sizeof(music[0]);i++)//放歌
  113.         {
  114.                 for(j=0;j<time[i]*music[i]/delayShow;j++)
  115.                 {
  116.                         BEEP_Sound((u32)music[i]);
  117.                 }       
  118.         }
  119. }
复制代码
全部资料51hei下载地址:
蜂鸣器实现筷子兄弟的《父亲》.7z (173.62 KB, 下载次数: 73)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:359938 发表于 2020-6-22 08:48 | 只看该作者
蜂鸣器需要PWM输出把,你这里都没有配置PWM,不对呀
回复

使用道具 举报

板凳
ID:763998 发表于 2020-6-22 09:04 | 只看该作者
qzc0927 发表于 2020-6-22 08:48
蜂鸣器需要PWM输出把,你这里都没有配置PWM,不对呀

不需要,你烧代码,试试
回复

使用道具 举报

地板
ID:661659 发表于 2020-6-22 15:25 | 只看该作者
我想问一下,这个有没有proteus图
回复

使用道具 举报

5#
ID:763998 发表于 2020-6-23 09:03 | 只看该作者
159.5819059 发表于 2020-6-22 15:25
我想问一下,这个有没有proteus图

目前没有哦,你可以自己做一个。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表