键盘电子琴课程设计报告.docx
- 文档编号:12280094
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:25
- 大小:623.13KB
键盘电子琴课程设计报告.docx
《键盘电子琴课程设计报告.docx》由会员分享,可在线阅读,更多相关《键盘电子琴课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
键盘电子琴课程设计报告
微机原理与接口技术课程设计报告
键盘电子琴课程设计
学院信息电子技术
专业通信工程
班级14级2班
学籍号14109740811
姓名李明坤
指导教师刘文科
信息电子技术学院通信工程系
2016年6月10日
目录
一、设计目的及要求……………………………………
二、设计思想及原理……………………………………
三、设计的具体实现……………………………
1.系统概述……………………………………
2.硬件设计……………………………………
3.结构说明……………………………………
4.运行结果……………………………………
四、软件设计…………………………………
五、系统操作说明……………………………
六、结束语…………………………………………
七、附录(具体程序设计)……………………………………
一、课程设计目的与要求
1.目的和意义
本课程的课程设计是电子信息工程专业学生学习完《微机原理及应用》课程后,进行的一次以汇编语言为主,硬件设计为辅的综合训练。
本课程设计的目的在于加深对微机原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基本方法
2.设计要求
1.从课程设计的目的出发,通过设计工作的各个环节,编写一实现电子琴的程序,并实现若干扩展功能,达到以下要求:
1)基本功能:
用键盘输入对应的八个音阶,通过蜂鸣器发出声音,并通过七段数码管显示输入音阶。
2)扩展功能:
1、在程序中可预设多首曲目,运行后可以进入预设子菜单,对要播放的曲目进行选择,并实现播放该曲目。
2、程序运行时有友好的用户介面。
3、掌握汇编语言程序设计的基本方法。
4、理解各种接口电路的应用。
例如8255可编程并行接口,8253定时等。
2.掌握利用PC机扬声器发出不同频率声音的方法。
3.开发环境及设备
①设计环境
PC机一台、windowsXP系统、实验箱、导线若干。
②设计所用设备
8253定时器:
用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2。
8255并口:
用做接口芯片。
二、设计思想与原理
1.系统方案综述
从系统实现的功能上来看,简易电子琴的课程设计主要分为手动弹奏乐曲和自动播放音乐两大部分组成。
手动弹奏乐曲是根据PC机硬件键盘设置功能键并通过不同频率使其发出不同的声音就,即音阶,自动播放音乐则是通过中断的方法来实现。
从系统硬件结构上来看,我们主要使用到PC机、8086单片机、8253定时器芯片、8255可编程并行接口芯片、蜂鸣器等等。
将这些硬件电路有机地结合起来使之满足电子琴的实现硬件需要。
从系统软件设计角度来看,将电子琴的课程设计采用程序模块化设计方法,将程序分为主程序、键盘扫描程序模块、中断发音程序模块等等。
此外,采用程序设计思想,将中断定时方式与外部按键查询方式相结合,实现手动弹奏乐曲和自动播放音乐两部分的切换和启动。
从音乐产生原理方面来看,通过控制8253芯片定时器的定时时间产生不同频率的音频脉冲,从而驱动蜂鸣器发出不同音乐的声音。
用软件延时来控制发音时间的长短,控制节拍。
把音乐的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中,由程序查表得到定时常数和延时常数,分别用来控制8253定时器芯片产生的脉冲频率和发出该音频脉冲的持续时间。
因此,我们可以综合上述的方案设计原理,从软件和硬件两大部分进行有计划有步骤的系统分析和设计。
2.系统设计思路
(1)手动弹奏乐曲和自动播放音乐用PC机键盘来实现。
手动弹奏乐曲中PC机键盘的8个键分别设置不同的音符,同时用一个键作为中断控制程序的控制键,通过其可实现手动弹奏乐曲与播放音乐之间的切换。
(2)软件的设计主要包括PC机键盘扫描、音乐播放程序和手动弹奏程序。
此次程序设计主要分为两大块:
手动弹奏乐曲程序和自动播放程序。
两者之间用功能转换程序对其进行结合,并实现各功能的控制。
三、设计的具体实现
1.8253的基本用法
8253内部有三2个独立的16位减计数器(0#,1#,2#),每个均可单独设置工作方式。
每个计数器可用6种模式工作,在初始化时首先写控制字,选择工作方式,然后要正确地写入计数初值。
最常用的0、1、2、3四种方式。
8255A的基本用法
8255作为并行接口芯片,有3种工作方式:
方式0,方式1,方式2,方式0相当于可作无条件输入/输出方式,方式1和方式2将PC口的一些线作为状态线使用,相当于工作在查询方式或中断方式。
8255的PC口具有位控制功能,可以用指令将某条线单独置1或清0,利用此功能也可串行接收或发送数据。
注意:
8255有2条单元选的地址线,有4个端口地址,要能正确地完成与CPU的地址线、数据线、控制线的连接。
2.硬件设计
1.硬件电路的模块构成
硬件电路的设计及实现相对简单。
硬件电路PC机、8086单片机、定时器芯片8253、可编程并行接口芯片8255A、扬声器模块组成
2.具体说明
采用可编程并行接口芯片8255A的PA端口接8086的8个数据输出端口,利用8255A方式0,端口A输入方式,即AL=10010000B,利用中断调用DOS功能来调用并扫描PC机键盘。
利用可编程并行接口芯片8255A的PC端口连接七段共阴极数码管,来显示键入的不同音阶。
驱动控制扬声器利用8253与8255A共同执行。
利用8255A的PB0、PB1控制扬声器的开启、关闭。
利用定时器8253驱动发声,CPU通过对8253通道2(端口地址42H)进行编程,利用8253方式3以不同的脉冲频率产生不同的输出方波,方波信号通过滤波器、功率放大器使扬声器发声。
3.结构及功能说明
(1)单片机选用
8086单片机为Intel公司推出的16为微处理器,以后Intel公司生产的微处理器,均与其相同。
8086有16根数据线和20根地址线。
其可寻的的地址空间达2^20即1M字节单元。
其对外的数据线只有8根。
其接线相对简化。
本次课程设计采用8086单片机。
8086单片机的实际接口图如下图所示:
图.8086单片机的实际接口图
(2)扬声器模块的设计
电磁式蜂鸣器由振荡器、电磁线圈、磁铁振动膜片及外壳等组成。
接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。
振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。
本系统设计的蜂鸣器与8255的PB1端口和8253的OUT2输出端口连接,当8255的PBO、PB1端口为11时蜂鸣器发出响声。
扬声器控制:
1)8253计数器2的输出控制扬声器的发声音调;2)8253计数器2只能工作在方式3,才能输出一定频率的方波,经滤波后得到近似的正弦波,进而推动扬声器发声;3)扬声器还受控于并行接口(8255A芯片);4)必须使8255APB0和PB1同时为高电平,扬声器才能发出预先设定频率的声音;关闭则是利用8255APB0和PB1同时为低电平,关闭与门,扬声器关闭。
(3)显示电路的设计
本设计所用显示电路七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
(4)8253以及8255A芯片介绍
1.8253介绍
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信号,以示定时或计数以到。
图-38253引脚图
表8253端口地址
信号线
寄存器
编址
输出端YO
0#计数器
FFE0H
1#计数器
FFE1H
2#计数器
FFE2H
控制寄存器
FFE3H
8253/8254内部有6个模块:
数据总线缓冲器,读/写逻辑,控制命令寄存器,计数器0,计数器1,计数器2。
数据总线缓冲器:
3态,双向8位寄存器和D0~D7相连。
读/写逻辑:
由CPU发来的读/写信号和地址信号来选择读出或写入寄存器。
控制命令寄存器:
接受CPU来控制字。
计数器:
8253有3个结构完全相同的计数器。
其内部由16为初值寄存器、减1计数器和当前计数值锁存器组成。
图3-18253内部结
2.8255A介绍
8255A是一个40引脚的双列直插式集成电路芯片.它具有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。
而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。
数据传送中A口所需的控制信号由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起称之为A组;同样理由把B口和C口低位部分(PC3~PC0)合在一起称之为B组。
1.8259A芯片的内部结构及引脚
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。
因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。
在MD微机系统中,8259芯片工作于单片方式。
8259引脚图如图3.3,各引脚功能如下。
D7~D0——八条双向数据线;
WR(低电平有效)——写输入信号;
RD(低电平有效)——读输入信号;
CS(低电平有效)——片选输入信号;
A0——地址信号;
INT——中断请求信号;
INTA(低电平有效)——中断响应信号;
CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;
SP/EN——从编程/允许级联。
在缓冲方式中,可用做输出信号以控制总线缓冲器的接收和发送。
在非缓冲方式中,作为输入信号用于表示主片还是从片;
IR0~IR7——外部中断请求输入线。
要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU响应时为止)或者是高电平。
4.运行结果
四、软件设计
1.主程序的流程图
这里用汇编语言对接口进行编程控制。
程序模块主要包括8255A、8253的初始化、开关量的输入、扬声器的开启、关闭及程序的退出。
在使8253的初值计数与频率相对应有两种方法,一是利用表的操作,但这种操作不太容易实现,硬件的连接也比较麻烦,易出错;所以我采用的是比较跳转的方式, 比较简单明了,容易理解。
程序中的模块关系见程序流程图。
五、系统操作说明
1.连接8253定时/计数器实验电路
运行并使其能定时/计数器功能,并产生方波
2.连接8255A并行口实验电路
运行并使其成功
3.写程序代码
4.装载程序
5.调试程序
6.调试成功,结束
六、结束语
本次课程设计是由本人和搭档共同完成,通过一星期微机接口的课程设计,我们对微机接口芯片有了更进一步的了解。
这次实验通过使用了8259A中断控制器、8253计数器、8255可编程并行接口实现了对实验板上的LED灯分别计时、分别控制。
由于这学期微机接口这门课学的并不是很好,所以在调试程序中出现了很多问题。
所以刚开始在做这个设计时,我们首先将以前做过的关于8259A中断控制器、8253计数器、8255可编程的实验重新做了一遍,对这些芯片有了更进一步的理解。
然后通过网上查阅了很多资料,总算了解了8259A中断控制器、8253计数器、8255可编程等芯片的操作方式,对整个课程设计也有了总体的轮廓,通过学过的知识以及做过的实验,最后有了圆满的结果。
通过本次课程设计我们学到了很多课堂没有涉及到的知识,极大地拓宽了我们的知识面,锻炼了能力,综合素质得到较大提高,我们感到收获不小。
也发现了大量问题,有些在设计过程中已经解决,有些还要待今后慢慢学习,只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。
同时,也学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。
希望综合运用微机原理、数字电路及微机接口技术的知识,获得一定的系统开发能力。
七.附录
源程序以及注释:
DATASEGMENT
INFO1 DB 0AH,0DH,'Welcome to our music program!
' INFO2 DB 0AH,0DH, '*********Please select!
*********$'
INFO4 DB 0AH,0DH, '*********Input error!
***********$'
INFO5 DB 0AH,0DH, '*******Please input again!
******$'
MUSLIST DB 0AH, 0DH, '======================' DB 0AH, 0DH, 'Press1 HuanLeSong' DB 0AH, 0DH, 'Press2 KaiXin'
DB 0AH, 0DH, 'Press3 XiaoBuWuQu' DB 0AH, 0DH, 'Press4 Wonderful' DB 0AH, 0DH, 'Press5 SCALE PLAY '
DB 0AH, 0DH, 'Press6 EXIT'
DB 0AH, 0DH, '=====================' DB 0AH, 0DH, '$'
MUS_FRQ1 DW 330,330,350,393,393,350,330,294 ;歌曲1频率
DW 262, 262, 294, 330, 330, 294, 294
DW 330, 330, 350, 393, 393, 350, 330, 294 DW 262, 262, 294, 330, 294, 262, 262
DW 294, 294, 330, 262, 294,330,350, 330,262 DW 294, 330, 350, 330, 262, 262, 294, 393 DW 330, 330, 350, 393, 393, 350, 330, 294 DW 262, 262, 294, 330, 294, 262, 262, -1
MUS_TIM1 DW 8 DUP(100) ;歌曲1节拍
DW 7 DUP(100),200 DW 8 DUP(100)
DW 7 DUP(100),200
DW 5 DUP(100),50,50,2 DUP(100) DW 100,50,50,4 DUP(100),200 DW 8 DUP(100)
DW 7 DUP(100),200
MUS_FRQ2 DW 330, 294, 262, 294, 3 DUP(330) DW 3 DUP(294), 330, 392, 392
DW 330, 294, 262, 294, 4 DUP(330) DW 294, 294, 330, 294, 262, -1
MUS_TIM2 DW 6 DUP(100),200 DW 2 DUP(100,100,200)
DW 8 DUP(100)
DW 4 DUP(100),400
MUS_FRQ3 DW 392, 262, 294, 330, 350, 392, 262, 262 DW 440, 350, 392, 440, 494, 524, 262, 262 DW 350, 392, 350, 330, 294, 330 DW 350,330,294,262,294,330,294,262,247, 262,-1
MUS_TIM3 DW 200, 4 DUP(100), 200, 200, 200 DW 200, 4 DUP(100), 200, 200, 200 DW 200, 4 DUP(100), 200
DW 4 DUP(100), 200, 4 DUP(100), 400
MUS_FRQ4 DW 330,392,330,294,330,392,330, 394, 330
DW 330,392,330,294,262,294, 330,392, 294 DW 262,262,220,196,196,220,262,294,330, 262,-1
MUS_TIM4 DW 3 DUP(200),100,100, 200,100,100, 400 DW 2 DUP(200,200,100,100), 400 DW 3 DUP(200,100,100), 400
TABLE DW 262,294,330,349,392,440,494,5258个音
NUMBDB0AH,0DH,'Keyboardnumber1~8keysplayNotesofthescale'
DB 0AH, 0DH, 'Enter or Ctrl+C to exit' DB 0AH, 0DH, '$'
DATA ENDS
STACK SEGMENT PARA STACK 'STACK' ;堆栈段
STA DB 200 DUP('STACK')
STACK ENDS
CODE SEGMENT ;代码段
ASSUME DS:
DATA,SS:
STACK,CS:
CODE,ES:
DATA
START:
MOV AX, DATA
MOV DS, AX ;数据段赋值
MOV ES, AX ;附加段赋值
MOV AX, STACK
MOV SS, AX ;堆栈段赋值
SHOW MACRO B ;宏
MOV DX, OFFSET B ;取B的偏移地址
MOV AH, 09H
INT 21H ;中断,显示字符串,以$结束
ENDM
SHOW INFO1 ;显示欢迎语
LOP:
SHOW MUSLIST ;显示菜单
MOV AH, 01H
INT 21H ;中断,输入回显,放于AL
CMP AL, 36H
JZ RETU ;输入是否是6,是6退出CMPAL,31H
JNZ B0 ;输入是1?
不是跳到B0
CALL MUSIC1 ;是1,调用MUSIC1程序
JMP EXIT1 ;转到重新选择
B0:
CMP AL, 32H JNZ C0 ;输入是2?
不是跳到C0
CALL MUSIC2 ;是2,用MUSIC2程序
JMP EXIT1 ;转到重新选择
C0:
CMP AL, 33H JNZ D0 ;输入是3?
不是跳到D0
CALL MUSIC3 ;是3,调用MUSIC3程序
JMP EXIT1 ;转到重新选择
D0:
CMP AL, 34H JNZ E0 ;输入是4?
不是跳到E0
CALL MUSIC4 ; 是4,调用MUSIC4程序
JMP EXIT1 ;转到重新选择
E0:
CMP AL, 35H JNZ EXIT ;输入是5?
不是则出错
SHOW NUMB ;显示8个按键菜单
CALL MUSIC5 ; 是5,调用MUSIC5程序
EXIT1:
SHOW INFO5 ;退到重新输入
JMP LOP
EXIT:
SHOW INFO4 ;显示错误,退到重新输入
SHOW INFO5
JMP LOP
RETU:
MOV AX, 4C00H
INT 21H ;中断,退出程序
MUSIC1 PROC ;
MUSIC1子程序过程
LEA SI, MUS_FRQ1 ;取MUSIC1频率地址
LEA BP,DS:
MUS_TIM1 ;取MUSIC1节拍地址 FREQ1:
MOV DI, [SI] ;频率地址给DI中
CMP DI,-1 JE
END_MUS1 ;频率是-1?
是就结束播放
MOV BX, DS:
[BP] ;BX就是每个节拍
CALL GENSOUND ;调用发声子程序
ADD SI,2
ADD BP,2 ;双字节操作,要加2
JMP FREQ1 ;继续播放
END_MUS1:
RET ;返回到调用处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 键盘 电子琴 课程设计 报告