資源簡介
資源是51單片機使用蜂鳴器來播放音樂的實驗例程,通過PWM信號來控制蜂鳴器,改變PWM的頻率,可以改變蜂鳴器的發聲音調,從而可以播放音樂。

代碼片段和文件信息
/********************************************************************/
//飛翔科技???助您成功
//網店地址:http://fxfreefly.taobao.com
/********************************************************************/
#include?//包含頭文件,一般情況不需要改動
sbit?BUZZ=P1^0;?????//定義蜂鳴器接口
code?unsigned?int?toneH[10]={?????//音調對應的定時器計數值的高8位?第一個音為低音7
0XF80XF80XF90XFA0XFA0XFB0XFB0XFC0XFC0XFC
};
code?unsigned?int?toneL[10]={?????//音調對應的定時器計數值的低8位
0X180X8C0X6B0X150X670X040X900X0C0X440XAC
};
code?unsigned?int?soundtone[42]={
11556654433221
55443325544332
11556654433221
};
code?unsigned?int?soundlong[42]={
11111121111112
11111121111112
11111121111112
};
unsigned?int?t;
unsigned?char?t_Ht_L;
/********************************************************************/
/*?????????????????????????初始化定時器0????????????????????????????*/
/********************************************************************/
void?init_T0(void)
{
TMOD|=?0x01; ??//使用方式1,16位定時器 ?????
TH0=0x00; ??????//給TH0和TL0賦初值,計數器由0開始計數,到65535溢出
TL0=0x00;
EA=1;????????????//總中斷打開
ET0=1;???????????//定時器中斷打開
TR0=0;???????????//關閉定時器
}
/********************************************************************/
/*????????????????????????????延時函數??????????????????????????????*/
/*???????????????延時時間的計算對應單片機12MHz的晶振????????????????*/
/*????????????x為延時的ms數,例:x為10時,延時時間約為10ms??????????*/
/********************************************************************/
void?delay1ms(unsigned?int?x)
{
unsigned?int?ij;
for(j=0;j for(i=0;i<123;i++);
}
/********************************************************************/
/*??????????????????????????????主函數??????????????????????????????*/
/********************************************************************/
void?main(void)?
{
????init_T0();??
????for(;;)?
????{
????????for(t=0;t<42;t++)?
????????{
????????????t_H=toneH[soundtone[t]];?????//提取音調對應的定時器初始值
????????????t_L=toneL[soundtone[t]];
???????? TH0=t_H; ??//給TH0和TL0賦值
???????? TL0=t_L;
????????????TR0=1;??????????????//打開定時器,蜂鳴器發聲
????????????delay1ms(soundlong[t]*500);????//延時soundlong[t]指定的時間長度
????????????BUZZ=0;?????????????//蜂鳴器不發聲,停頓片刻
????????????TR0=0;
????????????delay1ms(50);
????????}
????????delay1ms(2000);
?????}?
}
/********************************************************************/
/*???????????????????????定時器0中斷服務程序????????????????????????*/
/********************************************************************/
void?T0_ISR(void)?interrupt?1?using?1
{
TH0=t_H; ??//給TH0和TL0重新賦值
TL0=t_L;
BUZZ=~BUZZ;??????//BUZZ的值取反,改變蜂鳴器的狀態。
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3729??2013-05-22?19:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶
?????文件???????2932??2020-03-06?09:18??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.c
?????文件???????1309??2013-05-22?19:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.hex
?????文件???????5396??2013-05-22?19:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.LST
?????文件???????5858??2013-05-22?19:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.M51
?????文件???????4318??2013-05-22?19:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.OBJ
?????文件???????1051??2013-06-03?22:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.Opt
?????文件????????246??2013-06-03?22:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.plg
?????文件???????2048??2012-09-13?22:08??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶.Uv2
?????文件???????1059??2013-05-22?19:42??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶_Opt.Bak
?????文件??????????0??2012-09-13?22:04??073-蜂鳴器播放音樂-小星星亮晶晶\蜂鳴器播放音樂-小星星亮晶晶_Uv2.Bak
?????目錄??????????0??2020-02-07?17:49??073-蜂鳴器播放音樂-小星星亮晶晶
-----------?---------??----------?-----??----
????????????????27946????????????????????12
- 上一篇:ds90ub927.tar.bz2
- 下一篇:關于抽象數據類型--有理數數據結構
評論
共有 條評論