您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 蜂鸣器和弦音实现基于瑞萨单片机实现电路+代码
蜂鸣器和弦电路以下是基于瑞萨单片机实现代码:/********************************************************************************文件:Beep.c功能:蜂鸣器和弦音,定义三种音,关机,开机,单音Author:DB.YAN,i_restart@126.comTime:2013.10.15RecentModify: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_bit.no1//BEEPIO#defineBUZZER_OUTPM3_bit.no1=0//ModeOUT#defineBUZZER_PULLPU3_bit.no1=1//Pullup#definePWR_CTRLP13_bit.no0//蜂鸣器供电控制脚#defineBUZZERIO_INIT{BUZZER_OUT;BUZZER_PULL;}/*=========================音调频率表=======================*/constuintTune_Tbl[24]={//C6,CS6,D6,DS6,E6F6,FS6,G6,GS6,A6,AS6,B61047,1109,1175,1245,1319,1397,1480,1568,1661,1760,1865,1976,//C7,CS7,D7,DS7,E7F7,FS7,G7,GS7,A7,AS7,B72093,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;//开启时间,单位为10mSucharFREQ_time;//音频供给时间,单位为10mSucharindex;//}Beep;volatileunion{ucharflag4;__BITS8flag4_bit;};#defineBeep_ENflag4_bit.no0#defineBeep_Finishflag4_bit.no1//和弦结束标志/*=======================================================函数名:Beep_On(ucharSoundSel)传入参数:SoundSel功能:选择声音种类调用:外部调用=========================================================*/__calltvoidBeep_On(ucharSoundSel){Beep_EN=1;Beep.index=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)[Beep.index]!=END){Beep.CountFR=(uint)(TIMER_CNT_BASE/Tune_Tbl[(*pSoundSel)[Beep.index]-1]);Beep.PWR_time=(*pSoundSel)[Beep.index+1];Beep.FREQ_time=(*pSoundSel)[Beep.index+2];Beep.index=Beep.index+3;}else{Beep.index=0;PWR_CTRL=1;Beep_EN=0;Beep_Finish=1;}return;}/*=======================================================函数名:Beep_control()功能:蜂鸣器控制调用:每10ms调用一次=========================================================*/__calltvoidBeep_control()//每10mS调用一次{if(Beep_EN){if(Beep.PWR_time){PWR_CTRL=0;//供电Beep.PWR_time--;}else{PWR_CTRL=1;//掉电,依靠电容放电实现和弦拖音}if(Beep.FREQ_time){Beep.FREQ_time--;CR000=Beep.CountFR;TOC00=0x03;//TMC00=0X0C;//启动操作}else{TOC00=0x02;//TMC00=0X00;//启动操作Beep_set();PWR_CTRL=0;//发声完毕,打开电源给电容充电}}else{BUZZER_IO=0;TOC00=0x02;}return;}
本文标题:蜂鸣器和弦音实现基于瑞萨单片机实现电路+代码
链接地址:https://www.777doc.com/doc-2089681 .html