基于8086的简易电子琴设计附汇编源程序.docx

上传人:b****2 文档编号:1053594 上传时间:2022-10-16 格式:DOCX 页数:24 大小:5.07MB
下载 相关 举报
基于8086的简易电子琴设计附汇编源程序.docx_第1页
第1页 / 共24页
基于8086的简易电子琴设计附汇编源程序.docx_第2页
第2页 / 共24页
基于8086的简易电子琴设计附汇编源程序.docx_第3页
第3页 / 共24页
基于8086的简易电子琴设计附汇编源程序.docx_第4页
第4页 / 共24页
基于8086的简易电子琴设计附汇编源程序.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

基于8086的简易电子琴设计附汇编源程序.docx

《基于8086的简易电子琴设计附汇编源程序.docx》由会员分享,可在线阅读,更多相关《基于8086的简易电子琴设计附汇编源程序.docx(24页珍藏版)》请在冰豆网上搜索。

基于8086的简易电子琴设计附汇编源程序.docx

基于8086的简易电子琴设计附汇编源程序

《微机原理与接口技术》

综合设计实验报告

设计课题:

基于8086得简易电子琴设计 

指导老师:

学生姓名:

学号:

院 系:

专  业:

通信工程       

ﻬ基于8086得简易电子琴设计

摘 要

在学习《微机原理与接口设计》得基础上,针对课程设计要求,综合运用相关软件、硬件知识,设计一个简易电子琴,使之具有音区切换、数码管显示音区及当前音符、记录音符与音符持续时间、播放录制得音乐等功能。

关键词:

8086;电子琴;仿真调试;汇编

ﻩ目 录

1、1系统整体架构图1

1、2功能介绍ﻩ1

第2章 硬件设计ﻩ2

2、1 硬件资源ﻩ2

2、2硬件接线图ﻩ3

2、2、18254接线图3

2、2、28255及键盘、数码管接线图ﻩ3

第3章软件设计ﻩ4

3、1程序框图ﻩ4

3、1、1 整体框图ﻩ4

3、1、2延时函数5

3、1、4数码管显示6

3、1、5 声音及时间录制6

3、1、6选择音区(高、中、低)7

3、1、7播放音乐ﻩ7

第4章 实验结果及演示8

第5章遇到得问题及改进措施10

5、2无法使用8254作为录音时间计数器10

附录ﻩ11

程序源码11

第1章总体方案设计

1、1 系统整体架构图

系统整体架构图如图1-1所示。

图1—1

1、2功能介绍

本实验设计实现了音区切换、数码管显示当前音区及音符、记录音符与音符持续时间、播放录制得音乐等功能。

功能具体说明如下。

按键0—6为音符键,按下后会有对应得音符音调响起,按键弹起后音符终止,此时,按下得音符以及时间将被记录。

按键12,13,14可以选择低音,中音,高音区。

按下按键15后开始播放录制得音符(不超过16个).另外数码管0显示音符,数码管2显示音区。

第2章 硬件设计

2、1 硬件资源

TD-PITE 实验教学系统,其主要系统构成如表2-1 所示。

CPU

Intel386EX

存储器

系统程序存储器:

FlashROM(128KB)

数据存储器:

SRAM (128KB)

信号源

单次脉冲:

消抖动脉冲2 组

逻辑电平开关与显示

16 组电平开关,16组电平显示LED灯(正逻辑)

8259、8237、8254、8255、8251、DAC0832、ADC0809、SRAM 、键盘扫描及数

接口实验单元

码管显示、电子发声、点阵LED、液晶LCD(可选)、步进电机(可选)、直流电

机、温度控制

实验扩展单元

2组40线通用集成电路扩展单元、扩展模块总线单元

系统电源

+5V/2A,±12V/0.2A

表 2-1  TD—PITE系统构成

系统硬件结构如图2—1 所示。

图2-1

2、2硬件接线图

2、2、1 8254接线图

8254芯片接线如图2-2所示。

图2-2

2、2、28255及键盘、数码管接线图

8255及键盘、数码管接线方法如图2-3所示。

图2-3

第3章 软件设计

3、1程序框图

3、1、1整体框图

图3-1

3、1、2 延时函数

图3-2

3、1、3键盘扫描

图3—3

3、1、4数码管显示

图3—4

3、1、5声音及时间录制

图3-5

3、1、6选择音区(高、中、低)

图3—6

3、1、7播放音乐

图3-7

第4章实验结果及演示

具体演示效果可扫描以下二维码进行观瞧,二维码如图4-1所示。

图4-1

以下为视频截图。

系统初始运行状体如图4-2所示。

图4—2

选择中音区,如图4-3所示。

图4-3

按下音符健,如图4-4所示.

图4-4

音乐播放,如图4-5所示。

图4-5

第5章遇到得问题及改进措施

5、1条件转移指令报错

在编写程序时曾多次遇到使用条件转移指令时编译出错得情况。

查阅书本后发现条件转移指令只能在代码段得-128~+127字节内进行跳转.

解决办法:

使用条件转移指令转移到一个较近程序段,并在这程序段使用无条件转移指令JMP进行转移。

5、2无法使用8254作为录音时间计数器

在进行设计得过程中,曾多次按照使用8254作为时间计数器得方案进行编程,但经过多次尝试后均以失败告终。

解决办法:

使用软件延时进行计时,每次延时执行完毕后进行计数,该计数值就就是音符得相对持续时间。

在播放时只需要调用同样时间长度得延时函数即可。

缺点:

使用软件延时与计数,占用了CPU计算资源,导致数码管扫描频率降低,亮度变暗。

同时对于录音时间得记录不精确,存在一定得误差。

ﻬ附录

程序源码

;=======================================================

;文件名:

Hypo、asm

;功能描述:

按键0-6为音符键,按下后会有对应得音调响起,

;按键弹起后音符终止。

;     按键12,13,14可以选择低音,中音,高音区。

; 按下按键15后开始播放之前按下得音符(不超过16个)

;   数码管0显示音符,数码管2显示音区

;=======================================================

IOY3ﻩEQU 06C0H

MY8254_COUNT0EQUIOY3+00H;8254计数器0端口地址

MY8254_COUNT1ﻩEQUIOY3+02H;8254计数器1端口地址

MY8254_COUNT2ﻩEQU IOY3+04H  ;8254计数器2端口地址

MY8254_MODEﻩﻩEQUIOY3+06H  ;8254控制寄存器端口地址

MY8255_A EQU 0600H   ;8255A端口地址

MY8255_B EQU0602Hﻩ;8255B端口地址

MY8255_CEQU 0604H;8255C端口地址

MY8255_CONﻩEQU0606H   ;8255控制端口地址

SSTACKﻩSEGMENTSTACK   ;定义堆栈段

ﻩDW256DUP(?

SSTACKﻩENDSﻩ

DATAﻩSEGMENT

DTABLEﻩDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;数码管得段选数据

DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H

FREQ_LIST1DW 248,278,312,330,371,416,467  ;低音频率表

FREQ_LIST2DW 495,556,624,661,742,833,935 ;中音频率表

FREQ_LIST3 DW990,1112,1248,1322,1484,1665,1869 ;高音频率表

REC_DATADW 000,000,000,000,000,000,000,000;录音储存段

DW000,000,000,000,000,000,000,000

SB DB 00H,00H      ;过渡段

REC_TIME  DB 00H,00H,00H,00H,00H,00H,00H,00H  ;时间储存段

ﻩﻩ DB00H,00H,00H,00H,00H,00H,00H,00H

SAVE_SI DW ?

 ;录音储存地址储存

SI_FREQ  DW ?

  ;频率表地址储存

SAVE_SI_TIME DW ?

;时间储存表地址储存

SAVE_TIMEDB01H ;时间技术储存

CHOOSE_FLAGDW01H;频率表选择标志位

DATA ENDS

CODESEGMENT

 ﻩASSUMECS:

CODE,DS:

DATA  ;初始化数据段、代码段

START:

MOV AX,DATA

ﻩMOVDS,AX

ﻩMOVDX,MY8254_MODE    ;初始化8254工作方式

ﻩMOVAL,36H ;定时器0、方式3

ﻩOUT DX,AL

ﻩMOV SI,OFFSET REC_DATA ;装入录音表初始地址

ﻩﻩMOV SAVE_SI,SI

ﻩﻩMOVCL,0EH

CLEAN_REC:

   ;录音表清零

ﻩMOV AX,0000H

ﻩMOV[SI],AX

ADDSI,2

ﻩLOOPCLEAN_REC

ﻩMOVSI,OFFSETREC_TIME ;装入时间表起始地址

ﻩMOVSAVE_SI_TIME,SI

ﻩﻩMOVSI,OFFSET FREQ_LIST1 ;装入频率表默认起始地址

MOV SI_FREQ,SIﻩ

ﻩMOVSI,3000H

MOVAL,00H

ﻩﻩMOV[SI],ALﻩﻩ;清显示缓冲

ﻩMOV[SI+1],AL

ﻩﻩMOV[SI+2],AL

ﻩMOV [SI+3],AL

ﻩMOV [SI+4],AL

ﻩﻩMOV[SI+5],AL

ﻩMOVDI,3005H

    MOVDX,MY8255_CONﻩ;写8255控制字

MOVAL,81H

ﻩOUTDX,AL

BEGIN:

 CALL DISﻩ;调用显示子程序

ﻩCALLDIS_FREQ   ;调用音区显示子程序

CALLCLEARﻩﻩ;清屏

ﻩﻩCALLCCSCANﻩﻩﻩ;键盘扫描

ﻩJNZINK1

ﻩﻩJMP BEGIN

INK1:

 CALL DIS

   CALLDALLY

   CALLDALLY

    CALL CLEAR

CALLCCSCAN

ﻩJNZINK2ﻩﻩﻩ;有键按下,转到INK2

JMPBEGIN

;===============蜂鸣器关闭子程序==================

SILENT:

MOV DX,MY8254_MODE;初始化8254工作方式

MOV AL,36H      ;定时器0、方式3

ﻩOUT DX,AL

ﻩRET

;===============远程跳转过渡=================ﻩ

PLAY2_JUMP:

   JMPPLAY2

CHOOSE_JUMP1:

JMPCHOOSE1

CHOOSE_JUMP2:

JMPCHOOSE2

CHOOSE_JUMP3:

JMPCHOOSE3

;========================================

;确定按下键得位置

;========================================

INK2:

MOVCH,0FEH

ﻩMOVCL,00H

COLUM:

MOVAL,CH

 MOVDX,MY8255_A 

ﻩOUTDX,AL

MOVDX,MY8255_C

ﻩﻩINAL,DX

L1:

TESTAL,01H    ;isL1?

    JNZL2    ;如果不就是得话跳转到L2

  MOVAL,00H  ;L1

JMPKCODE

L2:

 TESTAL,02H   ;isL2?

 JNZL3

 MOVAL,04H  ;L2

 

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1