<tbody id="jeav1"></tbody>

<progress id="jeav1"></progress>

    <tbody id="jeav1"><noscript id="jeav1"><video id="jeav1"></video></noscript></tbody>

      電子發燒友App

      硬聲App

      創作
      電子發燒友網>電子資料下載>單片機>【學習心得】蜂鳴器播放音樂

      【學習心得】蜂鳴器播放音樂

      2021-11-23 | pdf | 80.14KB | 次下載 | 免費

      資料介紹

      以下是學習STM32控制蜂鳴器時的一些心得體會,我也是綜合各種資料寫出來的。

      蜂鳴器是一種很常見的電子元件,一般也就發出滴滴的聲音。

      但自從在網上看到各種用蜂鳴器播放音樂的實例,我就對蜂鳴器產生了濃厚的興趣。

      我了解到,蜂鳴器可以根據頻率改變發出聲音的音調,具體音符對應頻率如下:

      編號0123456789101112131415161718192021
      音符低1低2低3低4低5低6低7中1中2中3中4中5中6中7高1高2高3高4高5高6高7不發聲
      頻率26229433034939244049452357865969878488098810451175131813971568176019762000

      那么還需要知道一首曲子的節拍,就可以完成一首音樂了。具體節拍對應編號如下:

      編號1234
      節拍1/4拍1/2拍1拍2拍

      那么只需要找到一首歌曲的簡譜,寫出對應音符的數組和對應節拍的數組,就算完成第一步了。

      接下來進行STM32 的庫函數程序編寫。我使用的是正點原子的精英版?;編旌瘮狄彩桥涮椎?。

      我選取的歌曲是《動物世界》部分和《see you again》部分。

      需要編寫的庫函數如下:

      #include "stm32f10x.h"
      #include "beep.h"
      #include "sys.h"
      #include "delay.h"
      
      void beep_init(void)
      {
      	GPIO_InitTypeDef GPIO_InitStruct;
      	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
      	
      	GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
      	GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8;
      	GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;
      	
      	GPIO_Init(GPIOB, &GPIO_InitStruct);
      	
      	GPIO_ResetBits(GPIOB,GPIO_Pin_8);
      	
      }
      
      void beepon(void)
      {
      	GPIO_SetBits(GPIOB,GPIO_Pin_8);
      }
      
      void beepoff(void)
      {
      	GPIO_ResetBits(GPIOB,GPIO_Pin_8);
      }
      
      void sound(u16 frq)
      {
      	u32 n;
      	if(frq!=2000)
      	{
      		n=500000/((u32)frq);
      		beepoff();
      		delay_us(n);
      		beepon();
      		delay_us(n);
      	}
      	else
      	{
      		beepoff();
      		delay_us(1000);
      	}
      	
      }
      
      void music(void)
      {
      	
      	//          低1 低2 低3  低4 低5 低6 低7  中1 中2 中3 中4 中5 中6 中7  高1  高2  高3   高4  高5  高6  高7 不放聲
      	u16 tone[]={262,294,330,349,392,440,494,523,578,659,698,784,880,988,1046,1175,1318,1397,1568,1760,1976,2000};
      	//           0   1   2   3   4   5   6   7   8   9   10  11  12  13  14    15   16   17   18   19   20  21	
      	
      		
      	//歌曲《動物世界》簡譜
      	u8 playmusic[]={7,6,5,6,7,9,9,6,6,7,6,5,6,7,9,9,5,5,5,4,2,5,4,2,
      									5,4,2,5,4,1,2,2,2,21,21,21,3,2,1,2,3,7,7,6,6,
      									1,2,2,1,1,6,6,5,5,5,4,2,5,4,2,5,6,7,6,6,5,6,4,4,4,								
      									7,6,5,6,7,9,9,6,6,7,6,5,6,7,9,9,5,5,5,4,2,5,4,2,
      									5,4,2,5,4,9,10,10,9,9,9,21,21,21,8,8,8,8,8,9,10,9,6,8,7,6,
      									7,7,7,5,9,4,12,12,12,5,7,9,12,12,11,12,11,8,9,11,8,7,7,7,5,
      									11,12,11,12,11,8,9,9,9,5,7,9,12,12,11,12,11,8,9,11,8,7,7,5,5,5,5,
      									9,8,7,6,6,6,6,5,7,9,12,12,11,12,11,8,9,11,8,7,7,7,5,12,12,12,
      									14,13,12,11,11,11,11,11,11,21,12,11,9,12,11,9,12,11,11,8,7,6,7,6,4,
      									5,11,9,8,8,8,8,9,8,7,5,5,5,5,
      									21,21,21
      									};
      	//1是1/4拍 2是半拍,4是一拍,8是兩拍	
      	u8 TIme[]={2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,
      						 2,2,2,2,2,2,4,4,4,4,4,4,2,2,2,2,2,2,4,4,4,
      						 2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,4,4,4,4,4,2,2,4,4,4,
      						 2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,
      						 2,2,2,2,2,1,1,2,2,4,4,4,4,4,2,2,2,2,2,2,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,4,2,2,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,4,
      						 4,4,2,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,2,4,4,4,4,4,4,
      						 4,4,2,2,4,4,4,4,4,4,2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,
      						 4,4,2,2,4,4,4,4,4,2,2,4,4,4,						 
      						 4,4,4
      						};
      
      	
      	
      
      	//歌曲《see you again》簡譜
      	//u8 playmusic[]={11,15,14,11,11,14,15,16,15,14,15,
      	//								11,15,14,11,11,14,15,16,15,14,15,
      	//								11,15,14,11,11,14,15,16,15,14,15,
      	//								11,15,14,11,11,7,9,11,
      	//								12,11,11,21,7,
      	//								8,8,7,8,9,21,8,11,
      	//								12,13,12,11,9,8,8,7,
      	//								8,8,8,7,21,7,9,11,
      	//								12,11,11,21,7,
      	//								8,8,7,9,21,8,9,11,
      	//								12,14,15,16,15,14,11,12,14,
      	//								16,16,16,15,21,11,12,14,
      	//								16,16,16,15,21,21,
      	//								21,21,21
      	//								};
      	//1是1/4拍 2是半拍,4是一拍,8是兩拍	
      	//u8 TIme[]={2,2,2,2,2,1,1,1,1,1,1,
      	//					 2,2,2,2,2,1,1,1,1,1,1,
      	//					 2,2,2,2,2,1,1,1,1,1,1,
      	//					 2,2,2,2,2,2,2,2,
      	//					 4,2,2,4,4,
      	//					 2,2,2,2,4,2,1,1,
      	//					 2,2,2,2,2,2,2,2,
      	//					 2,2,2,2,4,1,1,1,1,
      	//					 8,2,2,2,2,
      	//					 2,2,2,2,4,1,1,2,
      	//					 2,2,2,2,2,2,1,1,2,
      	//					 2,2,2,2,4,1,1,2,
      	//					 2,2,2,2,4,4,
      	//					 4,4,4
      	//					 };
      	
      	
      	
      	u32 delayTIme;
      	u16 i,e;
      		
      	delayTIme=10;
      		
      		for(i=0;i<(sizeof(playmusic)/sizeof(playmusic[0]));i++)
      	{
      		for(e=0;e<((u16)time[i])*tone[playmusic[i]]/delaytime;e++)
      		{
      			sound((u32)tone[playmusic[i]]);
      		}		
      	}
      	
      }
      
      #ifndef __BEEP_H
      #define __BEEP_H
      
      #include "stm32f10x.h"
      #include "sys.h"
      
      
      void beep_init(void);
      void beepon(void);
      void beepoff(void);
      void sound(u16 frq);
      void music(void);
      
      #endif
      

      需要編寫的主函數如下:

      #include "stm32f10x.h"
      #include "beep.h"
      #include "delay.h"
      int main()
      {
      	delay_init(72);
      	beep_init();
      	
      	while(1)
      	{
      		music();
      		delay_ms(1000);
      	}
      	
      }
      

      接下來將程序燒進單片機即可完成使用蜂鳴器播放音樂了。

      ?

      ?

      下載該資料的人也在下載 下載該資料的人還在閱讀
      更多 >

      評論

      查看更多

      下載排行

      本周

      1. 1STM32F407+ESP8266+SD卡進行遠程固件升級
      2.   |  19次下載  |  免費
      3. 2五、觸摸屏基本概念?
      4.   |  6次下載  |  免費
      5. 3STM32--STM32F051 IAP的實現
      6.   |  5次下載  |  免費
      7. 4硬核創客DIY遙控氦氣球飛行器——會飛的鯊魚的誕生的全過程
      8.   |  5次下載  |  免費
      9. 5第一次使用國產芯片--芯旺微--KungFu--ChipOn
      10.   |  5次下載  |  免費
      11. 6畢業設計 - 題目:基于單片機的指紋識別門禁系統設計
      12.   |  5次下載  |  免費
      13. 7peakcoo分享:soc芯片
      14.   |  5次下載  |  免費
      15. 8ESP32時鐘筆記
      16.   |  4次下載  |  免費

      本月

      1. 1MOS管及其外圍電路設計
      2. 1.27MB  |  239次下載  |  免費
      3. 2348常用實用電路圖大全
      4. 7.95 MB  |  150次下載  |  免費
      5. 351單片機之邏輯運算指令ANL、ORL、XRL等
      6. 93.18KB  |  65次下載  |  免費
      7. 4計算機主板電源接口8pin,菜鳥老鳥都要知道 電源接口圖文全教程
      8. 538.52KB  |  42次下載  |  免費
      9. 5磁環介紹與應用(轉)
      10. 214.96KB  |  39次下載  |  免費
      11. 6霍爾編碼器原理及測速--PID—arduino
      12.   |  35次下載  |  免費
      13. 7macOS搭建51單片機開發環境
      14. 593.4KB  |  29次下載  |  免費
      15. 8LED開關電源與普通開關電源有什么區別
      16. 84.11KB  |  26次下載  |  免費

      總榜

      1. 1matlab 7.0軟件下載(免費破解版)
      2. 1228800  |  934816次下載  |  免費
      3. 2protel99se軟件下載(可英文版轉中文版)
      4. 78.1 MB  |  537325次下載  |  免費
      5. 3MATLAB 7.1 下載 (含軟件介紹)
      6. 1331200  |  419801次下載  |  免費
      7. 4OrCAD10.5下載,OrCAD10.5中文版軟件
      8. 817182  |  233659次下載  |  免費
      9. 5Protel DXP2004破解版下載
      10. 未知  |  232856次下載  |  免費
      11. 6電路仿真軟件multisim 10.0免費下載
      12. 340992  |  190854次下載  |  免費
      13. 7十天學會AVR單片機與C語言視頻教程 下載
      14. 158M  |  183042次下載  |  免費
      15. 8proe5.0野火版下載(中文版免費下載)
      16. 818176  |  137846次下載  |  免費
      版權所有 © 深圳華秋電子有限公司 電子發燒友電路圖粵公網安備 44030402000349號 電信與信息服務業務經營許可證:粵B2-20160233 工商網監認證工商網監 粵ICP備14022951號
      り卐☆熟女の色香:真实处破女刚成年AⅤ是基于地理位置的互联网生活服务平台,国产免费破外女真实出血视频用户可以通过到位找寻身边可上门的被男人吃奶跟添下面特舒服服务,可选择的服务包括按摩、特殊、出台、全套、三陪、等真实处破女刚成年AⅤ服务。
      <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>