1、 1 课课 程程 设设 计计 说说 明明 书书 题题 目目 姓姓 名名 专专 业业 班班 级级 系系 (部)(部) 指导老师指导老师 2 目录 摘 要 . 1 1 设计任务及要求 . 2 2 工作原理 . 2 2.1 8253 简介 . 3 2.2 8255 简介 . 4 3 设计思路 4 3.1 程序功能描述 4 3.2 程序流程图 5 3.3 DOS/BIOS 功能调用 . 6 3.3.1 INT 16H(键盘 I/O 中断) 6 3.3.2 INT 10H(屏幕及显示器中断) 7 3.3.3 INT 21H(DOS 系统功能调用) 8 4 方案比较及论证 8 5 程序源代码及注释 . 8
2、 6 运行结果分析 . 11 7 调试过程记录 . 12 8 课程设计小结 . 13 参考文献 . 14 附录 . 15 3 摘 要 本文通过 8255 和 8253 来实现电子琴模拟,主要可以分成两部分,分别为输入部分和 发音部分。输入部分主要是由 8255 和 8 个常开型开关来完成。发音部分由 CUP 通过对定 时器 8253 的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端 口 61H 的最低位控制通道 2 门控的开断,以产生特殊的音响。本文用到的是 8253 的方式 3方波发生器。 在程序设计中,为了避免过于频繁的调用中断显示字符串,应用了宏定义;
3、还通过子 程序调用,有效的解决了跳转和转移过多的问题;再加上合理的 DOS 和 BIOS 功能调用, 以及各种指令的综合,最终作出了漂亮的电子琴界面,并实现了电子琴演奏高、中、低音, 以及播放预存乐曲的功能。 关键词:电子琴 8253 定时器 8255 DOS 调用 宏定义 4 1 设计任务及要求 初始条件:用汇编语言设计一个电子琴,在屏幕上显示出来,界面要美观,功能上模拟现 实电子琴功能。 要求完成的主要任务:1实现弹奏功或演奏。其中弹奏:用户每按一琴键弹奏相应音符; 演奏:按下某键后自动弹奏预存琴谱功能;还可以附加变调 2界面要美观。 2 工作原理 PC 机扬声器电路以及相关接口电路如图
4、2-1。 图 2-1 PC 机扬声器电路及相关接口电路 通过 8255 和 8253 来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音 部分。 输入部分:主要是由 8255 和 8 个常开型开关来完成。 发音部分:CUP 通过对定时器的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音 频率的 16 位计数值,端口 61H 的最低位控制通道 2 门控的开断,以产生特殊的音响。 当通道 2 用于发声时,采用的是方式 3,在方式 3 下,输出线为“1”和为“0”的时 间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。从定时器输出的方波信号,经 5 功率放大和滤波后驱动扬声器。送到
5、扬声器的信号还受到了从并行接口芯片 8255(端口地 址为 61H)来的双重控制,端口 61H 的最低位控制通道 2 的门控开断,以产生特殊的音频 信号,端口 61H 的 PB1 位和定时器的输出信号同时作为与门的输入,PB0 和 PB1 位可由 程序决定为 0 还是为 1。显然只有 PB0 和 PB1 都是 1 时,才能使扬声器发出声音。控制音 长的时间可以简单地通过反复执行指令来得到。 2.1 8253 简介 8253 芯片是常用的可编程计数器, 在微机中有着极其重要的作用。 常用于事件计数器, 单稳态触发器,分频器,方波发生器,硬件触发的单脉冲发生器等。计数器/定时器 8253 包括 3
6、 个独立的 16 位计数器通道,而每个计数器都有 6 种工作方式,可以按二进制或十 进制(BCD 码)进行计数。本文用到的是 8253 的方式 3方波发生器来实现了简易电子琴 的设计。 8253 的方式控制字如图 2-2 所示。 图 2-2 8253 的方式控制字 8253 的工作方式 3方波发生器: 它的特点是: (1)输出为周期性的方波。若计数值为 N,则输出方波的周期是 N 个 CLK 脉冲的宽度。 6 (2)写入控制字后,输出将变为高电平,当写入计数初值后,就开始计数,输出仍为 高电平;当计数到初值的一半时,输出变为低电平,直至计数到 0,输出又变为高电平, 重新开始计数。 (3)若计数值为偶数,则输出对称方波;如果计数值为奇数,则前(N+1)/2 个 CLK 脉 冲期间输出为高电平,后(N-1)/2 个 CLK 脉冲期间输出为低电平。 (4)