微机课程设计电子琴.docx
《微机课程设计电子琴.docx》由会员分享,可在线阅读,更多相关《微机课程设计电子琴.docx(13页珍藏版)》请在咨信网上搜索。
《微机实验及课程设计》 课程设计报告 电子琴 姓 名: *** 学 号: ******** 专 业: ******** 实 验 室: 电工电子实验中心 103 设计时间: 2009年 5 月 30日 —— 2009年 6 月 4日 评定成绩: 审阅教师: 目 录 一.实验简介……………………………………………………………3 二.基本设计思想………………………………………………………3 三.程序流程和程序实现………………………………………………3 四.测试方案和测试结果………………………………………………10 五.分析与总结…………………………………………………………10 一.实验简介 目的: 检验和提高我在原理与接口综合应用方面分析问题与解决问题的能力,同时也给我提供更多、更好的训练机会。根据设计要求,尽可能完成设计要求的功能,选择最合适的器件,构成最有效的硬件电路来完成。 基本实验要求: 构造一模拟/数字电子琴 1、选择利用实验仪扬声器/PC机内8253驱动内扬声器与键盘1、2、3、4、5、6、7、8设计一个电子琴,通过按数字键响相应的乐符1、2、3、4、5、6、7、i,使能演奏简单的乐曲。按1~8数字键同时点亮相应的8个LED灯,使具有声、光效果; 2、 利用实验仪DAC和喇叭,软件控制上述功能。选择机内还是实验仪由开关设置,课随时切换; 3、在8*8点阵上表示音节高低; 4、精确显示从第一个键按下后的时间(单位秒,要求精确到0.1秒,显示到秒)。 进一步设计要求: 1.、能准确记录开始演奏到结束演奏的时间,在八段码上显示; 2、 数字、模拟合奏,能同时指示音阶; 3、自动录音,并具有回放功能(分两种水平、难易不等、即记录按键,同时记录按键和时间。 实现情况: 实现基本实验要求的1~3。 二.基本设计思想 1、先分别设计机内电子琴和实验仪电子琴。机内电子琴参照实验五8253计数器/定时器的选做与探索中使用PC机内8253驱动声音接口;实验仪电子琴参照实验中演示实验的电子琴流程图; 2、再把两者结合起来,用一个高低电平作开关控制是机内还是实验仪,可通过8255A口输入,判断10(二进制)则实验仪DAC,00则机内喇叭; 3、点阵显示。根据输入的数字判断应显示点阵的哪一行。具体可先把点阵的8列全选通,输入为1~8某个数字时,判断显示相应的行; 4、LED灯显示。同样,根据输入的数字判断应显示哪一个LED灯。具体可设置8255B口为输出,根据输入的数字,输出控制LED灯相应灯亮。 三.程序流程和程序实现 1、机内电子琴 开始 流程图: 键盘读入一个字符 是ESC键吗? Y N N 返回DOS 是数字1~8键吗? Y 求出音阶值保存 赋相应频率值 延时 程序: dseg segment freq dw 262,294,330,349,392,440,494,523 ;扬声器发声各频率值 msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$' tim dw 400 num db ? dseg ends sseg segment stack dw 256 dup(?) sseg ends cseg segment assume cs:cseg,ds:dseg start: mov ax,dseg mov ds,ax mov dx,offset msg 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求出相应的时间常数的序号 jinei: mov al,num add al,al mov ah,00h mov si,ax again: mov di,freq[si] mov bx,tim call gen jmp sss exit: mov ah,4ch int 21h 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,al wait1: mov cx,0h delay3: mov ax,10 ;延时子程序 delay2: nop dec ax jnz delay2 loop delay3 dec bx jnz wait1 mov al,ah out 61h,al ret gen endp cseg ends end start 2、实验仪电子琴 流程图: 实验电路: 程序: data segment ioport equ 0d400h-0280h io8253a equ ioport+280h io8253b equ ioport+283h io8255a equ ioport+288h io8255b equ ioport+28bh io0832a equ ioport+290h 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的计数器初值 msg db 'Press 1,2,3,4,5,6,7,8,ESC:',0dh,0ah,'$' num db ? ;num为8253计数器初值的序号 data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov dx,offset msg mov ah,9 int 21h ;显示提示信息 sss: mov ah,7 int 21h ;从键盘接收字符,不回显 cmp al,1bh je exit ;若为ESC键,则转EXIT cmp al,31h jl sss cmp al,38h jg sss ;若不在'1'-'8'之间转sss sub al,31h mov num,al ;求出相应的时间常数的序号 mov cx,60 ;取60次32个正弦波数据 ddd: mov si,0 lll: mov al,data1[si] ;取正弦波数据 mov dx,io0832a out dx,al ;放音 call delay ;调延时子程序 inc si cmp si,32 ;是否取完32个数据 jl lll ;若没有,则继续 loop ddd ;总循环次数60是否完,没有,则继续 jmp sss exit: mov ah,4ch int 21h delay proc near ;延时子程序 ccc: mov bx,offset time mov dx,io8253b ;置8253通道0为方式0工作 mov al,10h out dx,al mov dx,io8255b ;设8255A口输入 mov al,9bh 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 code ends end start 3.电子琴总设计 流程图: 开始 键盘读入一个字符 Y 是ESC键吗? N N 是数字1~8键吗? 返回DOS Y 点亮点阵 Y 点亮LED灯 N 是机内吗? 60个正弦波 完了吗? Y N 求出音阶值保存 正弦波个数计数器赋值60 每个正弦波数据个数计数器赋初值 取正弦波数据送DAC0832 求出音阶值保存 Y 赋相应频率值 一个正弦波 完了吗? N 延时 延时 电路图: 8个LED灯 PB7~PB0 PA0 PA1 CS CLK0 GATE0 OUT0 CS 8253 8255 1MHZ +5V DAC0832 CS 280H K0开关 288H 290H 程序: data segment ioport equ 0c800h-0280h io8253a 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+290h proth equ ioport+2a8h ;点阵行选的地址 protlr equ ioport+2b0h ;点阵列选的地址 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 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 400 data ends stack segment stack dw 256 dup(?) stack ends code segment assume cs:code,ds:data start: 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,0ffh ;点阵板的列全部选通 mov dx,proth out dx,al mov al,00000001 :点阵的行赋初值 shl al,num ;根据输入的数字,左移相应位数,即点阵亮相应行 mov num,al ;如输入3,则num为2,左移两位,第三行亮 mov dx,prothl out dx,al led: mov dx,io8255d mov al,99h ;设置8255A口入B口出 mov dx,io8255b out dx,num ;根据移位后的num点亮相应led灯 kaiguan: mov dx,io8255a ;判断机内机外 in al,dx ;从8255B口读一字节 test al,10b ;判断PA0口是否为10(二进制) jz jiwai ;是的话转实验仪 jmp nei ;否则转机内 ;---------------------------------jiwai jiwai: mov cx,60 ;取60次32个正弦波数据 ddd: mov si,0 lll: mov al,data1[si] ;取正弦波数据 mov dx,io0832a out dx,al ;放音 call delay ;调延时子程序 inc si cmp si,32 ;是否取完32个数据 jl lll ;若没有,则继续 loop ddd ;总循环次数60是否完,没有,则继续 jmp sss exit: mov ah,4ch int 21h delay proc near ;延时子程序 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 si,ax again: mov di,freq[si] 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,al wait1: mov cx,0h delay3: mov ax,10 ;延时子程序 delay2: nop nop dec ax jnz delay2 loop delay3 dec bx jnz wait1 mov al,ah out 61h,al ret gen endp code ends end start 四.测试方案和测试结果 测试方案 测试结果 启动程序,出现按键提示,按下1~8键 机内/实验仪发出相应的音阶 同时led和点阵板亮相应的灯和行 改变开关状态(可随时任意改变),按1~8键 对应发出相应的音阶 “弹琴” 发出优美旋律 按下ESC键 退出程序 五.分析与总结 问题分析: 关于开关改变发声源为机内或机外和led灯的点亮,原来想用前面学过的简单输入输出实验,用74LS273做输出,到led上驱动led灯亮;用74LS244做输入,把开关值输入控制发声源。后来发现这样很麻烦,虽然在程序上没有太繁杂,但是这样就加了两个地址,而且对于电路来说,就很复杂。因此,后来想到直接用8255做输入输出,设A口为输入,B口输出,这样用一个片子即可完成几个功能。 关于点亮点阵板,原来想将num逐个与0~7比较,来判断亮哪一行,后来这样写代码时比较繁杂,就改成移位来实现,给点阵的行赋初值00000001,然后再左移num位,即可亮相应的行。 实验总结: 这次微机实验课程设计,使我对微机软硬件结合有了进一步的了解。原来并不太清楚是什么意思,一直都很模糊,听课本也是很迷茫;而之前的那些单元实验,也没有都做好。之前做的实验,由于大部分是验证性的,所以就很被动地去做,甚至并没有想为什么要那样连电路,内部的代码更没有认真看。这次课程设计,因为要自己去设计整个过程,所以就不得不去了解学习自己原来并没有真正弄懂的东西。比如一些程序的代码的意思,汇编语言的逻辑,比如一些芯片的用途。使我对前面所做的实验有了原理性的了解,回头看一些实验,也知其然其所以然了。同时对课本上讲的一些内容,不再像以前那样觉得抽象,通过这次设计,有了具体的理解。 同时,我也知道了设计一个项目,应该如何下手。应该先对项目要求有个全面的了解,知道要做什么,然后根据要求所要涉及到的知识我们要主动去摄取,结合自己已学过的,再对整体框架有个感知,心里有数后,进行设计。设计时用流程图,这很重要,这样整个思路就很清晰,而且是按照软硬件语言的逻辑顺序进行,就很方便。设计过程可以分模块,不要一开始就想把所有的功能都实现了,应该一个模块一个模块地实现,再总的连起来,实现最后的总模块。在每个模块设计时,尽量想到比较简单的设计,简化编程和电路,也可少出错。对微机是这样,对其他的像数字系统设计,也是一样的。 因此,我也觉得微机实验的这种形式的课程设计是很好也很有必要的。对我们对微机实验的理解有很大帮助。 参考书目: 【1】 杨素行《微型计算机系统原理及应用》,北京,清华大学出版社,2004年 【2】 微机实验及课程设计教程(试用版2.0),东南大学《微机系统与接口》课程组,2009年2月- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 课程设计 电子琴
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【xrp****65】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【xrp****65】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文