电子琴课程设计.docx
《电子琴课程设计.docx》由会员分享,可在线阅读,更多相关《电子琴课程设计.docx(18页珍藏版)》请在冰豆网上搜索。
电子琴课程设计
2设计思想...............................................1
3.元器件功能简介.........................................2
3.18086引脚说明
3.28255与8253结构
4.功能说明...............................................7
4.1开关控制
4.2扬声器控制
5.原理图设计.............................................8
6.流程图.................................................9
7.测试..................................................10
8.心得体会.............................................11
9.参考文献...............................................11
10.源程序..............................................12
1
1.任务及要求
设计一个电子琴。
以8086作为处理器,以8253控制扬声器,并以8255接8个开关K1~K8作为电子琴的按键输入,根据按键K2~K8改变脉冲频率和脉冲持续时间从而使扬声器发出7种不同的音调,并且按下按键发声,松开延时一段时间停止停止,中间再按别的开关则发另一种音调的声音,从而实现了一个模拟电子琴。
该电子琴能实现基本的音调发音,报告的最后对整个设计过程进行了总结.
2.设计思想
在本次课程设计中,根据复杂程序设计思想——模块化程序设计,分析和确定程序总体设计目标:
电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块(子程序,具体可见下)。
2.1、程序设计的思路按以下顺序进行:
2.1.1、分析与确定程序总体设计目标。
2.1.2、将总体目标划分为若干模块。
2.1.3、定义每个模块的具体任务,明确它与其他模块间的通信方式
编写源程序,进行调试,包括:
2.1.3.1、简单电子琴主程序
按下每个开关键可以发出不同的音调。
2.1.3.2、延时子程序
按下每个开关按键发声后,松开延时一段时间停止,中间再按别的键发出另一种音调的声音。
2.1.4、模块连接,形成完整的程序
3.元器件功能简介
3.1、8086引脚说明
﹡8086微处理器采用40条引线双列直插(DIP)封装。
﹡8086微处理器引线是对外前端总线及专用信号引线。
2
﹡8086微处理器引线,在逻辑上可分为3类:
地址总线信号、数据总线信号、控制总线信号。
还有一些专用信号:
电源、地、时钟。
﹡8086采用引线分时复用技术,一条引线不同时间代表不同信号,解决引线不够问题。
图1.18086cpu引脚图
3.28255与8253结构
1.8255是一个40引脚的双列直插式集成电路芯片.它具有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。
而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。
2.数据传送中A口所需的控制信号由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起称之为A组;同样理由把B口和C口低位部分(PC3~PC0)合在一起称之为B组。
3.8255引脚功能RESET:
复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
3
CS:
片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。
RD:
读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
A1、A0:
端口地址总线,8255中有端口A、B、C和一个内部控制字寄存器,共4个端口,由A0、A1输入地址信号来寻址。
4
图1.28255引脚图
图1.38255内部结构图
5
3)8253是24脚双列直插式芯片,+5V电源供电。
每个芯片内部有3个独立的计数器(计数通道),每个计数器都有自己的时钟输入CLK,计数输出OUT和门控信号GATE。
数据总线D0~D7:
为三态输出/输入线。
片选信号CS,读信号RD,写信号WR,他们为输入信号,低电平有效。
地址线A1、A0,接到系统总线A1、A0上。
计数器时钟信号CLK,作用是在8253进行定时或计数工作是,每输入1个时钟脉冲信号CLK,便使计数值减1。
计数器门控选通信号GATE,计数器输出信号OUT,作用是计数工作时,每来1个时钟脉冲,计数器减1,当计数器值减为0,就在输出线上输出一OUT信号,以示定时或计数以到。
图1.48253引脚图
4)8253/8254内部有6个模块:
数据总线缓冲器,读/写逻辑,控制命令寄存器,计数器0,计数器1,计数器26
数据总线缓冲器:
3态,双向8位寄存器和D0~D7相连。
读/写逻辑:
由CPU发来的读/写信号和地址信号来选择读出或写入寄存器。
控制命令寄存器:
接受CPU来控制字。
计数器:
8253有3个结构完全相同的计数器。
其内部由16为初值寄存器、减1计数器和当前计数值锁存器组成。
图1.58253内部结构图
7
3.374LS373结构及引脚图
8
4.功能说明
1)开关控制:
8255端口A工作在方式0,且为输入方式,端口B、C任意。
开关接在8255端口A的PA0~PA7,这样就可以通过8255读取开关量。
如下图:
9
2)扬声器控制:
(1)8253计数器2的输出控制扬声器的发声音调
(2)8253计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声(3)扬声器还受控于并行接口(8255A芯片)(4)必须使8255APB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音;关闭则是利用8255APB0和PB1同时为低电平,关闭与门,扬声器关闭。
10
5.原理图设计
采用并口8255A接8个开关K1—K8,利用8255A方式0,端口A输入方式,即AL=10010000B,可以将开关的量输入到CPU中,利用8个开关做电子琴的8个按键。
驱动控制扬声器利用8253与8255A共同执行(如图5.1)。
图5.1电路连接图
11
6.流程图
利用汇编语言对接口进行编程控制。
程序模块主要包括8255A、8253的初始化、开关量的输入、扬声器的开启、关闭及程序的退出。
我采用的是比较跳转的方式,比较简单明了,容易理解。
程序中的模块关系见程序流程图。
图6.1程序流程图
12
7.测试
接通电路之后,按下开关键,依次拨动各个开关来控制作为扬声器的8253发声,发出静音、Si、La、Sol、Fa、Mi、Re、Do音调。
表3.1音阶频率表
音阶
静音
Si
La
Sol
Fa
Mi
Re
Do
频率
0
493
440
392
349
329
293
241
计数值
0
2420
2712
3044
3419
3627
4072
4572
由于每个开关的音调发音时间有软件延时控制,所以当开关打开时,就会连续发出音节标称频率的声音。
整体进行硬件电路图和软件测试,把所需程序进行输入一切运行良好,可以完成模拟电子琴,通过开关键实现产生不同音节频率的功能
8.心得体会
经过几周的微机原理课程设计,虽然时间不是很长,但对我而言收获却很多,也体会到了电子设计行业工作的辛苦,经过老师细心的讲解和我们的不懈努力,最终我组能够把学到的知识运用到实际中去,这让我对本学科的学习产生了更加浓厚的兴趣,但一切都是值得的。
这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单,可是这次要实现的功能相对来说比较复杂,要求掌握的知识比较综合。
经过一周的实训,汇编语言的一些编程设计等操作可以较为熟练,微机原理课程所涉及到的领域和应用的范围也得到了更多的了解,总的来说,实训的一周是丰富而有成功的。
刚开始学习汇编语言是相当吃力的,许多内容在以前没有接触过,许多源代码不能理解,实训的头两天就是很简单的试着操作这些内容一点点的积累掌握,回去后不理解的地方赶紧询问其他同学以便在第二天上机时应用好,经过不懈的努力,终于将一个简单的电子琴程序设计完成。
汇编语言是一门较难的计算机内容,开始学习的时候较为困难,但是平时的课堂的学习和这一次的集中的上机实训,使我不但能够较好的了解并掌握了一些汇编语言的知识和技能,相信在以后的社会生活中也可以得到应用。
在最后的答辩前,我对几天来在对几个程序的编排和改进上所遇到的问题又进行了认真的总结,使我对整个程序都有了很深的了解,而且也可以熟练的操作和应用到程序中去,也顺利的通过了答辩。
13
这是一次成功的实训,也是应值得远记住的一次实训,在这次实训中我充分
感受到了集体的力量,在我组组员的共同努力下,我们的电子琴程序从无到有、功能从弱到强,一步步的走向成功,这段经历将成为我生活中一段宝贵的精神财富.
9.参考文献
1.周荷琴吴秀清.微型计算机原理与接口技术.2008.
2.戴梅萼,史嘉权.微型计算机技术与运用.清华大学出版社2003.
3.王爱英.计算机组成与结构.北京.清华大学出版社.1995.
4.沈美明,温冬蝉.IBM-PC汇编语言程序设计.北京.清华大学出版社.2003
14
10.源程序
A8255equ0F0h
B8255equ0F2h
C8255equ0F4h
M8255equ0F6h
PORT_0equ0E8h
PORT_1equ0EAh
PORT_2equ0ECh
PORT_CTRequ0EEh
INPUT:
MOVDX,M8255
MOVAL,10010000B
OUTDX,AL
MOVAL,30H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,A8255
INAL,DX
CMPAL,11111110B
JZK0
CMPAL,11111101B
JZK1
CMPAL,11111011B
JZK2
CMPAL,11110111B
JZK3
CMPAL,11101111B
JZK4
CMPAL,11011111B
JZK5
CMPAL,10111111B
JZK6
CMPAL,01111111B
JZK7
JMPINPUT
K0:
MOVAL,56H
MOVDX,PORT_CTR15
OUTDX,AL
MOVDX,PORT_1
MOVAX,0
JMPSING
K1:
MOVAL,56H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,PORT_1
MOVAX,2420
JMPSING
K2:
MOVAL,56H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,PORT_1
MOVAX,2712
JMPSING
K3:
MOVAL,56H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,PORT_1
MOVAX,3044
JMPSING
K4:
MOVAL,56H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,PORT_1
MOVAX,3419
JMPSING
K5:
MOVAL,56H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,PORT_1
MOVAX,3627
JMPSING
K6:
MOVAL,56H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,PORT_116
MOVAX,4072
JMPSING
K7:
MOVAL,56H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,PORT_1
MOVAX,4572
JMPSING
SING:
outdx,al
Moval,ah
outdx,al
MOVAL,30H
MOVDX,PORT_CTR
OUTDX,AL
MOVDX,B8255
INAL,DX
ORAL,3
OUTDX,AL
MOVCX,0FFFFH
DELAY:
LOOPDELAY
INAL,DX
ANDAL,0FCH
OUTDX,AL
JMPINPUT
17