当前位置:文档之家› 电子琴微机原理基于8086课程设计

电子琴微机原理基于8086课程设计

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.湖南科技大学潇湘学院信息与电气工程系《课程设计报告》题目:基于8086的电子琴设计专业:通信工程班级:通信一班姓名:罗婷学号: 18指导老师:欧青立陈君宋芳管志利李目 2015年 12 月 28 日信息与电气工程系课程设计任务书2015—2016 学年第 1 学期专业:通信工程学号: 18 姓名:罗婷课程设计名称:微机原理与接口技术设计题目:基于8056的电子琴设计完成期限:自 2015 年 12 月 14 日至 2015 年 12 月 26 日共 2 周设计内容:通过 8255 和 8253 来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。

输入部分:主要是由 8255 和 8 个常开型开关来完成。

发音部分:CUP 通过对定时器 8253 的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端口 61H 的最低位控制通道 2 门控的开断,以产生特殊的音响。

本文用到的是 8253 的方式 3——方波发生器。

基本要求:1.以8255接八个开关K1~K8,做电子琴按键输入。

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

要求:指导教师(签字):批准日期:年月日摘要定时器/ 计数器8253 可以产生不同频率的信号, 经过三极管放大驱动扬声器发出不同的音阶。

硬件上以8086 作为核心处理单元, 将8253 的输出端连接音频模块。

软件上检测按键是否有键按下, 判断按键并驱动对应发音子程序。

通用MIDI音源模块制作制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。

这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。

手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的QS6400 等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置。

此外还有音乐盒、附有生日歌的生日卡片等等。

所以利用微机制作的简易电子琴在我们的日常生活中随处可见。

关键词:Altium Designer;masm.5.0 ;8086;8255;8253定时器;目录1. 设计目的 (4)2. 元件与仪器 (4)3. 设计内容 (4)4. 电路工作原理 (4)5.1 控制模块工作原理 (5)5.2.0 8255A芯片: (5)5.2.1 8255A的内部结构 (6)5.2.2 8255的外部引脚 (6)5.2.3 8255的方式控制字 (7)6. 发声模块工作原理 (7)6.1.1 8253芯片 (7)6.1.2 8253的6种工作方式: (7)7.整体电路图 (8)8.主要程序与编译软件 (8)9. 软件程序: (9)10. 心得体会 (11)1.设计目的检验和提高我在原理与接口综合应用方面分析问题与解决问题的能力,同时也给我提供更多、更好的训练机会。

根据设计要求,尽可能完成设计要求的功能,选择最合适的器件,构成最有效的硬件电路来完成。

2. 元件与仪器1.计时器82532.并行控制器8255A3.实验台4. PC机3.设计内容⑴根据扬声器发声原理可知:不同频率的方波通过扬声器可发出不同的声音。

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

⑶为了实现弹奏按键来控制扬声器,可以通过用开关改变8253(工作在方式3的状态下)2#计数器对应寄存器中的数值,8253输出端口OUT2 通过74LS08后与扬声器相连接。

⑷最后要实现的就是将开关对应的数字信号存入寄存器中采用8255A并行接口特点,使端口A工作在方式PB1并作为输出口,端口B工作在方式0,并作为输入口。

将开关与8255A的输入端口A相连接。

4. 电路工作原理整个电路采用模块化来进行设计,分为控制模块和发声模块。

主要的器件有一个并行接口8255,和一个8253定时器。

输入部分的硬件原理图比较简单,控制模块其主要是由8个常开型开关和一个并行接口8255组成。

8个开关一端接地,另一端接到8255的A口输入,并且通过一个电阻接到+5V。

因此,在开关不按下时,从8255A口输入的是高电平,当开关按下时,输入的则是低电平,这样通过低电平触发,既方便也对芯片起保护作用。

通过软件检测输入的数据,然后给8253送相应频率的计数值。

发音模块连接到扬声器上的是8253定时器2,GATE2与端口61H的PB0相连,当PB0=1时,GATE2获得高电平,使定时器2可以在模式3(方波)下工作。

定时器2的OUT2与端口61H的PB1通过一个与门与扬声器的驱动电路相连。

当PB1=1时,允许OUT2的输出信号到达扬声器电路。

因此,只有PB0和PB1同时为“1”时,才能驱动扬声器鸣叫。

5.1 控制模块工作原理控制部分主要是由8255和8个常开型开关来完成。

常开型开关如右图。

8个常开型开关K1~K8与8255的A口PA0~PA7相接,不触动开关时,为高电平输入,当按下开关时,就接地,为低电平输入。

例如当K1键按下时,从8255中A口输入的数为B,十六进制为0FEH。

每一个开关按下时,都对应一个ASCII 码,由于PC计算机的时钟晶振为1.1931816MHz,根据频率的公式:f=1/T则频率周期为T=1/f定时器的计数器为16位计数器,则最大的计数值为65536,那么其定时时间为:t=65536*T=65536/f=0.0549254(秒)5.2 8255A芯片:8255A是为Intel公司的微处理器配套的通用可编程并行接口芯片,其基本功能如下:8255A接口芯片有3个8位并行输入/输出端口,可利用编程方法设置3个端口是作为输入端口还是作为输出端口;8255A能适应CPU与I/O接口之间的多种数据传送方式的要求。

如无条件传送,查询方式传送,中断方式传送。

与此相应,8255A设置了方式0、方式1以及方式2。

5.2.1 8255A的内部结构8255A的C口比较特殊,除作数据口外,在工作方式1和2下,它的部分信号线被分配作专用的联络应答信号。

8255A的内部结构机外部引脚,它包括四个部分:数据总线缓冲器,读写控制逻辑,A组和B组控制电路。

1. 数据总线缓冲器2. 读写控制逻辑3. A组和B组控制A和端口C的高4位(PC7~PC4)构成A组,由A组控制部件来对它进行控制;端口B和端口C的低4位(PC3~PC0)构成B组,由B组控制部件对它进行控制。

5.2.2 8255的外部引脚8255的外部引脚1. 与CPU相连的引脚D7~D0:数据线,双向、三态。

:读信号,输入、低电平有效。

:写信号,输入、低电平有效信号。

:片选信号,输入、低电平有效。

2. 8255A的数据线、片选信号线、地址线、读写控制线等分别与系统总线相连,其中A、B、C三个端口一排针形式引出。

表信号线寄存口编址IY03 A口60HB口61HC口62H控制寄存器63H5.2.3 8255的方式控制字8255A的工作方式控制字格式和各位的含义。

A组有三种工作方式,而B只有两种工作方式。

方式0—基本的输入/输出方式方式1—选通式输入/输出方式2—双向选通输入/输出方式6. 发声模块工作原理要使扬声器发出不同的音阶, 就得输入不同频率的信号。

通过给定时/ 计数器 8253 送入不同的初值, 可以从输出端得到不同频率的波形,在74LS08的作用下经过放大器三极管8550的放大作用, 便可驱动扬声器发出不同的音阶。

音阶声音的持续时间可以通过软件延时程序实现。

1~7 某一按键被系统检测到, 系统驱动PC对应子程序使扬声器输出对应的音阶。

6.1.1 8253芯片8253内设三个计数器都独立工作,用-65536之间的一个数去输入频率,可以实现每个计数器的独立编程。

每个计数器占有一个独立的端口地址。

可以通过A0、A1、和CS来寻址这些端口如下图所示:6.1.2 8253的6种工作方式:方式0--计数结束产生中断方式1--单稳负脉冲信号发生器方式2--分频器方式3--方波信号发生器方式4--软件触发的选通信号发生器方式5--硬件触发的选通信号发生器本课题采用通道二方式3,当通道2用于发声时,采用的是模式3,在模式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。

从定时器输出的方波信号,三极管驱动扬声器。

送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号,端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。

显然只有PB0和PB1都是1时,才能使扬声器发出声音。

控制音长的时间可以简单地通过反复执行指令来得到。

我们知道执行2801次LOOP指令约需要10MS的时间。

因此用10MS的倍数值来控制扬声器开关的时间间隔,就可控制发声的音长了。

打开X86 PC扬声器,GATE2必须设置为高电平,以便计数器2提供CLK信号。

该端口61H的PB0来完成,由下图还可以看到计数器2的OUT2和端口61H的PB1进行与操作,然后输入到PNP三极管8550进行放大作用再到扬声器中进行播放。

为此,为了将OUT2传送到扬声器,端口61H的PB1也必须为高电平。

IN AL, 61H ;获得端口B的当前设置MOV AH, AL ;保存OR AL, 00000011B ;使PB0=1,PB1=1MON AL, AH ;获得端口B的初始设置OUT 61H, AL ;关闭扬声器7. 整体电路图8.主要程序与编译软件Masmforwindows集成实验环境是从事一线教学的大学教师针对汇编语言初学者的特点开发的一个简单易用的汇编语言学习与实验软件,现在已全面支持最新操作系统VISTA,支持DOS的16/32位汇编程序和Windows下的32汇编程序(并提供调试通过的30个WINDOWS 汇编程序实例源代码),它具有错误信息自动定位、关键字实时帮助并且在帮助中动画演示汇编指令的执行过程、语法着色、无限次撤消与恢复、WORD式的查找、替换、定位、支持中文、长文件名等功能。

本课程设计采用Masmforwindows集成实验环境极大方便了程序的编辑与调试。

9. 软件程序:DATA SEGMENTTABLE DW 493 ;K2—发si的音493HzDW 440 ;K3—发la的音440HzDW 392 ;K4—发sol的音392HzDW 349 ;K5—发fa的音349HzDW 329 ;K6—发mi的音329HzDW 293 ;K7—发re的音293HzDW 261 ;K8—发do的音261Hz DATA ENDS;定义堆栈段STACK SEGMENT PARA STACK 'STACK'STA DB 48 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENT ;定义代码段ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AX ;初始化DSMOV AX,STACKMOV SS,AX ;初始化SSMOV AX,TOPMOV SP,AXMOV AL,90H ;初始化8255OUT 63H,AL;从8255A口输入一个数据K0: IN AL,60H;以下为检测哪个键按下CMP AL,0FEHJZ K1CMP AL,0FDHJZ K2CMP AL,0FBHJZ K3CMP AL,0F7HJZ K4CMP AL,0EFHJZ K5CMP AL,0DFHJZ K6CMP AL,0BFHJZ K7CMP AL,7FHJZ K8JMP EXIT ;如没有键按下,或不止一个键按下,则跳到EXIT K1: JMP K0 ;如果为K1按下,则返回继续循环,为静音K2: MOV BX,TABLE ;如为其它键则把相应的频率送给BXJMP SOUNDFK3: MOV BX,TABLE+1JMP SOUNDFK4: MOV BX,TABLE+2JMP SOUNDFK5: MOV BX,TABLE+3JMP SOUNDFK6: MOV BX,TABLE+4JMP SOUNDFK7: MOV BX,TABLE+5JMP SOUNDFK8: MOV BX,TABLE+6SOUNDF: MOV DX,12HMOV AX,348CHDIV BXCALL SOUND ;调用发音子程序CALL DELAY ;调用延时程序EXIT: MOV AH,06H ;有无键盘动作MOV DL,0FFHINT 21HJZ K0 ;如果没有,则跳到KO循环MOV AH,4CH ;如果有,则结束返回INT 21H;以下是发音子程序SOUND PROC NEARPUSH AXMOV AL,B ;初始化8253OUT 43H,ALPOP AXOUT 42H,AL ;送计数值MOV AL,AHOUT 42H,ALIN AL,Y2 ;发音设置,打开扬声器OR AL,03HOUT Y2,ALRETSOUND ENDP;以下是延时子程序DELAY PROC NEARPUSH CXPUSH AXMOV AX,0FFFHX11: MOV CX,2801X12: LOOP X12DEC AXJNZ X11POP AXPOP CXRETDELAY ENDPCODE ENDSEND START10. 心得体会在为期两周的课程设计中我学到了很多。

相关主题