微机原理课程设计电子琴设计.docx
《微机原理课程设计电子琴设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计电子琴设计.docx(8页珍藏版)》请在冰点文库上搜索。
![微机原理课程设计电子琴设计.docx](https://file1.bingdoc.com/fileroot1/2023-6/12/93264a92-0ce8-424a-8e73-565c36c2e54a/93264a92-0ce8-424a-8e73-565c36c2e54a1.gif)
微机原理课程设计电子琴设计
前言
本实验是利用微机原理试验箱、8255芯片、8254芯片、键盘、扬声器等硬件设备,设计简易电子琴。
首先利用了编程程序,编辑了8255芯片控制字,对其进行初始化,使其工作在方式0,即基本输入输出状态,将8255的A端口设置为输出,C端口进行,经CPU运算后,输出到8254芯片的A端口中,由此实现对其的初始化。
将8254芯片设置为工作在方式3,即输出对称方波状态。
A端口为输入,“OUT”指令可将输出对应一定频率的方波送到扬声器中,由此实现发声。
本实验通过频率大小控制发出声音的高低,通过对延时程序的调用控制发出声音的长短。
并通过所编程序实现对键盘的重复扫描,重而可以弹奏多个音符的试验目的。
关键字:
编程、工作方式、运算
一、设计题目:
简易电子琴设计
二、设计内容:
实验电路如图16-1,8253的CLK0接1MHZ时钟,GATE0接8255的PA1,OUT0和8255的PA0接到与门的两个输入端,K8跳线连接喇叭,编程使计算机的数字键1、2、3、4、5、6、7作为电子琴按键,按下即发出相应的音阶。
三、设计目的:
1、通过8253产生不同的频率信号,使PC机成为简易电子琴。
2、了解利用8255和8253产生音乐的基本方法。
3、通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。
为以后学生结合专业从事微机应用设计奠定基础。
四、设计要求:
1.可以弹出7个音阶。
2.弹奏简短音乐。
3.通过改变键盘输入来改变8254输出频率,实现扬声器发音
五、编程提示:
1、利用8255的PA0口来施加控制信号给与门,用来控制扬声器的开关状态。
再利用设置不同的计数值,使8253产生不同频率的波形,使扬声器产生不同频率的音调,达到类似与音阶的高低音变换。
对于音乐,每个音阶都有确定的频率。
各音阶标称频率值:
音阶12345671*
低频率(单位:
Hz)262294330347392440494524
高频率(单位:
Hz)5245886606987848809881048
六、设计原程序及注解
;*******************************;
;*电子琴实验*;
;*******************************;
datasegment
io8255aequ288h
io8255bequ28bh
io8253aequ280h
io8253bequ283h
tabledw524,588,660,698,784,880,988,1048;高音的
;tabledw262,294,330,347,392,440,494,524;低音的
msgdb'Press1,2,3,4,5,6,7,8,ESC:
',0dh,0ah,'$'
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,offsetmsg
movah,9
int21h;显示提示信息
sing:
movah,7
int21h;从键盘接收字符,不回显
cmpal,1bh
jefinish;若为ESC键,则转finish
cmpal,'1'
jlsing
cmpal,'8'
jgsing;若不在'1'-'8'之间转sing
subal,31h
shlal,1;转为查表偏移量
movbl,al;保存偏移到bx
movbh,0
movax,4240H;计数初值=1000000/频率,保存到AX
movdx,0FH
divwordptr[table+bx]
movbx,ax
movdx,io8253b;设置8253计时器0方式3,先读写低字节,再读写高字节
moval,00110110B
outdx,al
movdx,io8253a
movax,bx
outdx,al;写计数初值低字节
moval,ah
outdx,al;写计数初值高字节
movdx,io8255b;设置8255A口输出
moval,10000000B
outdx,al
movdx,io8255a
moval,03h
outdx,al;置PA1PA0=11(开扬声器)
calldelay;延时
moval,0h
outdx,al;置PA1PA0=00(关扬声器)
jmpsing
finish:
movax,4c00h
int21h
delayprocnear;延时子程序
pushcx
pushax
movax,15
x1:
movcx,0ffffh
x2:
deccx
jnzx2
decax
jnzx1
popax
popcx
ret
delayendp
codeends
endstart
七、程序流程图:
八、硬件连线图
九、实验结果
连接完线路后启动电路开关,然后运行程序,就会出现提示界面,然后键盘输入数字即可有相应音阶音乐从喇叭处播放。
十、实验中遇到了的问题及解决方法
在实验中遇到了很多问题其主要是代码的编译类错误,在通过网上查阅相关资料以及在老师同学帮助下这些困难都迎刃而解了。
才使程序完美运行。
总结
这是一次成功的实训,也是应值得远记住的一次实训,在这次实训中我充分感受到了集体的力量,在我组组员的共同努力下,我们的电子琴程序从无到有、功能从弱到强,一步步的走向成功,同时也感谢陈老师给我这样一次锻炼的机会,让我的人生经历有丰富了一些并且这段经历将成为我生活中一段宝贵的精神财富。
参考文献:
1、《8088/8086汇编语言程序设计》中央广播电视大学出版社
2、《微机原理与接口技术》北京航空航天大学出版社
3、《微型计算机原理与汇编语言》电子工业出版社
4、《微机原理与应用》大连理工大学出版社
5、《现代微机原理与接口技术》电子工业出版社