计算机硬件课程设计 电子琴Word下载.docx

上传人:聆听****声音 文档编号:947384 上传时间:2023-04-29 格式:DOCX 页数:49 大小:722.38KB
下载 相关 举报
计算机硬件课程设计 电子琴Word下载.docx_第1页
第1页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第2页
第2页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第3页
第3页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第4页
第4页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第5页
第5页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第6页
第6页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第7页
第7页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第8页
第8页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第9页
第9页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第10页
第10页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第11页
第11页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第12页
第12页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第13页
第13页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第14页
第14页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第15页
第15页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第16页
第16页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第17页
第17页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第18页
第18页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第19页
第19页 / 共49页
计算机硬件课程设计 电子琴Word下载.docx_第20页
第20页 / 共49页
亲,该文档总共49页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机硬件课程设计 电子琴Word下载.docx

《计算机硬件课程设计 电子琴Word下载.docx》由会员分享,可在线阅读,更多相关《计算机硬件课程设计 电子琴Word下载.docx(49页珍藏版)》请在冰点文库上搜索。

计算机硬件课程设计 电子琴Word下载.docx

心得体会4:

25

6.操作说明书 27

6.1连线要求 27

6.2使用电子琴弹奏乐曲以及使用各个子功能的方法 28

7.整体程序清单 29

摘要

通过大三上学期对《计算机硬件技术》课程的学习,我们初步掌握了一些计算机硬件工作的基本原理、汇编语言程序设计方法,建立了微型计算机系统的整体概念,初步形成微机系统软硬件开发的能力。

为了更好的理解和掌握学习到的知识,也为了更深入的了解熟悉可编程定时器8254和8255,我们试图通过编程使8255识别输入键值,通过8254识别发声,达到通过按键控制扬声器发声频率的目的,从而模拟电子琴的工作原理。

由于本电子琴设计简单,方便改装用于其他实用领域,如报警器、门铃、儿童玩具等,具有一定的实用价值。

要完成一个简易的电子琴,要求我们利用相关已经学过的芯片连接成一个电子电路,并且通过自己用汇编语言编程,控制设计的电子电路实现电子琴的一些功能,比如通过高中低音键和音调键分别控制发出高低音的1、2、3、4、5、6、7音调,比如播放预先存储的歌曲,比如回放上一个弹奏的歌曲等。

本文首先介绍了设计目的、意义、任务及思路,接着简单介绍了各个元器件的工作原理,然后以流程图的形式展现了各程序的基本思路,再介绍了一些具体功能是如何实现的,在附录中还附带了完整的程序,最后描述了组员的心得体会。

1.设计目的与意义

1.1设计目的

计算机硬件技术课程设计是对所学课程内容的全面、系统的总结、巩固和提高的一项课程实践活动。

课程设计要求同学们熟悉汇编语

言的编程、连接、调试、运行等步骤,以及设计中所设计的相关软硬知识。

通过课程设计,一方面提高运用汇编语言变成解决实际问题的能力,另一方面使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。

1.2设计意义

通过课程设计要进一步锻炼在微型计算机应用方面的实际工作能力。

计算机科学是一门应用型学科,学习时必须紧密联系实际,要强调实际问题的能力。

通过设计学会面对一个实际问题时如何分析问题、收集资料并且如何将理论知识运用于实际生活中,解决实际问题。

2.课程设计的任务和思路

2.1设计任务

设计一个电子琴,以扬声器作为发声装置,以4X4小键盘作为输入装置,模拟电子琴的琴键和功能按键,嗲子清具有低、中、高三个音阶,能弹奏曲目在计算机硬件试验系统基础上,完成扬声器模块的设计,完成基本功能,并在此基础上完善并优化系统功能。

(1)按“1—7”中的任一数字键,则发出对应的中音;

(2)若按下“高音键”和“1—7”中的任一数字键,则发出对应的高音;

(3)若按下“低音键”和“1—7”中的任一数字键,则发出对应的低音;

(4)弹奏时要求能够区分节拍、音调、音阶和休止符。

2.2设计思路

电子琴的设计实际上就是要设计一个程序,通过识别按键,控制扬声器模块的振动频率,从而发出不同的音调。

扬声器模块是通过并行接口芯片8255和定时芯片8254来控制发音的,其电路连接方式如下图所示。

频率

OUT2

GATE2

CLK2 8254

PC8

1

8255A

扬声器模块

&

图1扬声器控制电路

扬声器是由8254通道2产生的方波信号驱动发声的。

要想让扬声器发声,除了电源和接地外,,还需要一个引脚给予振动频率才能正常工作。

同时当8255的PC7置1,,使得8254的GATE为高时。

OUT2引脚上才能产生一定频率的方波信号驱动扬声器,使扬声器发声。

因此,可以通过对8255的PC7的设置来控制扬声器的开通和关断,而其发音频率可以通过改变8254通道2的计数初值来控制。

因此设计程序的任务就是要通过识别按键来设置8255的PC7输出电平的高低,以及设置8254通道2计数初值。

在实际的课程设计中,因为计数初值的设置、8254的CLK频率的选择等原因,我们给予8254用于参与计算高低中音的程序频率和实际OUT2口输出的驱动频率有

点不同,以下两表分别为OUT2口输出频率和程序中用于计算的频率:

音符

2

3

4

5

6

7

频率(低)

131

147

165

175

196

220

247

频率(中)

262

294

330

349

392

440

494

频率(高)

524

588

660

698

784

880

988

表一:

OUT2口输出的驱动频率

101

112

125

134

151

167

186

202

224

250

268

302

334

372

402

448

500

536

604

668

744

表二:

程序中参与计算8254计数初值的频率

3.硬件工作原理

3.18255工作原理

8255是Intel公司生产的可编程并行I/O接口芯片,有3个8

位并行I/O口。

具有3个通道3种工作方式的可编程并行接口芯片

(40引脚)。

其各口功能可由软件选择,使用灵活,通用性强。

8255可作为单片机与多种外设连接时的中间接口电路。

8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。

8255的内部结构图如图2所示,它有3个数据端口,分为两组,

A组由A口和C口高四位组成,B组由B口和C口低四位组成。

其方式控制字如图3所示。

图28255内部结构图

图38255控制字

3.28254工作原理

8254 芯片是一款使用十分广泛的可编程定时,计数芯片,其主要功能是定时和计数的功能。

人们所使用的微机内的动态存储器刷新电路、系统日时钟的技术以及发声系统的声源都是由8254芯片来参与完成工作的。

每个8254芯片有3个独立的16位计数器通道,每个计数器有6中工作方式,都可以按二进制或十进制(BCD码)计数。

8254芯片主要由数据总线、缓冲器、读写逻辑控制字、寄存器、计数器四部分组成。

其中当计数器工作在方式3时,输出信号为方波信号。

图48253内部结构图

图58253控制字格式

8254的通道0,通道1,通道2,控制口的端口地址分别为:

300H,304H,308H,30CH。

因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。

3.3扬声器模块工作原理

扬声器模块式有8254以方式3产生的方波信号驱动发声的。

该发声驱动系统由8255的PC7口经控制8254的GATE电平高低控制定时计数开始与结束的。

3.4三色LED数显

8255A并行模块中共有4片8255A芯片,每个8255A芯片的输出控制了两个共阳极8段LED,通过PCI总线接口与其相连,下面为电路图和端口地址,字型码和LED显示颜色选择表格

3.54X4非编码键盘

在拓展的实验板上有4行4列非编码键盘,按键的行、列信号用过插孔引出,行信号通过插孔P0-P3引出,列信号用过插孔Q0-Q3引出,4X4非编码键盘电路图如下图所示。

4.功能说明

4.1总体功能说明

8254的A口与B口分别连接4X4键盘的行与列,从中读取键值,确定音符,1—7按键分别对应1—7音符。

C口连接两个开关,读取选择的音阶,若K1K2=01则为高音,若K1K2=01则为低音,否则为中音。

8255根据选择的音符与音阶根据音符频率表确定需要的发声频率Hz送给8254。

8254的CLK频率为3MHz,由N=3MHz /Hz确定

8254计数初值N。

8254工作在方式3,通过OUT 口以方波形式将发声频率传给发声模块。

发声模块通过不同的频率选择不同的音符与音阶发声。

当不需要发声时,使8254的GATE为低电平。

4.1.1主程序说明

程序开始运行后,首先读取开关状态,若没有键按下,则进入弹琴子程序,否则判断是回放还是放音键。

若为回放键,则进入回放子程序,否则进入播放子程序。

进入子程序后,判断是否结束或中断。

若不是则重复运行子程序,否则重新读取开关。

主程序的流程图如下图所示:

4.2弹奏功能说明

图6主程序流程图

开始

读取开关

回放

是否有键按下

是播放还是回放

播放

进入弹琴子程序

进入播放子程序

进入回放子程序

是否结束或中断

首先根据音符音阶表建立音阶表LOW、MID、HIGH。

根据K1K2选择高中低音,由LEA指向相应表。

再根据8255读取按键值,若没有按键按下,则重新开始选择音阶读取键值,若有键按下则根据键值选择偏移地址放入SI中,从而准确判断选择发音频率,送往扬声器。

再令GATE为高电平,开启扬声器发声。

发声时不断扫描键盘和功能键,若有键盘键按下则重新根据相应的音符发声,若有功能键

按下则关闭扬声器。

4.2.1音符选择

扬声器发音的频率是由8254产生方波的频率决定的,而方波频率又是由通道的计数初值来决定的,因此可以通过改变通道的计数初值来实现变调功能。

计数初值N=时钟频率/音阶频率,时钟频率为3MHZ,可以将相应音调对应的时钟频率存入内存单元,当选择相应的音调时,计算计数初值时,采用对应的时钟频率值,

4.2.2音阶选择

高中低音阶主要是三组频率不同的音符,因此可以通过建立三个音阶表LOW、MID、HIGH。

根据开关情况确定由LEA指向相对应的表,再调用发声子程序,即可发出不同音阶的声音。

4.2.3弹奏实现

已提前选择音阶,即已选择好该指向哪个音符表。

由8255扫描按键值,根据扫描确定按得是哪个键,由此确定偏移地址并放入SI中,然后通过查表得其相应频率值,求得计数初值,然后将计数初值送入8254的通道2,最后调用发声子程序即实现弹奏功能。

4.2.4流程图

弹奏功能流程图如下:

选择音阶

开扬声器

读取键值

读键值

是否有其他功能、

音符键被选择

选择发声频率

是否为功能键

送扬声器

关扬声器

结束

图7弹奏功能流程图

4.3回放功能

回放功能的实现与歌曲播放功能的实现原理相近,不同的是用来存放声音所键的表里并不会预先存储歌曲,而是每按下一个音符键时就将对应的频率存放到该表里。

当弹奏结束后开通K2时,与歌

曲播放功能一样取出频率与节拍计数值,调用发声子程序,即可演奏刚刚弹奏的歌曲。

当K4为1时,调用回放子程序,回放子程序的流程图如下图所

示:

选择固定节拍

将音阶、音符

频率调入SI中

调用发音子程序

是否结束

图8音乐播放子程序流程图

首先选择的固定的节拍,再将相应频率调入SI中,在调用发音程序发现,并判断是否结束,若不结束,则重新调入频率,重新发

音。

4.4歌曲播放功能

预先存储《欢乐颂》歌曲,建立了两个表,一个存放歌曲对应的频率,一个存放节拍。

程序从频率表中依次取出音符对应的频率送给SI寄存器,同时取出对应的节拍计数值送给BX寄存器,在调用发声子程序,即可演奏出歌曲。

当频率为0时结束程序。

选择歌曲

将音符。

音阶对应

平率SI中

对应节拍调入BP中

调用发音程序发音

选择呢下一个

音符和节拍

当K3为打开时启动播放功能,可以播放预先存储的歌曲,其流程图如下:

图9歌曲播放子程序流程图

根据选择的歌曲将音符、音阶对应的频率调入SI中,对应节拍放入BP中,在调用发音子程序,根据SI与BP发出对应的声音,每发出一个声音判断歌曲是否结束,若还未结束则选择下一个音符、音阶、节拍调入,若结束则关闭扬声器,结束放音。

4.5显示功能

显示功能调用了控制三色led的第一片8255,其地址片选为200H,当每一个音符被按下的时候,我们调用8255控制着两个三色

led给出相应的显示。

为弹奏的子功能时,第一片三色led用A来显示,低音显示绿色、中音显示黄色、高音显示红色,第二片用来显示被按下的对应的音符;

为放音子程序时显示B,第二片显示相应的音符;

当为回放子程序的时候两片合起来显示C0。

其程序流程图对应如下:

读取功能键

显示功能符号

是否有音符响起

显示音符符号

图10显示子程序流程图

5.组员心得体会

重庆大学自动化学院计算机硬件课程设计电子琴

耗时两周,很坑,正好占据考研时间,真TM贱本实验相当成功,按键灵敏,音乐准确

程序由大神亲自编写

唐丹老师相当好,既可爱又漂亮要求也不严要是答辩碰上黄勤,等着死吧

欢迎学妹垂询!

QQ 2725714501

祝学长考研成功!

6.操作说明书

6.1连线要求

端口地址连接:

第五片8255A片选与320H相连;

8254片选与

300H相连。

8255与输入设备:

第5片8255A的PA0-PA3与键盘行信号P0-

P3连接;

第5片8255A的PB0-PB3与键盘列信号Q0-Q3连接;

5片8255A的PC0-PC3与开关K1-K4连接。

8254连接:

GATE2与PC7口连接;

CLK2与3MHz 相连;

OUT2与扬声器输入口相连。

扬声器:

正电源与实验板的+5V相连接;

接地端与实验板的GND

连接。

连线后设备全貌:

6.2使用电子琴弹奏乐曲以及使用各个子功能的方法

弹奏功能:

全速运行之后,当K2K1为10时(扳上为1,扳下为0),按下键盘的1-7按钮则会对应发出低音部的键盘1-7的声音;

当K2K1为01是,按下键盘的1-7按钮则会对应发出高音音部的键盘1-7的声音;

当K2K1为非以上情况时,按下键盘的1-7按钮则会对应发出中音部的键盘1-7的声音。

并且其实实验板上排的三色LED会显示为A模式,且弹奏的音符对应的简谱符号也会现实,而且根据其所属音节的不同,为不同的颜色;

其中红色为高音,黄色是中音,绿色为低音。

乐曲《欢乐颂》播放示范:

当将K3开关板上时,则会自动循环播放歌曲,且三色LED首位会现实为B,扳下则停止播放,并恢复到弹奏功能模块工作方式。

弹奏回放功能:

在弹奏不超过100个音符的时候,可以回放所弹音符,但是注意是没有记录节拍信息的。

7.整体程序清单

.486

PORTAEQU320HPORTBEQU324HPORTCEQU328HCTRL EQU32CHPORTA4EQU300HPORTB4EQU304HPORTC4EQU308HCTRL4 EQU30CH

CODE SEGMENTUSE16ASSUME CS:

CODEORG1000H

BEG:

JMPSTARTHFDINGWEIDW?

HFQISHIDW?

HFZHONGZHIDW?

HFBIAOZHIDW?

GONGNENGDB?

YINFUDB?

PINLVDW?

PANDUANDB?

SHANGYINDB?

SHANGGONGDB?

DENGZHIDW?

LOWDDW101,112,125,134,151,167,186;

3MHZ时钟信号

MID DW202,224,250,268,302,334,372

HIG DW402,448,500,536,604,668,744

HUANLE DW250,250,268,302,302,268,250,224

DW202,202,224,250,250,224,224

DW250,250,268,302,302,268,250,224

DW202,202,224,250,224,202,202,0JIEPAI DW8DUP(25)

DW4DUP(25),50,2DUP(25)DW8DUP(25)

DW4DUP(25),50,2DUP(25)HUIFANGDW1DUP(50H)JIEPAI2DW8DUP(50H)

START:

KSCAN1 PROCNEAR ;

主程序,用于扫描功能,并且调用相关的程序

PUSHCX ;

从这开始就是初始化的一些东西,包括8255的初始化、回放、三色

LED的初始化

MOVDX,CTRLMOVAL,91H

OUTDX,AL

MOVCX,20H;

回访的初始化LEASI,HUIFANG

CHUZHI:

MOVAX,0000H

MOVWORDPTR[SI],AXINCSI

INCSI

LOOPCHUZHI

LEASI,HUIFANG

MOVHFBIAOZHI,0000HMOVHFDINGWEI,SIMOVHFQISHI,SI

MOVSI,HFQISHI ;

做出回放地址的起始点

MOVAX,HFQISHI ;

做出回放地址的终止点ADDAX,100H

MOVHFZHONGZHI,AX

CHUDENG:

;

三色led的初始化

MOVDX,20CH

MOVEAX,80808080HOUTDX,EAX

MOVDX,200HMOVAL,88HOUTDX,AL

MOVDX,204HMOVAL,0C0HOUTDX,AL

MOVDX,208H

MOVEAX,0F0F0F05HOUTDX,EAX

RECEIVE:

形成功能代号,便于下面选择功能MOVDX,PORTC

INAL,DXANDAL,0FHCMPAL,0FH

CALLFNDKEY1MOVCL,GONGNENG

MOVSHANGGONG,CL

CMPGONGNENG,01HJZRELOP1

CMPGONGNENG,02H

JZRELOP1

CMPGONGNENG,03HJZRELOP1

CMPGONGNENG,04HJZRELOP2

CMPGONGNENG,08HJZRELOP3

RELOP1:

CALLGONGDENGCALLTANQINJMPRECEIVE

RELOP2:

CALLGONGDENGCALLGEQU

JMPRECEIVERELOP3:

CALLGONGDENGCALLHUIF

JMPRECEIVE

;

处理完毕之后,返回继续读取功能选择

POPCXRET

KSCAN1 ENDP

KSCAN2 PROCNEAR ;

寻找对应的1-7音符的按键是否按下的子程序,把得到的音符值传给YINFU

MOVCX,02H

MOVBL,0FDH ;

从Q1列开始扫描

LOP3:

MOVAL,BLMOVDX,PORTBOUTDX,ALMOVDX,PORTAINAL,DX

ANDAL,0FHCMPAL,0FHJZLOP4

CALLFNDKEY2JMPLOP5

LOP4:

RORBL,1LOOPLOP3

MOVYINFU,00H;

如果没有音符键按下则置YINFU为00H

LOP5:

RETKSCAN2 ENDP

FNDKEY1PROCNEAR ;

形成功能键的键值音CMPAL,00H

JZ FK1LOP3CMPAL,01HJZ FK1LOP1CMPAL,02HJZ FK1LOP2CMPAL,03HJZ FK1LOP3CMPAL,04HJZ FK1LOP4CMPAL,08HJZ FK1LOP5

MOVGONGNENG,00HJMPOVER

FK1LOP1:

MOVGONGNENG,01HJMPOVER

FK1LOP2:

MOVGONGNENG,02HJMPOVER

FK1LOP3:

MOVGONGNENG,03HJMPOVER

FK1LOP4:

MOVGONGNENG,04H

JMPOVERFK1LOP5:

MOVGONGNENG,08HJMPOVER

OVER:

RET

FNDKEY1ENDP

FNDKEY2PROCNAER

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

当前位置:首页 > 解决方案 > 工作计划

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

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