可存储式电子琴的设计.doc

上传人:wj 文档编号:582618 上传时间:2023-04-29 格式:DOC 页数:46 大小:1,017KB
下载 相关 举报
可存储式电子琴的设计.doc_第1页
第1页 / 共46页
可存储式电子琴的设计.doc_第2页
第2页 / 共46页
可存储式电子琴的设计.doc_第3页
第3页 / 共46页
可存储式电子琴的设计.doc_第4页
第4页 / 共46页
可存储式电子琴的设计.doc_第5页
第5页 / 共46页
可存储式电子琴的设计.doc_第6页
第6页 / 共46页
可存储式电子琴的设计.doc_第7页
第7页 / 共46页
可存储式电子琴的设计.doc_第8页
第8页 / 共46页
可存储式电子琴的设计.doc_第9页
第9页 / 共46页
可存储式电子琴的设计.doc_第10页
第10页 / 共46页
可存储式电子琴的设计.doc_第11页
第11页 / 共46页
可存储式电子琴的设计.doc_第12页
第12页 / 共46页
可存储式电子琴的设计.doc_第13页
第13页 / 共46页
可存储式电子琴的设计.doc_第14页
第14页 / 共46页
可存储式电子琴的设计.doc_第15页
第15页 / 共46页
可存储式电子琴的设计.doc_第16页
第16页 / 共46页
可存储式电子琴的设计.doc_第17页
第17页 / 共46页
可存储式电子琴的设计.doc_第18页
第18页 / 共46页
可存储式电子琴的设计.doc_第19页
第19页 / 共46页
可存储式电子琴的设计.doc_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

可存储式电子琴的设计.doc

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

可存储式电子琴的设计.doc

中国矿业大学计算机学院信息安全10-4班硬件课程设计——电子琴

计算机科学与技术学院

硬件课程设计

个人报告

姓名:

王向阳张奥

学号:

班级:

信安10-4班

设计题目:

可存储式电子琴

指导教师:

王凯

二〇一二年十二月二十七日

课程设计指导教师评阅书

指导教师评语:

成绩:

指导教师签字:

年月日

摘要

在这次的硬件实验中,我们利用学习的微机原理与接口技术这门课程课上我们学到的一些计算机硬件工作的基本原理,汇编语言程序设计方法,微型计算机接口技术,建立微型计算机系统的整体概念,初步形成微机系统软硬件开发的能力。

为了能够学以致用,同时也为了更深入的了解熟悉可编程定时器8253和8279。

在汇编语言环境下,利用上述两种芯片,编程让8279通过识别键盘产生键值,8253识别发声从而实现计算机按照按键的不同而发出不同频率的声音。

可存储式电子琴可用于设计小型发声玩具,由于本电子琴设计简单,稍加修改便可用于其它地方,如报警防盗器部件,音乐门铃等,具有一定的商业价值。

本次硬件课程设计课程,是配合上学期《微型计算机原理与接口技术》的教学,也是要让我们能够更深入的认识接口芯片技术以及汇编编程,做到理论和实践相结合。

在课程中,我们选择的设计项目是“可存储式电子琴”:

一个简易的电子琴设备。

要求我们利用相关已经学过的和没有学过的芯片连接成一个电子电路,并且通过自己用汇编语言编程,控制设计的电子电路实现电子琴的一些功能,比如:

能够对于输入发出相应的单声;能够演奏一小段已经编好了的乐曲。

关键词:

可存储电子琴82798253门控信号程序代码

目录

1开发背景 3

2产品功能及涉及的芯片和硬件 3

2.1功能简介 3

2.2使用的主要芯片及元件 3

2.3各音阶频率值 3

2.4可编程计数器/定时器8253 4

2.4.18253内部结构和引脚 4

2.4.28253方式控制字格式 5

2.4.38253的工作方式3—方波发生器 5

2.4.4本设计中8253的功能 6

2.5可编程键盘—接口显示芯片8279 6

2.5.18253内部结构和引脚 7

2.5.28279的工作方式 8

2.5.38279的命令字及格式 10

2.5.4本设计中8279的功能 11

3实验中所遇到的问题 11

4实验程序 11

5实验感悟 15

6参考文献 17

1.开发背景

上学期刚刚结束《微型计算机原理与接口技术》课程,本学期为了进一步熟悉和掌握汇编语言,通过选择课题的方式让学生单独分析和实现课题,来加强学生的动手实践能力和独立思考的能力。

2.产品功能及涉及的芯片和硬件

2.1功能简介

按下键盘的A,B,C键实现对键盘高音,中音,低音的选择,按下1-7号键实现do-xi的发音,当按下D键时,可以通过A,B,C选择高音中音低音的预置音乐播放

2.2使用的主要芯片及元件

(1)各芯片及器件地址:

8279的控制端地址为:

20AH,数据端地址为:

208H。

8253的控制端地址为:

213H,数据端地址为:

210H。

I/O输出的地址为:

200H

(2)按键说明:

1——dou音2——ruai音3——mi音4——fa音5——sao音

6——la音7——xi音A——高音转换键

B——中音转换键C——低音转换键D——放音键

芯片:

一片8253(有详细介绍)

一片8279

IO芯片

元件:

蜂鸣器

2.3个音阶频率

使用8279芯片的键盘控制器,通过查看寄存器,读出分别按下不同的键时对应的寄存器值(这里只给出当按下1---7和A、B、C、D键的寄存器值,如图)。

按键

1

2

3

4

5

6

7

A

B

C

D

寄存器键值

02H

0AH

22H

01H

09H

21H

00H

07H

29H

28H

2BH

当某一时刻按下一个键的时,可以通过和各键的寄存器值比较来判断按下键。

又每个音阶都有一个确定的频率。

音阶

1

2

3

4

5

6

7

高音频率(HZ)

552

1812

587

1704

659

1517

700

1429

784

1276

880

1136

988

1012

中音频率(HZ)

262

294

330

349

392

440

494

低音频率(HZ)

131

7634

147

6803

165

6060

175

5714

196

5102

220

4545

247

4049

可以通过各音阶的对应频率值为8253赋初值,然后输出到音响设备,以产生相应音阶的发音。

在发音过程中,可分别为8253的GATE0端输入0和1来控制开始发音和停止发音。

本实验我们对于8253输入频率选择的是1MHz,故,由每个音阶的对应的频率可求出8253输入的计数值。

音阶

1

2

3

4

5

6

7

高音频率(HZ)

1812

1704

1517

1429

1276

1136

1012

中音频率(HZ)

3817

3401

3030

2865

2551

2273

2024

低音频率(HZ)

7634

6803

6060

5714

5102

4545

4049

3.总体设计

3.1电路原理图与说明

实物图:

IO输出

CS

CLK0

8253

GATE0

OUT0

CS

1MHz

1MHz

扬声器

200-207H208-20AH210-213H

8279芯片

5.2功能模块流程图

开始

8259初始化

8253初始化

置空寄存器

有键按下?

N

是A

转入高音区

Y

Y

转入中音区

是B

Y

是1

N

Y

是2

NY

是3

NY

是4

N

NY

是5

Y

是6

NY

是7

N

给8253赋对应初值

NY

音响发音

延时

预置音乐程序流程图:

8259初始化

开始

8253初始化

置空寄存器

有键按下?

N

是D?

N

Y

是C?

是B?

是A?

低音

中音

高音

给8253赋对应初值

音响发音

延时

2.4可编程计数器/定时器8253

2.4.18253内部结构和引脚

8253的内部结构

从上图可见,8253内部包含数据总线缓冲器、读/写控制逻辑、控制字寄存器和3个结构完全相同的计数器,这3个计数器分别称为计数器0、计数器1和计数器2。

8253的引脚

A1、A0:

地址输入线,用来址8253内部的4个端口,即3个计数器和1个控制字寄存器与CPU系统地址线相连。

CLK0-2:

时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。

CLK可以是系统的时钟脉冲,也可以由系统时钟分频或者其他脉冲源提供。

当用于定时时,这个脉冲必须是均匀的、连续的、周期精确的,而用于计数时,这个脉冲可以是不均匀的、断续的、周期不定的。

GATE0-3:

门控输入端,用于外部控制计数器的启动计数和停止计数的操作。

两个或两个以上计数器连用时,可用此信号同步,也可用于与外部某信号的同步。

OUT0-2:

计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出相应的信号。

2.4.28253方式控制字格式

D7

BCD

SC1

SC0

RL1

RL0

M2

M1

M0

D6

D5

D4

D3

D2

D1

D0

00选择计数器0

01选择计数器1

10选择计数器2

11无效

00计数器锁存操作

01只读/写LSB

10只读/写MSB

11读/写LSB、MSB

0二进制数

1BCD

000模式0

001模式1

x10模式2

x11模式3

100模式4

101模式5

图2-38253的方式控制字

2.4.38253的工作方式3——方波发生器

方式3的波形如下图所示,它的特点是:

(1)输出为周期性的方波。

若计数值为N,则输出方波的周期是N个CLK脉冲的宽度。

(2)写入控制字后,输出将变为高电平,当写入计数初值后,就开始计数,输出仍为高电平;当计数到初值的一半时,输出变为低电平,直至计数到0,输出又变为高电平,重新开始计数。

(3)若计数值为偶数,则输出对称方波;如果计数值为奇数,则前(N+1)/2个CLK脉冲期间输出为高电平,后(N-1)/2个CLK脉冲期间输出为低电平。

(4)GATE信号能使计数过程重新开始,GATE=1允许计数,GATE=0禁止计数。

停止后OUT将立即变高电平,当GATE再次变高以后,计数器将自动装入计数初值,重新开始计数。

8253工作方式3波形

2.4.4本设计中8253的功能

8253的CLK0接1MHz时钟,GATE0接+5V,OUT0接蜂鸣器,编程使计算机的数字键0、1、2、3、4、5、6作为电子琴按键,按下即发出相应的音阶。

本次实验用到的是8253的方式3——方波发生器。

2.5可编程键盘——接口显示芯片8279

2.5.18253内部结构和引脚

8279引脚图

8279是可编程的键盘、显示接口芯片。

它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。

8279内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8*8=64BRAM,键盘控制部分可控制8*8=64个按键或8*8阵列方式的传感器。

该芯片能自动消抖并具有双键锁定保护功能。

显示RAM容量为16*8,即显示器最大配置可达16位LED数码显示。

1)数据线

DB0→DB7是双向三态数据总线,在接口电路中与系统数据总线相连,用以传送CPU和8279之间的数据和命令。

2)地址线

/CS=0选中8279,当A0=1时,为命令字及状态字地址;当A0=0时,为片内数据地址,故8279芯片占用2个端口地址。

3)控制线

CLK:

8279的时钟输入线。

IRQ:

中断请求输出线,高电平有效。

/RD、/WR:

读、写输入控制线。

SL0---SL3:

扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。

RL0---RL7:

回复输入线,它们是键盘或传感器矩阵的信号输入线。

SHIFT:

来自外部键盘或传感器矩阵的输入信号,它是8279键盘数据的次高位即D6位的状态,该位状态控制键盘上/下档功能。

在传感器方式和选通方式中,该引脚无用。

CNTL/S:

控制/选通输入线,高电平有效。

键盘方式时,键盘数据最高位(D7)的信号输入到该引脚,以扩充键功能;选通方式时,当该引脚信号上升沿到时,把RL0---RL7的数据存入FIFORAM中。

OUTA0---OUTA3:

通常作为显示信号的高4位输出线。

OUTB0---OUTB3:

通常作为显示信号的低4位输出线。

/BD:

显示熄灭输出线,低电平有效。

当/BD=0时将显示全熄灭。

8279对显示RAM的读/写操作

如果采用非地址自动增加方式对显示RAM进行读/写操作,则每次读/写前都需要通过“读显示RAM命令字”或“写显示RAM命令字”设置显示RAM的地址。

而采用地址自动增加方式,只需设置起始地址,之后地址会自动增加。

2.5.28279的工作方式

8279有三种工作方式:

键盘方式、显示方式和传感器方式。

1)键盘工作方式

8279在键盘工作方式时,可设置为双键互锁方式和N键循回方式。

双键互锁方式:

若有两个或多个键同时按下时,不管按键先后顺序如何,只能识别最后一个被释放的键,并把该键值送入FIFORAM中。

N键循回方式:

一次按下任意个键均可被识别,按键值按扫描次序被送入FIFORAM中。

2)显示方式

8279的显示方式又可分为左端入口和右端入口方式。

显示数据只要写入显示RAM,则可由显示器显示出来,因此显示数据写入显示RAM的顺序,决定了显示的次序。

左端入口方式即显示位置从显示器最左端1位(最高位)开始,以后显示的字符逐个向右顺序排列;右端入口方式即显示位置从显示器最右端1位(最低位)开始,已显示的字符逐个向左移位。

但无论左右入口,后输入的总是显示在最右边。

3)传感器方式

传感器方式是把传感器的开关状态送入传感器RAM中。

当CPU对传感器阵列扫描时,一旦发现传感器状态发生变化就发出中断请求(IRQ置1),中断响应后转入中断处理程序。

2.5.38279的命令字及格式

a.8279内部时钟设置命令字

001D4D3D2D1D0

高三位为本命令字特征位,第五位用于设定对外部时钟CLK的分频值。

b.读显示RAM命令字

011AID3D2D1D0

高三位为本命令字特征位

AI:

地址增加位,AI=1时,每读出一个字节后地址会自动加1,可继续读下一位字节单元的内容,而不必重写读命令。

低四位为显示RAM地址,从0000到1111共16个。

c.写显示RAM命令字

100AID3D2D1D0

高三位为本命令字特征位

AI:

地址增加位,AI=1时,每写入一个字节后地址会自动加1,可继续写下一位字节单元的内容,而不必重写读命令。

低四位为显示RAM地址,从0000到1111共16个。

2.5.4本设计中8279的功能

利用8279的键盘处理功能,连接键盘实现按键输入频率发生功能

4.实验中所遇到的问题

在实验过程中,对于电子琴发生原理不太熟悉,所以一开始一直不知道怎么下手。

对于8279因为有彩灯的基础所以还比较顺手。

实验时一直发音不准,原因在于对于发音频率一直没有输入正确,对于8253的工作方式没有弄明白。

但是在老师同学的帮助下还是解决了问题。

5.实验程序

Z8279EQU212H

D8279EQU210H

LEDMODEQU00H;左边输入,八位显示外部译码八位显示

LEDFEQEQU38H;扫描频率

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

MOVDX,Z8279 ;8279初始化

MOVAL,00H

OUTDX,AL

MOVAL,38H

OUTDX,AL

MOVDX,20BH ;8253初始化

MOVAL,B

OUTDX,AL

PUSHCS

POPDS

MOVDX,Z8279

MOVAL,LEDMOD

OUTDX,AL

MOVAL,LEDFEQ

OUTDX,AL

MOVDX,D8279

MOVAL,7FH

OUTDX,AL

MOVDX,D8279

MOVAL,7FH

OUTDX,AL

MOVDX,D8279

MOVAL,7DH

OUTDX,AL

MOVDX,D8279

MOVAL,7FH

OUTDX,AL

MOVDX,D8279

MOVAL,70H

OUTDX,AL

MOVDX,D8279

MOVAL,5bH

OUTDX,AL

MOVDX,D8279

MOVAL,70H

OUTDX,AL

MOVDX,D8279

MOVAL,76H

OUTDX,AL ;以上为写(AEDK8688)

NOP

PD:

MOVDX,200H

MOVAL,00H

OUTDX,AL

MOVAL,00H

MOVDX,Z8279

MOVAL,0C2H

OUTDX,AL ;置空FIFO寄存器

WAIIT:

NOP

INAL,DX

MOVBL,AL

ANDAL,80H

CMPAL,80H

JEWAIIT ;FIFO正在清除期间则跳转等待

MOVAL,BL

ANDAL,0FH

CMPAL,00H

JEWAIIT

;MOVAL,40H;写读FIFORAM命令字(问题出在这里)

;OUTDX,AL

;MOVDX,D8279;读入FIFORAM内容

;INAL,DX

;无键按下则等待

NOP ;查表,将键码放入AL中

LEABX,LED

XLAT

MOVDX,D8279 ;将AL中内容写到数码管上

OUTDX,AL

MOVAL,00H

MOVDX,D8279;判断是哪个键

INAL,DX

MOVBL,AL

MOVDX,Z8279;清FIFORAM寄存器

MOVAL,0C2H

OUTDX,AL

MOVAL,BL

CMPAL,28H;高音跳转

JEGG1

CMPAL,02H

JEB1

CMPAL,0AH

JEB2

CMPAL,22H

JEB3

CMPAL,01H

JEB4

CMPAL,09H

JEB5

CMPAL,21H

JEB6

CMPAL,00H

JEB7

B1:

MOVDX,208H

MOVAL,24H

OUTDX,AL

MOVAL,38H

OUTDX,AL

CALLDELAY

JMPPD

B2:

MOVDX,208H

MOVAL,07H

OUTDX,AL

MOVAL,34H

OUTDX,AL

CALLDELAY

JMPPD

B3:

MOVDX,208H

MOVAL,34H

OUTDX,AL

MOVAL,30H

OUTDX,AL

CALLDELAY

JMPPD

B4:

MOVDX,208H

MOVAL,65H

OUTDX,AL

MOVAL,28H

OUTDX,AL

CALLDELAY

JMPPD

GG1:

JMPGG;中转一下

MM:

JMPWAIIT

B5:

MOVDX,208H

MOVAL,51H

OUTDX,AL

MOVAL,25H

OUTDX,AL

CALLDELAY

JMPPD

B6:

MOVDX,208H

MOVAL,72H

OUTDX,AL

MOVAL,22H

OUTDX,AL

CALLDELAY

JMPPD

B7:

MOV

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

当前位置:首页 > IT计算机 > 互联网

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

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