標(biāo)題: 《父親節(jié)》STM32蜂鳴器實(shí)現(xiàn)筷子兄弟的<父親> 附源程序 [打印本頁]

作者: 小小涼冰樂    時(shí)間: 2020-6-21 21:37
標(biāo)題: 《父親節(jié)》STM32蜂鳴器實(shí)現(xiàn)筷子兄弟的<父親> 附源程序
  1. #include "beep.h"

  2. /**********************************************************************
  3. *函數(shù)名:BEEP_Init
  4. *功  能:蜂鳴器初始化
  5. *參  數(shù):無
  6. *返  回:無
  7. *備  注:
  8. 引腳          點(diǎn)蜂鳴器電平                模式                                                速度
  9. PC3                        高電平                                        通用推挽輸出                50M
  10. **********************************************************************/
  11. void BEEP_Init(void)
  12. {  
  13.        
  14.         #if 1
  15.                 RCC->APB2ENR |= 1<<4;//開啟PC口時(shí)鐘
  16.                 GPIOC->CRL &=~(0XF<<4*3);//清PC3
  17.                 GPIOC->CRL |=(0X3<<4*3);//通用推挽輸出 50M
  18.           GPIOC->ODR &=~(3<<1);//關(guān)蜂鳴器       
  19.         #else
  20.           GPIO_InitTypeDef  GPIO_InitStructure;
  21.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能C端口時(shí)鐘
  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);//關(guān)蜂鳴器       
  27.         #endif
  28. }

  29. /**********************************************************************
  30. *函數(shù)名:BEEP_Sound
  31. *功  能:控制蜂鳴器發(fā)聲頻率
  32. *參  數(shù):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.         //節(jié)拍
  96.         u8 time[] = {2,2,1,2,1,2,2,1,3,        ////時(shí)間-- 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. }
復(fù)制代碼
全部資料51hei下載地址:
蜂鳴器實(shí)現(xiàn)筷子兄弟的《父親》.7z (173.62 KB, 下載次數(shù): 76)


作者: qzc0927    時(shí)間: 2020-6-22 08:48
蜂鳴器需要PWM輸出把,你這里都沒有配置PWM,不對呀
作者: 小小涼冰樂    時(shí)間: 2020-6-22 09:04
qzc0927 發(fā)表于 2020-6-22 08:48
蜂鳴器需要PWM輸出把,你這里都沒有配置PWM,不對呀

不需要,你燒代碼,試試
作者: 159.5819059    時(shí)間: 2020-6-22 15:25
我想問一下,這個(gè)有沒有proteus圖
作者: 小小涼冰樂    時(shí)間: 2020-6-23 09:03
159.5819059 發(fā)表于 2020-6-22 15:25
我想問一下,這個(gè)有沒有proteus圖

目前沒有哦,你可以自己做一個(gè)。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1