电子琴课程设计报告1

课程设计报告

课程                              

题目                              

系 别                                 

年 级           专 业                 

班 级           学 号                 

学生姓名                               

指导教师             职 称             

设计时间                               

目录

绪论... 2

第一章  题目要求... 3

1.1 设计要求... 3

1.2 设计目的... 3

1.3设计环境... 4

第二章      方案设计与论证... 4

2.1 主要设计思想... 4

2.2设计步骤... 4

2.3主要芯片介绍... 5

2.3.1 8253芯片介绍... 5

2.3.2 8255的简介.... 6

第三章  结构框图等设计步骤... 8

3.1总体设计流程图... 8

3.2键盘扫描的实现流程... 8

3.3 音频发声的实现流程... 9

第四章  测试结果及相关分析... 11

4.1硬件实物连线图... 11

4.2 运行结果... 11

第五章  总结与体会... 12

参考文献... 13

附录一  源代码及注释... 14

附录二  键盘电路... 18

绪论

微型计算机从诞生至今已有30余年,其应用已涉及各个领域。与此同时,微机原理及应用技术也得到了飞速发展。显然,掌握微机原理及应用技术是对计算机及自动控制等专业人才的基本要求。微机原理及应用技术以Intel80X86系列微处理机为背景,主要介绍80X86的基本原理、汇编语言程序设计、微机外围接口技术及应用和微机接口技术虚拟实验,内容包括微型计算机系统的基本组成、80486和Pentium微处理器的内部结构、80X86微处理器的寻址方式及指令系统、汇编语言程序设计、存储器系统、输入/输出和中断系统、并行和串行接口技术、总线技术、微机常用外设接口技术、A/D和D/A接口技术。学好微机原理及应用技术这门课对我们今后非常有帮助。

对于本次课程设计,需要我们具备数字电路的理论知识;具备微机原理的理论知识和实践能力;熟悉汇编语言编程技术;熟悉80X86的CPU结构和指令系统;熟悉相关常用接口电路的设计使用方法。

汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为汇编。

第一章  题目要求

1.1 设计要求

利用微机原理实验箱上的数字键1~7作为电子琴键,按下数字键发出相应的音调。具体频率表见表一。

表一   频率表

具体要求:

(1)    通过实验箱上8255芯片接收来自实验箱按键的信息,将该信息送入8088CPU,由CPU判断是哪个按键按下;

(2)    由频率表计算出计数初值供8253使用;

(3)    根据按键值找到对应频率的计数初值,并将其发送实验箱的8253芯片发出对应频率的信号,最后送入音频功放模块发声;

(4)    提高要求:根据按键时间的长短能够控制发声长短。

1.2 设计目的

利用所学微机原理的理论知识进行软硬件整体设计,锻炼学生理论联系实际、提高我们的综合应用能力。

掌握各个接口芯片(如8253和8255等)的功能特性及接口方法,并能运用其实现一个简单的微机应用系统功能器件。

在平时的学习中,我们所学的知识大都是课本上的,在机房的练习大家也都是分散的对各个章节的内容进行练习。因此,缺乏一种系统的设计锻炼。在课程所学结束以后,这样的课程设计十分有助于学生的知识系统的总结到一起。

通过课程设计,使得我们对系统的整个框架的设计有了一个很好的锻炼。这不仅有助于大家找到自己感兴趣的题目,更可以锻炼大家微机原理知识的应用。

1.3设计环境

1、计算机一台

2、实验箱一台(DICE-8086KⅡ)

3、导线若干

第二章           方案设计与论证

2.1 主要设计思想

通过8255和8253来实现电子琴模拟, 主要由两部分组成:第一部分为键盘扫描,用来确定按键位置,并给计数器赋初值。第二部分为发声部分,由计数器0的输出端产生一定频率的方波驱动扬声器发声。控制声音响的时间长短由GATE0的高电平决定,将GATE0接到8255C端口的PC7,并最终由8086对PC7的置位实现。

2.2程序接线图

   

2.3设计步骤

第一步:根据要求确定硬件,如8255,8253。确定8253选用时钟频率1MHZ,粗略确定8255的ABC端口的输入输出状态,8253的工作方式。

第二步:根据图示的频率计算出相应的计数初值,计数初值类型为16位二进制。

第三步:编写主要程序并调试,通过简单连线查看试验的所要达到的效果。通过8255、8253相对应的接线实现不同音频的输出。

第四步:根据键盘原理图得出相应的行列线,由8255完成对键盘单元进行扫描的工作,并编写简单的键盘扫描代码(不涉及8253)并调试,通过硬件测试来查看代码的有用性。

第五步:综合编写代码并调试直至成功,根据提高要求的部分,不断改进代码并通过硬件测试最终完成任务。

2.4主要芯片介绍

2.4.1 8253芯片介绍

8253为可编程定时/计数器,一片8253上有3个独立的16位计数器通道,可以作为定时器或计数器使用,每个计数器都可设定为按照二进制或BCD码进行计数,计数速率可达2MHZ,每个计数器有6种工作方式,可编程设置和改变。

如下图为8253的内部结构图。在图中可以清楚地看到,8253主要是由数据总线缓冲存储器,读写控制电路,控制字寄存器和3个通道4部分所组成。

8253内部结构(如图1所示)及外部引脚(如图2所示):

图1:8253内部结构图

图2:8253引脚图

8253的控制字和编程如图3所示

图3:8253控制字

2.4.2 8255的简介

8255是一个40引脚的双列直插式集成电路芯片。按功能可把8255分为三个逻辑电路部分,即:口电路、总线接口电路和控制逻辑电路。8255共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。总线接口电路用于实现8255和单片微机的信号连接。其中包括:数据总线缓冲器,读/写控制逻辑,控制逻辑电路。

内部的结构和8255的引脚图如图5所示

 

                              图5(b):引脚图

8255A的方式控制字如图6所示

第三章  结构框图等设计步骤

3.1总体设计流程图

电子琴课程设计报告1

3.2键盘扫描的实现流程

3.2.1设计流程图

3.2.2设计思想

过程中主要用到了8255芯片的PB0—PB1,PA0—PA5它们分别与键盘单元的X1—X2,Y1—Y6相连,其中B口为输出端,A口为输入端。由它们对键盘单元进行扫描,并确定键值工作过程为:先给所有行线输入低电平,然后读取列线,检测列线是否为低电平,如果有某条行线输出低电平,则说明该键盘有按键被按下,否则,说明无按键被按下。

3.2.3键盘扫描子程序如下 :

LP2:      MOV  AL,0FCH                   

           MOV  DX,PORT_B

              OUT  DX,AL

              MOV  DX,PORT_A

              IN  AL,DX

              MOV  BL,AL                 ;记录A端口当前状态

              NOT  AL

              CMP  AL,0

              JZ  LP2                     ;无键按下继续扫描                      

              MOV  AL,0FEH

              MOV  DX,PORT_B            ;当有键按下进行具体的行列扫描

              OUT  DX,AL

              MOV  DX,PORT_A

              IN   AL,DX

              NOT  AL

              TEST  AL,01H

              JNZ  NEXT7

              TEST  AL,02H

              JNZ  NEXT4

              TEST  AL,08H

              JNZ  NEXT5

              TEST  AL,20H

              JNZ  NEXT6

              MOV  AL,0FDH

              MOV  DX,PORT_B

              OUT  DX,AL

              MOV  DX,PORT_A

              IN  AL,DX

              NOT  AL

              TEST  AL,01H

              JNZ  NEXT1

              TEST  AL,04H

              JNZ  NEXT2

              TEST  AL,10H

              JNZ  NEXT3

              JMP  LP1           

3.3 音频发声的实现流程

 3.3.1设计流程图

电子琴课程设计报告1

3.3.2设计思想

其中8253(时钟频率为1MHZ)控制扬声器,利用计数器0,并使它工作在方式3---输出对称方波,通过改变频率(输入不同的初值)来实现不同的发声高低,再调用延时子程序来实现发音的长短,使声音更清晰,把输出方波送到扬声器,至此实现不同的音符发声。各音频对应的频率和计数初值如表二所示。

表二 音符频率及计数初值

例如7键对应的音符7的程序代码如下:

NEXT7: MOV DX,JISHU0

      MOV AL,0B3H

   OUT DX,AL

    MOV AL,04H

   OUT DX,AL

     CALL DELAY

3.3.3 38253的工作方式3——方波发生器

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

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

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

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

(3)  GATE信号能使计数过程重新开始,GATE=1允许计数,GATE=0禁止计数。停止后OUT将立即变高电平,当GATE再次变高以后,计数器将自动装入计数初值,重新开始计数。

图4:8253工作方式3波形

第四章  测试结果及相关分析

4.1硬件实物连线图

4.2 运行结果

经多次试验,按键盘上的1~7键发出相应频率的音频,并达到按键按多久就响多久的效果,在按键按下的过程中,音频输出稳定,不会出现卡、顿、走音的现象,而且可以弹奏出一曲曲美妙的歌曲。

第五章  总结与体会

短短时间的课程设计已经结束了,通过这次的课程设计锻炼了我们的实践能力,也是对我们以后的实际工作能力的具体训练和考察过程。现在是一个高科技的时代,微机原理及应用技术已经成为当今电子信息应用中空前活跃的领域,在生活中可以说是无处不在的。因此对于我们这一专业的同学来说,学好微机原理及应用技术是非常重要的。

此次微机原理及应用技术课程设计,从选题到定稿,从理论到实践,在这段时间里,我们学到了很多的东西。不仅巩固了以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。这次的课程设计还让我们学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。更重要的是,我们在这一设计过程中,学会了坚持不懈,不轻言放弃。

设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。

在整个设计中我们懂得了许多东西,也培养了我们独立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大提高了动手的能力,使我们充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不是十全十美,但是在设计过程中所学到的东西是这次课程设计的最大收获和财富。

微机原理及应用技术课程设计虽然结束了,但通过设计所学到的东西将长久存在。相信这次设计带给我们的严谨的学习态度和一丝不苟的科学作风将会给我们未来的工作和学习打下一个更坚实的基础。

参考文献

[1]马春燕主编.微机原理与接口技术.电子工业出版社,2010.5

[2]马春燕主编.微机原理与接口技术实验与学习指导.电子工业出版社,2007.8

[3]朱金钧、麻新旗编著.微机计算机原理及应用技术.机械工业出版社,2005.7

[4]启东计算机厂有限公司,DVCC系列单片机微机仿真实验指导书

附录一  源代码及注释

DATA  SEGMENT

PORT_A     EQU 0FF28H                         ;8255A端口地址

PORT_B     EQU 0FF29H                         ;8255B端口地址

PORT_C     EQU 0FF2AH                         ;8255C端口地址

PORT_CON  EQU 0FF2BH                         ;8255控制端口地址

JISHU0      EQU 0040H                          ;8253通道0端口地址

JISHU1         EQU 0041H                          ;8253通道1端口地址

JISHU2      EQU 0042H                          ;8253通道2端口地址

JISHU_CON  EQU 0043H                          ;8253控制端口地址

DATA  ENDS

CODE SEGMENT

              ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

              MOV DS,AX

              MOV AX,0

              MOV BX,0

              MOV AL,90H                         ;8255控制方式,A端口输入,

              MOV DX, PORT_CON                 ; B端口输出,C端口输出

              OUT DX,AL

              MOV AL,36H                         ;8253控制方式,选通道0,

              MOV DX, JISHU_CON                 ; 16位二进制读写,方式3

              OUT DX,AL

TOP:      CALL GEN                           ;读取8255A端口的数据

              CMP AL,BL                          ;比较AL、BL,

              JNZ  LP1                           ; 主要目的是当按键按下时发出响声

              CALL DELAY                        ;延时

              JMP TOP                            ;跳转,若键一直按下发出连续的响声

LP1:      MOV DX,PORT_CON                 ;8255C端口的PC7置0,PC7控制GATE0

              MOV AL,0EH

              OUT DX,AL

LP2:      MOV AL,0FCH                      ;键盘扫描

              MOV DX,PORT_B

              OUT DX,AL

              MOV DX,PORT_A

              IN  AL,DX

              MOV BL,AL                        ;记录A端口当前状态

              NOT AL

              AND AL,3FH

              CMP AL,0

              JZ  LP2                           ;无键按下继续扫描                     

              MOV AL,0FEH

              MOV DX,PORT_B                  ;当有键按下进行具体的行列扫描

              OUT DX,AL

              MOV DX,PORT_A

              IN  AL,DX

              NOT AL

              TEST AL,01H

              JNZ NEXT7

              TEST AL,02H

              JNZ NEXT4

              TEST AL,08H

              JNZ NEXT5

              TEST AL,20H

              JNZ NEXT6

              MOV AL,0FDH

              MOV DX,PORT_B

              OUT DX,AL

              MOV DX,PORT_A

              IN  AL,DX

              NOT AL

              AND AL,3FH

              TEST AL,01H

              JNZ NEXT1

              TEST AL,04H

              JNZ NEXT2

              TEST AL,10H

              JNZ NEXT3

              JMP LP1                           ;若没有判断出1~7键则返回继续扫描

NEXT7: CALL INTERR                     ;7号键对应频率的初值

              MOV DX,JISHU0

              MOV AL,0B3H

              OUT DX,AL

              MOV AL,04H

              OUT DX,AL

              CALL DELAY

              JMP TOP

NEXT4: CALL INTERR                    ;4号键对应频率的初值

              MOV DX,JISHU0

              MOV AL,0A8H

              OUT DX,AL

              MOV AL,06H

              OUT DX,AL

              CALL DELAY

              JMP TOP

NEXT5: CALL INTERR                    ;5号键对应频率的初值

              MOV DX,JISHU0

              MOV AL,0EEH

              OUT DX,AL

              MOV AL,05H

              OUT DX,AL

              CALL DELAY

              JMP TOP

NEXT6: CALL INTERR                    ;6号键对应频率的初值

              MOV DX,JISHU0

              MOV AL,47H

              OUT DX,AL

              MOV AL,05H

              OUT DX,AL

              CALL DELAY

              JMP TOP

NEXT1: CALL INTERR                   ;1号键对应频率的初值

              MOV DX,JISHU0

              MOV AL,0E1H

              OUT DX,AL

              MOV AL,08H

              OUT DX,AL

              CALL DELAY

              JMP TOP

NEXT2: CALL INTERR                  ;2号键对应频率的初值

              MOV DX,JISHU0

              MOV AL,0E8H

              OUT DX,AL

              MOV AL,07H

              OUT DX,AL

              CALL DELAY

              JMP TOP

NEXT3: CALL INTERR                  ;3号键对应频率的初值

              MOV DX,JISHU0

              MOV AL,0DH

              OUT DX,AL

              MOV AL,07H

              OUT DX,AL

              CALL DELAY

              JMP TOP

DELAY PROC                         ;延时子程序

              MOV CX,0

              LOOP $

              RET

DELAY   ENDP

INTERR      PROC                        

              MOV DX,PORT_CON           ;8255C端口的PC7置1,PC7控制GATE0

              MOV AL,0FH

               OUT DX,AL

               RET

INTERR  ENDP

GEN     PROC

              MOV DX,PORT_A            ;读取8255A端口的数据

              IN AL,DX

              RET

GEN     ENDP

CODE  ENDS

       END  START

附录二  键盘电路


相关推荐