基于51单片机音乐盒程序设计.doc

基于51单片机音乐盒程序设计.doc

ID:61034838

大小:5.00 MB

页数:12页

时间:2021-01-20

基于51单片机音乐盒程序设计.doc_第1页
基于51单片机音乐盒程序设计.doc_第2页
基于51单片机音乐盒程序设计.doc_第3页
基于51单片机音乐盒程序设计.doc_第4页
基于51单片机音乐盒程序设计.doc_第5页
资源描述:

《基于51单片机音乐盒程序设计.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、基于51单片机音乐盒程序设计一、功能设计说明1、电路设计实物图矩阵键盘部分电路图2、运行流程图程序开始播放小苹果歌曲判断任意按键是否按下继续播放小苹果歌曲否是进入电子琴模式判断K16按键是否按下播放完成是否3、电子琴模式按键对应发音设计按键发音按键发音lK1l低1lK9l中2lK2l低2lK10l中3lK3l低3lK11l中4lK4l低4lK12l中5lK5l低5lK13l中6按键发音按键发音lK6l低6lK14l中7lK7l低7lK15l高1lK8l中1lK16l重新播放小苹果一、硬件电路说明1、程序下载电路音乐盒电路图ISP下载接口本设计

2、采用的单片机为AT89S52单片机,需使用ISP下载器进行下载程序,程序下载电路图如图中ISP1接口.1、音乐发音电路IO口P10发出不同频率的脉冲,则BUZZER产生各种不同的声音,本设计采用12MHZ晶振,系统频率1MHZ,定时器计数一个1us,其对应关系如下表所示:音符频率(HZ)简谱码(T值)音符频率(HZ)简谱码(T值)低1DO26263628#4FA#74064860#1DO#27763731中5SO78464898低2RE29463853#5SO#83164934#2RE#31163928中6LA88064968低3M33064

3、021#693264994低4FA34964103中7SI98865030#4FA#37064185高1DO104665058低5SO39264260#1DO#110965085#5SO#41564331高2RE117565110低6LA44064400#2RE#124565134#646664463高3M131865157低7SI49464524高4FA139765178中1DO52364580#4FA#148065198#1DO#55464633高5SO156865217中2RE58764684#5SO#166165235#2RE#622

4、64732高6LA176065252中3M65964777#6186565268中4FA69864820高7SI196765282计算方法:例如产生262HZ频率(发音DO),周期T=1/262=3816us,由于定时器中断使IO不停取反,故周期T=3816/2=1908us定时器初值N=65536-1908=63628TH0=63628/256TL0=65536%256一、程序代码说明1 、脉冲产生采用定时器0溢出中断产生脉冲,定时器初始化如下:TMOD=0x01;//定时器0工作方式1,即十六位计数器计数TR0=1;//启动定时器ET0=

5、1;//定时器0溢出中断使能EA=1;//总中断使能定时器0溢出中断产生脉冲,voidTimer0()interrupt1代码如下:TH0=th0;TL0=tl0;if(th0==0)BUZZER=1;//判断停顿,有停顿不发音else{BUZZER=~BUZZER;}//无停顿发音2、音普规则:a、音普由一个字节十六进制数组成b、高4位代表节拍,一拍约400MS,将一拍分成8份c、低4位代表音符,一一对应Note[]列表d、0x20代表歌曲结束符e、uintcodeNote[]={0,64580,64684,64777,64820,6489

6、8,64968,65030,/*中音*/63628,63853,64021,64103,64260,64400,64524,/*低音*/65058,65110,65157,65178,65217,65252,65282/*高音*/};该列表为发音所对应的定时器初装值例如编写如下一段音乐列表:0x83,0x81,0x82,0x8d,0x43,0x42,0x41,0x42,0x8d,0x8d,0x400x40表示停顿4*50MS/*你是我的小呀小苹果*/1、音普列表解读while(Xiaopingguo[temp]!=0x20)//不停判断音乐是

7、否结尾,结尾跳出{jiepai=Xiaopingguo[temp]>>4;//获取节拍,即高4位数yinpu=Xiaopingguo[temp]&0x0F;//获取音普,即低4位数Timer_Set(yinpu);//根据列表对应发音Delay(jiepai*50);//节拍temp++;P0=0x0f;if(P0!=0x0f)gotoout;}voidTimer_Set(ucharnum)为定时器0赋值子程序,包含的代码如下:th0=Note[num]/256;tl0=Note[num]%256;一、程序代码编写/*************

8、*********************************************************************************项

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。