




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理课程设计微机原理课程设计 题 目 名 称 电子琴 课 程 名 称 微型计算机原理与接口技术 学 生 姓 名 刘 洁 学 号 0805070176 系 专 业 电子系 自动化 2 班 指 导 教 师 丁 健 2011 年 1 月 12 日 1 目目 录录 1 1 任务及要求 任务及要求 2 1 1 任务 2 1 2 要求 2 1 2 1 以 8255 接八个开关 K1 K8 做电子琴按键输入 2 1 2 2 8253 控制扬声器 拨不同的开关 发出相应的音阶 2 1 2 3 扩展功能 2 2 2 设计思想 设计思想 2 2 1 程序设计的思路 2 2 1 1 分析与确定程序总体设计目标 2 2 1 2 将总体目标划分为若干模块 2 2 1 3 定义每个模块的具体任务 明确它与其他模块间的 通信方式 2 2 1 4 模块连接 形成完整的程序 3 3 3 电路原理与电路图 电路原理与电路图 3 3 1 电路原理 3 3 1 1 各音阶标称频率值 3 3 1 2 定时 3 3 2 电路图 4 4 4 算法描述与流程图 算法描述与流程图 4 4 1 算法描述 4 4 2 流程图 4 4 2 1 主程序流程图 4 4 2 2 发音子程序流程图 5 4 2 3 放录音子程序流程图 4 2 4 显示子程序流程图 6 4 2 5 键盘显示子程序流程图 4 2 6 放录音子程序流程图 6 5 5 程序清单 程序清单 7 6 6 设计总结 设计总结 16 7 7 参考文献 参考文献 16 2 1 任 任务及要求务及要求 1 1任务 按照音符来设定频率和8253定时 计数器的延时时间 8253的CLK0 接 1MHz 时钟 GATE0接 5V OUT0接8255的PA0 J1接喇叭 编程 使计算机的数字键1 2 3 4 5 6 7作为电子琴按键 按下即发出 相应的音阶 1 2要求 1 2 1以8255接八个开关K1 K8 做电子琴按键输入 1 2 2 以8253控制扬声器 拨动不同的开关 发出相应的音阶 1 2 3扩展功能 1 录音 记录所弹奏曲目 2 放录音 任意时刻重放最新记录曲目 2 设计思想 设计思想 在本次课程设计中 根据复杂程序设计思想 模块化程序设计 分析和 确定程序总体设计目标 电子琴基本功能及部分扩展功能后 将总体目标划分 为若干模块 子程序 具体可见下 2 1 程序设计的思路按以下顺序进行 2 1 1 分析与确定程序总体设计目标 2 1 2 将总体目标划分为若干模块 2 1 3 定义每个模块的具体任务 明确它与其他模块间的通信方式 编写源程序 进行调试 包括 2 1 3 1 简单电子琴主程序 结合实验指导书的两程序 将其分为5个子程序 实现简单的播放和显 示音阶的功能 2 1 3 2 录音子程序 实现记录弹奏曲目并播放的功能 首先由9触发 将输入的音阶存入缓 存区song中 输入的同时可以发声和显示 当再次按9时录制完成 2 1 3 3 放音子程序 3 本子程序实现放音功能 首先从8279键盘读出键码 判断 如果键码 不是1 8即回到程序开始 如果是 即求出相应的时间常数的序号 取60 次32个正弦波数据 播放32个数据 组成一个正弦波 播放60次后 从 PORT1中取出值到AL 和 1 相与 判断是否有按键 如果有就进入死循 环 直到下次按键为止 2 1 3 4 源程序整体 程序开始 显示提示信息 对缓存区 8279初始化 接着调用发音子 程序 键盘子程序 在把 AL 送缓存区 实现发音和显示 接着对 9 键 0 键 f 键 r 键进行逐个判断 当 9 按下时 调用录音子程序 当按下 0 时 播 放录制的曲目 当按下 f 键时 播放程序中预设的曲目 当检测到 r 时 退 出到DOS状态 当每一个都检测不到时 退回到调用发音子程序 继续发 音显示 从而实现有扩展功能的电子琴 2 1 4 模块连接 形成完整的程序 3 电路原理与电路图 电路原理与电路图 3 1 电路原理 3 1 1 各音阶标称频率值 对于一个特定的 转换接口电路 CPU 执行一条输出指令将数据送入 即可在其输出端得到一定的电压输出 给 转换器输入按正弦规律 变化的数据 在其输出端即可产生正弦波 对于音乐 每个音阶都有确定的频 率 各音阶标称频率值 音阶1234567 频率 单位 Hz 261 1293 7329 6349 2392 0440 0529 7 对应 num 取值 us 1201069489797063 4 3 1 2 定时 产生一个正弦波的数据可取 32 个 小于亦可 不同频率的区别 可 通过调节向 转换器输出数据的时间间隔 例如 发 频率为 261 1HZ 周 期为 1 261 1 3 83ms 输出数据的时间间隔为 3 83ms 32 0 12ms 定时时间 可以由 8253 配合 8255 来实现 按下某键后发音时间的长短可以由发出的正弦 波的个数多少来控制 本程序中设置默认长度为 60 个正弦波 3 2 电路图 4 4 算法描述与流程图 算法描述与流程图 4 1 算法描述 软件部分对整个系统来说起着重要的作用 在本电子琴系统中 软件可以分 为六部分 主程序部分 发音子程序部分 放录音子程序部分 显示子程序部 分 键盘显示子程序 放录音子程序部分 4 2 流程图 4 2 1 主程序流程图 PC 机扬声器电路 5 开始 显示缓存区 初始 化 8279 初始化 调用发音子程序 调用键盘子程序 键盘码送缓存区 是否 9 键 是否 0 键 是否 S 键 是否 R 键 录音子程序 放录音子程序 放音子程序 返回 DOS Y N N N Y Y Y N 4 2 2 发音子程序流程图 6 4 2 3 放录音子程序流程图 4 2 4 显示子程序流程 图 入口 调用键盘子程序 键盘码存缓存区 调用发音子程序 调用显示子程序 把键盘码输入 song inc al 是否 9 键 返回 显示提示信息 NY 4 2 5 键盘显示子程序流程图 4 2 6 放录音子程序流程图 入口 显示提示信息 键盘码存缓存区 调用显示子程序 调用发音子程序 al 是否 9 返回 Y N 7 5 程序清单 程序清单 DATA SEGMENT IOPORT EQU 0C400H 0280H PORT0 EQU IOPORT 2B0H 8279 DATA PORT PORT1 EQU IOPORT 2B1H 8279 CTRL PORT SEC1 DB 0 HOUR HIGHT SEC2 DB 0 HOUP LOW MIN1 DB 0 MIN HIGHT MIN2 DB 0 MIN LOW HOUR1 DB 0 SEC HIGHT HOUR2 DB 0 SEC LOW LED DB 3FH 06 5BH 4FH 66H 6DH 7DH 07 7FH 6FH 77H 7CH 39H 5EH 79H 71H 7段管对应的显示码 DB 67H 37H 73H 31H 3EH 36H 66H 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的计数器初值 DB 1 PRESS 1 8 TO PLAY 0DH 0AH 0DH 0AH DB 2 PRESS 9 TO RECORD 0DH 0AH 0DH 0AH DB 3 PRESS 0 TO PLAY THE RECORD 0DH 0AH 0DH 0AH DB 4 PRESS F TO PLAY THE SONG 0DH 0AH 0DH 0AH DB 5 PRESS ANYKEY TO PAUSE START WHEN PLAY THE RECORD 0DH 0AH 0DH 0AH NUM DB NUM为8253计数器初值的序号 SONG DB 50 DUP SONG1 DB 1 2 3 4 5 6 7 8 8 7 6 5 4 3 2 1 1 MSGPLAY DB 0DH 0AH 0DH 0AH RECORDING PLESS 9 TO END 0DH 0AH 0DH 0AH MSGEND DB RECORDFINISHED 0DH 0AH 0DH 0AH 0DH 0AH 0DH 0AH MSGPLAY1 DB 0DH 0AH 0DH 0AH PLAYING PRESS ANYKEY TO PAUSE 0DH 0AH 0DH 0AH MSGEND1 DB PLAYING FINISHED 0DH 0AH 0DH 0AH DATA ENDS 8 STACK1 SEGMENT PARA STACK STACK DB 50 DUP 0 STACK1 ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV DX OFFSET MSGPLAY1 MOV AH 9 INT 21H 显示提示信息 CLI MOV AX DATA MOV DS AX MOV SEC1 0 MOV SEC2 0 MOV MIN1 0 MOV MIN2 0 MOV HOUR1 0 MOV HOUR2 0 显示缓存区初始化 MOV AX DATA MOV DS AX MOV AX CS MOV DS AX MOV DX PORT1 MOV AL 0D3H 11010011 清除命令特征位 OUT DX AL 8279 CLEAR MOV AL 2AH 00101010 42分频 内部使用1MHZ 42的频率 OUT DX AL 8279 CLOCK MOV AL 40H OUT DX AL READ FIFO RAM COMMAND MOV AL 00H 8个字符显示 左入口 编码扫描键盘 双键锁定 OUT DX AL KEYBORD DISPLY MODE MOV AL 80H 写入的存储单元地址为0000 OUT DX AL WRITE RAM COMMAND KEY1 CALL MUSIC 发音 CALL KEYBORD CALL KEYBORD AND DISPLY NEXT2 MOV HOUR2 AL MOV HOUR1 AL MOV MIN2 AL 9 MOV MIN1 AL MOV SEC2 AL MOV SEC1 AL 键盘码存入显示缓冲区 LP0 CMP AL 9H JZ RE CMP AL 0H JZ OUTPUT CMP AL 15 JZ FU CMP AL 13H R COMMAND JNZ LP1 MOV AX 4C00H QUIT TO DOS INT 21H LP1 JMP KEY1 RE CALL RE0 录音 JMP LP1 OUTPUT CALL OUTPUT0 放录音 JMP LP1 FU CALL OUTPUT1 JMP LP1 MAIN ENDP RE0 PROC NEAR 录音子程序 MOV DX OFFSET MSGPLAY MOV AH 9 INT 21H 显示录音提示信息 LEA SI SONG R CALL KEYBORD MOV HOUR2 AL MOV HOUR1 AL MOV MIN2 AL MOV MIN1 AL MOV SEC2 AL MOV SEC1 AL 键盘码存入显示缓冲区 CALL MUSIC CALL DISP MOV SI AH CMP AH 9 JZ QRE0 INC SI JMP R QRE0 10 MOV DX OFFSET MSGEND MOV AH 9 INT 21H 显示录音提示信息 RET RE0 ENDP OUTPUT0 PROC NEAR 放录音子程序 MOV DX OFFSET MSGPLAY1 MOV AH 9 INT 21H 显示PLAY提示信息 LEA SI SONG OU MOV AL SI CMP AL 9 JZ QRE1 MOV HOUR2 AL MOV HOUR1 AL MOV MIN2 AL MOV MIN1 AL MOV SEC2 AL MOV SEC1 AL 键盘码存入显示缓冲区 CALL DISP MOV AL AH CALL MUSIC NEXT INC SI JMP OU QRE1 MOV DX OFFSET MSGEND1 MOV AH 9 INT 21H 显示PLAYEND提示信息 RET OUTPUT0 ENDP OUTPUT1 PROC NEAR 放歌子程序 MOV DX OFFSET MSGPLAY1 MOV AH 9 INT 21H 显示PLAY提示信息 LEA SI SONG1 OU1 MOV AL SI CMP AL 1 JZ QRE2 MOV HOUR2 AL MOV HOUR1 AL 11 MOV MIN2 AL MOV MIN1 AL MOV SEC2 AL MOV SEC1 AL 键盘码存入显示缓冲区 CALL DISP MOV AL AH CALL MUSIC NEXT1 INC SI JMP OU1 QRE2 MOV DX OFFSET MSGEND1 MOV AH 9 INT 21H 显示PLAYEND提示信息 RET OUTPUT1 ENDP KEYBORD PROC NEAR 键盘子程序 MOV DX PORT1 MOV AL 0D1H OUT DX AL CLEAR DISPLAY WREP CALL DISP MOV DX PORT1 IN AL DX 读状态 AND AL 07H 判断是否有按键 JZ WREP KEYN 下一次的按键 MOV DX PORT0 IN AL DX 读数据 MOV BL AL AND AL 07H AND BL 38H MOV CL 03 SHR BL CL CMP BL 00H JNZ LINE1 ADD AL 08H JMP QUIT1 LINE1 CMP BL 01H JNZ LINE2 JMP QUIT1 LINE2 12 ADD AL 10H QUIT1 RET KEYBORD ENDP DISP PROC NEAR 显示子程序 PUSH SI PUSH CX PUSH DX MOV AX DATA MOV DS AX MOV DX PORT1 MOV AL 90H OUT DX AL 写地址为0000的显示缓存区命令 每次写入后地址自动 加1指向下一次写入地址 MOV SI OFFSET SEC1 MOV CX 0001 MOV BX OFFSET LED DISP1 CLD LODSB MOV AH AL XLAT 键盘码转显示码 MOV DX PORT0 OUT DX AL 显示 LOOP DISP1 POP DX POP CX POP SI Q RET DISP ENDP MUSIC PROC NEAR 发音子程序 PUSH SI CMP AL 1 JL QUIT CMP AL 8 JG QUIT 若不在 1 8 之间转QUIT 不发音 MOV NUM AL 求出相应的时间常数的序号 MOV CX 60 取60次32个正弦波数据 DDD MOV SI 0 LLL 13 MOV AL DATA1 SI 取正弦波数据 MOV DX IO0832A OUT DX AL 放音 CALL DELAY 调延时子程序 INC SI CMP SI 32 是否取完32个数据 JL LLL 若没有 则继续 LOOP DDD 总循环次数60是否完 没有 则继续 D MOV DX PORT1 扫描实现任意键暂停 IN AL DX 读状态 AND AL 01H 判断是否有按键 JNZ FFF 按键延时 JMP QUIT FFF MOV CX 60 JMP D QUIT POP SI RET MUSIC ENDP 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 14 6 6 设计总结 设计总结 这次微机实验课程设计 使我对微机软硬件结合有了进一步的了解 原来 并不太清楚是什么意思 一直都很模糊 听课本也是很迷茫 而之前的那些单 元实验 也没有都做好 之前做的实验 由于大部分是验证性的 所以就很被 动地去做 甚至并没有想为什么要那样连电路 内部的代码更没有认真看 这 次课程设计 因为要自己
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年股权全额买卖协议样本版
- 水果提取物天然色素创新创业项目商业计划书
- 2025年非物质文化遗产保护员资格考试卷及答案
- 暖气维修创新创业项目商业计划书
- 2025年化妆师考试试题及答案
- 2025年育婴员中级理论知识试卷及答案
- 初中化学基础知识总结与练习题
- 建筑施工现场环境保护管理措施
- 新课标背景下八年级代数教学重点与难点解析
- 同构体系概念与习题解析
- 处置废旧物资投标方案
- 电动起子使用教程
- 10000中国普通人名大全
- 钢铁冶金学(炼钢学)课件
- 历史虚无主义课件
- 微生物实验室风险评估报告
- 毕业论文范文3000字(精选十六篇)
- 2022年阜阳市工会系统招聘考试题库及答案解析
- 陶艺制作过程介绍教学课件(共48张)
- 发动机构造第7章 发动机总体结构
- 眼外伤病人护理
评论
0/150
提交评论