51单片机蜂鸣器音乐程序程序,音乐的随时跳转

如何使用51单片机的蜂鸣器来播放某些歌曲?_百度知道
如何使用51单片机的蜂鸣器来播放某些歌曲?
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
学者无量知道合伙人
获赞数:40
声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单处机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调。要准确奏出一首曲子,必须准确地控制乐曲节奏,即一音符的持续时间。音符的节拍我们可以用定时器T0来控制,送入不同的初值,就可以产生不同的定时时间。便如某歌曲的节奏为每分钟94拍,即一拍为0.64秒。其实就是一个控制单片机节拍的问题,如果想要51的具体程序,网上很多,没找到可以给我留言,我给你。
alenhoo知道合伙人
来自电脑网络类芝麻团
采纳数:167
获赞数:585
擅长:暂未定制
参与团队:
蜂鸣器的发声频率是固定的,不能改变声调。要播放歌曲的话最好用小喇叭,通过改变脉冲的频率可以控制小喇叭的声调。
yl_b知道合伙人
专门有卖音乐芯片的吧,非常非常非常便宜的!用单片机可以给芯片供电控制,如果仅需要单一播放音乐的功能,用单片机浪费了!
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 5976|回复: 6
单片机蜂鸣器音乐程序
#include &reg51.h&
sbit& && &speaker=P1^2;&&
unsigned char timer0h,timer0l,
& && &&&//世上只有妈妈好数据表
code unsigned char sszymmh[]={& && &&&6,2,3,& && &5,2,1,& && &3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,
& && && && && && && && && && && && &&&6,2,4,& && &3,2,2,& && &5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,
& && && && && && && && && && && && &&&6,1,1,& && &5,2,1,& && &3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,
& && && && && && && && && && && && &&&5,2,1,& && &6,2,1,& && &3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,
& && && && && && && && && && && && &&&2,2,1,& && &1,2,1,& && &6,1,1, 1,2,1, 5,1,6, 0,0,0
& && && && && && && && && && && && &&&};
& && & // 音阶频率表 高八位
code unsigned char FREQH[]={
& && && && && && && && && && &&&0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
& && && && && && && && && && &&&0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
& && && && && && && && && && &&&0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
& && && && && && && && && && &&&0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
& && && && && && && && && && & } ;
& && && &// 音阶频率表 低八位
code unsigned char FREQL[]={
& && && && && && && && && && && &0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
& && && && && && && && && && && &0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
& && && && && && && && && && && &0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
& && && && && && && && && && && &0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
& && && && && && && && && && &&&};
void delay(unsigned char t)
& &unsigned char t1;
& &unsigned long t2;
& &for(t1=0;t1&t;t1++)
& & for(t2=0;t2&8000;t2++)
void t0int() interrupt 1
TH0=timer0h;
TL0=timer0l;
void song()
TH0=timer0h;
TL0=timer0l;
delay(time);& && && && && && && &&&
void main(void)
unsigned char k,i;
TMOD=1; //置CT0定时工作方式1
ET0=1;//IE=0x82 //CPU开中断,CT0开中断
& && & i=0;&&
& && & while(i&100){& && && &//音乐数组长度 ,唱完从头再来& && &&&
& && & k=sszymmh[i]+7*sszymmh[i+1]-1;
& && & timer0h=FREQH[k];
& && & timer0l=FREQL[k];
& && & time=sszymmh[i+2];
& && & i=i+3;
& && & song();
共享资料的积分奖励!
问一下楼主有电路图吗?
还有别的歌吗
#include &reg51.h& #define uchar unsigned char sbit speaker=P1^2;& &uchar timer0h,timer0l,& && && &//世上只有妈妈好数据表 uchar code sszymmh[]={& && &&&6,2,3,& && &5,2,1,& && &3,2,2, 5,2,2, 1,3,2, 6,2,1, 5,2,1,& && && && && && && && && && && && && &6,2,4,& && &3,2,2,& && &5,2,1, 6,2,1, 5,2,2, 3,2,2, 1,2,1,& && && && && && && && && && && && && &6,1,1,& && &5,2,1,& && &3,2,1, 2,2,4, 2,2,3, 3,2,1, 5,2,2,& && && && && && && && && && && && && &5,2,1,& && &6,2,1,& && &3,2,2, 2,2,2, 1,2,4, 5,2,3, 3,2,1,& && && && && && && && && && && && && &2,2,1,& && &1,2,1,& && &6,1,1, 1,2,1, 5,1,6, 0,0,0& && && && && && && && && && && && && & };& && &&&// 音阶频率表 高八位 uchar code FREQH[]={& && && && && && && && && && && &0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,& && && && && && && && && && && & 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i& && && && && && && && && && && &0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,& && && && && && && && && && && &0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,& && && && && && && && && && &&&} ;& && && & // 音阶频率表 低八位 uchar code&&FREQL[]={& && && && && && && && && && && & 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,& && && && && && && && && && && & 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i& && && && && && && && && && && & 0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,& && && && && && && && && && && &&&0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,& && && && && && && && && && && &}; /*延时函数*/ void delay(unsigned char t) {& & uchar t1;& & unsigned long t2;& & for(t1=0;t1&t;t1++)& & {& &&&for(t2=0;t2&8000;t2++)& && &&&{& && && &;& && && &}& & }& & TR0=0; }&&void t0int() interrupt 1 { TR0=0; speaker=! TH0=timer0h; TL0=timer0l; TR0=1; }&&void song() { TH0=timer0h; TL0=timer0l; TR0=1; delay(time);& && && && && && && && &}&&void main(void) {&&uchar k,i;&&TMOD=0x01; //置CT0定时工作方式1&&EA=1;&&ET0=1;//IE=0x82 //CPU开中断,CT0开中断& &while(1)&&{& & i=0;& && &while(i&100)& & {& && && &//音乐数组长度 ,唱完从头再来& && && && &&&k=sszymmh[i]+7*sszymmh[i+1]-1;& && &timer0h=FREQH[k];& && &timer0l=FREQL[k];& && &time=sszymmh[i+2];& && &i=i+3;& && &song();& &&&}& &}&&}
哥们世上只有妈妈好数据表怎么弄根据什么得来的
Powered by单片机的有缘蜂鸣器,怎样改变频率使其奏乐_百度知道
单片机的有缘蜂鸣器,怎样改变频率使其奏乐
是依靠什么奏乐的...
是依靠什么奏乐的
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
lifufengg知道合伙人
采纳数:497
获赞数:2114
有源蜂鸣器接上直流电就鸣叫,鸣叫的频率是确定的(如3KHz),不能改变,单片机只可以控制它的断通,产生如长鸣、渐变音、间歇音等,但它的音调还是不变的;若要奏乐需要无源蜂鸣器,即用单片机控制它的频率和音长,产生不同的音调和节拍。
cxtldh知道合伙人
采纳数:139
获赞数:267
用无源蜂鸣器或用一个喇叭能奏乐,有源的不能奏乐.
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机蜂鸣器程序,音乐的随时跳转_百度知道
51单片机蜂鸣器程序,音乐的随时跳转
#include&reg52.h&unsignedcharCsbit_Speak=P1^5;unsignedcharcodeSONG[]={//祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,...
#include &reg52.h&unsigned char Csbit _Speak =P1^5 ; unsigned char code SONG[] ={ //祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00};void Time0_Init(){TMOD = 0x01;IE = 0x82;TH0 = 0xD8;TL0 = 0xEF; //12MZ晶振,10ms}void Time0_Int() interrupt 1{TH0 = 0xD8;TL0 = 0xEF;Count++; //长度加1}void Delay_xMs(unsigned int x){unsigned int i,j;for( i =0;i &i++ ){for( j =0;j&3;j++ );}}void Play_Song(unsigned char i){unsigned char Temp1,Temp2;unsigned int ACount = 0; //中断计数器清0Addr = i * 217;while(1){Temp1 = SONG[Addr++];if ( Temp1 == 0xFF ) //休止符{TR0 = 0;Delay_xMs(100);}else if ( Temp1 == 0x00 ) //歌曲结束符{}else{Temp2 = SONG[Addr++];TR0 = 1;while(1){_Speak = ~_SDelay_xMs(Temp1);if ( Temp2 == Count ){Count = 0;}}}}}void main(){Time0_Init(); //定时器0中断初始化while(1){Play_Song(0); //播放}} 这个程序加两个按键,按键1控制这个程序,按键2控制另一个,这个程序在哪修改可以做到在曲子没放完的时候按按键2就马上跳转到按键2的函数效果求帮忙!!
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
zhxiufan知道合伙人
IT类认证行家
知道合伙人
采纳数:14309
获赞数:19972
国家科技进步奖
这里修改:sbit&key1=P1^0;sbit&key2=P1^1;void&Play_Song(unsigned&char&i){unsigned&char&Temp1,Temp2;unsigned&int&ACount&=&0;&//中断计数器清0Addr&=&i&*&217;while(1){if(key2==0)&&&&&&&&&&&//插入这一句Temp1&=&SONG[Addr++];if&(&Temp1&==&0xFF&)&//休止符{TR0&=&0;Delay_xMs(100);}else&if&(&Temp1&==&0x00&)&//歌曲结束符{}else{Temp2&=&SONG[Addr++];TR0&=&1;while(1){_Speak&=&~_SDelay_xMs(Temp1);if&(&Temp2&==&Count&){Count&=&0;}}}}}PlaySong2(................{....whlie(1)&&&&{&&&&if(key1==0)&&&//插入这一句&&&&.....&&&&}}void&main(){Time0_Init();&//定时器0中断初始化while(1)&&&&{&&&&Play_Song(0);&//播放1&&&&Play_Song2(0);&//播放2&&&&}}
晴空下的战歌知道合伙人
来自娱乐休闲类芝麻团
晴空下的战歌
采纳数:253
获赞数:1350
参与团队:
用按键触发外部中断,中断程序中直接切换另一个程序即可
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。51单片机蜂鸣器使用_百度经验
&&&&&&手工艺51单片机蜂鸣器使用
百度经验:jingyan.baidu.com#include&reg52.h&sbit SPK=P1^2;//定义蜂鸣器端口void delay(unsigned int cnt)//延时{&while(--cnt);}main(){&while(1)& & & {& for(i=0;i&200;i++)//喇叭发声的时间循环,改变大小可以改变发声时间长短& & & & & {& & & & & delay(80);//参数决定发声的频率,估算值& & & & & SPK=!SPK;& & & & & }& & & &SPK=1; & & & &//喇叭停止工作,间歇的时间,可更改& & & &delay(20000);&}}经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(0)已投票(0)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验01007热门杂志第1期暑假和宝宝一起来折纸451次分享第1期可爱萌萌小盆栽598次分享第1期时尚DIY--各种手工花734次分享第5期花卉的养护和注意事项446次分享第4期废物巧利用789次分享◆请扫描分享到朋友圈

我要回帖

更多关于 单片机蜂鸣器程序c语言 的文章

 

随机推荐