微机原理音乐播放程序设计Word格式.docx
- 文档编号:16697660
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:19
- 大小:2.32MB
微机原理音乐播放程序设计Word格式.docx
《微机原理音乐播放程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《微机原理音乐播放程序设计Word格式.docx(19页珍藏版)》请在冰豆网上搜索。
13
日
学院
电子信息学院
指导教师
严华
学生
学号
学院(系)
专业
光电信息科学与工程
1、实验目的
通过编写程序控制8253和8255A芯片,实现一个简单的音乐播放程序。
2、实验原理
我们在这次课设选择了音乐程序设计,音乐程序设计可以实现至少两首歌的可选择播放。
对于歌曲的播放我们采用的是计数器/定时器8253芯片,而对于选择哪首歌播放则是利用可编程并行接口8255A芯片来实现的。
基于8253定时计数接口芯片的工作原理,本次课设实现了音乐演奏系统程序设计。
当运行程序时,扬声器便发出优美的音乐。
首先要解决发声并发出相应音符声音的问题,由8253计数器0在初始化时用来产生一定频率的方波来使扬声器发声,再根据不同音符对应的频率写入计数初值发出相应的音符声。
对8255芯片PA0和PA1口的置0和1来控制扬声器的开关。
其次实现唱歌功能即实现歌曲的节拍通过调用延时子程序控制音符发音的长短,实现连续发声把[SI]是否为0作为循环的条件在每一次扬声器发出一个相应音符之后做无条件转移,从而使扬声器连续发声。
3、实验容
A.实验环境搭建
B.编程
由于选取的乐曲音符音调幅度较大,故利用表格,算出其初值
计数初值=1193180(8253输入频率)/音符频率
以下为程序代码
#include<
dos.h>
stdio.h>
#defineINIT_T20xb6
#definePORT_T20x42
#defineCTRL_T0x43
#definePORT_PB0x61
#defineDDO4554
#defineDRUI4058
#defineDMI3616
#defineDFA3419
#defineDSO3044
#defineDLA2712
#defineDXI2415
#defineDO2281
#defineRUI2033
#defineMI1811
#defineFA1709
#defineSO1522
#defineLA1356
#defineXI1208
#defineGDO1140
#defineGRUI1015
#defineGMI905
#defineGFA854
#defineGSO761
#defineGLA678
#defineGXI604
voidsing(unsignedintfrq,unsignedintms)
{
unsignedcharvalue;
union
{
unsignedintdivisor;
unsignedchard[2];
}tone;
if(frq!
=0)
tone.divisor=frq;
outportb(CTRL_T,INIT_T2);
outportb(PORT_T2,tone.d[0]);
outportb(PORT_T2,tone.d[1]);
value=inportb(PORT_PB);
outportb(PORT_PB,(value|0x03));
}
delay(ms);
outportb(PORT_PB,(value|0xfc));
}
voidmain()
{
sing(DSO,400);
sing(DLA,400);
sing(DO,400);
sing(RUI,400);
sing(MI,600);
sing(RUI,200);
sing(DLA,1600);
sing(0,1600);
sing(MI,400);
sing(SO,800);
sing(RUI,2000);
sing(0,2000);
sing(RUI,800);
sing(DO,1600);
sing(DLA,2000);
sing(FA,800);
sing(FA,400);
sing(SO,400);
sing(LA,2000);
sing(LA,400);
sing(GDO,400);
sing(SO,2000);
sing(0,800);
sing(GRUI,400);
sing(GMI,2800);
sing(GRUI,3200);
sing(GMI,600);
sing(GRUI,200);
sing(LA,3200);
sing(GSO,600);
sing(GRUI,3600);
sing(0,400);
sing(GMI,400);
sing(GDO,3200);
sing(LA,3600);
sing(GFA,400);
sing(GRUI,1600);
sing(GLA,400);
sing(GSO,400);
sing(GRUI,2000);
sing(GDO,1600);
运行结果如下
4、实验中遇到的问题
一开始程序中的#defineDDO4554语句为#define1DO4554,程序运行时显示编译出错,我意识到1DO有可能不符合宏名定义要求,通过查阅有关资料后发现,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线,随后修改了程序。
5、总结体会
通过本实验的学习,我对8253和8255A芯片有了进一步的认识和理解,并能编写程序控制这两种芯片,实现简单的音乐播放程序。
在这次实验中,发现了拥有扎实基础功的重要性,以及在实验过程中发现了自己的不足之处,深刻理解了实践与理论相结合的重要性。
附件(乐曲简谱)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 音乐 播放 程序设计