简易电子琴的设计.docx

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

简易电子琴的设计.docx

《简易电子琴的设计.docx》由会员分享,可在线阅读,更多相关《简易电子琴的设计.docx(27页珍藏版)》请在冰点文库上搜索。

简易电子琴的设计.docx

简易电子琴的设计

题目:

简易电子琴的设计

初始条件:

1.运用所学的微机原理和接口技术知识;

2.微机原理和接口技术实验室的实验箱设备。

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):

1.弹奏:

用户每按一个键盘琴键就弹奏相应的音符;

2.演奏:

按下键盘上某一个指定的建后自动弹奏预存琴谱功能;

3.变调:

按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;

4.严格按照课程设计说明书要求撰写课程设计说明书。

 

摘要

随着电子技术的发展,电子琴很为常见,硬件的设计很费人力与物力,因此软件的应用得到了很好的应用,这个简易电子琴设计采用了软硬件结合的方法完成了任务要求。

应用了8255和8253的芯片,利用CPU,8086达到软硬件结合,从而实现电子琴的弹奏和演奏两种方式的应用。

可以随心所欲控制电子琴是弹奏还是自动演奏。

此电子琴程序实现了:

1.弹奏:

用户每按一个键盘琴键就弹奏相应的音符;

2.演奏:

按下键盘上某一个指定的建后自动弹奏预存琴谱功能。

k0为控制键:

高电平时自动演奏。

打到低电平时停止演奏。

低电平时可弹奏,K1,K2,K3,K4,K5,K6,K7分别为1,2,3,4,5,6,7

 

………………………………………………………………………………………………

前言

第一章电子琴的设计要求和使用器件

1.1初始条件

1.2电子琴要完成的主要任务

1.3电子琴课设的使用器件

1.4设计方案的确定

第二章电子琴的硬件设计

2.1电子琴的硬件框图

2.28255芯片的资料

2.38253芯片的资料

第三章电子琴的软件设计

3.1程序流程图

3.2发音程序

3.3延时程序

3.4停止发音程序

3.5整体的软件汇编程序

第四章电子琴的调试和设计体会

4.1硬件调试

4.2软件调试

4.3设计体会

第五章附录

5.1参考文献

5.2乐谱

5.3成绩评定表

前言

随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要的

作用。

多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。

本课程设计是基于微机原理与接口技术的简单应用。

微机技术目前运用最广泛的就是单片机。

单片机是随着大规模集成电路的出现极其发展,将计算机的CPU,RAM,ROM,定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机(singlechipmicrocomputer).它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果.单片机应用系统可以分为:

(1)最小应用系统是指能维持单片机运行的最简单配置的系统。

这种系统成本低廉,结构简单,常构成一些简单的控制系统,如开关状态的输入/输出控制等。

片内有ROM/EPROM的单片机,其最小应用系统即为配有晶振,复位电路,电源的单个单片机.片内无ROM/EPROM的单片机,其最小应用系统除了外部配置晶振,复位电路,电源外,还应外接EPROM或EEPROM作为程序存储器用.

(2)最小功耗应用系统是指为了保证正常运行,系统的功耗最小.(3)典型应用系统是指单片机要完成工业测控功能所必须的硬件结构系统。

 

第一章电子琴的设计要求和使用器件

1.1初始条件

1.运用所学的微机原理和接口技术知识;

2.微机原理和接口技术实验室的实验箱设备;

1.2电子琴要完成的主要任务

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

使用汇编语言设计一个能够用键盘运行的电子琴,(实现一个以上功能):

1.弹奏:

用户每按一个键盘琴键就弹奏相应的音符;

2.演奏:

按下键盘上某一个指定的建后自动弹奏预存琴谱功能;

3.变调:

按下键盘上某一指定键后,再弹奏和演奏时琴键相应的音符频率变高;按下另一指定键后,再弹奏和演奏时琴键相应的音符频率变低;

4.严格按照课程设计说明书要求撰写课程设计说明书。

1.3电子琴课设的使用器件

1.唐都实验箱TDN86/88

uln2803a,d8255ac-2,d8253ac-2,spk

2.电脑一台

3.wmd86软件

1.4设计方案的确定

1.用试验箱上的晶振输出一个高频的信号,接入8253,用软件给8253和8255进行初始化,8255接开关,由开关取数值,后判断发音的频率,并送此分频数给8253,从8253输出相应的音频后,接一个非门,再接入硬件扬声器,扬声器接受到不同频率的波后发出不同的声音。

2.用比较语句cmp和跳转指令来实现开关键和音调的一一对应。

3.用一个按键来控制是自动演奏还是手动弹奏。

为高电平时是自动演奏;

为低电平时是手动弹奏。

4.其中用一个延时程序,使得发一个音有一定的延时时间。

从而能使得可以被听见。

5.有个停止程序,使得晶振不能使得扬声器发生(在没有按键的情况下)。

6.用开关控制自动播放的开始和停止。

第二章电子琴的硬件设计

2.1电子琴的硬件框图和硬件连接图

图1硬件框图

 

图2电路连接图

 

8255与开关相连,从开关上获取开关的开启和关闭的信息(即开关的地址),从8255的B口输入,然后根据8086的程序,将不同的分频数与开关的每一个一一对应,通过程序从8086给8253赋个初值(即不同的分频数),晶振给8253一个固定的频率,在不同的分频数下得到不同的频率,将频率通过8253的2计数器送给一个非门,(加非门的原因:

因为8253的out2原始状态时一个高点平,若直接与扬声器相连,一经连接扬声器就会发音,接个非门后使得它的初始状态为低电平,就能消除困扰。

)非门出来接扬声器。

不同的频率使得扬声器发出不同音色的声音。

2.28255芯片的资料

1.8255的内部结构:

图三8255内部结构图

2.8255的管脚图:

图四8255管脚图

3.8255的方式选择控制字

(1)方式选择控制字把A、B、C三个端口分为A、B两组来设定工作方式。

A组包括端口A和端口C的上半部,B组包括端口B和端口C的下半部。

(2)端口A可工作于3种方式中的任何一种:

端口B只能工作于方式0和方式1;而端口C除用作输入、输出口(方式0)外,通常用来配合端口A和端口B提供联络控制信号和状态信号。

(3)归在同一组的两个端口可分别作为输入端口或输出端口,不要求同为输入或输出。

 

图五8255方式控制字

4.8255端口C按位置位/复位控制字

(1)端口C按位置位/复位控制字尽管是对端口C进行操作的,但此控制字必须写入控制口,而不写入端口C。

(2)一个控制字只能完成端口C中某一位置的置1或置0,要对多位置1或置0,必须使用多个控制字。

 

图六C端口的方式控制字

5.采用的方式控制字

使用8255的B口作为数据输入端,与开关相连接(即D1:

1);

使用工作方式0(即D6D5:

00)。

综上:

8255的方式控制字为:

10000010(即82H)

2.38253芯片的资料

1.8253的方式控制字

8253有一个8位的控制字寄存器,其格式如下:

若计数器2,11读写,工作方式3bcd数

 

图七8253的方式控制字

其中:

D0:

数制选择控制。

为1时,表明采用BCD码进行定时/计数;否则,采用二进制进行定时/计数。

D3-D1:

工作方式选择控制。

000,0;001,1;X10,2;X11,3;100,4;101,5;

D5D4:

读写格式。

00,计数锁存命令;01,读/写高8位命令;10,读/写低8位命令;

11,先读/写低8位,再读写高8位命令。

D7D6:

通道选择控制。

000通道;01,1通道;10,2通道;11,非法

2.要选用的两种工作方式

¤方式3—方波速率发生器

方式3的波形如图八所示,这种方式下的输出与工作方式方式2都是周期性的,不同的是周期不同,CPU写入控制字后,输出OUT变高,写入计数值后开始计数,不同的是减2计数,当计数到一半计数值时,输出变低,重新装入计数值进行减2计数,当计数到0时,输出变高,装入计数值进行减2计数,循环不止。

在方式3下,8253有下列使用特点:

①通道可以连续工作;

②关于计数值的奇偶,若为偶数,则输出标准方波,高低电平各为N/2个;若为奇数,则在装入计数值后的下一个CLK使其装入,然后减1计数,(N+1)/2,OUT改变状态,再减至0,OUT又改变状态,重新装入计数值循环此过程,因此,在这种情况下,输出有(N+1)/2个CLK个高电平,(N-1)/2个CLK个低电平;

③GATE信号能使计数过程重新开始,当GATE=0时,停止计数,当GATE变高后,计数器重新装入初值开始计数,尤其是当GATE=0时,若OUT此时为低,则立即变高,其它动作同上;

在计数期间改变计数值不影响现行的计数过程,一般情况下,新的计数值是在现行半周结束后才装入计数器。

但若中间遇到有GATE脉冲,则在此脉冲后即装入新值开始计数。

 

计数值为偶数

 

计数值为奇数

图八8253的工作方式3

¤方式5—硬件触发的选通信号发生器

方式5的波形如图九所示,在这种方式下,当控制字写入后,OUT立刻变高,写入计数值后并不立即开始计数,而是由GATE的上升沿触发启动计数的,当计数到0时,输出变低,经过一个CLK之后,输出恢复为高,计数停止,若再有GATE脉冲来,则重新装入计数值开始计数,上述过程重复。

方式5下,8253有下列使用特点:

①在这种方式下,若设置的计数值是N,则在GATE脉冲后,经过(N+1)个CLK才一个负脉冲;

②若在计数过程中又来一个GATE脉冲,则重新装入初值开始计数,输出不变,即计数值多次有效;

③若在计数过程中修改计数值,则该计数值在下一个GATE脉冲后装入开始按此值计数。

图九8253的工作方式5

3.8253的工作方式小结

(1)方式2、4、5的输出波形是相同的,都是宽度为一个CLK周期的负脉冲,但方式2连续工作,方式4由软件触发启动,方式5由硬件触发启动。

(2)方式5与方式1工作过程相同,但输出波形不同,方式1输出的是宽度为N个CLK脉冲的低电平有效的脉冲(计数过程中输出为低),而方式5输出的为宽度为一个CLK脉冲的负脉冲(计数过程中输出为高)。

(3)输出端OUT的初始状态,方式0在写入方式字后输出为低,其余方式,写入控制字后,输出均变未能高。

(4)任一种方式,均是在写入计数初值之后,才能开始计数,方式0、2、3、4都是在写入计数初值之后,开始计数的,而方式1和方式5需要外部触发启动,才开始计数。

(5)6种工作方式中,只有方式2和方式3是连续计数,其它方式都是一次计数,要继续工作需要重新启动,方式0、4由软件启动,方式1、5由硬件启动。

(6)门控信号的作用;通过门控信号GATE,可以干预8253某一通道的计数过程,在不同的工作方式下,门控信号起作用的方式也不一样,其中0、2、3、4是电平起作用,1、2、3、5是上升沿起作用,方式2、3对电平上升沿都可以起作用。

(7)在计数过程中改变计数值,它们的作用有所不同。

(8)计数到0后计数器的状态,方式0、1、4、5继续倒计数,变为FF、FE……,而方式2、3,则自动装入计数初值继续计数。

4.采用的方式控制字

(1)先给8253初始化,使用计数器2(即D7D6:

10);

先读/写低八位,再读/写高八位(即D5D4:

11);

使用工作方式3(即D3D2D1:

011)

使用二进制(即D0:

0)

综上:

8253的初始化的方式控制字为:

10110110(即0B6H)

(2)改变8253的控制方式字使得发音停止

使用计数器2(即D7D6:

10);

先读/写低八位,再读/写高八位(即D5D4:

11);

使用工作方式5(即D3D2D1:

101)

使用二进制(即D0:

0)

综上:

8253方式控制字改变为:

10111010(即0BAH)

 

第三章电子琴的软件设计

3.1程序流程图

图十程序流程图

 

3.2发音程序

FY123PROC

A7:

MOVAL,0B6H

OUT43H,AL

MOVAL,[BX]

MOVAH,00H

MOVDL,25H

MULDL

OUT42H,AL

MOVAL,AH

OUT42H,AL

RET

FY123ENDP

3.3延时程序

DELAYPROC

PUSHCX

PUSHAX

MOVCX,0040H

A5:

MOVAX,056CH

A6:

DECAX

JNZA6

LOOPA5

POPAX

POPCX

MOVAL,0BAH

MOVDX,43H

OUTDX,AL

RET

DELAYENDP

3.4停止发音程序

MOVAL,0BAH

MOVDX,43H

OUTDX,AL

 

3.5整体的软件汇编程序

STACKSEGMENTSTACK

DW64DUP(?

STACKENDS

DATASEGMENT

TABLE1DB4DH,45H,3DH,39H,33H,2DH,28H,00H;1,2,3,4,5,6,7的频率

TABLE2DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH

DB45H,45H,3DH,33H,33H,3DH,3DH,45H

DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH

DB45H,45H,3DH,2DH,2DH,33H,33H,3DH,45H,4DH,4DH,4DH,4DH

DB2DH,4DH,4DH,45H,45H,45H,45H,5DH,4DH,4DH,45H,45H,45H,45H

DB5DH,4DH,4DH,45H,3DH,3DH,45H,45H,45H,45H

DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH

DB45H,45H,3DH,33H,33H,3DH,3DH,45H

DB45H,45H,3DH,3DH,3DH,3DH,3DH,3DH

DB2DH,45H,45H,3DH,2DH,2DH,33H,33H,33H,3DH,45H,4DH,4DH,4DH,4DH

DB2DH,4DH,4DH,45H,45H,45H,45H

DB5DH,4DH,4DH,4DH,45H,45H,45H,45H,45H,45H

DB4DH,4DH,45H,3DH,3DH,45H,45H,45H,4DH,4DH,4DH

DB5DH,4DH,5DH,4DH,4DH,4DH,5DH,4DH,4DH,4DH,45H,4DH,4DH,5DH,5DH,5DH,5DH

DB5DH,4DH,5DH,4DH,4DH,4DH,5DH,4DH,4DH,4DH,45H,3DH,4DH,4DH,4DH,4DH

DB3DH,3DH,3DH,3DH,3DH,3DH,2DH,2DH,33H,33H,3DH,3DH,3DH,45H,45H,45H,45H,45H,45H

DB6EH,6EH,45H,45H,3DH,3DH,3DH,3DH

DB45H,3DH,3DH,3DH,33H,2DH,2DH,33H,33H,33H,33H

DB4DH,4DH,45H,45H,3DH,3DH,2DH,2DH,33H,33H,3DH,33H,33H,33H,33H,33H

DB33H,2DH,26H,26H,26H,26H,2DH,2DH,33H,3DH,3DH,3DH,33H,3DH,3DH

DB4DH,5DH,5DH,3DH,45H,45H,45H,45H,45H

DB4DH,4DH,4DH,5DH,5DH,4DH,4DH,45H,45H,45H,4DH,4DH,4DH,4DH,4DH,4DH,00H;发如雪

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

PUSHAX

MOVAL,82H;8255初始化10000010B口为输入

OUT63H,AL

POPAX

KZ:

INAL,61H;K0为1,自动放音

CMPAL,01H

JZF0

CMPAL,02H;1,2,3,4,5,6,7的发音判断

JZF1

CMPAL,04H

JZF2

CMPAL,08H

JZF3

CMPAL,10H

JZF4

CMPAL,20H

JZD5

CMPAL,40H

JZD6

CMPAL,80H

JZD7

JMPKZ

D5:

JMPF5

D6:

JMPF6

D7:

JMPF7

F0:

MOVBX,OFFSETTABLE2;自动播放曲子table2

MOVAL,[BX]

MOVAH,00H

A1:

MOVDL,25H

MULDL

INAL,61H;判断k0是否为1,为1继续自动播放,否则停止

CMPAL,01H

JNZA3

PUSHAX

MOVAL,0B6H;8253初始化

OUT43H,AL

POPAX

OUT42H,AL;发音

MOVAL,AH

OUT42H,AL

INCBX

MOVAH,00H

MOVAL,[BX]

TESTAL,0FFH;唱完一遍自动停止

JZA4;唱完

MOVCX,77FFH

A2:

PUSHAX;延时

POPAX

LOOPA2

JMPA1

A3:

MOVAL,0BAH;改变8253的控制字,工作在方式5,使不发声

MOVDX,43H

OUTDX,AL

JMPKZ

A4:

PUSHAX;延时

POPAX

LOOPA4

JMPA3

F1:

MOVBX,OFFSETTABLE1;发音1

CALLFY123

CALLDELAY

JMPKZ

F2:

MOVBX,OFFSETTABLE1;发音2

INCBX

CALLFY123

CALLDELAY

JMPKZ

F3:

MOVBX,OFFSETTABLE1;发音3

ADDBX,2

CALLFY123

CALLDELAY

JMPKZ

F4:

MOVBX,OFFSETTABLE1;发音4

ADDBX,3

CALLFY123

CALLDELAY

JMPKZ

F5:

MOVBX,OFFSETTABLE1;发音5

ADDBX,4

CALLFY123

CALLDELAY

JMPKZ

F6:

MOVBX,OFFSETTABLE1;发音6

ADDBX,5

CALLFY123

CALLDELAY

JMPKZ

F7:

MOVBX,OFFSETTABLE1;发音7

ADDBX,6

CALLFY123

CALLDELAY

JMPKZ

FY123PROC;发音子程序

A7:

MOVAL,0B6H;8253初始化10110110,计数器2,先低后高,方式3,二进制

OUT43H,AL

MOVAL,[BX]

MOVAH,00H

MOVDL,25H

MULDL

OUT42H,AL

MOVAL,AH

OUT42H,AL

RET

FY123ENDP

DELAYPROC;延时子程序

PUSHCX

PUSHAX

MOVCX,0040H

A5:

MOVAX,056CH

A6:

DECAX

JNZA6

LOOPA5

POPAX

POPCX

MOVAL,0BAH;改变8253的控制字10111010,工作于方式5

MOVDX,43H

OUTDX,AL

RET

DELAYENDP

CODEENDS

ENDSTART

 

第四章电子琴的调试和设计体会

4.1硬件调试

1.开始时直接将8253的输出端out2与扬声器相连,连接好硬件后打开电源,发现喇叭一直不停的叫。

分析原因:

发现是由于8253的输出端(即OUT2)初状态为高电平,所以当输入扬声器时扬声器就即刻发声。

所以将8253的输出端(OUT2)出来接一个非门,再接到扬声器上,使得初始时扬声器为低电平,所以不发声。

4.2软件调试

1.先编写了弹奏程序,发现按按键后,扬声器不会停止发音,会一直以一个特定的(即晶振产生的)频率在发声。

为了使它的所有键在低电平时停止发音,我在发音延时后改变8253的方式控制字,是其工作在方式5下,停止了他的发音。

再次发音时即又一次对8253进行初始化。

2.对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。

给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。

对于音乐,每个音阶都有确定的频率。

各音阶标称频率值和8253的计数初值:

音阶

低音5

低音6

低音7

中音1

中音2

中音3

中音4

中音5

中音6

中音7

高音1

频率(HZ)

452

535

607

647

722

817

847

977

1107

1245

1311

计数初值

6EH

5DH

52H

4DH

45H

3DH

39H

33H

2DH

28H

26H

不同频率的区别,可通过调节向D/A转换器输出数据的时间间隔,例如:

发"1"频率为647HZ,周期为1/647=1.55ms,由于实验箱中的晶振可产生一个为1.8432MHZ的频率。

1.8432MHZ/647HZ=2849,即分频数。

转化为十六进制的数为:

B21H,在经过频率处理,除以25H得到8253的计数初值:

4DH。

其它的初值的计算同理。

3.编写完自动播放程序后发现无法用开关控制它的随时播放和停止,一定要唱完一遍后遇到终止符号才能停止。

分析后发现自动播放中应该在每个音播放完后作个开关的判断,决定是否继续自动播放,从而跳转到不同的情况下,继续执行程序。

判断语句:

INAL,61H;判断k0是否为1,为1继续

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

当前位置:首页 > 高中教育 > 英语

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

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