✅ 操作成功!

瑞萨单片机

发布时间:2023-06-07 作者:admin 来源:文学

瑞萨单片机

瑞萨单片机

细胞的大小-中国茶叶分类

2023年2月22日发(作者:护士xxxx)

蜂鸣器和弦电路

以下是基于瑞萨单片机实现代码:

/******************************************************************************

**

文件:Beep.c

功能:蜂鸣器和弦音,定义三种音,关机,开机,单音

Author:,*****************

Time:2013.10.15

RecentModify:2013.10.16

******************************************************************************/

/*=======================以下是音调定义======================*/

#defineTone_C61

#defineTone_CS62

#defineTone_D63

#defineTone_DS64

#defineTone_E65

#defineTone_F66

#defineTone_FS67

#defineTone_G68

#defineTone_GS69

#defineTone_A610

#defineTone_AS611

#defineTone_B612

#defineTone_C713

#defineTone_CS714

#defineTone_D715

#defineTone_DS716

#defineTone_E717

#defineTone_F718

#defineTone_FS719

#defineTone_G720

#defineTone_GS721

#defineTone_A722

#defineTone_AS723

#defineTone_B724

#defineEND0//音频结束位

#defineSYS_FREQ8//MHZ系统时钟

#defineTIMER_CNT_BASE1000000*SYS_FREQ/2//定时器计数基数

#defineBUZZER_IOP3_1//BEEPIO

#defineBUZZER_OUTPM3_1=0//ModeOUT

#defineBUZZER_PULLPU3_1=1//Pullup

#definePWR_CTRLP13_0//蜂鸣器供电控制脚

#defineBUZZERIO_INIT{BUZZER_OUT;BUZZER_PULL;}

/*=========================音调频率表=======================*/

constuintTune_Tbl[24]=

{

//C6,CS6,D6,DS6,E6F6,FS6,G6,GS6,A6,AS6,B6

1047,1109,1175,1245,1319,1397,1480,1568,1661,1760,1865,1976,

//C7,CS7,D7,DS7,E7F7,FS7,G7,GS7,A7,AS7,B7

2093,2217,2349,2489,2637,2794,2960,3136,3322,3520,3729,3951,

};

/*======================关机和弦1,2,3...====================*/

constucharSound_ShutDown[10]=

{

Tone_C7,2,14,Tone_D7,2,6,Tone_E7,6,60,END

};

/*======================开机和弦3,2,1...====================*/

constucharSound_PowerOn[10]=

{

Tone_E7,2,6,Tone_D7,2,14,Tone_C7,6,60,END

};

/*======================单音和弦2...=======================*/

constucharSound_Single[10]=

{

Tone_D7,12,60,END,END,END,END,END,END,END,

};

#defineS_SHUTDOWN1//关机音

#defineS_POWERON2//开机音

#defineS_SINGLE3//单音

constuchar(*pSoundSel)[10];//选曲指针

structBE

{

uintCountFR;//定时器计数值,通过改变计数值改变音频频率

ucharPWR_time;//开启时间,单位为10mS

ucharFREQ_time;//音频供给时间,单位为10mS

ucharindex;//

}Beep;

volatileunion{ucharflag4;__BITS8flag4_bit;};

#defineBeep_ENflag4_0

#defineBeep_Finishflag4_1//和弦结束标志

/*=======================================================

函数名:Beep_On(ucharSoundSel)

传入参数:SoundSel

功能:选择声音种类

调用:外部调用

=========================================================*/

__calltvoidBeep_On(ucharSoundSel)

{

Beep_EN=1;

=0;

Beep_Finish=0;

switch(SoundSel)

{

caseS_SHUTDOWN:

pSoundSel=&Sound_ShutDown;

break;

caseS_POWERON:

pSoundSel=&Sound_PowerOn;

break;

caseS_SINGLE:

pSoundSel=&Sound_Single;

break;

default:

break;

}

}

/*=======================================================

函数名:Beep_set()

功能:蜂鸣器参数设置

调用:Beep_control()

=========================================================*/

__calltvoidBeep_set()

{

if((*pSoundSel)[]!=END)

{

R=(uint)(TIMER_CNT_BASE/Tune_Tbl[(*pSoundSel)[]-1]);

_time=(*pSoundSel)[+1];

_time=(*pSoundSel)[+2];

=+3;

}else{=0;PWR_CTRL=1;Beep_EN=0;Beep_Finish=1;}

return;

}

/*=======================================================

函数名:Beep_control()

功能:蜂鸣器控制

调用:每10ms调用一次

=========================================================*/

__calltvoidBeep_control()//每10mS调用一次

{

if(Beep_EN)

{

if(_time)

{

PWR_CTRL=0;//供电

_time--;

}

else

{

PWR_CTRL=1;//掉电,依靠电容放电实现和弦拖音

}

if(_time)

{

_time--;

CR000=R;

TOC00=0x03;

//TMC00=0X0C;//启动操作

}

else

{

TOC00=0x02;

//TMC00=0X00;//启动操作

Beep_set();

PWR_CTRL=0;//发声完毕,打开电源给电容充电

}

}

else

{

BUZZER_IO=0;

TOC00=0x02;

}

return;

}

👁️ 阅读量:0