收藏 分销(赏)

基于8086钢琴的程序设计.doc

上传人:仙人****88 文档编号:11895456 上传时间:2025-08-19 格式:DOC 页数:16 大小:1.49MB 下载积分:10 金币
下载 相关 举报
基于8086钢琴的程序设计.doc_第1页
第1页 / 共16页
基于8086钢琴的程序设计.doc_第2页
第2页 / 共16页


点击查看更多>>
资源描述
微机原理课程设计《基于8086的钢琴的程序设计》 Hefei University 微机原理课程设计报告 课题名称:基于8086钢琴的程序设计 班 级:07自动化(2)班 报 告 人:严旭东 0705076005 王志强 0705076010 丁福双 0705076019 指导教师:刘伟 林泽坤 成绩评定: ______________ 2009 年 12 月 31 日 摘 要 本设计以8086为主体,结合使用8255,8253及相关电路设计利用键盘输入发出不同频率的的音调。利用8255检测键盘,根据输入信号驱动数码管显示,控制8253,完成输入与检测;利用8253的分频输出不同的信号,经放大驱动扬声器发出声音。 关键字: 8086 8255 8253 键盘 数码管 自动化专业微机原理课程设计任务书 论文 题目 基于8086钢琴的程序设计 设计类型 导师姓名 主要内容及目标 1. 掌握利用pc机扬声器发出不同频率声音的方法. 2. 学习利用系统功能调用从键盘上读取字符的方法. 3.编写程序,程序运行时使pc机成为一架可弹奏的”钢琴”。当按下数字1-8时,依次发出1,2,3,4,5,6,7,i八个音调.按下CTRL-C则退出”钢琴”状态. 具有的设计条件 1. PC机一台,EL教学实验箱一台及汇编程序; 计划学生数及任务 3人 (1):明确课题对程序功能,运算精度等方面的要求及硬件条件 (2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。 (3):存储器资源分配 (4):编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序 (5):对程序进行汇编,调试和修改,直到程序运行结果正确为止。 计划设计进程 (按课程设计周计算) 第一周设计任务:(1):明确课题对程序功能,运算精度等方面的要求及硬件条件 (2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。 (3):存储器资源分配 第二周设计任务:(4):编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序 (5):对程序进行汇编,调试和修改,直到程序运行结果正确为止。 参考文献 《微型计算机原理及接口技术》中国科技大学出版社 吴秀清 周荷琴编著 《16-32位微型计算机技术及应用》清华大学出版社 戴梅萼 史嘉权 编著 <<汇编语言程序设计》南京大学出版社 姚君遗编著 《汇编语言程序设计教程》清华大学出版社 杨记文编著 《微型计算机原理及接口技术》实验指导书 目录 1.总体框图 1 2.方案的论证 2 3.1分频电路模块 2 3.2脉冲发生电路模块 3 3.4键盘模块 4 3.5蜂鸣器电路模块 4 3. 软件设计流程图 5 主流程图 5 键盘扫描子程序图 5 5.调试结果 6 6.总结与体会 6 7.参考文献: 7 附件:程序清单 8 12 1.总体框图 本系统主要有三个功能模块组成:键盘扫描,数码管显示,蜂鸣器发声。围绕这三个功能需要用到三个主要芯片:8086,8255,8253。首先8086主芯片负责数据交换与处理,芯片初始化等。系统开始时对键盘进行扫描,有输入信号时,8255采集信号并输入8086进行处理,驱动数码管显示输入的数字;8086接到8255输入的信号时,调用与之相关的初始值n,输入到8253,对clock进行分频输出不同的频率信号,驱动蜂鸣器进行不同的音调,同时8255对8253进行控制并对信号进行采集送到8086,决定发声时间的长短。 2.方案的论证 扬声器接口由8255、8253、驱动器和低通滤波器等构成,8255做控制器,8253做音频信号源。根据音阶频率表,利用8253可以产生相应频率的脉冲信号,不同频率的脉冲信号经驱动电路放大后,就会发生不同的音调。对 于每个按键的音调发音时间由软件延时控制,如键一直按下,就会连续发音各音阶标称频率值: 3.电路设计 3.1分频电路模块 图<1> 该电路由一片74LS393组成,见图<1>。T0-T7为分频输出插孔。该计数器在加电时由RESET信号清零。当脉冲输入为8.0MHZ时,T0-T7输出脉冲频率依次为4.0MHZ,2.0MHZ,1.0MHZ,500KHZ, 250KHZ,125KHZ,62500HZ,31250HZ。 3.2脉冲发生电路模块 图<2> 实验台上提供8MHZ的脉冲源,见图<2>,实验台上标有8MHZ的插孔,即为脉冲的输出端。 3.3数码管显示模块 图<3> 如图<3>所示8255的PA口对应于数码管显示字位口,PB口对应于字数码管显示形口。 3.4键盘模块 图<4> 如图<3>所示左边16个是数字键,右边8个是功能键,8255的PC口对应于键盘的行,PA口键盘的列 3.5蜂鸣器电路模块 图<5> 通过使用8253计数器1, 16位二进制,方式3,输出所需的方波波形,从而使蜂鸣器发出不同的声音。 3. 软件设计流程图 主流程图 键盘扫描子程序图 备注:程序清单见附件 5.调试结果 1.轰鸣器不能进行正常的音调发声 ①:在老师的指导下,发现硬件的8253焊接出现问题,无法正常的进行分频脉冲的输出,轰鸣器一直处于发生状态,经测试该输出口一直处于高电平。 ②:硬件74ls393缺少,信号输出出现问题。 2.数码管循环显示正常 在按键按下时可以循环六位显示输入数据。 6.总结与体会 通过本次课程设计让我们不仅加深了对8086 8253 8255 芯片的认识,而且汇编语言实际运用能力也得到了提高。本次课程设计让我们从课本的理论知识联系了实际运用。也使我们知道了理论知识的重要性,懂得了实际运用能力是对理论知识的升华。这对我们以后的学习将会有深厚的影响。 总之,本次此次项目的实施,不仅有利于提高我们的实际动手操作能力,也是一个将书本理论知识与现实中应用相结合的良好机遇,同时也进一步考验我们的团队协作能力、团队沟通意识等。以后我们会倍加珍惜课程设计让我们更好的学习的机会 7.参考文献: 《微型计算机原理及接口技术》中国科技大学出版社 吴秀清 周荷琴编著 《16-32位微型计算机技术及应用》清华大学出版社 戴梅萼 史嘉权 编著 《汇编语言程序设计》南京大学出版社 姚君遗编著 《汇编语言程序设计教程》清华大学出版社 杨记文编著 《微型计算机原理及接口技术》实验指导书 《DJ—8086系列微机实验指导书》 附件:程序清单 CODE SEGMENT ;DZQ.ASM ASSUME CS:CODE,ds:code CONTROL equ 43h COUNT0 equ 40h COUNT1 equ 41h COUNT2 equ 42h IOCONPT EQU 0FF2BH IOBPT EQU 0FF29H IOAPT EQU 0FF28H PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 18F0H START: JMP START0 BUF DB ?,?,?,?,?,? KZ DB ? ltime db ? lkey db ? ZP DW ? data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F1H data3: dw 2273, 2024, 1805, 1704 dw 1517, 1353, 1205, 1136 START0: mov ax,cs mov ds,ax CALL BUF1 MOV AL,88H MOV DX,IOCONPT OUT DX,AL mov dx,IOBPT mov al,00 out dx,al mov zp,offset buf redikey:call dispkey cmp KZ,09h JNC redikey cmp kz,01h jc redikey mov bx,zp mov al,kz mov [bx],al cmp bx,offset buf+5 jz zp1 inc bx mov zp,bx jmp outtone zp1: mov zp,offset buf outtone:mov dx,IOBPT mov al,0ffh out dx,al mov al,kz mov ah,00h dec ax shl ax,1 mov bx,offset data3 add bx,ax mov ax,[bx] call t8253 mov cx,20h con1: push cx call disp pop cx loop con1 mov dx,IOBPT mov al,00 out dx,al jmp redikey t8253: push ax mov al, 76h ; 计数器1, 16位二进制,方式3。 mov dx, CONTROL out dx, al pop ax mov dx, COUNT1 out dx, al mov al, ah out dx, al ret ;------------------------- dispkey:call disp call key mov ah,al ;newkey mov bl,ltime ;ltime mov bh,lkey ;lkey mov al,01h mov dx,PA ;0ff21h out dx,al cmp ah,bh mov bh,ah ;bh=new key mov ah,bl ;al=time jz disk4 mov bl,88h mov ah,88h disk4: dec ah cmp ah,82h jz disk6 cmp ah,0eh jz disk6 cmp ah,00h jz disk5 mov ah,20h dec bl jmp disk7 disk5: mov ah,0fh disk6: mov bl,ah mov ah,bh disk7: mov ltime,bl mov lkey,bh mov KZ,bh mov al,ah ret key: mov al,0ffh mov dx,PB ;0ff22h out dx,al mov bl,00h mov ah,0feh mov cx,08h key1: mov al,ah mov dx,PA ;0ff21h out dx,al rol al,01h mov ah,al nop nop nop nop nop nop mov dx,PC ;0ff23h in al,dx not al nop nop and al,0fh jnz key2 inc bl loop key1 jmp nkey key2: test al,01h je key3 mov al,00h jmp key6 key3: test al,02h je key4 mov al,08h jmp key6 key4: test al,04h je key5 mov al,10h jmp key6 key5: test al,08h je nkey mov al,18h key6: add al,bl cmp al,10h jnc fkey mov bl,al mov bh,0h mov si,offset data2 mov al,[bx+si] ret nkey: mov al,20h fkey: ret data2: db 07h,04h,08h,05h,09h,06h,0ah,0bh DB 01h,00h,02h,0fh,03h,0eh,0ch,0dh DISP: MOV AL,0FFH ;00H MOV DX,PA OUT DX,AL MOV CL,0DFH ;20H ;显示子程序 ,5ms MOV BX,OFFSET BUF DIS1: MOV AL,[BX] MOV AH,00H PUSH BX MOV BX,OFFSET DATA1 ADD BX,AX MOV AL,[BX] POP BX MOV DX,PB OUT DX,AL MOV AL,CL MOV DX,PA OUT DX,AL PUSH CX DIS2: MOV CX,0a0H LOOP $ POP CX CMP CL,0FEH JZ LX1 INC BX ROR CL,1 JMP DIS1 LX1: MOV AL,0FFH MOV DX,PB OUT DX,AL RET BUF1: MOV BUF,11H MOV BUF+1,10H MOV BUF+2,10H MOV BUF+3,10H MOV BUF+4,10H MOV BUF+5,10H RET CODE ENDS END START
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服