- #include "beep.h"
- /**********************************************************************
- *函數(shù)名:BEEP_Init
- *功 能:蜂鳴器初始化
- *參 數(shù):無
- *返 回:無
- *備 注:
- 引腳 點(diǎn)蜂鳴器電平 模式 速度
- PC3 高電平 通用推挽輸出 50M
- **********************************************************************/
- void BEEP_Init(void)
- {
-
- #if 1
- RCC->APB2ENR |= 1<<4;//開啟PC口時(shí)鐘
- GPIOC->CRL &=~(0XF<<4*3);//清PC3
- GPIOC->CRL |=(0X3<<4*3);//通用推挽輸出 50M
- GPIOC->ODR &=~(3<<1);//關(guān)蜂鳴器
- #else
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能C端口時(shí)鐘
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
- GPIO_Init(GPIOC, &GPIO_InitStructure);//PC3
- GPIO_ResetBits(GPIOC,GPIO_Pin_3);//關(guān)蜂鳴器
- #endif
- }
- /**********************************************************************
- *函數(shù)名:BEEP_Sound
- *功 能:控制蜂鳴器發(fā)聲頻率
- *參 數(shù):f---頻率
- *返 回:無
- *備 注:
- **********************************************************************/
- void BEEP_Sound(u32 f)
- {
- u32 time;//半周期
- if(f > 10)//判斷休止符
- {
- time = 500000/f;// 1/f/2=0.5/f (s) = 500/f (ms) = 500000/f (us)
- BEEP = 1;
- delay_us(time);
- BEEP = 0;
- delay_us(time);
- }else
- delay_us(143*f);
-
- }
- //音
- typedef enum{
- CL1=262,//低音
- CL2=294,
- CL3=330,
- CL4=349,
- CL5=392,
- CL6=440,
- CL7=494,
- CM1=523,//中音
- CM2=587,
- CM3=659,
- CM4=698,
- CM5=784,
- CM6=880,
- CM7=988,
- CH1=1047,//高音
- CH2=1175,
- CH3=1319,
- CH4=1397,
- CH5=1568,
- CH6=1760,
- CH7=1967,
- POP=1,//休止符
-
- }Music_TypeDef;
- //父親
- void play_Music_1(void)
- {
- //音譜
- u32 music[]={
- CM1,CL5,CM1,CM3,CM4,CM4,CM3,CM2,CM1,
- CM1,CL5,CM1,CM2,CM3,CM3,POP,
- CM1,CL5,CM1,CM3,CM4,CM3,CM2,CM1,
- CM3,CM2,CM2,CM1,CM1,CM1,POP,
- CM1,CL5,CM1,CM3,CM4,CM3,CM2,CM1,
- CM6,CM5,CM5,CM4,CM4,CM3,POP,
- CM1,CL5,CM1,CM3,CM4,CM3,CM2,POP,CM1,
- CM3,CM2,CM2,CM1,CM1,POP,CM1,
-
- CL6,CM6,CM6,CM5,CM3,CM3,POP,CM3,
- CM4,CM5,CM1,CM5,CM5,CM3,CM1,CL7,
- CL6,CM6,CM6,CM7,CM5,CM5,POP,CM5,
- CM6,CM5,CM4,CM4,CM3,CM3,CM2,CM2,
- };
- //節(jié)拍
- u8 time[] = {2,2,1,2,1,2,2,1,3, ////時(shí)間-- 4代表一拍(400ms)
- 2,2,1,2,1,4,4,
- 2,2,1,3,2,2,1,3,
- 2,2,1,2,1,4,4,
- 2,2,1,3,2,2,1,3,
- 2,2,1,2,1,4,4,
- 2,2,1,3,2,1,1,3,1,
- 2,2,1,3,4,2,2,
- 4,3,1,2,1,1,3,1,
- 2,2,2,1,1,4,2,2,
- 4,3,1,2,1,1,3,1,
- 2,1,1,2,2,6,2,4,
- };
- u32 delayShow;
- u16 i,j;
- delayShow = 7;//控制播放快慢
- for(i=0;i<sizeof(music)/sizeof(music[0]);i++)//放歌
- {
- for(j=0;j<time[i]*music[i]/delayShow;j++)
- {
- BEEP_Sound((u32)music[i]);
- }
- }
- }
復(fù)制代碼 全部資料51hei下載地址:
蜂鳴器實(shí)現(xiàn)筷子兄弟的《父親》.7z
(173.62 KB, 下載次數(shù): 76)
2020-6-21 22:59 上傳
點(diǎn)擊文件名下載附件
|