微机课程设计电子琴教案资料.doc

上传人:1595****071 文档编号:52303666 上传时间:2022-10-22 格式:DOC 页数:14 大小:183KB
返回 下载 相关 举报
微机课程设计电子琴教案资料.doc_第1页
第1页 / 共14页
微机课程设计电子琴教案资料.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《微机课程设计电子琴教案资料.doc》由会员分享,可在线阅读,更多相关《微机课程设计电子琴教案资料.doc(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Good is good, but better carries it.精益求精,善益求善。微机课程设计电子琴-微机实验及课程设计课程设计报告电子琴姓名:*学号:*专业:*实验室:电工电子实验中心103设计时间:2009年5月30日2009年6月4日评定成绩:审阅教师:目录一实验简介3二基本设计思想3三程序流程和程序实现3四测试方案和测试结果10五分析与总结10一实验简介目的:检验和提高我在原理与接口综合应用方面分析问题与解决问题的能力,同时也给我提供更多、更好的训练机会。根据设计要求,尽可能完成设计要求的功能,选择最合适的器件,构成最有效的硬件电路来完成。基本实验要求:构造一模拟/数字电子琴

2、、选择利用实验仪扬声器/PC机内8253驱动内扬声器与键盘1、2、3、4、5、6、7、8设计一个电子琴,通过按数字键响相应的乐符1、2、3、4、5、6、7、i,使能演奏简单的乐曲。按18数字键同时点亮相应的8个LED灯,使具有声、光效果;2、利用实验仪DAC和喇叭,软件控制上述功能。选择机内还是实验仪由开关设置,课随时切换;3、在8*8点阵上表示音节高低;4、精确显示从第一个键按下后的时间(单位秒,要求精确到0.1秒,显示到秒)。进一步设计要求:1.、能准确记录开始演奏到结束演奏的时间,在八段码上显示;2、数字、模拟合奏,能同时指示音阶;3、自动录音,并具有回放功能(分两种水平、难易不等、即记

3、录按键,同时记录按键和时间。实现情况:实现基本实验要求的13。二基本设计思想1、先分别设计机内电子琴和实验仪电子琴。机内电子琴参照实验五8253计数器/定时器的选做与探索中使用PC机内8253驱动声音接口;实验仪电子琴参照实验中演示实验的电子琴流程图;2、再把两者结合起来,用一个高低电平作开关控制是机内还是实验仪,可通过8255A口输入,判断10(二进制)则实验仪DAC,00则机内喇叭;3、点阵显示。根据输入的数字判断应显示点阵的哪一行。具体可先把点阵的8列全选通,输入为1某个数字时,判断显示相应的行;、LED灯显示。同样,根据输入的数字判断应显示哪一个LED灯。具体可设置8255B口为输出,

4、根据输入的数字,输出控制LED灯相应灯亮。三程序流程和程序实现1、机内电子琴开始流程图:键盘读入一个字符是ESC键吗?YNN返回DOS是数字18键吗?Y求出音阶值保存赋相应频率值延时程序:-dsegsegmentfreqdw262,294,330,349,392,440,494,523;扬声器发声各频率值msgdbPress1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$timdw400numdb?dsegendsssegsegmentstackdw256dup(?)ssegendscsegsegmentassumecs:cseg,ds:dsegstart:movax,dsegmo

5、vds,axmovdx,offsetmsgmovah,9int21h;显示提示信息sss:movah,7int21h;等待从键盘接收字符,不回显al=asc码cmpal,1bhjeexit;若为ESC键,则转EXIT退出cmpal,31hjlsss;小于31hcmpal,38h;大于38hjgsss;不在1-8之间转ssssubal,31hmovnum,al;num求出相应的时间常数的序号jinei:moval,numaddal,almovah,00hmovsi,axagain:movdi,freqsimovbx,timcallgenjmpsssexit:movah,4chint21hgenp

6、rocnearmoval,0b6h;设置8253通道2方式3二进制计数out43h,almovdx,12hmovax,12928;DXAX=896*533h=18*65536+12928=1.19Mdivdiout42h,al;8253通道2口设置初值moval,ahout42h,alinal,61h;读8255PB口movah,aloral,3out61h,alwait1:movcx,0hdelay3:movax,10;延时子程序delay2:nopdecaxjnzdelay2loopdelay3decbxjnzwait1moval,ahout61h,alretgenendpcsegends

7、endstart2、实验仪电子琴流程图:实验电路:程序:datasegmentioportequ0d400h-0280hio8253aequioport+280hio8253bequioport+283hio8255aequioport+288hio8255bequioport+28bhio0832aequioport+290hdata1db80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdhdb0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96hdb80h,66h,4eh,38h,25h,15h,09h,04hdb00h,04h,09h,15h,

8、25h,38h,4eh,66h;正弦波数据timedb120,106,94,89,79,70,63,59;发不同音时8253的计数器初值msgdbPress1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$numdb?;num为8253计数器初值的序号dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,offsetmsgmovah,9int21h;显示提示信息sss:movah,7int21h;从键盘接收字符,不回显cmpal,1bhjeexit;若为ESC键,则转EXITcmpal,31hjls

9、sscmpal,38hjgsss;若不在1-8之间转ssssubal,31hmovnum,al;求出相应的时间常数的序号movcx,60;取60次32个正弦波数据ddd:movsi,0lll:moval,data1si;取正弦波数据movdx,io0832aoutdx,al;放音calldelay;调延时子程序incsicmpsi,32;是否取完32个数据jllll;若没有,则继续loopddd;总循环次数60是否完,没有,则继续jmpsssexit:movah,4chint21hdelayprocnear;延时子程序ccc:movbx,offsettimemovdx,io8253b;置825

10、3通道0为方式0工作moval,10houtdx,almovdx,io8255b;设8255A口输入moval,9bhoutdx,almoval,num;取相应的时间常数xlatmovdx,io8253aoutdx,al;向8253通道0输出kkk:movdx,io8255ainal,dx;从8255A口读一字节testal,01;判PA0口是否为1jzkkk;若不为1,则转KKKret;子程序返回delayendpcodeendsendstart3.电子琴总设计流程图:开始键盘读入一个字符Y是ESC键吗?NN是数字18键吗?返回DOSY点亮点阵Y点亮LED灯N是机内吗?60个正弦波完了吗?Y

11、N求出音阶值保存正弦波个数计数器赋值60每个正弦波数据个数计数器赋初值取正弦波数据送DAC0832求出音阶值保存Y赋相应频率值一个正弦波完了吗?N延时延时电路图:8个LED灯PB7PB0PA0PA1CSCLK0GATE0OUT0CS825382551MHZ+5VDAC0832CS280HK0开关288H290H程序:datasegmentioportequ0c800h-0280hio8253aequioport+280h;8253通道0地址io8253bequioport+283h;8253控制字寄存器地址io8255aequioport+288h;8255A口地址io8255bequiopo

12、rt+289h;8255B口地址io8255dequioport+28bh;8255控制字寄存器地址io0832aequioport+290hprothequioport+2a8h;点阵行选的地址protlrequioport+2b0h;点阵列选的地址data1db80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdhdb0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96hdb80h,66h,4eh,38h,25h,15h,09h,04hdb00h,04h,09h,15h,25h,38h,4eh,66h;正弦波数据timedb120,106,94,8

13、9,79,70,63,59;发不同音时8253的计数器初值banquandb0dh,0ahdb*,0dh,0ahdb*,0dh,0ahdb*WELCOMETOUSEdianziqin*,0dh,0ahdb*THISPROGRAMMEISDESIGHEDBY*,0DH,0AHdb*zhouqiuping61007204*,0DH,0AHdb*,0dh,0ahdb*,0dh,0ahdbPress1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$numdb?;num为8253计数器初值的序号freqdw262,294,330,349,392,440,494,523;扬声器发声各频率值tim

14、dw400dataendsstacksegmentstackdw256dup(?)stackendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,offsetbanquan;版权显示movah,9int21h;显示提示信息sss:movah,7int21h;等待从键盘接收字符,不回显al=asc码cmpal,1bhjeexit;若为ESC键,则转EXIT推出cmpal,31hjlsss;小于31hcmpal,38h;大于38hjgsss;不在1-8之间转ssssubal,31hmovnum,al;num求出相应的时间

15、常数的序号dianzhen:moval,0ffh;点阵板的列全部选通movdx,prothoutdx,almoval,00000001:点阵的行赋初值shlal,num;根据输入的数字,左移相应位数,即点阵亮相应行movnum,al;如输入3,则num为2,左移两位,第三行亮movdx,prothloutdx,alled:movdx,io8255dmoval,99h;设置8255A口入B口出movdx,io8255boutdx,num;根据移位后的num点亮相应led灯kaiguan:movdx,io8255a;判断机内机外inal,dx;从8255B口读一字节testal,10b;判断PA0

16、口是否为10(二进制)jzjiwai;是的话转实验仪jmpnei;否则转机内;-jiwaijiwai:movcx,60;取60次32个正弦波数据ddd:movsi,0lll:moval,data1si;取正弦波数据movdx,io0832aoutdx,al;放音calldelay;调延时子程序incsicmpsi,32;是否取完32个数据jllll;若没有,则继续loopddd;总循环次数60是否完,没有,则继续jmpsssexit:movah,4chint21hdelayprocnear;延时子程序ccc:movbx,offsettimemovdx,io8253b;置8253通道0为方式0工

17、作moval,10houtdx,almoval,num;取相应的时间常数xlatmovdx,io8253aoutdx,al;向8253通道0输出kkk:movdx,io8255ainal,dx;从8255A口读一字节testal,01;判PA0口是否为1jzkkk;若不为1,则转KKKret;子程序返回delayendp;-机内部分jinei:moval,numaddal,almovah,00hmovsi,axagain:movdi,freqsimovbx,timcallgenjmpsssgenprocnearmoval,0b6h;设置8253通道2方式3二进制计数out43h,almovdx

18、,12hmovax,12928;DXAX=896*533h=18*65536+12928=1.19Mdivdiout42h,al;8253通道2口设置初值moval,ahout42h,alinal,61h;读8255PB口movah,aloral,3out61h,alwait1:movcx,0hdelay3:movax,10;延时子程序delay2:nopnopdecaxjnzdelay2loopdelay3decbxjnzwait1moval,ahout61h,alretgenendpcodeendsendstart四测试方案和测试结果测试方案测试结果启动程序,出现按键提示,按下18键机内/

19、实验仪发出相应的音阶同时led和点阵板亮相应的灯和行改变开关状态(可随时任意改变),按18键对应发出相应的音阶“弹琴”发出优美旋律按下ESC键退出程序五分析与总结问题分析:关于开关改变发声源为机内或机外和led灯的点亮,原来想用前面学过的简单输入输出实验,用74LS273做输出,到led上驱动led灯亮;用74LS244做输入,把开关值输入控制发声源。后来发现这样很麻烦,虽然在程序上没有太繁杂,但是这样就加了两个地址,而且对于电路来说,就很复杂。因此,后来想到直接用8255做输入输出,设A口为输入,B口输出,这样用一个片子即可完成几个功能。关于点亮点阵板,原来想将num逐个与07比较,来判断亮

20、哪一行,后来这样写代码时比较繁杂,就改成移位来实现,给点阵的行赋初值00000001,然后再左移num位,即可亮相应的行。实验总结:这次微机实验课程设计,使我对微机软硬件结合有了进一步的了解。原来并不太清楚是什么意思,一直都很模糊,听课本也是很迷茫;而之前的那些单元实验,也没有都做好。之前做的实验,由于大部分是验证性的,所以就很被动地去做,甚至并没有想为什么要那样连电路,内部的代码更没有认真看。这次课程设计,因为要自己去设计整个过程,所以就不得不去了解学习自己原来并没有真正弄懂的东西。比如一些程序的代码的意思,汇编语言的逻辑,比如一些芯片的用途。使我对前面所做的实验有了原理性的了解,回头看一些

21、实验,也知其然其所以然了。同时对课本上讲的一些内容,不再像以前那样觉得抽象,通过这次设计,有了具体的理解。同时,我也知道了设计一个项目,应该如何下手。应该先对项目要求有个全面的了解,知道要做什么,然后根据要求所要涉及到的知识我们要主动去摄取,结合自己已学过的,再对整体框架有个感知,心里有数后,进行设计。设计时用流程图,这很重要,这样整个思路就很清晰,而且是按照软硬件语言的逻辑顺序进行,就很方便。设计过程可以分模块,不要一开始就想把所有的功能都实现了,应该一个模块一个模块地实现,再总的连起来,实现最后的总模块。在每个模块设计时,尽量想到比较简单的设计,简化编程和电路,也可少出错。对微机是这样,对其他的像数字系统设计,也是一样的。因此,我也觉得微机实验的这种形式的课程设计是很好也很有必要的。对我们对微机实验的理解有很大帮助。参考书目:【1】杨素行微型计算机系统原理及应用,北京,清华大学出版社,2004年【2】微机实验及课程设计教程(试用版2.0),东南大学微机系统与接口课程组,2009年2月

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com