1、一、设计内容一、设计内容 编写一实现电子琴的程序,并实现若干扩展功能。 基本功能:用 8257 键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数 码管显示输入音阶; 扩展功能:1、录音:记录所弹奏曲目 2、放录音:任意时刻重放最新记录曲目 3、在程序中可预设一曲目,按一键实现播放该曲目。 4、在播放录制曲目或预设曲目时,按 8279 键盘上任意键可以暂停播放,再按 一次从暂停处继续播放。 5、程序运行时有友好的用户介面 二、元件与仪器二、元件与仪器 1计时器 8253 2使用 8279 芯片的键盘控制器 3并行控制器 8255A 4实验台 三、设计原理、思路及流程图三、设计原理、
2、思路及流程图 1 1、设计原理、设计原理 (1)对于一个特定的/转换接口电路,CPU 执行一条输出指令将数据送入/, 即可在 其输出端得到一定的电压输出。给/转换器输入按正弦规律变化的数据, 在其输出端即可 产生正弦波。对于音乐,每个音阶都有确定的频率。 各音阶标称频率值: (2)产生一个正弦波的数据可取 32 个(小于亦可) ,不同频率的区别,可通过调节向转 换器输出数据的时间间隔,例如:发“频率为 261。1HZ,周期为 1/261.1=3.83ms,输出数据的时 间间隔为 3.83ms/320.12ms. 定时时间可以由 8253 配合 8255 来实现。按下某键后发音时间的 长短可以由
3、发出的正弦波的个数多少来控制。本程序中设置默认长度为 60 个正弦波。 2 2、电路连接图如下:、电路连接图如下: (1)8253 和 8255 连接如下 (2)8279键盘在一个扩充板上,用一根20芯扁平电缆与实验台上扩展插头J7相连。 3 3设计思路设计思路 在本次课程设计中,根据复杂程序设计思想模块化程序设计,分析和确定程序总体设 计目标:电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块(子程序,具体可见 下) 。 程序设计的思路按以下顺序进行: 1 分析与确定程序总体设计目标 2 将总体目标划分为若干模块 3 定义每个模块的具体任务,明确它与其他模块间的通信方式 4 编写源程序
4、,进行调试,包括: 简单电子琴主程序简单电子琴主程序 结合实验指导书的两程序,将其分为5个子程序,实现简单的播放和显示音阶 的功能。 录音子程序录音子程序 实现记录弹奏曲目并播放的功能。首先由9触发,将输入的音阶存入缓存区 song中,输入的同时可以发声和显示。当再次按9时录制完成。 放音子程序放音子程序 本子程序实现放音功能。首先从 8279 键盘读出键码,判断,如果键码不是 1 8 即回到程序开始,如果是,即求出相应的时间常数的序号,取 60 次 32 个正 弦波数据,播放 32 个数据,组成一个正弦波。播放 60 次后,从 PORT1 中取出值 到 AL,和 1 相与,判断是否有按键,如
5、果有就进入死循环,直到下次按键为止。 放歌子程序放歌子程序 调用放音子程序。 暂停子程序暂停子程序 在乐曲播放过程中, 每调用一次 MUSIC, 就从 PORT1 中取出 AL, 检测 AL 个数, 即每次发音后按键盘的次数。 当检测到 AL 为 1 时, 即按了一次任意就使程序进入 一个死循环,不发音,到此实现了暂停,然后再次按动任意键时,AL 就为 2,不 为 1,所以程序跳出死循环,继续从断开处调用乐曲,继续播放。 源程序整体源程序整体 程序开始,显示提示信息,对缓存区、8279 初始化。接着调用发音子程序, 键盘子程序,在把 AL 送缓存区,实现发音和显示。接着对 9 键、0 键、f
6、键、r 键进行逐个判断,当 9 按下时,调用录音子程序。当按下 0 时,播放录制的曲目。 当按下 f 键时,播放程序中预设的曲目。当检测到 r 时,退出到 DOS 状态。当每 一个都检测不到时,退回到调用发音子程序,继续发音显示。从而实现有扩展功 能的电子琴。 5 模块连接,形成完整的程序 6 编写程序文档 4 4流程图流程图 以下用主程序与子程序配合流程图其进行说明。 (1 1)主程序流程图)主程序流程图 开始 显示缓存区,初始化 8279 初始化 调用发音子程序 调用键盘子程序 键盘码送缓存区 是否 9 键 是否 0 键 是否 S 键 是否 R 键 录音子程序 放录音子程序 放歌子程序 返回 DOS Y N N N Y Y Y N (2 2)发音子程序流程图)发音子程序流程图 (3 3)键盘显示子程序流程图)键盘显示子程序流程图 (4 4)显示子程序流程图)显示子程序流程图 (5 5)录音子程序流程图)录音子程序流程图