ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:222.20KB ,
资源ID:8597862      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8597862.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子琴的微机原理设计方案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子琴的微机原理设计方案.docx

1、电子琴的微机原理设计方案电子琴的微机原理设计方案第一章 方案论证1.1 设计规模和总体框架1.1.1系统的基本功能 弹奏:用键盘输入对应的七个音阶,用户每按一个键盘琴键就弹奏相应的音符,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能: 演奏:电子琴设有8个按键,其中7个作为音符输入,另外一个作为模式转换按键,实现用户存放的自动播放歌曲。按下键盘上某一个指定的建后自动弹奏预存琴谱功能;要求按键按下时发声,松开延时一小段时间,中间再按别的键则发另外一音调的声音,当系统扫描到键盘按下,则快速检测出是哪一个按键被按下,然后单片机的定时器启动,发出一定频率的脉冲,该频率的脉冲经喇叭驱动

2、电路放大滤波后,就会发出相应的音调。如果在前一个按下的键发声的同时有另一个按键被按下,则启动中断系统。前面的发音停止,转到后按的键的发音程序。发出后按的键的音调。1.1.2系统的主要功能模块 控制模块:选择AT89S52单片机来控制整个系统,其中P2口作为输入口,P1口为信号输出口,P1.0连接音响驱动电路。 用户编程模块:由键盘矩阵、LED显示管、扬声器这几个部分组成 存储器模块:8088有1MB存储空间,系统提供用户使用的空间为 00000H-0FFFFH, 用于存放、调试实验程序。 键盘输入模块:用来操作者对机器的控制操作,在P2口连接有8个按键开关加8个拉电阻,它们一端接5伏电源,一端

3、接地。只要有一个按键被按下,并被单片机扫描到,则会播放发出音符。(LED显示管显示当前按键,扬声器发出对应音符。) 输出驱动模块:利用AT89S52单片机的P0端口的P0.0P0.7连接到一个七段数码管的ah的笔段上,数码管的公共端接电源;声音的播放模块,它接到P1.0口上,当有按键按下时,它通过AT89S52中心控制芯片的识别后发出相应的音符。1.1.3系统的组成框图 根据系统的功能要求,我们可以得到系统的组成框图: 图1系统框图1.2操作流程1.2.1如何使用系统安装及配置说明系统运行环境 WINDOWS XP PROTEUS 7.1 SP2 Keil uv3 2.12系统安装及配置 安装

4、Protues 和keil uVsision3。系统操作说明 (1)Keil下编译,产生目标HEX档,Proteus下Programme Files选择产生的HEX档,点击运行开始模拟。 (2)开启本系统,数码管显示“-”。 (3)按任意键盘,数码管显示所按下的键盘数,扬声器发出相应的音符。1.2.2使用流程 图2 使用流程第二章 硬件系统的设计2.1控制模块的选择:本次设计中中心控制模块是选择AT89S52单片机来控制整个系统。2.2用户编程模块:本系统由键盘矩阵、LED显示管、扬声器这几个部分组成,LED显示管显示当前按键,扬声器发出对应音符。硬件总体设计图如下: 图32.3存储器模块:8

5、088有1MB存储空间,系统提供用户使用的空间为00000H-0FFFFH, 用于存放、调试实验程序。具体分配如下:2.3.1 存贮器地址分配 表2-1 存贮器地址分配2.3.2 I/O地址分配 表2-2 I/O地址分配(一) 表2-3 I/O地址分配(二)监控占用00004H-0000FH作为单步(T)、断点(INT3)、无条件暂停(NMI)中断矢量区, 用户也可以更改这些矢量, 指向用户的处理, 但失去了相应的单步、断点、暂停等监控功能。F0000HFFFFFH监控程序区系统占用。2.4键盘输入模块: 在P.2口十连有8个按键并加有8个拉电阻.它们一端接5伏电源,一端接地.在仿真时,只要有

6、一个键被按下,并被单片机扫描到,则会使播放器发出声音. 图 42.5输出驱动模块:2.5.1子系统(模块)一 LED显示模块如图2-2所示,利用AT89S51单片机的P0端口的P0.0P0.7连接到一个七段数码管的ah的笔段上,数码管的公共端接电源。矩阵扫描显示当前按键模块如下: 图 52.5.2子系统(模块)二矩阵扫描扬声器发出对应音符模块如下: 图 6第三章 应用软件的设计 应用系统中任务的实现,最终是靠程序的执行来完成的。应用软件设计的好坏,将决定系统的效率和它的优劣。 应用软件的设计依据是使用流程。根据使用流程可以确定系统的控制流程和软件模块。根据顺序控制器的操作流程可以确定,本系统软

7、件主要由4个模块构成:主程序,编程控制模块,运行控制模块和定时器中断服务模块。3.1主程序 主程序的任务首先是进行初始化,然后根据“编程/运行”开关的状态判别,进入“编程状态”或“运行状态”。 根据主程序的操作流程,可以确定主程序的控制流程如图主程序流程图N N YY 图 7主要程序:MAIN: MOV SP,#60H ;初始化堆栈指针 MOV 30H,#00 ;定时器初值清零 MOV 31H,#00 MOV P1,#0FFH ;设置P1口为输入模式 MOV TOMD,#01H ;设置定时器0为工作模式1 SETB ET0 ;开定时器0中断 SETB EA ;开总中断 CLR TR0 ;关闭定

8、时器03.2编程控制模块 根据编程状态的操作流程,可以确定编程操作的控制流程如图 图8 电子琴程序流程图 OUTBIT equ 0FE02h IN equ 0FE00h Pulse equ 0 PulseCNT equ 50h ToneHigh equ 51h ToneLow equ 52h Speaker equ P1.0 0000 02008E ljmp Start org 000bh Timer0Int:000B C0D0 push PSW000D C28C clr TR0000F 85518C mov TH0, ToneHigh0012 85528A mov TL0, ToneLow0

9、015 D28C setb TR00017 A200 mov c, Pulse0019 9290 mov Speaker, c001B B200 cpl Pulse001D 1550 dec PulseCNT001F D0D0 pop PSW0021 32 reti ToneTable:0022 FC42 0024 FCAE 0026 FD0A 0028 FD35 002A FD82 002C FDC8 002E FE05 dw 64578, 64686, 64778, 64821, 64898, 64968, 65029 TestKey:0030 90FE02 mov dptr, #OUTB

10、IT0033 7400 mov a, #00035 F0 movx dptr, a0036 90FE00 mov dptr, #IN0039 E0 movx a, dptr003A F4 cpl a003B 540F anl a, #0fh 003D 22 ret KeyTable:003E 161514 0041 FF db 16h, 15h, 14h, 0ffh0042 131211 0045 10 db 13h, 12h, 11h, 10h0046 0D0C0B 0049 0A db 0dh, 0ch, 0bh, 0ah004A 0E0306 004D 09 db 0eh, 03h, 0

11、6h, 09h004E 0F0205 0051 08 db 0fh, 02h, 05h, 08h0052 000104 0055 07 db 00h, 01h, 04h, 07h GetKey:0056 90FE02 mov dptr, #OUTBIT0059 8583A0 mov P2, dph005C 7800 mov r0, #Low(IN)005E 7920 mov r1, #00100000b0060 7A06 mov r2, #6 KLoop:0062 E9 mov a, r10063 F4 cpl a0064 F0 movx dptr, a0065 F4 cpl a0066 03

12、 rr a0067 F9 mov r1, a 0068 E2 movx a, r00069 F4 cpl a006A 540F anl a, #0fh006C 7006 jnz Goon1 006E DAF2 djnz r2, KLoop 0070 7AFF mov r2, #0ffh0072 800F sjmp Exit Goon1:0074 F9 mov r1, a 0075 EA mov a, r20076 14 dec a0077 23 rl a0078 23 rl a0079 FA mov r2, a ; r2 = (r2-1)*4 007A E9 mov a, r1007B 790

13、4 mov r1, #4 LoopC:007D 13 rrc a007E 4003 jc Exit0080 0A inc r20081 D9FA djnz r1, LoopC Exit:0083 90FE02 mov dptr, #OUTBIT0086 E4 clr a0087 F0 movx dptr, a 0088 EA mov a, r20089 90003E mov dptr, #KeyTable008C 93 movc a, a+dptr008D 22 ret Start:008E 758170 mov sp, #70h0091 758901 mov TMOD, #01 ; Time

14、r0094 75A882 mov IE, #82h ; EA=1, IT0 = 1 MLoop:0097 1130 call TestKey0099 60FC jz MLoop 009B 1156 call GetKey009D F5F0 mov b, a009F 60F6 jz MLoop ; = 0, 7 00A5 15F0 dec b00A7 E5F0 mov a, b00A9 23 rl a ; a = a*2 00AA F5F0 mov b, a00AC 900022 mov dptr, #ToneTable00AF 93 movc a, a+dptr00B0 F551 mov To

15、neHigh, a00B2 F58C mov TH0, a 00B4 E5F0 mov a, b00B6 04 inc a00B7 93 movc a, a+dptr00B8 F552 mov ToneLow, a00BA F58A mov TL0, a 00BC D28C setb TR000BE 755064 mov PulseCNT, #100 Wait:00C1 E550 mov a,PulseCNT00C3 70FC jnz Wait00C5 C28C clr TR000C7 020097 ljmp MLoop end3.3运行控制模块 根据运行状态的操作流程,可以确定运行操作的控制

16、流程如图 图 9程序:data segmentioport equ 0c800h-0280hio8253a equ ioport+280h;8253通道0地址io8253b equ ioport+283h;8253控制字寄存器地址io8255a equ ioport+288h ;8255A口地址io8255b equ ioport+289h ;8255B口地址io8255d equ ioport+28bh;8255控制字寄存器地址io0832a equ ioport+290hproth equ ioport+2a8h ;点阵行选的地址protlr equ ioport+2b0h ;点阵列选的地

17、址data1 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的计数器初值banquan db 0dh,0ah db *,0dh,0ah db * *,0dh,0ah db * WELCOME TO USE dianziqin *,0dh,0ah

18、 db * THIS PROGRAMME IS DESIGHED BY *,0DH,0AH db * zhouqiuping 61007204 *,0DH,0AH db * *,0dh,0ah db *,0dh,0ah db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$num db ? ;num为8253计数器初值的序号freq dw 262,294,330,349,392,440,494,523 ;扬声器发声各频率值tim dw 400data endsstack segment stack dw 256 dup(?)stack endscode segment

19、assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,offset banquan ; 显示 mov ah,9 int 21h ;显示提示信息sss: mov ah,7 int 21h ;等待从键盘接收字符,不回显al=asc码 cmp al,1bh je exit ;若为ESC键,则转EXIT推出 cmp al,31h jl sss ;小于31h cmp al,38h ;大于38h jg sss ;不在1-8之间转sss sub al,31h mov num,al ;num求出相应的时间常数的序号dianzhen: mov al,

20、0ffh ;点阵板的列全部选通 mov dx,proth out dx,al mov al,00000001 :点阵的行赋初值 shl al,num ;根据输入的数字,左移相应位数,即点阵亮相应行 mov num,al ;如输入3,则num为2,左移两位,第三行亮 mov dx,prothl out dx,alled: mov dx,io8255d mov al,99h ;设置8255A口入B口出 mov dx,io8255b out dx,num ;根据移位后的num点亮相应led灯kaiguan: mov dx,io8255a ;判断机机外 in al,dx ;从8255B口读一字节 te

21、st al,10b ;判断PA0口是否为10(二进制) jz jiwai ;是的话转实验仪 jmp nei ;否则转机;-jiwaijiwai: mov cx,60 ;取60次32个正弦波数据ddd: mov si,0lll: mov al,data1si ;取正弦波数据 mov dx,io0832a out dx,al ;放音 call delay ;调延时子程序 inc si cmp si,32 ;是否取完32个数据 jl lll ;若没有,则继续 loop ddd ;总循环次数60是否完,没有,则继续 jmp sssexit: mov ah,4ch int 21hdelay proc n

22、ear ;延时子程序ccc: mov bx,offset time mov dx,io8253b ;置8253通道0为方式0工作 mov al,10h out dx,al mov al,num ;取相应的时间常数 xlat mov dx,io8253a out dx,al ;向8253通道0输出kkk: mov dx,io8255a in al,dx ;从8255A口读一字节 test al,01 ;判PA0口是否为1 jz kkk ;若不为1,则转KKK ret ;子程序返回delay endp;-机部分jinei: mov al,num add al,al mov ah,00h mov s

23、i,axagain: mov di,freqsi mov bx,tim call gen jmp sss gen proc near mov al,0b6h ;设置8253通道2方式3二进制计数 out 43h,al mov dx,12h mov ax,12928 ; DX AX=896*533h=18*65536+12928=1.19M div di out 42h,al ;8253通道2口设置初值 mov al,ah out 42h,al in al,61h ;读8255PB口 mov ah,al or al,3 out 61h,alwait1: mov cx,0hdelay3: mov

24、ax,10 ;延时子程序delay2: nop nop dec ax jnz delay2 loop delay3 dec bx jnz wait1 mov al,ah out 61h,al retgen endp code endsend start3.4定时器中断服务模块定时器子程序图如图2.7所示。 图 103.5硬件调试与软件调试3.5.1 硬件调试1)断电调试:为了安全,首先进行断电调试,用万用表检测系统是否有短路现象,再检查严接线是否正确。经检测,接线正确也没有短路现象。 2)通电调试:第一,检查系统是否正常。第二,检查数码显示是否乱码。在通电调试过程中,经检查系统正常;数码管显示

25、乱码,查明原因为8255A芯片B输出端口与数码管输入端口接线时接反了,经改正后检查没有出现新的问题。3.5.2软件调试输入程序并检查无误,经汇编、连接后加载装入系统运行,观察现象。发现倒计时器只能运行一次而不能循环(即程序倒计时到0后无法继续循环倒计时),经检查发现程序结束前掉了一条跳转指令。经修改后,再进行编译并加载,运行程序,结果显示正常并实现了循环功能,经调试三个开关发现开关实现功能正常。3.5.3 调试过程 让8255的口工作在方式一输入状态下,B口接在试验箱上的八个拨码开关上,把拨码开关的电平信号传送到8255的输出口,CPU取走的8255输出口的信号送到8253,8253工作在工作

26、方式3,方波放生气。这样通过送不同的数据时8253发出不同频率的方波信号,不同频率的方波信号就会驱动发生器发出不同频率的声响。3.6测试方案和测试结果 测试方案 测试结果启动程序,出现按键提示,按下18键机/实验仪发出相应的音阶同时led和点阵板亮相应的灯和行改变开关状态(可随时任意改变),按18键对应发出相应的音阶“弹琴”发出优美旋律按下ESC键退出程序 表 3-1 小结 通过这次课程设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起。原本微型计算机接口技术就是计算机科学与技术专业的一门核心课程,是突出计算机应用的一门课程。 根据自己所学的知识,来完成

27、本次微型计算机课程设计的容。本次课程设计主要是设计一个电子琴,要求用键盘输入1、2、3、4、5、6、7按键,产生不同频率的声音,来模拟电子琴发出音阶乐谱。要发出声音,要用芯片实现,首先想到的是课堂上学过的8253定时/计数器它可以发出一定频率的声音。有七音阶个频率,就对应有七个计数初值,通过调用不同的程序,来完成每一次按键所对应频率的计数初值,进而实现不同的声音。要产生频率,就用到脉冲发生器、分频器;产生音质好、播放出来声音,就用到音频功效模块。各个模块进行相应的连接,来实现电子琴的功能。 这次微机实验课程设计,使我对微机软硬件结合有了进一步的了解。原来并不太清楚是什么意思,一直都很模糊,听课

28、本也是很迷茫;而之前的那些单元实验,也没有都做好。之前做的实验,由于大部分是验证性的,所以就很被动地去做,甚至并没有想为什么要那样连电路,部的代码更没有认真看。这次课程设计,因为要自己去设计整个过程,所以就不得不去了解学习自己原来并没有真正弄懂的东西。比如一些程序的代码的意思,汇编语言的逻辑,比如一些芯片的用途。使我对前面所做的实验有了原理性的了解,回头看一些实验,也知其然其所以然了。同时对课本上讲的一些容,不再像以前那样觉得抽象,通过这次设计,有了具体的理解。 经过我长时间的设计及调试,本系统基本能实现按下键盘矩阵中的按键会使数码管显示当前按键,扬声器播放对应的音符。但由于仿真系统原因,本设

29、计音频效果不是很好。不足之处有:1.可弹奏的音符数较少,只能在一定围满足用户需要。可通过改进键盘识别模块和发生模块来增加其复杂度2.音量不可调。 在这为期一周的课程设计中,我深刻明白了理论知识与社会实践相结合的道理,从中得到了以前书本知识所不曾得到的知识,更加明白了如今信息时代电子技能知识的重要性。同时我对自己的动手能力有了信心,这次的课程设计我感觉很完美,我会利用这次机会再努力的提高自己。 编写程序的过程中,我遇到了很多的问题。在此我特别要感帮助我的老师们,特别是老师,没有他们,我就不能完成这个课程设计,是他们不厌其烦地帮我讲解。 经过这个课程设计,虽然时间比较短,完成任务的效果不是很理想,但是既然自己尝试过,就肯定学到了不少东西。这次课程设计对我综合运用所学知识的能力的提高有不小的帮助,之前做的实验都是很简单的编程,跟硬件结合也没有这么复杂,实现的功能都比较简单,可是这次要实

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1