(音乐)基于8086电子琴的设计与实现_第1页
(音乐)基于8086电子琴的设计与实现_第2页
(音乐)基于8086电子琴的设计与实现_第3页
(音乐)基于8086电子琴的设计与实现_第4页
免费预览已结束,剩余30页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

郑州科技学院微机原理与接口技术课程设计 题 目 _基于8086电子琴的设计与实现 学生姓名 专业班级 12级计算机科学与技术一班 学 号 院 (系) 信息工程 指导教师 完成时间 20xx 年 1 月 11 日 音乐类目 录1 引言12 设计方案与论证32.1方案一32.2 方案二32.2.1设计思路42.2.2各个音节频率的设定83 设计原理及功能说明93.1硬件93.1.1 8253简介103.1.2 8255简介123.2 软件143.2.1 设计实验总流程图143.2.2 设计子程序流程图154 调试与结果测试174.1 硬件调试174.2 软件调试204.3测试方案和测试结果225 总结23参考文献26附录1:总体电路原理图27附录2:元器件清单28附录3:源代码29音乐类1 引言随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要作用。多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。本次课程设计是基于微机原理与接口技术的简单应用。微机技术目前运用最广泛的就是单片机。单片机是随着大规模集成电路的出现极其发展,将计算机的CPU、RAM、ROM定时/计数器和多种I/O接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机。它拥有优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果。单片机控制通用MIDI音源模块制作制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的QS6400 等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置。此外还有音乐盒、附有生日歌的生日卡片等等。所以利用微机制作的简易电子琴在我们的日常生活中随处可见1。微机原理简易电子琴设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。利用定时器可发出不同频率的方波,不同频率的方波经喇叭就会发出不同音调。其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的方波2,本设计中按键一次,会发出方波,松开后随之延时,但在延时的期间继续检测按键,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。本次课程设计的目的是通过D/A转换器产生摸拟信号,使PC机作为简易电子琴。其主要任务有以下几点:基于8086系统;使用计算机的数字键1、2、3、4、5、6、7、8作为电子琴的按键,按下即可发出相应的音阶;音阶通过扬声器发出声音。本次设计通过8255和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。输入部分:主要是由8255和8个常开型开关来完成。发音部分:CUP通过对定时器8253的通道2进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响3。本文用到的是8253的方式3方波发生器。通过课程设计使学生更进一步掌握微机原理及应用课程的有关知识,提高应用微机解决问题的能力,加深对微机应用的理解。通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用微机解决问题的步骤及方法。为以后学生结合专业从事微机应用设计奠定基础。2 设计方案与论证2.1方案一首先利用了编程程序,编辑8255芯片控制字,对其进行初始化,使其工作在方式0,即基本输入输出状态,将8255的A端口设置为输出,C端口进行,经CPU运算后,输出到8254芯片的A端口中,由此实现对其的初始化。将8254芯片设置为工作在方式3,即输出对称方波状态。A端口为输入,“OUT”指令可将输出对应一定频率的方波送到扬声器中,由此实现发声4。本实验频率大小控制发出声音的高低,通过对延时程序的调用控制发出声音的长短。并通过所编程序实现对键盘的重复扫描,从而可以弹奏多个音符的试验目的。2.2 方案二8253的CLK0接1MHz时钟,GATE0接+5V,OUT0接8255的PA0,K8跳线连接喇叭,使用汇编语言设计一个运行于计算机的电子琴程序,程序应实现弹奏功能。其中弹奏:用户每按一琴键弹奏相应音符;软件预想功能为:按数字18为弹奏功能,按下即发出相应的音阶。按键发音,当从键盘上敲击18时,音响发出哆、唻、咪、发、嗦、啦、唏、唗的音节。对比方案一,其实两个方案差不多,但是我对于8254不熟悉,所以最终决定此方案为我选择的最佳方案,并附上本次设计的设计框图如图2-1所示:系统总线 8255芯片键盘8253芯片扬声器发声图2-1 设计框图2.2.1设计思路 电子琴的设计实际上就是要设计一个程序,能够通过该程序控制PC机内扬声器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。PC机内的扬声器是通过并行接口芯片8255和定时芯片8253来控制发音的。在本次课程设计中,分析和确定程序总体设计目标:电子琴基本功能后,将总体目标确定为连接电路与编程来实现功能。程序设计的思路按以下顺序进行:(1) 分析与确定程序总体设计目标;通过D/A转换器产生摸拟信号,使PC机作为简易电子琴。其总体原理图如图2-2所示:图2-2 总体原理图(2)按照电路图连接实验箱,如图2-3所示:图2-3 电路连接图(3)编写源程序,进行调试,包括: 发音部分功能实现由更件的连接形式可知,扬声器的开断是由8255的PB0和PB1以及8253通道2同时控制的,PB0和PB1同时为高电平时,扬声器开,有一个为低电平时,扬声器关断,又知8255 B口地址为61H,8253通道2地址为42H,控制口地址为43H。具体程序编写5如下: 8253初始化程序段: mov al,10110110b ;选择8253的通道2,并设置为工作方式3out 43h,al mov ax,bxout 42h,al ;将计数初值的低8位写入计数通道mov al,ahout 42h,al ;将计数初值的高8位写入计数通道开扬声器程序段:in al,61h ;读入B口数据or al,03h ;将PB0 和PB1置1out 61h,al ;将设置好的数据送回B口关扬声器程序段:in al,61h ;读入B口数据 and al,0fch ;将PB0 和PB1置0out 61h,a ;将设置好的数据送回B口弹奏功能的实现 当按键为数字1-8时,选择弹奏功能,通过对按键的判断,求得其偏移地址,然后通过查表得其相应频率值,再由上述计算计数初值的方法求得计数初值,然后将计数初值送人8253的通道2,最后调用发音子程序即实现弹奏功能。具体程序段如下: sub al,31h ;求偏移量 shl al,1 mov bl,al ;保存偏移量 mov bh,0 mov ax,num1 ;计算计数初值 mov dx,num2 div word ptrtab+bx mov bx,ax ;保存计数初值延时功能的实现当弹奏完音乐之后,调用延时子程序,音乐延时播放。具体程序段6如下:delay proc near ;延时子程序ccc:mov bx,offset timemov dx,io8253b ;置8253通道0为方式0工作mov al,10hout dx,almov dx,io8255b ;设8255A口输入mov al,9bhout dx,almov al,num ;取相应的时间常数xlatmov dx,io8253aout dx,al ;向8253通道0输出kkk:mov dx,io8255ain al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为1jz kkk ;若不为1,则转KKKret ;子程序返回delay endp2.2.2各个音节频率的设定(1)对于一个特定的D/A转换接口电路CPU执行一条输出指令将数据送入D/A即可在其输出端得到一定的电压输出。给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。对于音乐,每个音阶都有确定的频率,如表2-1所示: 表2-1 各音阶标称频率表音阶12345678频率(单位:Hz)261.1293.7329.6349.2392.0440.0493.9529.7对应num取值(us)120106948979706359以 18 接 8255 的 A 口做为电子琴的键盘分别输入哆、唻、咪、发、嗦、啦、唏、唗 的音,以 8255 的 B 口作为输出。用 8253 定时器产生频率控制扬声器发声。 以 8255 接八个开关18,做电子琴按键输入。 以 8253 控制扬声器,发出相应的音阶。 要求:1发 哆的音 261.1Hz2发 唻的音 293.7Hz 3发 咪的音 329.6Hz 4发 发的音 349.2Hz 5发 嗦的音 392.0Hz 6发 啦的音 440.0Hz 7发 唏的音 493.9Hz 8发 唗的音 529.7Hz(2)产生一个正弦波的数据可取32个(小于亦可),不同频率的区别,可通过调节向D/A转换器输出数据的时间间隔,例如:发1频率为261.1HZ,周期为1/261.1=3.83ms,输出数据的时间间隔为3.83ms/32=0.12ms。定时时间可以由8253配合8255来实现。按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。3 设计原理及功能说明3.1硬件通过8255 和8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。 输入部分:主要是由8255 和8 个常开型开关来完成。 发音部分:CUP 通过对定时器的通道2 进行编程,使其I/O寄存器接收一个控制声音频率的16位计数值,端口61H的最低位控制通道2门控的开断,以产生特殊的音响。 当通道2用于发声时,采用的是方式3,在方式3下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片8255(端口地址为61H)来的双重控制,端口61H的最低位控制通道2的门控开断,以产生特殊的音频信号端口61H的PB1位和定时器的输出信号同时作为与门的输入,PB0和PB1位可由程序决定为0还是为1。显然只有PB0和PB1都是1时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。 3.1.1 8253简介(1)基本介绍8253芯片是常用的可编程计数器,在微机中有着极其重要的作用。常用于事件计数器,单稳态触发器,分频器,方波发生器,硬件触发的单脉冲发生器等。计数器/定时器8253包括3个独立的16位计数器通道,而每个计数器都有6种工作方式,可以按二进制或十进制(BCD码)进行计数。本文用到的是8253的方式3方波发生器来实现了简易电子琴的设计。(2)工作原理8253芯片中有3个计数通道,称为通道0,1,2,它们与外部电路相连的信号线有3根:CLK,GATE,OUT,CLK是脉冲输入端,GATE是门控信号,OUT是输出信号,计数器工作在减1状态。其内部结构图,方式控制字格式,如图3-1,图3-2所示。其中当计数器工作在方式3时,输出信号为方波信号。内部总线A1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7计数器0计数器2计数器1控制寄存器A0数据总线缓冲器R/W逻辑电路图3-1 8253内部结构图D7D6D5D4D3D2D1D0计数器选择00 计数器001计数器110 计数器211 不用00 计数器锁存01 读写低8位10 读写高8位11 读写16位工作方式选择000 方式0001 方式110 方式211 方式3100 方式4101 方式5计数方式0 二进制1 BCD计数图3-2 8253控制字格式PC机内8253的通道0,通道1,通道2,控制口的端口地址分别为:40H,41H,42,43H。因为扬声器是由通道2来控制的,故应选择通道2,工作方式选为方式3,输出的信号则为方波信号。(3)8253的工作方式3方波发生器其特点是:输出为周期性的方波。若计数值为 N,则输出方波的周期是 N 个 CLK 脉冲的宽度; 写入控制字后,输出将变为高电平,当写入计数初值后,就开始计数,输 出仍为高电平; 当计数到初值的一半时, 输出变为低电平, 直至计数到 0, 输出又变为高电平,重新开始计数; 若计数值为偶数,则输出对称方波;如果计数值为奇数,则前(N+1)/2 个 CLK 脉冲期间输出为高电平,后(N-1)/2 个 CLK 脉冲期间输出为低电 平; GATE 信号能使计数过程重新开始,GATE=1 允许计数,GATE=0 禁止计数。 停止后 OUT 将立即变高电平,当 GATE 再次变高以后,计数器将自动装入 计数初值,重新开始计数。3.1.2 8255简介(1)基本介绍按功能可把8255分为三个逻辑电路部分。即:口电路、总线接口电路和控制逻辑电路。8255共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。 (2)工作原理8255的内部结构图如图3-3所示,它有3个数据端口,分为两组,A组由A口和C口高四位组成,B组由B口和C口低四位组成。其方式控制字如图3-4所示。图3-3 8255内部结构图图3-4 8255方式控制字方式控制字的特征位D0D7D6D5D4D3D2D1 1 A组工作方式0 0方式00 1方式11 方式2B组工作方式0方式01方式1A口输入/输出1输入0输出PC7PC4输入/输出1输入0输出B口输入/输出1输入0输出PC3PC0输入/输出1输入0输出PC机内8255的A口,B口,C口和控制口的端口地址分别为:60H,61H,62H,63H。3.2 软件3.2.1 设计实验总流程图结合实验指导书的程序,实现简单的电子琴功能。电子琴主程序流程图如图3-5所示:开始键盘读入一个字符是ESC键吗?YNN返回DOS是数字18键吗?Y求出音阶值保存赋相应频率值延时图3-5 电子琴主程序流程图3.2.2 设计子程序流程图(1)发音子程序本子程序实现放音功能。首先从键盘读出一个字符,判断,如果是ESC键,返回DOS,如果不是,判断,如果键码不是18,即仍然处于音阶输入准备状态,如果是,即求出音阶值保存,取60次32个正弦波数据,播放32个数据,组成一个正弦波。播放60次后,然后判断是否有按键,如果有就进入死循环,直到下次按键为止。在弹奏时都需调用发音子程序,发音子程序的作用是控制扬声器的发音,其流程图如图3-6所示:8253初始化开扬声器延时关扬声器返回图3-6 发音子程序流程图(2)弹奏子程序当按键为1-8时,调用演奏子程序。演奏子程序的流程图如下图3-7所示:查表得相应频率计算计数初值返回调用发音子程序图3-7 演奏子程序的流程图(3)延时子程序当弹奏完音乐之后,音乐延时播放。延时子程序的流程图如下图3-8所示:取出音阶值求出8253定时时间常数(计数器初值)8253初始化为方式0设置8253A口输入PA0为1吗?吗? Y子程序返回 N图3-8 延时子程序的流程图4 调试与结果测试4.1 硬件调试利用实验板上的8253计数/定时器和8255并行接口,定时器8253利用工作方式3产生一定频率信号,通过可编程的并行外围接口芯片8255控制频率信号的断。8255的B口设置为输出,8255的B口的低两位用来控制扬声器驱动,当输出端口的PB0位为“1”或为“0”时,将使控制驱动器的与门电路接通或关闭使8253所发出的音频信号能到达驱动器或被阻断。这样通过控制PB0的变化,可使扬声器接通和断开,控制扬声器是否能发出声音。此外,通过控制PB0的通断时间,就能发出不同的音长。8255的PB1位为“1”时,控制8253定时器产生驱动扬声器发声的音频信号,该位为“0”则不发信号。8253有三个定时器,分为0号、1号和2号定时器,驱动扬声器的是2号定时器,该定时器工作在方式3,是一个频率发生器,它负责向扬声器发送指定频率的脉冲信号。当8255的PB0和PB1都为1时,8253发出指定频率的声音信号的前提下,声音信号过与门到达驱动器驱动扬声器发声。连接简易电子琴系统的电路图如图4-1所示图4-1 电子琴系统的电路图将实验箱与微型计算机保持串口通讯成功。将汇编程序代码输入微型计算机进行硬件调试。4.2 软件调试把弹奏功能的程序代码输入微型计算机;代码:data segmentioportequ 0d400h-0280hio8253aequ ioport+280hio8253bequ ioport+283hio8255aequ ioport+288hio8255bequ ioport+28bhio0832aequ ioport+290hdata1 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h db 80h,66h,4eh,38h,25h,15h,09h,04h db 00h,04h,09h,15h,25h,38h,4eh,66h;正弦波数据time db 120,106,94,89,79,70,63,59;发不同音时8253的计数器初值msg db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$num db ?;num为8253计数器初值的序号data endscode segment assume cs:code,ds:datastart:mov ax,datamov ds,axmov dx,offset msgmov ah,9int 21h ;显示提示信息sss:mov ah,7int 21h ;从键盘接收字符,不回显cmp al,1bhje exit ;若为ESC键,则转EXITcmp al,31hjl ssscmp al,38hjg sss ;若不在1-8之间转ssssub al,31hmov num,al ;求出相应的时间常数的序号mov cx,60 ;取60次32个正弦波数据ddd:mov si,0lll:mov al,data1si ;取正弦波数据mov dx,io0832aout dx,al ;放音call delay ;调延时子程序inc sicmp si,32 ;是否取完32个数据jl lll ;若没有,则继续loop ddd ;总循环次数60是否完,没有,则继续jmp sssexit:mov ah,4chint 21hdelay proc near ;延时子程序ccc:mov bx,offset timemov dx,io8253b ;置8253通道0为方式0工作mov al,10hout dx,almov dx,io8255b ;设8255A口输入mov al,9bhout dx,almov al,num ;取相应的时间常数xlatmov dx,io8253aout dx,al ;向8253通道0输出kkk:mov dx,io8255ain al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为1jz kkk ;若不为1,则转KKKret ;子程序返回delay endpcode endsend start与硬件相结合进行修改调试,运行程序后,显示如下界面,等待输入字符,如图4-2所示:图4-2 运行界面从键盘上敲击18时,音响发出哆、唻、咪、发、嗦、啦、唏、唗的音节,则调试成功。4.3测试方案和测试结果如表4-1所示:表4-1 测试表 测试方案 测试结果启动程序,出现按键提示,按下18键机内/实验仪发出相应的音阶改变开关状态,按18键对应发出相应的音阶“弹琴”发出优美旋律按下ESC键退出程序5 总结在为期一周的微机原理课程设计中,我学会了制做项目的一般步骤。第一部是硬件设计主要是实现控制对象与被控制对象之间的联系。第二步就是软件设计,就是要完成各个可编程芯片与CPU之间的数据传送和各个进程的逻辑顺序。在本次设计中对硬件要求就要熟练掌握可编程器件8255A和8253的应用。对软件设计就要熟练掌握汇编语言。由于时间限制的问题和硬件的局限性也只能将电子琴的功能简易化。另外,我从中学到了许多从课本上学不到的东西,锻炼了自己编程的能力,最后程序运行时能够实现目标,我感到很有成就感,从中也获得了很多乐趣,当然,最重要的是加深了我对课本理论知识的理解。当刚看到这个课设题目时,我感到无从下手,因为我都不知道PC机的内部具体结构,从理论课上只是了解了CPU的结构和工作原理,以及几个接口芯片的工作原理,还有汇编语言的一些基本指令。但我没有被吓到,我冷静下来思考后,发现其本质就是控制PC机内扬声器的发音,通过查阅资料我了解了PC机内扬声器的电路连接形式,发现它是由接口芯片8255和8253共同控制的,8255的PB0作为8253通道2的门信号,而8255的PB1和8253通道2的输出相与后的信号作为扬声器的驱动信号,了解了其内部接线方式后,思路也就有了,要想让扬声器发声,8255的PB0和PB1必须同时为高电平,其中之一为低电平时,扬声器就不能发声,而发声的音调则可通过改变8253的计数初值来实现,接下来的任务就是通过编程来控制8255和8253,从而间接地控制扬声器的发声规律,而8255和8253这两个接口芯片在理论课上都已介绍过,对其工作原理和编程方法都有一定的了解,看到这些熟悉的内容时,我淡定了很多。有了思路之后,我并没有急着写程序,因为我怀疑是不是每台PC机的扬声器接线方式都是这样的,所以我开始只编了一段控制扬声器发音的程序,来看看程序运行时扬声器到底发不发音,结果发声了,这让我很惊喜,也很有动力,更加激发了我的兴趣,接下来我就开始编写实现指定功能的程序了,首先是最简单的弹奏功能,通过对按键的判断来发出相应频率的声音,因为要判断按键,所以很自然地就想到了CMP指令,在计算计数初值时,因为要用到相应音符的频率,所以需要将按键转换为音符的频率,我开始想用书上常见的XLAT换码指令7,但AL存放的数最大为128,很明显容量不够,于是我采用了基址+变址的寻址方法,在编程的过程中,由于要程序实现多个功能,所以用子程序的结构会比较方便,需要完成某个功能时,只需调用相应子程序就可以了,这样会使得程序的结构清楚明了。在完成基本功能后,我还试着加上一些附加功能,比如延时,变调,通过我的不断尝试,终于把延时功能实现了,但变调功能没能像预期的那样。总之,这次课程设计让我学到了许多从课本上学不到的知识,加深了对理论知识的理解,激发了我对汇编语言的兴趣。上理论课时,只是老师讲,我们听,那些指令让我感到很枯燥,因为不知道它到底有什么作用,而这次课程设计刚好把这些指令应用到了实际中来,加深了对各种指令功能的理解,最后功能实现时,感到很有成就感,觉得汇编语言很神奇,激发了我对它的兴趣。参考文献1专著.杨素行.微型计算机系统原理及应用M.北京.清华大学出版社,20042专著.龚尚福.微机原理与接口技术M.西安电子科技大学出版社,2003.83专著.李芷.微机原理与接口技术M.电子工业出版社,2002 4专著.宋杰等.微机原理与接口技术课程设计M.机械工业出版社,20055专著.小捷. 汇编语言程序设计(第二版)M.西安电子科技大学出版社,2003 6专著.钱晓捷.汇编语言程序设计(第二版)M.电子工业出版社,20037专著.杨立,邓振杰等.微型计算机原理与接口技术(第二版)M.中国铁道出版社,2006 附录1:总体电路原理图附录2:元器件清单(1)计时器8253 (2)并行控制器8255A (3)实验台 附录3:源代码data segmentioportequ 0d400h-0280hio8253aequ ioport+280hio8253bequ ioport+283hio8

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论