基于8086的简易电子琴设计附汇编源程序.doc
《基于8086的简易电子琴设计附汇编源程序.doc》由会员分享,可在线阅读,更多相关《基于8086的简易电子琴设计附汇编源程序.doc(13页珍藏版)》请在咨信网上搜索。
《微机原理与接口技术》 综合设计实验报告 设计课题:基于8086的简易电子琴设计 指导老师: 学生姓名: 学 号: 院 系: 专 业:通信工程 基于8086的简易电子琴设计 摘要 在学习《微机原理与接口设计》的基础上,针对课程设计要求,综合运用相关软件、硬件知识,设计一个简易电子琴,使之具有音区切换、数码管显示音区及当前音符、记录音符与音符持续时间、播放录制的音乐等功能。 关键词:8086;电子琴;仿真调试;汇编 目录 第1章 总体方案设计1 1.1 系统整体架构图1 1。2 功能介绍1 第2章 硬件设计2 2。1 硬件资源2 2.2 硬件接线图3 2。2。1 8254接线图3 2。2。2 8255及键盘、数码管接线图3 第3章 软件设计4 3。1 程序框图4 3。1。1 整体框图4 3。1。2 延时函数5 3。1。3 键盘扫描5 3.1。4 数码管显示6 3。1.5 声音及时间录制6 3.1。6 选择音区(高、中、低)7 3.1.7 播放音乐7 第4章 实验结果及演示8 第5章 遇到的问题及改进措施10 5。1 条件转移指令报错10 5。2 无法使用8254作为录音时间计数器10 附 录11 程序源码11 第1章 总体方案设计 1。1系统整体架构图 系统整体架构图如图1-1所示. 图1—1 1。2功能介绍 本实验设计实现了音区切换、数码管显示当前音区及音符、记录音符与音符持续时间、播放录制的音乐等功能。功能具体说明如下. 按键0—6为音符键,按下后会有对应的音符音调响起,按键弹起后音符终止,此时,按下的音符以及时间将被记录。按键12,13,14可以选择低音,中音,高音区。按下按键15后开始播放录制的音符(不超过16个).另外数码管0显示音符,数码管2显示音区. 第2章 硬件设计 2.1 硬件资源 TD—PITE 实验教学系统,其主要系统构成如表2—1 所示. CPU Intel 386EX 存储器 系统程序存储器:Flash ROM (128KB) 数据存储器:SRAM (128KB) 信号源 单次脉冲:消抖动脉冲 2 组 逻辑电平开关与显示 16 组电平开关,16 组电平显示 LED 灯(正逻辑) 8259、8237、8254、8255、8251、DAC0832、ADC0809、SRAM 、键盘扫描及数 接口实验单元 码管显示、电子发声、点阵 LED、液晶 LCD(可选)、步进电机(可选)、直流电 机、温度控制 实验扩展单元 2 组 40 线通用集成电路扩展单元、扩展模块总线单元 系统电源 +5V/2A,±12V/0.2A 表 2—1 TD-PITE 系统构成 系统硬件结构如图 2—1 所示。 图2—1 2。2 硬件接线图 2。2.18254接线图 8254芯片接线如图2—2所示. 图2—2 2。2。28255及键盘、数码管接线图 8255及键盘、数码管接线方法如图2—3所示。 图2—3 第3章 软件设计 3。1 程序框图 3。1.1整体框图 图3—1 3.1.2延时函数 图3—2 3。1.3键盘扫描 图3—3 3。1。4数码管显示 图3—4 3。1.5声音及时间录制 图3—5 3。1。6选择音区(高、中、低) 图3-6 3.1。7播放音乐 图3—7 第4章 实验结果及演示 具体演示效果可扫描以下二维码进行观看,二维码如图4—1所示。 图4—1 以下为视频截图。 系统初始运行状体如图4—2所示。 图4—2 选择中音区,如图4-3所示。 图4—3 按下音符健,如图4-4所示。 图4—4 音乐播放,如图4-5所示. 图4—5 第5章遇到的问题及改进措施 5。1 条件转移指令报错 在编写程序时曾多次遇到使用条件转移指令时编译出错的情况.查阅书本后发现条件转移指令只能在代码段的—128~+127字节内进行跳转. 解决办法:使用条件转移指令转移到一个较近程序段,并在这程序段使用无条件转移指令JMP进行转移. 5。2无法使用8254作为录音时间计数器 在进行设计的过程中,曾多次按照使用8254作为时间计数器的方案进行编程,但经过多次尝试后均以失败告终。 解决办法:使用软件延时进行计时,每次延时执行完毕后进行计数,该计数值就是音符的相对持续时间。在播放时只需要调用同样时间长度的延时函数即可。 缺点:使用软件延时与计数,占用了CPU计算资源,导致数码管扫描频率降低,亮度变暗。同时对于录音时间的记录不精确,存在一定的误差。 附 录 程序源码 ;======================================================= ; 文件名: Hypo.asm ; 功能描述: 按键0—6为音符键,按下后会有对应的音调响起, ; 按键弹起后音符终止。 ; 按键12,13,14可以选择低音,中音,高音区。 ; 按下按键15后开始播放之前按下的音符(不超过16个) ; 数码管0显示音符,数码管2显示音区 ;======================================================= IOY3 EQU 06C0H MY8254_COUNT0 EQU IOY3+00H ;8254计数器0端口地址 MY8254_COUNT1 EQU IOY3+02H ;8254计数器1端口地址 MY8254_COUNT2 EQU IOY3+04H ;8254计数器2端口地址 MY8254_MODE EQU IOY3+06H ;8254控制寄存器端口地址 MY8255_A EQU 0600H ;8255A端口地址 MY8255_B EQU 0602H ;8255B端口地址 MY8255_C EQU 0604H ;8255C端口地址 MY8255_CON EQU 0606H ;8255控制端口地址 SSTACK SEGMENT STACK ;定义堆栈段 DW 256 DUP(?) SSTACK ENDS DATA SEGMENT DTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;数码管的段选数据 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H FREQ_LIST1 DW 248,278,312,330,371,416,467 ;低音频率表 FREQ_LIST2 DW 495,556,624,661,742,833,935 ;中音频率表 FREQ_LIST3 DW 990,1112,1248,1322,1484,1665,1869 ;高音频率表 REC_DATA DW 000,000,000,000,000,000,000,000 ;录音储存段 DW 000,000,000,000,000,000,000,000 SB DB 00H,00H ;过渡段 REC_TIME DB 00H,00H,00H,00H,00H,00H,00H,00H ;时间储存段 DB 00H,00H,00H,00H,00H,00H,00H,00H SAVE_SI DW ? ;录音储存地址储存 SI_FREQ DW ? ;频率表地址储存 SAVE_SI_TIME DW ? ;时间储存表地址储存 SAVE_TIME DB 01H ;时间技术储存 CHOOSE_FLAG DW 01H;频率表选择标志位 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA ;初始化数据段、代码段 START: MOV AX,DATA MOV DS,AX MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;定时器0、方式3 OUT DX,AL MOV SI,OFFSET REC_DATA ;装入录音表初始地址 MOV SAVE_SI,SI MOV CL,0EH CLEAN_REC: ;录音表清零 MOV AX,0000H MOV [SI],AX ADD SI,2 LOOP CLEAN_REC MOV SI,OFFSET REC_TIME ;装入时间表起始地址 MOV SAVE_SI_TIME,SI MOV SI,OFFSET FREQ_LIST1 ;装入频率表默认起始地址 MOV SI_FREQ,SI MOV SI,3000H MOV AL,00H MOV [SI],AL ;清显示缓冲 MOV [SI+1],AL MOV [SI+2],AL MOV [SI+3],AL MOV [SI+4],AL MOV [SI+5],AL MOV DI,3005H MOV DX,MY8255_CON ;写8255控制字 MOV AL,81H OUT DX,AL BEGIN: CALL DIS ;调用显示子程序 CALL DIS_FREQ ;调用音区显示子程序 CALL CLEAR ;清屏 CALL CCSCAN ;键盘扫描 JNZ INK1 JMP BEGIN INK1: CALL DIS CALL DALLY CALL DALLY CALL CLEAR CALL CCSCAN JNZ INK2 ;有键按下,转到INK2 JMP BEGIN ;===============蜂鸣器关闭子程序================== SILENT: MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;定时器0、方式3 OUT DX,AL RET ;===============远程跳转过渡================= PLAY2_JUMP: JMP PLAY2 CHOOSE_JUMP1: JMP CHOOSE1 CHOOSE_JUMP2: JMP CHOOSE2 CHOOSE_JUMP3: JMP CHOOSE3 ;======================================== ;确定按下键的位置 ;======================================== INK2: MOV CH,0FEH MOV CL,00H COLUM: MOV AL,CH MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DX L1: TEST AL,01H ;is L1? JNZ L2 ;如果不是的话跳转到L2 MOV AL,00H ;L1 JMP KCODE L2: TEST AL,02H ;is L2? JNZ L3 MOV AL,04H ;L2 JMP KCODE L3: TEST AL,04H ;is L3? JNZ L4 MOV AL,08H ;L3 JMP KCODE L4: TEST AL,08H ;is L4? JNZ NEXT MOV AL,0CH ;L4 ;================================= ;确认按键的值 ;================================= KCODE: ADD AL,CL CALL PUTBUF PUSH AX ;========================= ;键值存在AX中 ;======================== CMP AX,12 ;选择音区1 JZ CHOOSE_JUMP1 CMP AX,13 ;选择音区2 JZ CHOOSE_JUMP2 CMP AX,14 ;选择音区3 JZ CHOOSE_JUMP3 CMP AX,15 ;播放录制的音乐 JZ PLAY2_JUMP ;jump to play2 POP AX PUSH AX CALL PLAY ; 播放音符 POP AX PUSH AX ;===================== ;松手检测 ;===================== KON: CALL DIS CALL DIS_FREQ CALL CLEAR CALL CNT_TIME ;按键没有弹起,执行时间计数 POP AX PUSH AX CALL CCSCAN JNZ KON ;判断是否弹起,如果没有弹起,继续检测。 ;按键弹起后: CALL SILENT ;蜂鸣器静音 MOV SI,SAVE_SI_TIME MOV AL,SAVE_TIME MOV [SI],AX ;按下的时间进入时间表 INC SAVE_SI_TIME;时间表地址+1 MOV SAVE_TIME,00H;时间计数清零 INC SAVE_SI ;录音表地址+1 INC SAVE_SI POP AX NEXT: INC CL MOV AL,CH TEST AL,08H JZ KERR ROL AL,1 MOV CH,AL JMP COLUM KERR: JMP BEGIN CNT_TIME: ;时间计数 CALL DALLY3 INC SAVE_TIME RET ;======================================== ;键盘扫描子程序,有按键按下,返回1 ;======================================== CCSCAN: MOV AL,00H MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C IN AL,DX NOT AL AND AL,0FH RET ;======================================== ;清屏子程序 ;======================================== CLEAR: MOV DX,MY8255_B MOV AL,00H OUT DX,AL RET ;======================================== ;显示子程序 ;======================================== DIS: PUSH AX MOV SI,3000H;数码管地址 MOV DL,0FEH ;数码管位选 MOV AL,DL AGAIN: PUSH DX MOV DX,MY8255_A OUT DX,AL ;数码管位选输出 MOV AL,[SI] MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,AX ;得到数码管段选数据 MOV AL,[BX] MOV DX,MY8255_B OUT DX,AL ;数码管段选输出 CALL DALLY POP DX MOV AL,DL MOV DL,AL JMP OUT1 OUT1: POP AX RET ;====== 延时子程序 ====== DALLY: PUSH CX MOV CX,0006H T1: MOV AX,009FH T2: DEC AX JNZ T2 LOOP T1 POP CX RET ;======================================== ;存键盘值到相应位的缓冲中 ;======================================== PUTBUF: MOV [SI],AL CMP DI,3005H JNZ GOBACK GOBACK: RET CHOOSE1: MOV SI,OFFSET FREQ_LIST1 ;装入频率表1起始地址 MOV SI_FREQ,SI MOV CHOOSE_FLAG,01H JMP BEGIN CHOOSE2: MOV SI,OFFSET FREQ_LIST2 ;装入频率表2起始地址 MOV SI_FREQ,SI MOV CHOOSE_FLAG,02H JMP BEGIN CHOOSE3: MOV SI,OFFSET FREQ_LIST3 ;装入频率表3起始地址 MOV SI_FREQ,SI MOV CHOOSE_FLAG,03H JMP BEGIN ;========================== ;音区数码管显示 ;========================== DIS_FREQ: PUSH AX MOV SI,3003H MOV DL,0FBH MOV AL,DL AGAIN1: PUSH DX MOV DX,MY8255_A OUT DX,AL MOV AL,[SI] MOV BX,OFFSET DTABLE AND AX,00FFH ADD BX,CHOOSE_FLAG MOV AL,[BX] MOV DX,MY8255_B OUT DX,AL CALL DALLY POP DX MOV AL,DL MOV DL,AL JMP OUT2 OUT2: POP AX RET PLAY: MOV SI,SI_FREQ ;装入频率表起始地址 ADD SI,AX ADD SI,AX MOV DX,0FH ;输入时钟为1MHz,1M = 0F4240H MOV AX,4240H DIV WORD PTR [SI] ;取出频率值计算计数初值,0F4240H / 输出频率 MOV SI,SAVE_SI ;将计数初值存入录音音符段 MOV [SI],AX MOV DX,MY8254_COUNT0 ;蜂鸣器播放音符 OUT DX,AL MOV AL,AH OUT DX,AL RET PLAY2: MOV SI,OFFSET REC_DATA ;装入录音表计数初值起始地址 MOV DI,OFFSET REC_TIME ;装入录音时间表起始地址 PLAY2_1: MOV AX,[SI] MOV DX,MY8254_COUNT0 OUT DX,AL ;装入计数初值并播放 MOV AL,AH OUT DX,AL MOV DL,[DI] ;取出演奏相对时间,调用延时子程序 CALL DALLY2 ADD SI,2 INC DI CALL SILENT ;停止播放0。1秒 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CALL DALLY3 CMP WORD PTR [SI],0 ;判断是否到曲末? JE XXX ;如果来到曲末跳转到开始 JMP PLAY2_1 ;否则继续播放下一个音符 XXX: JMP START ;远程跳转过渡 DALLY2 PROC ;延时子程序2 D0: MOV CX,0015H D1: MOV AX,00F0H D2: DEC AX JNZ D2 LOOP D1 DEC DL JNZ D0 RET DALLY2 ENDP DALLY3 PROC ;延时子程序3 D00: MOV CX,0010H D11: MOV AX,00F0H D22: DEC AX JNZ D22 LOOP D11 RET DALLY3 ENDP CODE ENDS END START 11- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 8086 简易 电子琴 设计 汇编 源程序
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文