电子琴 计算机接口 大作业

上传人:飞*** 文档编号:40981409 上传时间:2018-05-27 格式:DOC 页数:17 大小:197.50KB
返回 下载 相关 举报
电子琴 计算机接口 大作业_第1页
第1页 / 共17页
电子琴 计算机接口 大作业_第2页
第2页 / 共17页
电子琴 计算机接口 大作业_第3页
第3页 / 共17页
电子琴 计算机接口 大作业_第4页
第4页 / 共17页
电子琴 计算机接口 大作业_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《电子琴 计算机接口 大作业》由会员分享,可在线阅读,更多相关《电子琴 计算机接口 大作业(17页珍藏版)》请在金锄头文库上搜索。

1、苏苏 州州 科科 技技 学学 院院电子与信息工程学院电子与信息工程学院计算机接口技术及其应用计算机接口技术及其应用大作业大作业-电子琴设计电子琴设计班班 级级 : 姓姓 名名 : : 学学 号号 : : 指导老师指导老师: : 2012/6/52012/6/51设计目标设计目标按照音符来设定频率和 8253 定时/计数器的延时时间。8253 的 CLK0接 1MHz 时钟,GATE0 接5V,OUT0 接 8255 的 PA0,J1 接喇叭,编程使计算机的数字键 1、2、3、4、5、6、7 作为电子琴按键,按下即发出相应的音阶。以 8255 接八个开关 K1K8,做电子琴按键输入。以 8253

2、 控制扬声器,拨动不同的开关,发出相应的音阶。扩展功能:1、录音:记录所弹奏曲目2、放录音:任意时刻重放最新记录曲目2设计思想设计思想21录音子程序实现记录弹奏曲目并播放的功能。首先由 9 触发,将输入的音阶存入缓存区 song 中,输入的同时可以发声和显示。当再次按 9 时录制完成。22放音子程序本子程序实现放音功能。首先从 8279 键盘读出键码,判断,如果键码不是 18 即回到程序开始,如果是,即求出相应的时间常数的序号,取 60次 32 个正弦波数据,播放 32 个数据,组成一个正弦波。播放 60 次后,从PORT1 中取出值到 AL,和 1 相与,判断是否有按键,如果有就进入死循环,

3、直到下次按键为止。23源程序整体程序开始,显示提示信息,对缓存区、8279 初始化。接着调用发音子程序,键盘子程序,在把 AL 送缓存区,实现发音和显示。接着对 9 键、0 键、f 键、r 键进行逐个判断,当 9 按下时,调用录音子程序。当按下 0 时,播放录制的曲目。当按下 f 键时,播放程序中预设的曲目。当检测到 r 时,退出到 DOS 状态。当每一个都检测不到时,退回到调用发音子程序,继续发音显示。从而实现有扩展功能的电子琴。24模块连接,形成完整的程序3电路原理与电路图电路原理与电路图3.1、电路原理3.11、对于一个特定的/转换接口电路,CPU 执行一条输出指令将数据送入/, 即可在

4、其输出端得到一定的电压输出。给/转换器输入按正弦规律变化的数据, 在其输出端即可产生正弦波。对于音乐,每个音阶都有确定的频率。 3.12、产生一个正弦波的数据可取 32 个(小于亦可),不同频率的区别,可通过调节向转换器输出数据的时间间隔,例如:发“频率为 261。1HZ,周期为 1/261.1=3.83ms,输出数据的时间间隔为 3.83ms/320.12ms. 定时时间可以由 8253 配合 8255 来实现。按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。本程序中设置默认长度为 60 个正弦波。32、电路图4 4、算法描述与流程图、算法描述与流程图41 算法描述软件部分对整个

5、系统来说起着重要的作用,在本电子琴系统中,软件可以分为六部分,主程序部分、发音子程序部分、放录音子程序部分、显示子程序部分、 键盘显示子程序、放录音子程序部分。42 流程图421、主程序流程图422、发音子程序流程图423、 放录音子程序流程图 42. 4、 显示子程序流程图425、键盘显示子程序流程图 42. 6、放录音子程序流程图5 5、程序、程序DATA SEGMENTIOPORT EQU 0C400H-0280HPORT0 EQU IOPORT+2B0H ;8279 DATA PORTPORT1 EQU IOPORT+2B1H ;8279 CTRL PORTSEC1 DB 0 ;HOU

6、R HIGHTSEC2 DB 0 ;HOUP LOWMIN1 DB 0 ;MIN HIGHTMIN2 DB 0 ;MIN LOWHOUR1 DB 0 ;SEC HIGHTHOUR2 DB 0 ;SEC LOWLED 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,66HIO8253A EQU IOPORT+280HIO8253B EQU IOPORT+283HIO8255A EQU IOPORT+288HIO8255B EQU IOPORT

7、+28BHIO0832A EQU IOPORT+290HDATA1 DB 80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDHDB 0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96HDB 80H,66H,4EH,38H,25H,15H,09H,04HDB 00H,04H,09H,15H,25H,38H,4EH,66H ;正弦波数据TIME DB 120,106,94,89,79,70,63,59 ;发不同音时 8253 的计数器初值DB 1.PRESS 18 TO PLAY,0DH,0AH,0DH,0AHDB2.PRESS 9 TO RECORD

8、,0DH,0AH,0DH,0AHDB3.PRESS 0 TO PLAY THE RECORD,0DH,0AH,0DH,0AHDB4.PRESS F TO PLAY THE SONG,0DH,0AH,0DH,0AHDB5.PRESS ANYKEY TO PAUSE/START WHEN PLAY THE RECORD,0DH,0AH,0DH,0AHNUM 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,-1MSGPLAY DB 0DH,0AH,0DH,0AH,RECORDING.

9、PLESS 9 TO END,0DH,0AH,0DH,0AH,$MSGEND DB RECORD FINISHED.,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 ENDSSTACK1 SEGMENT PARA STACK STACKDB 50 DUP(0)STACK1 ENDSCODE SEGMENTMAIN PROC F

10、ARASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV DX,OFFSET MSGMOV AH,9INT 21H ;显示提示信息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,PORT1MOV AL,0D3H ;11010011 清除命令特征位OUT DX,AL ;8279 CLEARMOV AL,2AH ;001

11、01010 42 分频,内部使用 1MHZ/42 的频率OUT DX,AL ;8279 CLOCKMOV AL,40HOUT DX,AL ;READ FIFO RAM COMMANDMOV AL,00H ;8 个字符显示,左入口。编码扫描键盘,双键锁定。OUT DX,AL ;KEYBORD DISPLY MODEMOV AL,80H ;写入的存储单元地址为 0000OUT DX,AL ;WRITE RAM COMMANDKEY1:CALL MUSIC ;发音CALL KEYBORD ;CALL KEYBORD AND DISPLYNEXT2:MOV HOUR2,ALMOV HOUR1,ALMO

12、V MIN2,ALMOV MIN1,ALMOV SEC2,ALMOV SEC1,AL ;键盘码存入显示缓冲区LP0:CMP AL,9HJZ RECMP AL,0HJZ OUTPUTCMP AL,15JZ FUCMP AL,13H ;R COMMANDJNZ LP1MOV AX,4C00H ;QUIT TO DOSINT 21HLP1: JMP KEY1RE:CALL RE0 ;录音JMP LP1OUTPUT:CALL OUTPUT0 ;放录音JMP LP1FU:CALL OUTPUT1JMP LP1MAIN ENDPRE0 PROC NEAR ;录音子程序MOV DX,OFFSET MSGPL

13、AYMOV AH,9INT 21H ;显示录音提示信息LEA SI,SONGR:CALL KEYBORDMOV HOUR2,ALMOV HOUR1,ALMOV MIN2,ALMOV MIN1,ALMOV SEC2,ALMOV SEC1,AL ;键盘码存入显示缓冲区CALL MUSICCALL DISPMOV SI,AHCMP AH,9JZ QRE0INC SIJMP RQRE0:MOV DX,OFFSET MSGENDMOV AH,9INT 21H ;显示录音提示信息RETRE0 ENDPOUTPUT0 PROC NEAR ;放录音子程序MOV DX,OFFSET MSGPLAY1MOV AH

14、,9INT 21H ;显示 PLAY 提示信息LEA SI,SONGOU:MOV AL,SICMP AL,9JZ QRE1MOV HOUR2,ALMOV HOUR1,ALMOV MIN2,ALMOV MIN1,ALMOV SEC2,ALMOV SEC1,AL ;键盘码存入显示缓冲区CALL DISPMOV AL,AHCALL MUSICNEXT:INC SIJMP OUQRE1:MOV DX,OFFSET MSGEND1MOV AH,9INT 21H ;显示 PLAYEND 提示信息RETOUTPUT0 ENDPOUTPUT1 PROC NEAR ;放歌子程序MOV DX,OFFSET MSG

15、PLAY1MOV AH,9INT 21H ;显示 PLAY 提示信息LEA SI,SONG1OU1:MOV AL,SICMP AL,-1JZ QRE2MOV HOUR2,ALMOV HOUR1,ALMOV MIN2,ALMOV MIN1,ALMOV SEC2,ALMOV SEC1,AL ;键盘码存入显示缓冲区CALL DISPMOV AL,AHCALL MUSICNEXT1:INC SIJMP OU1QRE2:MOV DX,OFFSET MSGEND1MOV AH,9INT 21H ;显示 PLAYEND 提示信息RETOUTPUT1 ENDPKEYBORD PROC NEAR ;键盘子程序MOV DX,PORT1MOV AL,0D1HOUT DX,AL ;CLEAR DISPLAYWREP:CALL DISPMOV DX,PORT1IN AL,DX ;读状态AND AL,07H ;判断是否有按键JZ WREPKEYN: ;下一次的按键MOV DX,PORT0IN AL,DX ;读数据MOV BL,ALAND AL,07HAND BL,38HMOV CL,03SHR BL,CLCMP BL,00HJNZ LINE1ADD AL,08HJMP QUIT1LINE1:CMP B

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号