版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理课程设计电子琴设tL设计内容编写一实现电子琴的程序,并实现若干扩展功能。基本功能:用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通 过七段数码管显示输入音阶;扩展功能:1在程序中可预设多首曲目,按一键可以进入预设子菜单,对要 播放的曲目进行选择,并实现播放该曲目。2、程序运行时有友好的用户介面。3. 当弹奏不同音阶时,双色点阵 LED显示器显示不同的图案、元件与仪器1 .计时器82532 并行控制器8255A3.实验台三、设计原理、思路及流程图1、设计原理(1) 对于一个特定的D / A转换接口电路,CPU执行一条输出指令将数据送入D / A,即可在其输出端得到一定的电压输出。
2、给D /A转换器输入按正弦规律变 化的数据,在其输出端即可产生正弦波。对于音乐,每个音阶都有确定的频率。 各音阶标称频率值:音阶2p3"4匚6卩7心频車(单 傥Hzp261.lv*293.加329.6卩349.392.0 十440*493.9 卩529. W对应num 取Kus)*1血眇5畀(2) 产生一个正弦波的数据可取 32个(小于亦可),不同频率的区别,可通过 调节向D/A转换器输出数据的时间间隔,例如:发"1 "频率为261。1HZ,周期为 1/261.1=3.83ms,输出数据的时间间隔为 3.83ms/32 = 0.12ms.定时时间可以由 8253配
3、合8255来实现。按下某键后发音时间的长短可以由发出的正弦波的个数 多少来控制。本程序中设置默认长度为60个正弦波。(3) 实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平 选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。七段数码管字型代码表显示褫*押却段即卜Op井3伽口0PW0PIP1Pb沖1P0卫1.1P5bh*己fg3卩1P肿冲珅4如c4门2肿CM却疋那5"IP1P0<196如d6*IP1P2疋Op0*31P1P8P却却甘P却却gpIp1门P却(4) 点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件, 双色点阵LED是在每一个点阵的
4、位置上有红绿或红黄或红白两种不同颜色的发 光二极管。当微机输出的控制信号使得点阵中有些 LED发光,有些不发光,即可 显示出特定的信息,包括汉字、图形等。车站广场由微机控制的点阵LED大屏幕 广告宣传牌随处可见。 实验仪上设有一个共阳极8X 8点阵的红黄两色LED显示器,其点阵结构如图 所示。该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。 若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低 电平即可。例如欲显示汉字“年”,采用逐列循环发光。首先由“年”的点阵轮廓,确定点 阵代码(如图所示)根据“年”的点阵代码,确定逐列循环发光的顺序如下: 行代码输出4
5、4H;红色列代码输01H;第一列2个红色LED发光。 行代码输出54H;红色列代码输02H;第二列3个红色LED发光。 行代码输出54H;红色列代码输04H;第三列3个红色LED发光。 行代码输出7FH;红色列代码输08H;第四列7个红色LED发光。 行代码输出54H;红色列代码输10H;第五列3个红色LED发光。 行代码输出DCH 红色列代码输20 H ;第六列5个红色LED发光。 行代码输出44H;红色列代码输40 H ;第七列2个红色LED发光。 行代码输出24H;红色列代码输80 H ;第八列2个红色LED发光。2、电路连接图如下:(1)8253和8255连接如下1MHZ CLK01-
6、OLIT0PA0卄-GATESCSCS230H 4_一283H «825382E5(2).实验仪上的点阵LED及驱动电路的行代码、红色列代码、黄色列代码各用 一片74LS273锁存。行代码输出的数据通过行驱动器 7407加至点阵的8条行线 上,红和黄列代码的输出数据通过驱动器 DS75452反相后分别加至红和黄的列线 上。行锁存器片选信号为CS1,红色列锁存器片选信号为CS2黄色列锁存器片选 信号为CS3分别接上298h,2a0h,2a8h.3. 设计思路在本次课程设计中,根据复杂程序设计思想一一模块化程序设计,分析和确 定程序总体设计目标:电子琴基本功能及部分扩展功能后, 将总体目
7、标划分为若 干模块(子程序,具体可见下)。程序设计的思路按以下顺序进行:1 分析与确定程序总体设计目标2. 将总体目标划分为若干模块3. 定义每个模块的具体任务,明确它与其他模块间的通信方式4 编写源程序,进行调试,包括: 简单电子琴主程序 结合实验指导书的两程序,将其分为若干个子程序,实现简单的播放和显示 音阶的功能。发音子程序本子程序实现放音功能。首先从键盘读出键码,判断,如果键码不是1 8(9 除外)即仍然处于音阶输入准备状态,如果是,即求出相应的时间常数的序 号,取60次 32个正弦波数据,播放 32个数据,组成一个正弦波。 播放 60次后, 然后判断是否有按键,如果有就进入死循环,直
8、到下次按键为止。放歌子程序 本子程序实现播放预置在程序中的歌曲,并加上一个选择子程序段,可通过 选择进入不同曲目,进而实现播放不同的歌曲,播放时直接调用放音子程序Led 显示子程序本程序实现从键盘输入一位十进制数字 (09),在七段数码管上显示出来 显示广告版子程序 本子程序实现在广告板上在输入不同音阶时有我们自行设计的图案显示。 输 入不同图案相关的代码, 然后调用图案显示判断程序段。 对其进行判断, 然后进 入图案显示代码,最终显示不同的图案。源程序整体 程序开始,显示提示信息,接着调用发音子程序,实现发音和显示。接着对9 键进行判断、当 9 按下时,调用放音子程序。然后 iujinru
9、选择,选择喜欢的 歌曲并进行播放。当检测到 esc 时,退出。当每一个都检测不到时,退回到调用 发音子程序,继续发音显示。从而实现有扩展功能的电子琴。5 模块连接,形成完整的程序6 编写程序文档4.流程图以下用主程序与子程序配合流程图其进行说明(1)主程序流程图Y一J 退出(2)发音子程序流程图从锲盘读 字符主程序延时子程序(3) led显示子程序(4)显示广告板子程序(5)放音子程序四、源程序STACK SEGMENT PARA STACK'STACK'DB 100 DUP(0)STACK ENDSDATA SEGMENTIOPORTEQU 0C400H-0280HIO825
10、5AEQU IOPORT+288HIO8255CEQU IOPORT+28AHIO8255BEQU IOPORT+28BHIO8253AEQU IOPORT+280HIO8253BEQU IOPORT+283HIO0832AEQU IOPORT+290HPROT EQU 0C400H-280HPROTH EQU PROT+298HPROTLR EQUPROT+2A0HPROTLY EQUPROT+2A8HDATA1 DB 80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDHDB 0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96HDB 80H,66
11、H,4EH,38H,25H,15H,09H,04HDB 00H,04H,09H,15H,25H,38H,4EH,66H ; 正弦波数据LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1 DB0DH,0AH,'INPUT A NUM (1-8=PLAY PIANO,9=PLAYMUSIC,ESC=EXIT):',0DH,0AH,'$'MESG2 DB 0DH,0AH,'PLEASE CHOOSE THE MUSIC YOU LIKE(1-AAA,2-BBB) :',0DH,0AH,'$
12、39;TIME DB 120,110,100,90,81,72,55,42; 发不同音时 8253的计数器初值NUM DB ? ;NUM 为8253计数器初值的序号 -MESS DB 'STRIKE ANY KEY,RETURN TO DOS!',0AH,0DH,'$'MIN1 DB 00H,01H,02H,03H,04H,05H,06H,07HCOUNT DB 0JNUM DB ? ;JNUM 用来存储输入数字MUSIC DB 30H,31H,31H,35H,35H,36H,36H,35H,30H,30H,34H,34H,33H,33H,32H,32H,31H
13、,100DUP(30H);,35H,35H,34H,34H,33H,33H,32H,35H,35H,34H,34H,33H,33H,32H,31H,31H,35H,35H,36H,36H,35H,34H,34H,33H,33H,3;2H,32H,31H,QMUSIC DB ?DOWN DB 31H,32H,33H,34H,35H,36H,37H,38H,38H,37H,36H,35H,34H,33H,32H,31H,100DUP(30H)PP DB ?TT DB ?LMUSIC EQU 45BUFF1 DB 00H,00H,18H,3CH,3CH,18H,00H,00HBUFF2 DB 00H
14、,1EH,0AH,46H,62H,50H,78H,00HBUFF3 DB 00H,06H,06H,60H,60H,06H,06H,00HBUFF4 DB 24H,66H,0E7H,00H,00H,0E7H,66H,24HBUFF5 DB 42H,0E7H,42H,18H,18H,42H,0E7H,42HBUFF6 DB 66H,24H,81H,0C3H,0C3H,81H,24H,66HBUFF7 DB 24H,66H,00H,0DBH,0DBH,00H,66H,24HBUFF8 DB 0CBH,99H,10H,0C6H,63H,08H,99H,0D3HDATA ENDSCODE SEGMENT
15、ASSUME CS:CODE,DS:DATASTART: MOV TT,1MOV AX,DATAMOV DS,AXMOV DX,IO8255B ;使8255的A 口为输出方式MOV AX,92HOUT DX,ALMOV QMUSIC,0JMP SSSZERO: MOV QMUSIC,0SSS: CMP QMUSIC,LMUSICJE ZEROCMP QMUSIC,0JE SSS4JMP SSS3SSS4: MOV DX,OFFSET MESG1MOV AH,9INT 21H;显示提示信息MOV AH,7INT 21H;从键盘接收字符 , 不回显SSS3: CMP AL,39HJE PLAY0C
16、MP QMUSIC,0JE OOJMP PLAYOO: CMP AL,1BHJE EXIT;若为ES(键,则转EXITCMP AL,30HJE SOFTDLY;MOV DI ,OFFESET RECORD; MOV DI ,AL; INC DICMP AL,31HJL SSSCMP AL,38HJG SSS ; 若不在 '1'-'8' 之间转 SSSMOV JNUM,AL SUB AL,31H MOV NUM,AL ; MOV CX,60 ;SSS2: MOV AL,JNUM SUB AL,30H ; MOV BX,OFFSET LED XLAT ; MOV D
17、X,IO8255C ; OUT DX,ALDDD: MOV SI,0LLL: MOV AL,DATA1SI MOV DX,IO0832A OUT DX,AL CALL DELAY INC SI CMP SI,32 ; JL LLL ; LOOP DDDMOV CX,0002HCALL NIAN ;CALL NIAN;CALL NIANJMP SSSEXIT: MOV AH,4CHINT 21HPLAY0: CMP TT,1JE TT1MOV DX,OFFSET MESG2 MOV AH,9 INT 21H;MOV AH,7INT 21H;MOV PP,ALPLAY: MOV AL,QMUSIC
18、CMP PP,32H求出相应的时间常数的序号取60次32个正弦波数据将所得字符的ASCII码减30H;BX 为数码表的起始地址 求出相应的段码 从8255的C 口输出取正弦波数据放音 调延时子程序是否取完 32个数据 若没有 , 则继续总循环次数 60是否完 ,没有 ,则继续转SSS显示子菜单输入子菜单命令JE PLAY2CMP PP,31HJNE PLAY0MOV BX,OFFSET MUSICPLAY3: XLATMOV CL,QMUSICADD CL,01HMOV QMUSIC,CLJMP OOTT1: MOV TT,0MOV PP,32HPLAY2: MOV BX,OFFSET DOW
19、NJMP PLAY3SOFTDLY: MOV BL,10DELAY4: MOV CX ,0FFFFHWAIT3: LOOP WAIT3DEC BLJNZ DELAY4JMP SSSDELAY PROC NEAR ; 延时子程序CCC1: MOV BX,OFFSET TIMEMOV DX,IO8253B ;置 8253通道 0为方式 0工作MOV AL,10HOUT DX,ALMOV AL,NUM ; 取相应的时间常数XLATMOV DX,IO8253AOUT DX,AL ;向8253通道 0输出KKK: MOV DX,IO8255AIN AL,DX ;从 8255A 口读一字节TEST AL,
20、01;判 PAO 口是否为 1JZ KKK;若不为 1, 则转 KKKRET;子程序返回DELAY ENDPNIAN PROC NEARSTART2: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSAGN: MOV CX,80HD2: MOV SI,OFFSET MIN1MOV AH,01HPUSH CXMOV CX,0008HNEXT: MOV AL,JNUMCALL BUFFMOVDX,PROTHOUTDX,ALMOVAL,AHMOVDX,PROTLROUTDX,ALSHLAH,01INCSIPUSH CXMOVCX,0FFFFHDELAY2: LOOP DE
21、LAY2POPCXLOOP NEXTPOPCXCALL DELAYLOOP D2MOVAL,00MOVDX,PROTLROUTDX,AL显示第一行红延时CMP QMUSIC,0JE C1RETC1: MOV AH,01INT 16H;AGN1为显示黄色JNZ BACK AGN1: MOV CX,80H D1: MOV SI,OFFSET MIN1MOV AH,01PUSH CXMOV CX,0008H NEXT1: MOV AL,JNUM CALL BUFFMOVDX,PROTHOUTDX,ALMOVAL,AHMOVDX,PROTLYOUTDX,ALSHLAH,01INCSIPUSHCXMOV
22、CX,0FFFFHDELAY1: LOOP DELAY1MOVCX,0FFFFHDELAY3: LOOP DELAY3POPCXLOOP NEXT1POPCXCALL DELAYLOOPD1MOVAL,00MOVDX,PROTLYOUTDX,ALCMP QMUSIC,0 JE C2RETC2: MOV AH,01 INT 16H JNZ BACK JMP AGN延迟子程序BACK: RETDELAY0 PROC NEAR PUSH CXMOV CX,0FFFFHCCC: LOOP CCC POP CXRET代码选择判断子程序DELAY0 ENDPBUFF PROC NEARJUDGE1: CM
23、P AL,31HJE L1CMP AL,32HJE L2CMP AL,33HJE L3CMP AL,34HJE L4CMP AL,35HJE L5CMP AL,36HJE L6CMP AL,37HJE L7CMP AL,38HJE L8;JMP A2L1: MOV AL,SIMOV BX,OFFSET BUFF1得到第一行码XLATRET ;L2: MOV AL,SIMOV BX,OFFSET BUFF2XLATRETL3: MOV AL,SIMOV BX,OFFSET BUFF3XLATRETL4: MOV AL,SIMOV BX,OFFSET BUFF4XLATRETL5: MOV AL,
24、SIMOV BX,OFFSET BUFF5XLATRETL6: MOV AL,SIMOV BX,OFFSET BUFF6XLATRETL7: MOV AL,SIMOV BX,OFFSET BUFF7XLATRETL8: MOV AL,SIMOV BX,OFFSET BUFF8XLATRETBUFF ENDPNIAN ENDPCODE ENDSEND START五、调试情况及其分析源程序完成后, 进行子程序与程序的调试工作, 程序调试过程、 完成情况及 其分析按以下顺序进行:1 主程序简单电子琴功能主程序要求完成的功能有: 电子琴简单功能实现及将音阶用数码管显示, 主程序由电子琴实验程序有机组成
25、, 两个程序简单拼凑在一齐是不能实现的。 经过实际调试和修改,将原电子琴程序改为 2 个子程序:(实现播放音阶) 和(实现播放音阶时延时);并加入了数码管显示的子程序以及广告版显示 图案程序。然后播放预存歌曲由放歌子程序完成。调试后, 主程序能实现课程设计要求的功能, 并且界面清晰、 操作容易。2 子程序放歌(已预存)功能此功能将一首预存的歌曲播放, 此功能可以调用放音的子程序实现, 唯 一不同就是根据键盘的输入控制, 选择播放的缓存区是预存歌缓存区。 然后 通过键盘选择所要播放的歌曲曲目3 源程序整体功能将各子程序调试完成后, 进行最后的源程序整体功能调试。 调试过程中 我们注意到:a. 程序模块化(功能分为若干子程序)能使源程序清晰,调试简单,因 此在调试中我们还将源程序进一步模块化。b. 注意子程序之间的通信方式,c. 调用子程序前,使用 push/pop 保护了一些子程序会用到的主程序同 时会用到的寄存器,保证调用之后主程序的顺利执行。在调试过程中出现的一些小问题, 我们都根据以上 3 点总结出的经验作 为原则进行调试, 调试过程十分顺利。 最后根据电子琴的实际用途加上了一 些必要清晰的提示性语句,使界面更加友好。六、实验总结:微机原理与应用这门课程刚刚于上学期结束,但是由于以前我们实验课时实 在是太少了, 还有经过寒假的放松, 所以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 艾叶浴的临床应用
- 城市轨道交通票务系统升级方案
- 裁判入门培训课件
- 中医文化建设项目实施与管理方案
- 蛋鸡饲养管理培训课件
- 中学生理想主题班会活动方案
- 企业销售人员激励机制方案优化
- 4.1 人要有自信 课件-2024-2025学年道德与法治七年级下册 统编版
- 公共关系危机应对及舆情处理方案
- 产房护理人文关怀课件
- 安全生产管理机构人员配备表
- 非职业一氧化碳中毒课件
- 保定市道路野生地被植物资源的调查与分析:物种多样性与生态功能的探究
- smt车间安全操作规程
- JJF 2254-2025戥秤校准规范
- 强制医疗活动方案
- DB42T 850-2012 湖北省公路工程复杂桥梁质量鉴定规范
- 月经不调的中医护理常规
- 2024-2025学年江苏省南通市如东县、通州区、启东市、崇川区高一上学期期末数学试题(解析版)
- 瑞幸ai面试题库大全及答案
- 现代密码学(第4版)-习题参考答案
评论
0/150
提交评论