键盘电子琴课程设计报告.docx

上传人:b****2 文档编号:1634153 上传时间:2023-05-01 格式:DOCX 页数:25 大小:623.13KB
下载 相关 举报
键盘电子琴课程设计报告.docx_第1页
第1页 / 共25页
键盘电子琴课程设计报告.docx_第2页
第2页 / 共25页
键盘电子琴课程设计报告.docx_第3页
第3页 / 共25页
键盘电子琴课程设计报告.docx_第4页
第4页 / 共25页
键盘电子琴课程设计报告.docx_第5页
第5页 / 共25页
键盘电子琴课程设计报告.docx_第6页
第6页 / 共25页
键盘电子琴课程设计报告.docx_第7页
第7页 / 共25页
键盘电子琴课程设计报告.docx_第8页
第8页 / 共25页
键盘电子琴课程设计报告.docx_第9页
第9页 / 共25页
键盘电子琴课程设计报告.docx_第10页
第10页 / 共25页
键盘电子琴课程设计报告.docx_第11页
第11页 / 共25页
键盘电子琴课程设计报告.docx_第12页
第12页 / 共25页
键盘电子琴课程设计报告.docx_第13页
第13页 / 共25页
键盘电子琴课程设计报告.docx_第14页
第14页 / 共25页
键盘电子琴课程设计报告.docx_第15页
第15页 / 共25页
键盘电子琴课程设计报告.docx_第16页
第16页 / 共25页
键盘电子琴课程设计报告.docx_第17页
第17页 / 共25页
键盘电子琴课程设计报告.docx_第18页
第18页 / 共25页
键盘电子琴课程设计报告.docx_第19页
第19页 / 共25页
键盘电子琴课程设计报告.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

键盘电子琴课程设计报告.docx

《键盘电子琴课程设计报告.docx》由会员分享,可在线阅读,更多相关《键盘电子琴课程设计报告.docx(25页珍藏版)》请在冰点文库上搜索。

键盘电子琴课程设计报告.docx

键盘电子琴课程设计报告

 

微机原理与接口技术课程设计报告

键盘电子琴课程设计

 

学院信息电子技术

专业通信工程

班级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                  ;返回到调用处 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2