电子琴设计微机原理课程设计.docx
- 文档编号:2834284
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:21
- 大小:253.67KB
电子琴设计微机原理课程设计.docx
《电子琴设计微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《电子琴设计微机原理课程设计.docx(21页珍藏版)》请在冰豆网上搜索。
电子琴设计微机原理课程设计
电子琴设计微机原理课程设计
微机原理课程设计
电子琴设计
一、设计内容
编写一实现电子琴的程序,并实现若干扩展功能。
基本功能:
用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;
扩展功能:
1、在程序中可预设多首曲目,按一键可以进入预设子菜单,对要播放的曲目进行选择,并实现播放该曲目。
2、程序运行时有友好的用户介面。
3.当弹奏不同音阶时,双色点阵LED显示器显示不同的图案
二、元件与仪器
1.计时器8253
2.并行控制器8255A
3.实验台
三、设计原理、思路及流程图
1、设计原理
(1)对于一个特定的D/A转换接口电路,CPU执行一条输出指令将数据送入D/A,即可在其输出端得到一定的电压输出。
给D/A转换器输入按正弦规律变化的数据,在其输出端即可产生正弦波。
对于音乐,每个音阶都有确定的频率。
各音阶标称频率值:
(2)产生一个正弦波的数据可取32个(小于亦可),不同频率的区别,可通过调节向D/A转换器输出数据的时间间隔,例如:
发"1"频率为261。
1HZ,周期为1/261.1=3.83ms,输出数据的时间间隔为3.83ms/32=0.12ms.定时时间可以由8253配合8255来实现。
按下某键后发音时间的长短可以由发出的正弦波的个数多少来控制。
本程序中设置默认长度为60个正弦波。
(3)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
(4)点阵LED显示器是将许多LED类似矩阵一样排列在一起组成的显示器件,双色点阵LED是在每一个点阵的位置上有红绿或红黄或红白两种不同颜色的发光二极管。
当微机输出的控制信号使得点阵中有些LED发光,有些不发光,即可显示出特定的信息,包括汉字、图形等。
车站广场由微机控制的点阵LED大屏幕广告宣传牌随处可见。
(5)实验仪上设有一个共阳极8×8点阵的红黄两色LED显示器,其点阵结构如图所示。
该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。
若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。
例如欲显示汉字“年”,采用逐列循环发光。
首先由“年”的点阵轮廓,确定点阵代码(如图所示)根据“年”的点阵代码,确定逐列循环发光的顺序如下:
①行代码输出44H;红色列代码输01H;第一列2个红色LED发光。
②行代码输出54H;红色列代码输02H;第二列3个红色LED发光。
③行代码输出54H;红色列代码输04H;第三列3个红色LED发光。
④行代码输出7FH;红色列代码输08H;第四列7个红色LED发光。
⑤行代码输出54H;红色列代码输10H;第五列3个红色LED发光。
⑥行代码输出DCH;红色列代码输20H;第六列5个红色LED发光。
⑦行代码输出44H;红色列代码输40H;第七列2个红色LED发光。
⑧行代码输出24H;红色列代码输80H;第八列2个红色LED发光。
2、电路连接图如下:
(1)8253和8255连接如下
(2).实验仪上的点阵LED及驱动电路的行代码、红色列代码、黄色列代码各用一片74LS273锁存。
行代码输出的数据通过行驱动器7407加至点阵的8条行线上,红和黄列代码的输出数据通过驱动器DS75452反相后分别加至红和黄的列线上。
行锁存器片选信号为CS1,红色列锁存器片选信号为CS2,黄色列锁存器片选信号为CS3。
分别接上298h,2a0h,2a8h.
3.设计思路
在本次课程设计中,根据复杂程序设计思想——模块化程序设计,分析和确定程序总体设计目标:
电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块(子程序,具体可见下)。
程序设计的思路按以下顺序进行:
1.分析与确定程序总体设计目标
2.将总体目标划分为若干模块
3.定义每个模块的具体任务,明确它与其他模块间的通信方式
4.编写源程序,进行调试,包括:
简单电子琴主程序
结合实验指导书的两程序,将其分为若干个子程序,实现简单的播放和显示音阶的功能。
发音子程序
本子程序实现放音功能。
首先从键盘读出键码,判断,如果键码不是1-8(9除外)即仍然处于音阶输入准备状态,如果是,即求出相应的时间常数的序号,取60次32个正弦波数据,播放32个数据,组成一个正弦波。
播放60次后,然后判断是否有按键,如果有就进入死循环,直到下次按键为止。
放歌子程序
本子程序实现播放预置在程序中的歌曲,并加上一个选择子程序段,可通过选择进入不同曲目,进而实现播放不同的歌曲,播放时直接调用放音子程序
Led显示子程序
本程序实现从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
显示广告版子程序
本子程序实现在广告板上在输入不同音阶时有我们自行设计的图案显示。
输入不同图案相关的代码,然后调用图案显示判断程序段。
对其进行判断,然后进入图案显示代码,最终显示不同的图案。
源程序整体
程序开始,显示提示信息,接着调用发音子程序,实现发音和显示。
接着对9键进行判断、当9按下时,调用放音子程序。
然后iujinru选择,选择喜欢的歌曲并进行播放。
当检测到esc时,退出。
当每一个都检测不到时,退回到调用发音子程序,继续发音显示。
从而实现有扩展功能的电子琴。
5.模块连接,形成完整的程序
6.编写程序文档
4.流程图
以下用主程序与子程序配合流程图其进行说明。
(1)主程序流程图
(2)发音子程序流程图
(3)led显示子程序
(4)显示广告板子程序
(5)放音子程序
四、源程序
STACKSEGMENTPARASTACK'STACK'
DB100DUP(0)
STACKENDS
DATASEGMENT
IOPORTEQU0C400H-0280H
IO8255AEQUIOPORT+288H
IO8255CEQUIOPORT+28AH
IO8255BEQUIOPORT+28BH
IO8253AEQUIOPORT+280H
IO8253BEQUIOPORT+283H
IO0832AEQUIOPORT+290H
PROTEQU0C400H-280H
PROTHEQUPROT+298H
PROTLREQUPROT+2A0H
PROTLYEQUPROT+2A8H
DATA1DB80H,96H,0AEH,0C5H,0D8H,0E9H,0F5H,0FDH
DB0FFH,0FDH,0F5H,0E9H,0D8H,0C5H,0AEH,96H
DB80H,66H,4EH,38H,25H,15H,09H,04H
DB00H,04H,09H,15H,25H,38H,4EH,66H;正弦波数据
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MESG1DB0DH,0AH,'INPUTANUM(1--8=PLAYPIANO,9=PLAYMUSIC,ESC=EXIT):
',0DH,0AH,'$'
MESG2DB0DH,0AH,'PLEASECHOOSETHEMUSICYOULIKE(1-AAA,2-BBB):
',0DH,0AH,'$'
TIMEDB120,110,100,90,81,72,55,42;发不同音时8253的计数器初值
NUMDB?
;NUM为8253计数器初值的序号--
MESSDB'STRIKEANYKEY,RETURNTODOS!
',0AH,0DH,'$'
MIN1DB00H,01H,02H,03H,04H,05H,06H,07H
COUNTDB0
JNUMDB?
;JNUM用来存储输入数字
MUSICDB30H,31H,31H,35H,35H,36H,36H,35H,30H,30H,34H,34H,33H,33H,32H,32H,31H,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,
QMUSICDB?
DOWNDB31H,32H,33H,34H,35H,36H,37H,38H,38H,37H,36H,35H,34H,33H,32H,31H,100DUP(30H)
PPDB?
TTDB?
LMUSICEQU45
BUFF1DB00H,00H,18H,3CH,3CH,18H,00H,00H
BUFF2DB00H,1EH,0AH,46H,62H,50H,78H,00H
BUFF3DB00H,06H,06H,60H,60H,06H,06H,00H
BUFF4DB24H,66H,0E7H,00H,00H,0E7H,66H,24H
BUFF5DB42H,0E7H,42H,18H,18H,42H,0E7H,42H
BUFF6DB66H,24H,81H,0C3H,0C3H,81H,24H,66H
BUFF7DB24H,66H,00H,0DBH,0DBH,00H,66H,24H
BUFF8DB0CBH,99H,10H,0C6H,63H,08H,99H,0D3H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVTT,1
MOVAX,DATA
MOVDS,AX
MOVDX,IO8255B;使8255的A口为输出方式
MOVAX,92H
OUTDX,AL
MOVQMUSIC,0
JMPSSS
ZERO:
MOVQMUSIC,0
SSS:
CMPQMUSIC,LMUSIC
JEZERO
CMPQMUSIC,0
JESSS4
JMPSSS3
SSS4:
MOVDX,OFFSETMESG1
MOVAH,9
INT21H;显示提示信息
MOVAH,7
INT21H;从键盘接收字符,不回显
SSS3:
CMPAL,39H
JEPLAY0
CMPQMUSIC,0
JEOO
JMPPLAY
OO:
CMPAL,1BH
JEEXIT;若为ESC键,则转EXIT
CMPAL,30H
JESOFTDLY
;MOVDI,OFFESETRECORD
;MOV[DI],AL
;INCDI
CMPAL,31H
JLSSS
CMPAL,38H
JGSSS;若不在'1'-'8'之间转SSS
MOVJNUM,AL
SUBAL,31H
MOVNUM,AL;求出相应的时间常数的序号
MOVCX,60;取60次32个正弦波数据
SSS2:
MOVAL,JNUM
SUBAL,30H;将所得字符的ASCII码减30H
MOVBX,OFFSETLED;BX为数码表的起始地址
XLAT;求出相应的段码
MOVDX,IO8255C;从8255的C口输出
OUTDX,AL
DDD:
MOVSI,0
LLL:
MOVAL,DATA1[SI]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子琴 设计 微机 原理 课程设计