《微机原理与接口技术》实验报告 简易电子琴

更新时间:2023-08-26 14:51:01 阅读量:1 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

简易电子琴

海南大学信息学院信息安全系专业课程

《微机原理与接口技术》 简易电子琴实验报告

简易电子琴

目录

一、设计要求................................................................................................................ 3 二、设计思路................................................................................................................ 3 三、实验材料、工具、或软件.................................................................................... 4 四、实验内容................................................................................................................ 4 1、实验电路连接 ...................................................................................................... 4 2、程序流程图 .......................................................................................................... 5 3、实验电路图 .......................................................................................................... 6 4、8253与8255A相关结构及原理说明 ................................................................. 7

⑴8253..................................................................................................................... 7 ⑵8255A................................................................................................................... 9 5、方案确定 ............................................................................................................ 12 6、设计原程序及注释 ............................................................................................ 13 7、简易电子琴的安装与调试 ................................................................................ 16 五、实验总结.............................................................................................................. 17 六、参考文献.............................................................................................................. 17

简易电子琴

一、设计要求

利用用实验箱上的扬声器与8个开关设计一个电子琴。用开关模拟琴键,当开关拨为“1”时,相当于有键按下,喇叭发出声音。拨动不同的开关则对应不同的音符,每次只能拨一个开关(相当于按下一个键)。连续拨动开关,喇叭发出音乐。

二、设计思路

简易电子琴设计选用8253计数器,8255A并行接口两个芯片:

1. (输入部分)以8255A接八个开关K1~K8,做电子琴按键输入,由输入控制输出,即拨码开关控制扬声器;

2. (发音部分)以8253控制扬声器(扬声器为输出),拨动不同的开关,发出相应的音阶。

将8255A芯片的B端口作为输出端口,PB0-PB7与输出端的K1-K8(分别对应音符1、2、3、4、5、6、7、i)相连接,而8253的时钟输入引脚CLK0与相应的时钟发生器相连接,8253的GATA0接开关K9(静音),8253的0通道的OUT0信号与LB区的SIN口相连接,从而驱动并控制喇叭的发音:当INPUT上的开关对应为“1”时喇叭连通,能够发出声音;当INPUT上的开关对应为“0”时喇叭被中断,不能发出声音。这样,我们在硬件上实现了通过8255A芯片输入设备的输入信号并通过它传送给8253,让8253进行相应的处理后输出给喇叭的功能。

我们要通过对8255A的初始化和编程控制它的相关工作,使其能够实现上面提到的相应功能。然后,我们对8253进行编程,使其初始化,并根据从8255A芯片传递来的信息的种类为8253的运行编写不同的程序段,使其在运行中根据8255A芯片传递来的信息的不同执行不同的程序(输出不同的音频)。

音符转换表如下所示:

简易电子琴

三、实验材料、工具、或软件

接口实验箱平台、Windows XP计算机

四、实验内容 1、实验电路连接

(1)8253的GATE0接开关K9。

(2)8253的CLK0插孔接分频器74LS393(左上方)的T1插孔,T1输出的频率为1MHZ。

(3)8253的OUT0接喇叭,即LB区的SIN口。

(4)8255A的PB0-PB7(端口B输入输出线,一个8位的I/O锁存器, 一个8位的输入输出缓冲器)接开关K1-K8(8255A的片选信号,实验箱系统已连接好;8255A的PA口不给出引脚,A口系统留用。) (5)实验箱接到喇叭的J5引脚

实际电路连接图

简易电子琴

2、程序流程图

简易电子琴

3

简易电子琴

4、8253与8255A相关结构及原理说明 ⑴8253

① 8253内部结构

8253定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的16位减法计数器,分别称为计数器0、计数器1、计数器2。每个计数器计数频率为0~2MHZ;8253的内部数据总线缓冲器为双向三态,可直接接在系统数据总路线上,通过CPU写入计数初值,也可由CPU读出计数当前值; 其工作方式通过控制字确定。

② 计数器内部结构

每个计数器由一个16位可预置的减1计数器组成,计数初值可保存在16位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进行重复计数。每一个计数器有一个时钟输入端CLK作为计数脉冲源,计数方式可以是二进制,计数范围1~10000H,也可以是十进制,计数范围1~65536。门控端GATE用于控制计数开始和停止。输出OUT端当计数器计数值减到零时,该端输出标志信号。 ③ 8253端口地址选择

图1.0 8253内部结构

简易电子琴

④ 8253功能

8253既可作定时器又可作计数器:

(1) 计数:计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,由OUT端输出一个标志信号。

(2) 定时:计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。

除上述典型应用外,8253还可作频率发生器、分频器、实时钟、单脉冲发生器等。 ⑤ 8253控制字

图1.1 8253方式控制字 ⑥ 8253工作方式

(1) 方式0:计数结束产生中断方式

当写入控制字后,OUT变为低电平,当写入初值后立即开始计数,当计数结束时,变成高电平。

(2) 方式1:可编程单次脉冲方式

当初值装入后且GATE由低变高时,OUT变为低电平,计数结束变为高电平。 (3) 方式2:频率发生器方式

当初值装入时,OUT变为高电平;计数结束,OUT变为低电平。该方式下如果计数未结

简易电子琴

束,但GATE为低电平时,立即停止计数,强迫OUT变为高电平,当GATE再变为高时,便启动一次新的计数周期。 (4) 方式3:方波发生器

当装入初值后,在GATE上升沿启动计数,OUT输出高电平;当计数完成一半时,OUT输出低电平。 (5) 方式4:软件触发选通

当写入控制字后,OUT输出为高电平;装入初值且GATE为高电平时开始计数,当计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。 (6) 方式5:硬件触发选通

在GATE上升沿启动计数器,OUT一直保持高电平;计数结束,OUT端输出一个宽度等于一个时钟周期的负脉冲。

⑵8255A

① 8255A内部结构

8255A内部有3个8位I/O端口:A口、B口、C口;也可以分为各有12位的两组:A和B组,A组包含A口8位和C口的高4位,B组包含B口8位和C口的低4位;8255A中的读写控制逻辑用于控制芯片内寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和CPU系统总线相连。

图2.0 8255A内部结构

简易电子琴

②8255A端口地址

③8255A工作方式

8255A芯片有三种工作方式:方式0、方式1、方式2。它通过对控制寄存器写入不同的控制字来决定其三种不同的工作方式。 (1)方式0:基本输入/输出

该方式下的A口8位和B口8位可以由输入的控制字决定为输入或输出,C口分成高4位(PC4-PC7)和低4位(PC0-PC3)两组,也有控制字决定其输入或输出。需注意的是:该方式下,只能将C口其中一组的四位全部置为输入或输出。

图2.1 工作方式0 (2)方式1:选通输入/输出

该方式又叫单向输入输出方式,它分为A、B两组,A组由数据口A和控制口C的高4位组成,B组由数据口B和控制口C的低4位组成。数据口的输入/输出都是锁存的,与方式不同,由控制字来决定它作为输入还是输出。C口的相应位用于寄存数据传送中所需的状态信号和控制信息。

简易电子琴

图2.2 工作方式1输入 图2.3 工作方式1输出 (3)方式2:双向输入/输出

本方式只有A组(数据口A和控制口C的低3位PC0-PC2)可以使用,此时A口为输入输出双向口,C口中的高5位(PC3-PC7)作为A口的控制位。

④8255A控制字

图2.5 8255A方式选择控制字

图2.4 工作方式2

简易电子琴

图2.6 8255A的PC口按置位/复位控制字

5、方案确定

⑴根据扬声器发声原理可知:不同频率的方波通过扬声器可发出不同的声音。

⑵由此构想运用8253工作在方式3的状态下控制其0#计数器对应寄存器中的数值,然后将输出端口OUT0产生的方波通过扬声器转换成为声音。

⑶为了实现弹奏按键(即拨码开关)来控制扬声器,可以通过用拨码开关改变8253(工作在方式3的状态下)0#选择计数器对应寄存器中的数值,8253输出端口OUT0与扬声器相连接。 ⑷最后要实现的就是将拨码开关对应的数字信号存入寄存器中。

采用8255A并行接口特点,使端口A工作在方式0并作为输出口,端口B工作在方式0,并作为输入口。将拨码开关与8255A的输入端口B相连接。

简易电子琴

6、设计原程序及注释

code segment

assume cs:code ,ds:data ;把代码段CS、数据段DS分别与相应的寄存器相连接

;ASSUME语句只是使汇编程序知道在程序执行时各个段寄存器的值,而这些寄存器的实际值(除了代码段寄存器CS以外),还必须在程序执行时,用MOV指令来赋给,不起真正的关联作用。

data segment ;定义数据段

data1 dw 4002,3567,3178,2834,2527,2250,2005,1786 ;8253计数值,不同频率

脉冲需要不同计数值(此处使用T1)

data ends ;定义数据段结束

org 1500h ;伪指令org:指定了段内在它以后的程序或数据块存放的起始地址

(本实验采用1500h,与实验室实验箱相关)

start : mov ax,data ;起真正关联作用,对数据段寄存器DS初始化,取出DATA

数据段的段地址,借助AX寄存器中转 ;START为语句标号,可作为跳转目标

mov ds,ax ;实现段寄存器DS的初始化 mov dx, 0ff2bh ;8255A控制口地址:0FF2BH mov al,82h ;10000010B

out dx,al ;写8255A芯片的控制字,实现工作在方式0,A端口和C端

口输出,B端口输入

b8255: mov bx,offset data1 ;初始化地址指针,以后就可以用这些指针来间接

寻址缓冲区

mov dx, 0ff29h;8255A的B口地址:0FF29H,将8255的B口地址赋给DX in al,dx ;从B口得到输入信息送到AL中 test al,80h ;10000000B检验按下键是否在K8

;test(按位与)用于检测哪个开关拨上去

jnz lop8 ; 不是K8则跳到LOP8,以下均类似(jnz不等于0转移,ZF=0)

简易电子琴

test al,40h ;01000000B检验按下键是否在K7 ;注意:高电平有效 jnz lop7

test al,20h ;00100000B检验按下键是否在K6 jnz lop6

test al,10h ;00010000B检验按下键是否在K5 jnz lop5

test al,08h ;00001000B检验按下键是否在K4 jnz lop4

test al,04h ;00000100B检验按下键是否在K3 jnz lop3

test al,02h ;00000010B检验按下键是否在K2 jnz lop2

test al,01h ;00000001B检验按下键是否在K1 jnz lop1

jmp b8255 ;跳转至b8255

lop8: add bx,2 ;2:每一个字占2个字节,以下均一致

;bx+2的值是data段中离开存储单元的两个字节的存储单元的地址,而不是bx单元的内容加2

lop7: add bx,2 lop6: add bx,2 lop5: add bx,2 lop4: add bx,2 lop3: add bx,2 lop2: add bx,2 lop1: add bx,2

;每次进行test后不为0则跳转到指定lop,从指定lop开始地址依次加2,最终执行完所有的lop后使得地址指向拨上去的开关对应的地址(对应当前喇叭发出的音符)的下一个地址(对应当前音符的下一个音符)

简易电子琴

mov dx, 0043h ;8253的控制字端口地址为:43H

;在送出频率计数值之前,还要给方式寄存器送一个方

式值,该数决定对哪一个通道编程,采用什么模式,送入通道的计数值是一字节还是两字节,是二进制码还是BCD码。

mov al,37h ;00110111B

out dx,al ;写8253芯片的控制字,选择计数器0,先写最低有效位,

然后写最高有效位,实现工作在方式3,8253的每个计数器的计数制为二进制

;out指令把输出结果送到端口DX中去 mov dx,0040h ;8253的计数器0的地址为:40H

mov ax,word ptr ds:[bx] ;写计数值,从偏移中取出写到计数器端口 ;运算符PTR建立一个新的存储器地址操作数。

新的操作数的段地址和段内偏移量与PTR运算符右边的操作数的对应分量相同(ds:数据段段地址;bx:数据段内偏移量;地址=ds×16+bx),而类型由PTR的左边的操作数指定,此处为word字类型。

out dx,al ;先写最低有效位(即低8位) mov al,ah

out dx,al ;再写最高有效位(即高8位) 这时喇叭发出声音 mov cx,0ffffh ;0ffffh控制延时 11: mov dx,03h

12:dec dx ;对指定的操作数减1,然后把结果送回操作数 jnz 12 ;不等于0转移,跳转至12 loop 11 ;跳转到11 目的是增加时延

;LOOP指令使CX减1,且判断若CX不等于0,则循环至目标操作数 一条LOOP指令相当于以下两种指令的组合: DEC CX

简易电子琴

JNZ AGAIN

mov dx, 0ff2ah ;8255A的C口地址:0FF2AH mov al,0

out dx,al ;写端口C控制字,使bit0复位的控制字为00000000B 注意:使端口C按复位的控制字被写入控制字寄存器 jmp b8255 ;跳转至b8255 ret ;从过程返回 code ends ;代码段结束

end start ;end用来结束整个源程序

7、简易电子琴的安装与调试

硬件调试

⑴连接简易电子琴系统的电路图。

⑵将DVCC实验箱与计算机保持串口通讯成功。 ⑶将汇编程序代码输入计算机进行硬件调试。 软件调试

⑴把弹奏功能的程序代码输入计算机,与硬件相结合进行修改调试(其中主要运用跳转、循环指令)。 ⑵实现弹奏功能。 最终结果

当开关拨为“1”时,相当于有键按下,喇叭发出声音。拨动不同的开关则对应不同的音符,每次只能拨一个开关。连续拨动开关,喇叭发出音乐。

注意:每次只能拨一个开关,当Kn(n=1、2、3 8、9)开关拨开时,发出响音,若Kn未关闭,则下一个拨开开关只能是Kn之后的开关才可发出响音,拨开Kn之前的开关没有发音;若Kn关闭,则下一个拨开开关可以是所有开关中的任何一个,所以,如果我们想自己弹奏一首音乐的话,我们可以每次拨开一个开关,然后关闭,再拨下一个音符对应开关,这样就可以按音乐的乐谱弹奏出所有音符。

简易电子琴

五、实验总结

在为期一周的微机原理课程设计中,我对微机原理及应用这门课有了更深的认识,系统的掌握了微机原理及接口的应用知识,我学会了制做项目的一般步骤。第一部是硬件设计主要是实现控制对象与被控制对象之间的联系。第二步就是软件设计,就是要完成各个可编程芯片与CPU之间的数据传送。在本次设计中对硬件要求就要熟练掌握可编程器件8255A和8253的应用。对软件设计就要熟练掌握汇编语言。此次实验后,我对8253的工作方式,尤其是方式3,还有8253,8255A的工作方式控制字等之前觉得很费解的概念有了实质的理解。由于时间限制的问题和硬件的局限性也只能将电子琴的功能简易化,实现自己弹奏音乐。此外,汇编语言是一门较难的计算机内容,在以后学习中仍需加强。

虽然此次课程设计的过程是艰辛的,但结果还是令我比较欣慰的。在此特别感谢老师对我的指导。

六、参考文献

《微机原理与接口技术》(第2版) 周明德、蒋本珊 编著 人民邮电出版社

本文来源:https://www.bwwdw.com/article/3l1i.html

《《微机原理与接口技术》实验报告 简易电子琴.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文
范文搜索
下载文档
Top