单片机音乐播放程序2010

单片机音乐播放程序2010

ID:44814584

大小:60.51 KB

页数:11页

时间:2019-10-29

单片机音乐播放程序2010_第1页
单片机音乐播放程序2010_第2页
单片机音乐播放程序2010_第3页
单片机音乐播放程序2010_第4页
单片机音乐播放程序2010_第5页
资源描述:

《单片机音乐播放程序2010》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编号:13河北工业大学计算机硬件技术基础(MCS-51)2008年秋季综合性、开放性实验报告学院土木工程学院班级道桥082姓名刘大维尹少奇学号801444081456成绩___一、题目:音乐播放程序二、问题的提出通过平时生活对mp3的了解,利用单片机的蜂鸣器等对mp3的唱歌播放,循环和选择的功能进行模拟。三、总体设计1、分析问题的功能⑴通过设定SW键实现歌曲的选择,通过KEY键实现中断,其中KEY键为模拟mp3的总开关。KEY键触发后,再利用3个SW开关的不同组合值即“100”“010”“001”来实现歌曲的选择,在不改变其值

2、时实现歌曲的单曲循环。⑵通过LED1-3灯的亮灭来显示某首歌是否处于被选中状态。⑶通过LED8的亮灭及闪亮程度表现所选歌曲的节拍。2、系统总体结构设计1)硬件设计:根据问题确定使用8051单片机的P1和P3口、蜂鸣器,八个LED灯显示以及一个外部中断等。2)软件设计:我们的软件设计中包含了中断控制模块,软件计时模块,唱歌模块,判断选择模块。四、详细设计:1、硬件详细设计:1)画出电路图如下:第11页/共11页编号:13P1.0P3.0P1.1P3.1P1.2/INT0P1.3P1.4P1.5P1.6P1.7KEY1排线8个LE

3、D灯SW1SW2SW3蜂鸣器2)进行硬件资源分配(包括I/O口地址、所用各存储单元的用途)。ORG8000H硬件入口地址ORG8003H中断主程序入口ORG800BH定时器T0中断入口ORG8100H主程序起始地址蜂鸣器连线:用单导线将P1.7与蜂鸣器相连指示灯控制连线:使用排线将A2区的J61接口与D1区的J52接口相连外部中断连线:使用导线将A2区的/INT0与D1区J53的KEY3口连接开关连线:用导线将SW1-SW3与A2区的P1.0-P1.2顺序连接2、软件详细设计:首先中断控制模块,这一部分是用于和外部中断/INT

4、0联系实现K1键的总开关的功能。其次,设计中还包含了软件计时模块,此模块是为了实现对每个音符的节拍控制。设计中还包括最主要的唱歌模块,实现唱歌及单曲循环功能。设计中同时包含判断选择模块,实现不同歌曲的自由选择切换功能。3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。1)在编制歌曲方面,我们从对歌曲的音调及节拍的了解入手,利用了老师所提供的资源了解到每个音调的频率,由此计算得出每个音符所对应的十六进制数值,所用公式65536-1000000/(2*f)其中f即为所需要的音调的频率值。第11页/共11页编

5、号:132)实现查表唱歌的过程,我们参考了从图书馆借来的书籍然后编制出自己的查表唱歌程序。3)实现三首歌曲的自由切换,这是我们在做开放性试验时遇到的最大的困难,最后利用转移指令和二级跳转实现了此功能。五、程序清单SPKEQUP1.7;定义蜂鸣器地址ORG8000H;主程序起始地址LJMPMAIN;跳转至主程序ORG8003H;中断主程序入口LJMPINT0SV;跳转至中断服务程序ORG800BH;定时器T0中断入口LJMPEXT0;跳转至T0中断子程序ORG8100H;主程序起始地址MAIN:MOVSP,#60H;设置堆栈初值

6、SETBEA;CPU开中断SETBIT0;令/INT0为边沿触发SETBEX0;开/INT0中断SETBPX0;设置中断优先级CLRTR0;关闭定时器T0,此时不发音SJMP$K1:CLRTR0;关闭定时器T0,此时不发音MOVA,R3;将R3值给A累加器CJNEA,#1H,H1;若A与01不等则转移至H1,若相等则顺序执行LJMPA1;调用A1H1:CJNEA,#02H,H2;若A与02不等则转移至H2,若相等则顺序执行LJMPA2;调用A2H2:CJNEA,#04H,K1;若A与04不等则转移至K1,若相等则顺序执行LJM

7、PA3;调用A3A1:MOVTMOD,#00000001B;设置T0方式1第11页/共11页编号:13MOVIE,#10000010B;允许T0中断MOVDPTR,#TABLE1;存表首地址LOOP1:CLRA;清零MOVCA,@A+DPTR;查表MOVR1,A;定时器高八位存入R1INCDPTR;指针加一CLRA;清零MOVCA,@A+DPTR;查表MOVR0,A;定时器低八位存入R0ORLA,R1;进行或运算JZNEXT0;全零为休止符MOVA,R0;ANLA,R1;进行与运算CJNEA,#0FFH,NEXT;全一表示乐曲

8、结束LJMPA1;从头开始循环演奏NEXT:MOVTH0,R1;装入高位定时器MOVTL0,R0;装入低位定时器SETBTR0;启动定时器T0lJMPNEXT1;跳转到NEXT1处NEXT0:CLRTR0;关闭定时器,停止发声NEXT1:CLRA;清零INCDPTR;指针加一

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

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

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