欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    微机原理课程设计电子琴.docx

    • 资源ID:9455218       资源大小:119.37KB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    微机原理课程设计电子琴.docx

    1、微机原理课程设计电子琴概述 1一设计内容与要求 1 二设计思想 1 三设计所用芯片及工作原理 2 四系统连线图 2 五连线图说明 3六程序流程图 3 七程序源代码 5 八设计过程中遇到的问题及解决方法 11九设计心得 11电子琴概述汇编语言与微机原理是计算机各专业一门重要的基础课,是必修的核心课程之一,对于训练学生掌握程序设计技术,熟悉上机操作和程序调试技术都有重要作用。因此该课程在整个教学计划中占有重要地位。本课程的目的和要求是:1、 应使学生掌握8086/8088宏汇编语言程序设计的基本方法和技巧,能够运用8086/8088宏汇编语言编写应用程序。提高学生分析问题、解决问题的能力以及实际动

    2、手能力。2、应使学生基本掌握汇编语言程序设计的基本理论,方法和技巧,正确地使用结构化、模块程序设计技术。注意培养学生良好的程序设计风格。3、应使学生比较熟练地使用调试工具DEBUG调试8086/8088汇编语言程序。注意提高学生的调试能力。4、注意与前后相关课程的关系。使学生对前导课程有进一步的理解,同时为学习后继课程打好基础。一、设计内容与要求编写一实现电子琴的程序,并实现若干扩展功能。基本功能:用8257键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;扩展功能:1、录音:记录所弹奏曲目2、放录音:任意时刻重放最新记录曲目3、在程序中可预设一曲目,按一键实现播

    3、放该曲目。4、在播放录制曲目或预设曲目时,按8279键盘上任意键可以暂停播放,再按一次从暂停处继续播放。5、程序运行时有友好的用户介面二、设计思想在本次课程设计中,根据复杂程序设计思想模块化程序设计,分析和确定程序总体设计目标:电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块。程序设计的思路按以下顺序进行:1、分析与确定程序总体设计目标,2、将总体目标划分为若干模块3、定义每个模块的具体任务,明确它与其他模块间的通信方式4、编写源程序,进行调试,包括:A)简单电子琴主程序结合实验指导书的两程序,将其分为5个子程序,实现简单的播放和显示音阶的功能。B)录音子程序实现记录弹奏曲目并播放的功

    4、能。首先由9触发,将输入的音阶存入缓存区song中,输入的同时可以发声和显示。当再次按9时录制完成。C)放音子程序,本子程序实现放音功能。首先从8279键盘读出键码,判断,如果键码不是18即回到程序开始,如果是,即求出相应的时间常数的序号,取60次32个正弦波数据,播放32个数据,组成一个正弦波。播放60次后,从PORT1中取出值到AL,和1相与,判断是否有按键,如果有就进入死循环,直到下次按键为止。D)放歌子程序调用放音子程序。E)暂停子程序在乐曲播放过程中,每调用一次MUSIC,就从PORT1中取出AL,检测AL个数,即每次发音后按键盘的次数。当检测到AL为1时,即按了一次任意就使程序进入

    5、一个死循环,不发音,到此实现了暂停,然后再次按动任意键时,AL就为2,不为1,所以程序跳出死循环,继续从断开处调用乐曲,继续播放。G)源程序整体程序开始,显示提示信息,对缓存区、8279初始化。接着调用发音子程序,键盘子程序,在把AL送缓存区,实现发音和显示。接着对9键、0键、f键、r键进行逐个判断,当9按下时,调用录音子程序。当按下0时,播放录制的曲目。当按下f键时,播放程序中预设的曲目。当检测到r时,退出到DOS状态。当每一个都检测不到时,退回到调用发音子程序,继续发音显示。从而实现有扩展功能的电子琴。5、模块连接,形成完整的程序三、:四、设计所用芯片工作原理(1)对于一个特定的/转换接口

    6、电路,CPU执行一条输出指令将数据送入/, 即可在其输出端得到一定的电压输出。给/转换器输入按正弦规律变化的数据, 在其输出端即可产生正弦波。对于音乐,每个音阶都有确定的频率。 各音阶标称频率值: (2)产生一个正弦波的数据可取32个(小于亦可),不同频率的区别,可通过调节向转换器输出数据的时间间隔,例如:发频率为261。1HZ,周期为1/=,输出数据的时间间隔为32. 定时时间可以由8253配合8255来实现。按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。本程序中设置默认长度为60个正弦波。五、系统连线图(1)8253和8255连接如下;五、连线图说明计时器8253使用8279

    7、芯片的键盘控制器,8279键盘在一个扩充板上,用一根20芯扁平电缆与实验台上扩展插头J7相连。并行控制器8255六、程序流程图(1)主程序流程图(2)发音子程序流程图(3)键盘显示子程序流程图 (4)显示子程序流程图(5)录音子程序流程图 (6)放录音子程序流程图七、程序源代码STACK1 SEGMENT PARA STACK STACK、DB 50 DUP(0)STACK1 ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATAMOV AX,DATAMOV DS,AXMOV DX,OFFSET MSG*MOV AH,9INT 21H ;显示提示

    8、信息CLIMOV AX,DATAMOV DS,AXMOV SEC1,0MOV SEC2,0MOV MIN1,0MOV MIN2,0MOV HOUR1,0MOV HOUR2,0 ;显示缓存区初始化MOV AX,DATAMOV DS,AXMOV AX,CSMOV DS,AXMOV DX,PORT1)MOV AL,0D3H ; 清除命令特征位OUT DX,AL ;8279 CLEARMOV AL,2AH ;00101010 42分频,内部使用1MHZ/42的频率OUT DX,AL ;8279 CLOCKMOV AL,40HOUT DX,AL ;READ FIFO RAM COMMANDMOV AL,

    9、00H ;8个字符显示,左入口。编码扫描键盘,双键锁定。OUT DX,AL ;KEYBORD DISPLY MODEMOV AL,80H ;写入的存储单元地址为0000OUT DX,AL ;WRITE RAM COMMANDCALL MUSIC ;发音CALL KEYBORD ;CALL KEYBORD AND DISPLYNEXT2:MOV HOUR2,ALMOV HOUR1,ALMOV MIN2,AL!MOV MIN1,ALMOV SEC2,ALMOV SEC1,AL ;键盘码存入显示缓冲区CMP AL,9HJZ RECMP AL,0HJZ OUTPUTCMP AL,15,JZ FUCMP

    10、 AL,13H ;R COMMANDJNZ LP1MOV AX,4C00H ;QUIT TO DOSINT 21HLP1: JMP KEY1RE:CALL RE0 ;录音JMP LP1!OUTPUT:CALL OUTPUT0 ;放录音JMP LP1FU:CALL OUTPUT1JMP LP1MAIN ENDPRE0 PROC NEAR ;录音子程序MOV DX,OFFSET MSGPLAYMOV AH,9,INT 21H ;显示录音提示信息LEA SI,SONGCALL KEYBORDMOV HOUR2,ALMOV HOUR1,ALMOV MIN2,ALMOV MIN1,ALMOV SEC2,

    11、ALMOV SEC1,AL ;键盘码存入显示缓冲区CALL MUSICCALL DISPMOV SI,AHCMP AH,9JZ QRE0INC SIJMP R*MOV DX,OFFSET MSGENDMOV AH,9INT 21H ;显示录音提示信息RETRE0 ENDPOUTPUT0 PROC NEAR ;放录音子程序MOV DX,OFFSET MSGPLAY1MOV AH,9*INT 21H ;显示PLAY提示信息LEA SI,SONGMOV AL,SICMP AL,9JZ QRE1MOV HOUR2,ALMOV HOUR1,ALMOV MIN2,AL¥MOV MIN1,ALMOV SEC

    12、2,ALMOV SEC1,AL ;键盘码存入显示缓冲区CALL DISPMOV AL,AHCALL MUSICINC SIJMP OU】MOV DX,OFFSET MSGEND1MOV AH,9INT 21H ;显示PLAYEND提示信息RETOUTPUT0 ENDPOUTPUT1 PROC NEAR ;放歌子程序MOV DX,OFFSET MSGPLAY1MOV AH,9INT 21H ;显示PLAY提示信息LEA SI,SONG1MOV AL,SICMP AL,-1JZ QRE2MOV HOUR2,ALMOV HOUR1,ALMOV MIN2,ALMOV MIN1,ALMOV SEC2,A

    13、LMOV SEC1,AL ;键盘码存入显示缓冲区CALL DISPMOV AL,AHCALL MUSICINC SIJMP OU1!MOV DX,OFFSET MSGEND1MOV AH,9INT 21H ;显示PLAYEND提示信息RETOUTPUT1 ENDPKEYBORD PROC NEAR ;键盘子程序MOV DX,PORT1MOV AL,0D1H|OUT DX,AL ;CLEAR DISPLAYCALL DISPMOV DX,PORT1IN AL,DX ;读状态AND AL,07H ;判断是否有按键JZ WREPKEYN: ;下一次的按键MOV DX,PORT0*IN AL,DX ;

    14、读数据MOV BL,ALAND AL,07HAND BL,38HMOV CL,03SHR BL,CLCMP BL,00HJNZ LINE1。ADD AL,08HJMP QUIT1CMP BL,01HJNZ LINE2JMP QUIT1ADD AL,10HRETKEYBORD ENDPDISP PROC NEAR ;显示子程序PUSH SIPUSH CXPUSH DXMOV AX,DATAMOV DS,AXMOV DX,PORT1MOV AL,90H|OUT DX,AL ;写地址为0000的显示缓存区命令,每次写入后地址自动加1MOV SI,OFFSET SEC1MOV CX,0001MOV B

    15、X,OFFSET LEDCLDLODSBMOV AH,ALXLAT ;键盘码转显示码,MOV DX,PORT0OUT DX,AL ;显示LOOP DISP1POP DXPOP CXPOP SIDISP ENDPMUSIC PROC NEAR ;发音子程序|PUSH SICMP AL,1JL QUITCMP AL,8JG QUIT ;若不在1-8之间转QUIT,不发音MOV NUM,AL ;求出相应的时间常数的序号MOV CX,60 ;取60次32个正弦波数据MOV SI,0MOV AL,DATA1SI ;取正弦波数据MOV DX,IO0832AOUT DX,AL ;放音CALL DELAY ;

    16、调延时子程序INC SICMP SI,32 ;是否取完32个数据JL LLL ;若没有,则继续LOOP DDD ;总循环次数60是否完,没有,则继续;MOV DX,PORT1 ;扫描实现任意键暂停IN AL,DX ;读状态AND AL,01H ;判断是否有按键JNZ FFF; ;按键延时JMP QUITFFF: MOV CX,60 JMP DPOP SIRETMUSIC ENDPDELAY PROC NEAR ;延时子程序CCC: MOV BX,OFFSET TIMEMOV DX,IO8253B ;置8253通道0为方式0工作MOV AL,10HOUT DX,ALMOV DX,IO8255B

    17、;设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八、设计过程中遇到的问题及解决方法1 主程序简单电子琴功能主程序要求完成的功能有:电子琴简单功能实现以及利用由8279芯片控制的小键盘(含数码管、键盘阵列)实现控制电子琴。主程序由电子琴实验

    18、和键盘控制实验的两个程序有机组成,两个程序简单拼凑在一齐是不能实现的。经过实际调试和修改,将原电子琴程序改为2个子程序:music(实现播放音阶)和delay(实现播放音阶时延时);将原键盘控制程序改为1个主程序:key1、keybord(键盘扫描及输入)和disp(显示)。各个子程序通过寄存器al通信,al存有当前输入的键盘码,同时为music、disp两子程序服务。调试后,主程序能实现课程设计要求的功能,并且界面清晰、操作容易。2 源程序整体功能将各子程序调试完成后,进行最后的源程序整体功能调试。调试过程中我们注意到:a 程序模块化(功能分为若干子程序)能使源程序清晰,调试简单,因此在调试

    19、中我们还将源程序进一步模块化。b 注意子程序之间的通信方式,这里基本用到的是寄存器al(内含键盘码),所以对al的使用应十分谨慎。c 调用子程序前,使用push/pop保护了一些子程序会用到的主程序同时会用到的寄存器,保证调用之后主程序的顺利执行。在调试过程中出现的一些小问题,我们都根据以上3点总结出的经验作为原则进行调试,调试过程十分顺利。最后根据电子琴的实际用途加上了一些必要清晰的提示性语句,使界面更加友好。九、设计心得经过这个课程设计,虽然时间比较短,完成任务的效果不是很理想,但是既然自己尝试过,就肯定学到了不少东西。经过短短一周的课程设计,我认识到,课程设计能真正让人学到实际应用的东西

    20、的一门课程。首先,要实现题目要求的功能并有所创新,我们必须全心地投入其中,养成一种敢于钻研敢于创新的习惯。在把课程要求实现到实际中来的过程中,首先必须清楚明白地了解几个参考程序的每一行的意思,这就需要敢于静心钻研。其次,通过课程设计,让我更深入的了解了各种芯片的用法和程序的完成过程,调试方法及技巧。为了的初始化,存取缓存,扫描键盘,读取键码以及键码和显示码之间的转换,查找了不少8279芯片的资料,了解了键盘为了实现基本功能,了解了电子琴的不同音阶放音功能的实现,长短音的实现,更深入了解了8253计时器的使用方法。检查程序过程中,在充分思考的基础上多次实验是检查改正程序的良方。在设计扩展功能的过程中,大胆想像并且用多种思路来求解实现目标是必备的武器。


    注意事项

    本文(微机原理课程设计电子琴.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开