- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电子琴设计微机原理课程设计
微机原理课程设计
电子琴设计
设计内容
编写一实现电子琴的程序,并实现若干扩展功能。
基本功能:用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶;
扩展功能:1、在程序中可预设多首曲目,按一键可以进入预设子菜单,对要播放的曲目进行选择,并实现播放该曲目。
2、程序运行时有友好的用户介面。
3. 当弹奏不同音阶时,双色点阵LED显示器显示不同的图案
二、元件与仪器
1.计时器8253
2.并行控制器8255A
3.实验台
三、设计原理、思路及流程图
设计原理
(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; 红色列代码输 20 H;第六列5个红色LED发光。
⑦ 行代码输出 44H; 红色列代码输 40 H;第七列2个红色LED发光。
⑧ 行代码输出 24H; 红色列代码输 80 H;第八列2个红色LED发光。
电路连接图如下:
(1)8253和8255连接如下
(2).实验仪上的点阵LED及驱动电路的行代码、红色列代码、黄色列代码各用一片74LS273锁存。行代码输出的数据通过行驱动器7407加至点阵的8条行线上,红和黄列代码的输出数据通过驱动器DS75452反相后分别加至红和黄的列线上。行锁存器片选信号为CS1,红色列锁存器片选信号为CS2,黄色列锁存器片选信号为CS3。分别接上298h,2a0h,2a8h.
3.设计思路
在本次课程设计中,根据复杂程序设计思想——模块化程序设计,分析和确定程序总体设计目标:电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块(子程序,具体可见下)。
程序设计的思路按以下顺序进行:
分析与确定程序总体设计目标
将总体目标划分为若干模块
定义每个模块的具体任务,明确它与其他模块间的通信方式
编写源程序,进行调试,包括:
简单电子琴主程序
结合实验指导书的两程序,将其分为若干个子程序,实现简单的播放和显示音阶的功能。
发音子程序
本子程序实现放音功能。首先从键盘读出键码,判断,如果键码不是1-8(9除外)即仍然处于音阶输入准备状态,如果是,即求出相应的时间常数的序号,取60次32个正弦波数据,播放32个数据,组成一个正弦波。播放60次后,然后判断是否有按键,如果有就进入死循环,直到下次按键为止。
放歌子程序
本子程序实现播放预置在程序中的歌曲,并加上一个选择子程序段,可通过选择进入不同曲目,进而实现播放不同的歌曲,播放时直接调用放音子程序
Led显示子程序
本程序实现从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
显示广告版子
文档评论(0)