1、郑州科技学院微机原理与接口技术课程设计题 目 _基于 8086电子琴的设计与实现学生姓名 专业班级 12级计算机科学与技术一班 学 号 院 (系) 信息工程 指导教师 完成时间 2015 年 1 月 11 日 目 录1 引言 .12 设计方案与论证 .32.1方案一 32.2 方案二 .32.2.1设计思路 42.2.2各个音节频率的设定 83 设计原理及功能说明 .93.1硬件 93.1.1 8253简介 103.1.2 8255简介 123.2 软件 .143.2.1 设计实验总流程图 .143.2.2 设计子程序流程图 .154 调试与结果测试 .174.1 硬件调试 .174.2 软件
2、调试 .204.3测试方案和测试结果 225 总结 .23参考文献 .26附录 1:总体电路原理图 27附录 2:元器件清单 28附录 3:源代码 291 引言随着电子技术的发展,计算机在现代科学技术的发展中起着越来越重要作用。多媒体技术、网络技术、智能信息处理技术、自适用控制技术、数据挖掘与处理技术等都离不开计算机。本次课程设计是基于微机原理与接口技术的简单应用。微机技术目前运用最广泛的就是单片机。单片机是随着大规模集成电路的出现极其发展,将计算机的CPU、 RAM、ROM 定时/计数器和多种 I/O 接口集成在一片芯片上,形成了芯片级的计算机,因此单片机早期的含义称为单片微型计算机。它拥有
3、优异的性价比、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗的显著优点.主要应用于智能仪器仪表、工业检测控制、机电一体化等方面,并且取得了显著的成果。单片机控制通用 MIDI 音源模块制作制作出的电子琴,结构简单,可靠性高,并且价格低廉,具有实用的价值。这种电子琴能够支持单音和复音弹奏,如果与高品质的音源芯片连接,音质更可与高档电子琴相媲美。手机中通用的音乐芯片构成音源模块,效果不错,价格更低廉,如韩国产的 QS6400 等,这些芯片的驱动要复杂一些,需要对芯片进行初始化设置。此外还有音乐盒、附有生日歌的生日卡片等等。所以利用微机制作的简易电子琴在我们的日常生活中随处可见 1。微机原理
4、简易电子琴设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴固有的基本功能,故叫简易电子琴。利用定时器可发出不同频率的方波,不同频率的方波经喇叭就会发出不同音调。其次,定时器按设置的定时参数产生中断,这一次中断发出脉冲低电平,下一次反转发出脉冲高电平,由于定时参数不同,就发出不同频率的方波 2,本设计中按键一次,会发出方波,松开后随之延时,但在延时的期间继续检测按键,若此时又有键被按下,若被按下的仍为原键则声音不变,否则键盘会译出被按下的另一个键的音调。本 次 课 程 设 计 的 目 的 是 通过 D/A 转换器产生摸拟信号,使 PC 机作为简易电子琴。其主要任务有以下几点:基于 8
5、086 系统;使用计算机的数字键 1、2、3、4、5、6、7、8 作为电子琴的按键,按下即可发出相应的音阶;音阶通过扬声器发出声音。本次设计通过 8255 和 8253来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。输入部分:主要是由 8255 和 8 个常开型开关来完成。发音部分:CUP 通过对定时器 8253 的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端口 61H 的最低位控制通道 2 门控的开断,以产生特殊的音响 3。本文用到的是 8253 的方式 3方波发生器。通 过 课 程 设 计 使 学 生 更 进 一 步 掌 握 微 机 原
6、 理 及 应 用 课 程 的 有 关 知识 , 提 高 应 用 微 机 解 决 问 题 的 能 力 , 加 深 对 微 机 应 用 的 理 解 。 通 过 查阅 资 料 , 结 合 所 学 知 识 进 行 软 、 硬 件 的 设 计 , 使 学 生 初 步 掌 握 应 用 微机 解 决 问 题 的 步 骤 及 方 法 。 为 以 后 学 生 结 合 专 业 从 事 微 机 应 用 设 计 奠定 基 础 。2 设计方案与论证2.1方案一首 先 利 用 了 编 程 程 序 , 编 辑 8255 芯 片 控 制 字 , 对 其 进 行 初 始 化 ,使 其 工 作 在 方 式 0, 即 基 本 输
7、入 输 出 状 态 , 将 8255 的 A 端 口 设 置 为输 出 ,C 端 口 进 行 ,经 CPU 运 算 后 , 输 出 到 8254 芯 片 的 A 端 口 中 , 由此 实 现 对 其 的 初 始 化 。将 8254 芯 片 设 置 为 工 作 在 方 式 3,即 输 出 对 称 方 波 状 态 。 A 端 口为 输 入 , “OUT”指 令 可 将 输 出 对 应 一 定 频 率 的 方 波 送 到 扬 声 器 中 , 由此 实 现 发 声 4。 本 实 验 频 率 大 小 控 制 发 出 声 音 的 高 低 , 通 过 对 延 时 程序 的 调 用 控 制 发 出 声 音 的
8、 长 短 。 并 通 过 所 编 程 序 实 现 对 键 盘 的 重 复扫 描 , 从 而 可 以 弹 奏 多 个 音 符 的 试 验 目 的 。2.2 方案二8253 的 CLK0 接 1MHz 时钟,GATE0 接+5V ,OUT0 接 8255 的PA0,K8 跳线连接喇叭,使用汇编语言设计一个运行于计算机的电子琴程序,程序应实现弹奏功能。其中弹奏:用户每按一琴键弹奏相应音符;软件预想功能为:按数字 18 为弹奏功能,按下即发出相应的音阶。按键发音,当从键盘上敲击 18 时,音响发出哆、唻、咪、发、嗦、啦、唏、唗的音节。对比方案一,其实两个方案差不多,但是我对于 8254 不熟悉,所以最
9、终决定此方案为我选择的最佳方案,并附上本次设计的设计框图如图 2-1 所示:图 2-1 设计框图2.2.1设计思路 电子琴的设计实际上就是要设计一个程序,能够通过该程序控制PC 机内扬声器的发声规律,按下相应的按键后,扬声器能发出指定频率的声音。PC 机内的扬声器是通过并行接口芯片 8255 和定时芯片8253 来控制发音的。在本次课程设计中,分析和确定程序总体设计目标:电子琴基本功能后,将总体目标确定为连接电路与编程来实现功能。程序设计的思路按以下顺序进行:(1)分析与确定程序总体设计目标;通过 D/A 转换器产生摸拟信号,使 PC 机作为简易电子琴。其总体原理图如图 2-2 所示:系统总线
10、键盘8255 芯片8253 芯片扬声器发声图 2-2 总体原理图(2)按照电路图连接实验箱,如图 2-3 所示:图 2-3 电路连接图(3)编写源程序,进行调试,包括: 发音部分功能实现由更件的连接形式可知,扬声器的开断是由 8255 的 PB0 和 PB1 以及 8253 通道 2 同时控制的,PB0 和 PB1 同时为高电平时,扬声器开,有一个为低电平时,扬声器关断,又知 8255 B 口地址为 61H,8253 通道2 地址为 42H,控制口地址为 43H。具体程序编写 5如下:8253 初始化程序段:mov al,10110110b ;选择 8253 的通道 2,并设置为工作方式3ou
11、t 43h,al mov ax,bxout 42h,al ;将计数初值的低 8 位写入计数通道mov al,ahout 42h,al ;将计数初值的高 8 位写入计数通道开扬声器程序段:in al,61h ;读入 B 口数据or al,03h ;将 PB0 和 PB1 置 1out 61h,al ;将设置好的数据送回 B 口关扬声器程序段:in al,61h ;读入 B 口数据and al,0fch ;将 PB0 和 PB1 置 0out 61h,a ;将设置好的数据送回 B 口弹奏功能的实现当按键为数字 1-8 时,选择弹奏功能,通过对按键的判断,求得其偏移地址,然后通过查表得其相应频率值,
12、再由上述计算计数初值的方法求得计数初值,然后将计数初值送人 8253 的通道 2,最后调用发音子程序即实现弹奏功能。具体程序段如下:sub al,31h ;求偏移量shl al,1mov bl,al ;保存偏移量mov bh,0mov ax,num1 ;计算计数初值mov dx,num2div word ptrtab+bxmov bx,ax ;保存计数初值延时功能的实现当弹奏完音乐之后,调用延时子程序,音乐延时播放。具体程序段 6如下:delay proc near ;延时子程序ccc: mov bx,offset timemov dx,io8253b ;置8253通道0为方式0工作mov a
13、l,10hout dx,almov dx,io8255b ;设8255A口输入mov al,9bhout dx,almov al,num ;取相应的时间常数xlatmov dx,io8253aout dx,al ;向8253通道0输出kkk: mov dx,io8255ain al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为1jz kkk ;若不为1,则转KKKret ;子程序返回delay endp2.2.2各个音节频率的设定(1)对 于 一 个 特 定 的 D/A 转 换 接 口 电 路 CPU 执 行 一 条 输 出 指 令将 数 据 送 入 D/A 即 可
14、在 其 输 出 端 得 到 一 定 的 电 压 输 出 。 给 D/A 转 换器 输 入 按 正 弦 规 律 变 化 的 数 据 ,在 其 输 出 端 即 可 产 生 正 弦 波 。 对 于 音乐 ,每 个 音 阶 都 有 确 定 的 频 率 , 如 表 2-1 所 示 : 表 2-1 各 音 阶 标 称 频 率 表音 阶 1 2 3 4 5 6 7 8频 率 ( 单 位 :Hz)261.1 293.7 329.6 349.2 392.0 440.0 493.9 529.7对 应 num 取 值( us)120 106 94 89 79 70 63 59以 18 接 8255 的 A 口做为电
15、子琴的键盘分别输入哆、唻、咪、发、嗦、啦、唏、唗 的音,以 8255 的 B 口作为输出。用 8253 定时器产生频率控制扬声器发声。 以 8255 接八个开关 18,做电子琴按键输入。 以 8253 控制扬声器,发出相应的音阶。 要求:1发 哆的音 261.1Hz2发 唻的音 293.7Hz 3发 咪的音 329.6Hz 4发 发的音 349.2Hz 5发 嗦的音 392.0Hz 6发 啦的音 440.0Hz 7发 唏的音 493.9Hz 8发 唗的音 529.7Hz(2)产 生 一 个 正 弦 波 的 数 据 可 取 32 个 ( 小 于 亦 可 ) , 不 同 频 率 的区 别 , 可
16、通 过 调 节 向 D/A 转 换 器 输 出 数 据 的 时 间 间 隔 ,例 如 :发 “1“频 率 为 261.1HZ,周 期 为 1/261.1=3.83ms, 输 出 数 据 的 时 间 间 隔 为3.83ms/32=0.12ms。 定 时 时 间 可 以 由 8253 配 合 8255 来 实 现 。 按 下某 键 后 发 音 时 间 的 长 短 可 以 由 发 出 的 正 弦 波 的 个 数 多 少 来 控 制 。3 设计原理及功能说明3.1硬件通过 8255 和 8253 来实现电子琴模拟,主要可以分成两部分,分别为输入部分和发音部分。 输入部分:主要是由 8255 和 8 个
17、常开型开关来完成。 发音部分:CUP 通过对定时器的通道 2 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端口 61H 的最低位控制通道2 门控的开断,以产生特殊的音响。 当通道 2 用于发声时,采用的是方式 3,在方式 3 下,输出线为“1”和为“0”的时间各占计数时间的一半,因而产生一系列间隔均匀的脉冲。从定时器输出的方波信号,经功率放大和滤波后驱动扬声器。送到扬声器的信号还受到了从并行接口芯片 8255(端口地址为61H)来的双重控制,端口 61H 的最低位控制通道 2 的门控开断,以产生特殊的音频信号端口 61H 的 PB1 位和定时器的输出信号同时作为与门的
18、输入,PB0 和 PB1 位可由程序决定为 0 还是为 1。显然只有 PB0 和PB1 都是 1 时,才能使扬声器发出声音。控制音长的时间可以简单地通过反复执行指令来得到。 3.1.1 8253简介(1)基本介绍8253 芯片是常用的可编程计数器,在微机中有着极其重要的作用。常用于事件计数器,单稳态触发器,分频器,方波发生器,硬件触发的单脉冲发生器等。计数器/定时器 8253 包括 3 个独立的 16 位计数器内部总线RDA1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7计数器 0计数器 2计数器 1控制寄存器A0数据总线缓冲器R/W 逻辑电路WCS通
19、道,而每个计数器都有 6 种工作方式,可以按二进制或十进制(BCD码)进行计数。本文用到的是 8253 的方式 3方波发生器来实现了简易电子琴的设计。(2)工作原理8253 芯片中有 3 个计数通道,称为通道 0,1,2,它们与外部电路相连的信号线有 3 根:CLK,GATE,OUT,CLK 是脉冲输入端,GATE 是门控信号,OUT 是输出信号,计数器工作在减 1 状态。其内部结构图,方式控制字格式,如图 3-1,图 3-2 所示。其中当计数器工作在方式 3 时,输出信号为方波信号。图 3-1 8253 内部结构图D7 D6 D5 D4 D3 D2 D1 D0计数器选择00 计数器 001
20、计数器 110 计数器 211 不用00 计数器锁存01 读写低 8 位10 读写高 8 位11 读写 16 位工作方式选择000 方式 0001 方式 110 方式 211 方式 3100 方式 4101 方式 5计数方式0 二进制1 BCD 计数图 3-2 8253 控制字格式PC 机内 8253 的通道 0,通道 1,通道 2,控制口的端口地址分别为:40H,41H,42,43H。因为扬声器是由通道 2 来控制的,故应选择通道2,工作方式选为方式 3,输出的信号则为方波信号。(3)8253 的工作方式 3方波发生器其特点是:输出为周期性的方波。若计数值为 N,则输出方波的周期是 N 个
21、CLK 脉冲的宽度; 写入控制字后,输出将变为高电平,当写入计数初值后,就开始计数,输 出仍为高电平; 当计数到初值的一半时, 输出变为低电平,直至计数到 0, 输出又变为高电平,重新开始计数; 若计数值为偶数,则输出对称方波;如果计数值为奇数,则前(N+1 )/2 个 CLK 脉冲期间输出为高电平,后(N-1)/2 个 CLK 脉冲期间输出为低电 平; GATE 信号能使计数过程重新开始, GATE=1 允许计数,GATE=0 禁止计数。 停止后 OUT 将立即变高电平,当 GATE 再次变高以后,计数器将自动装入 计数初值,重新开始计数。3.1.2 8255简介(1)基本介绍按功能可把 8
22、255 分为三个逻辑电路部分。即:口电路、总线接口电路和控制逻辑电路。8255 共有三个 8 位口,其中 A 口和 B 口是单纯的数据口,供数据 I/O 使用。而 C 口则既可以作数据口,又可以作控制口使用,用于实现 A 口和 B 口的控制功能。(2)工作原理8255 的内部结构图如图 3-3 所示,它有 3 个数据端口,分为两组,A 组由 A 口和 C 口高四位组成,B 组由 B 口和 C 口低四位组成。其方式控制字如图 3-4 所示。图 3-3 8255 内部结构图图 3-4 8255 方式控制字方式控制字的特征位D0D7 D6 D5 D4 D3 D2 D11 A 组工作方式0 0方式 0
23、0 1方式 11 方式 2B 组工作方式0方式 01方式 1A 口输入/输出1输入0输出PC7PC4输入/输出1输入0输出B 口输入/输出1输入0输出PC3PC0输入/输出1输入0输出PC 机内 8255 的 A 口,B 口,C 口和控制口的端口地址分别为:60H,61H,62H,63H。3.2 软件3.2.1 设计实验总流程图结合实验指导书的程序,实现简单的电子琴功能。电子琴主程序流程图如图 3-5 所示:YN键盘读入一个字符是 ESC 键吗?是数字 18 键吗?返回 DOSN开始图 3-5 电子琴主程序流程图3.2.2 设计子程序流程图(1)发音子程序本子程序实现放音功能。首先从键盘读出一
24、个字符,判断,如果是 ESC 键,返回 DOS,如果不是,判断,如果键码不是 18,即仍然处于音阶输入准备状态,如果是,即求出音阶值保存,取 60 次 32 个正弦波数据,播放 32 个数据,组成一个正弦波。播放 60 次后,然 后 判断 是 否 有 按 键 , 如 果 有 就 进 入 死 循 环 , 直 到 下 次 按 键 为 止 。在弹奏时都需调用发音子程序,发音子程序的作用是控制扬声器的发音,其流程图如图 3-6 所示:8253 初始化开扬声器延时关扬声器返回求出音阶值保存赋相应频率值延时Y图 3-6 发音子程序流程图(2)弹奏子程序当按键为 1-8 时,调用演奏子程序。演奏子程序的流程
25、图如下图 3-7 所示:图 3-7 演奏子程序的流程图(3)延时子程序当弹奏完音乐之后,音乐延时播放。延时子程序的流程图如下图 3-8 所示:查表得相应频率计算计数初值返回调用发音子程序YN取出音阶值求出 8253 定时时间常数(计数器初值)8253 初始化为方式 0设置 8253A 口输入PA0 为 1 吗?吗?子程序返回图 3-8 延时子程序的流程图4 调试与结果测试4.1 硬件调试利 用 实 验 板 上 的 8253 计 数 /定 时 器 和 8255 并 行 接 口 , 定 时 器8253 利 用 工 作 方 式 3 产 生 一 定 频 率 信 号 , 通 过 可 编 程 的 并 行
26、外 围 接口 芯 片 8255 控 制 频 率 信 号 的 断 。8255 的 B 口 设 置 为 输 出 , 8255 的 B 口 的 低 两 位 用 来 控 制 扬 声 器驱 动 , 当 输 出 端 口 的 PB0 位 为 “1”或 为 “0”时 , 将 使 控 制 驱 动 器的 与 门 电 路 接 通 或 关 闭 使 8253 所 发 出 的 音 频 信 号 能 到 达 驱 动 器 或 被阻 断 。 这 样 通 过 控 制 PB0 的 变 化 , 可 使 扬 声 器 接 通 和 断 开 , 控 制 扬声 器 是 否 能 发 出 声 音 。 此 外 , 通 过 控 制 PB0 的 通 断
27、时 间 , 就 能 发 出不 同 的 音 长 。 8255 的 PB1 位 为 “1”时 , 控 制 8253 定 时 器 产 生 驱 动扬 声 器 发 声 的 音 频 信 号 , 该 位 为 “0”则 不 发 信 号 。 8253 有 三 个 定时 器 , 分 为 0 号 、 1 号 和 2 号 定 时 器 , 驱 动 扬 声 器 的 是 2 号 定 时 器 ,该 定 时 器 工 作 在 方 式 3, 是 一 个 频 率 发 生 器 , 它 负 责 向 扬 声 器 发 送 指定 频 率 的 脉 冲 信 号 。 当 8255 的 PB0 和 PB1 都 为 1 时 , 8253 发 出 指定
28、频 率 的 声 音 信 号 的 前 提 下 , 声 音 信 号 过 与 门 到 达 驱 动 器 驱 动 扬 声 器发 声 。连接简易电子琴系统的电路图如图 4-1 所示图 4-1 电子琴系统的电路图将实验箱与微型计算机保持串口通讯成功。将汇编程序代码输入微型计算机进行硬件调试。4.2 软件调试把弹奏功能的程序代码输入微型计算机;代码:data segmentioport equ 0d400h-0280hio8253a equ ioport+280hio8253b equ ioport+283hio8255a equ ioport+288hio8255b equ ioport+28bhio083
29、2a equ ioport+290hdata1 db 80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh db 0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96hdb 80h,66h,4eh,38h,25h,15h,09h,04hdb 00h,04h,09h,15h,25h,38h,4eh,66h ;正弦波数据time db 120,106,94,89,79,70,63,59 ;发不同音时8253的计数器初值msg db Press 1,2,3,4,5,6,7,8,ESC:,0dh,0ah,$num db ? ;num为8253计数器初值的序号
30、data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,offset msgmov ah,9int 21h ;显示提示信息sss: mov ah,7int 21h ;从键盘接收字符,不回显cmp al,1bhje exit ;若为ESC键,则转EXITcmp al,31hjl ssscmp al,38hjg sss ;若不在1-8之间转 ssssub al,31hmov num,al ;求出相应的时间常数的序号mov cx,60 ;取60次32个正弦波数据ddd: mov si,0lll: mov
31、 al,data1si ;取正弦波数据mov dx,io0832aout dx,al ;放音call delay ;调延时子程序inc sicmp si,32 ;是否取完32个数据jl lll ;若没有,则继续loop ddd ;总循环次数60是否完, 没有,则继续jmp sssexit: mov ah,4chint 21hdelay proc near ;延时子程序ccc: mov bx,offset timemov dx,io8253b ;置8253通道0为方式0工作mov al,10hout dx,almov dx,io8255b ;设8255A口输入mov al,9bhout dx,a
32、lmov al,num ;取相应的时间常数xlatmov dx,io8253aout dx,al ;向8253通道0输出kkk: mov dx,io8255ain al,dx ;从8255A口读一字节test al,01 ;判PA0口是否为1jz kkk ;若不为1,则转KKKret ;子程序返回delay endpcode endsend start与硬件相结合进行修改调试,运行程序后,显示如下界面,等待输入字符,如图 4-2 所示:图 4-2 运行界面从键盘上敲击 18 时,音响发出哆、唻、咪、发、嗦、啦、唏、唗的音节,则调试成功。4.3测试方案和测试结果如表 4-1 所示:表 4-1 测
33、试表测试方案 测试结果启动程序,出现按键提示,按下 18 键 机内/实验仪发出相应的音阶改变开关状态,按 18 键 对应发出相应的音阶“弹琴” 发出优美旋律按下 ESC 键 退出程序5 总结在 为 期 一 周 的 微 机 原 理 课 程 设 计 中 , 我 学 会 了 制 做 项 目 的 一 般 步骤 。 第 一 部 是 硬 件 设 计 主 要 是 实 现 控 制 对 象 与 被 控 制 对 象 之 间 的 联 系 。第 二 步 就 是 软 件 设 计 , 就 是 要 完 成 各 个 可 编 程 芯 片 与 CPU 之 间 的 数据 传 送 和 各 个 进 程 的 逻 辑 顺 序 。 在 本
34、次 设 计 中 对 硬 件 要 求 就 要 熟 练 掌握 可 编 程 器 件 8255A 和 8253 的 应 用 。 对 软 件 设 计 就 要 熟 练 掌 握 汇 编语 言 。 由 于 时 间 限 制 的 问 题 和 硬 件 的 局 限 性 也 只 能 将 电 子 琴 的 功 能 简易 化 。另外,我从中学到了许多从课本上学不到的东西,锻炼了自己编程的能力,最后程序运行时能够实现目标,我感到很有成就感,从中也获得了很多乐趣,当然,最重要的是加深了我对课本理论知识的理解。当刚看到这个课设题目时,我感到无从下手,因为我都不知道 PC机的内部具体结构,从理论课上只是了解了 CPU 的结构和工作原
35、理,以及几个接口芯片的工作原理,还有汇编语言的一些基本指令。但我没有被吓到,我冷静下来思考后,发现其本质就是控制 PC 机内扬声器的发音,通过查阅资料我了解了 PC 机内扬声器的电路连接形式,发现它是由接口芯片 8255 和 8253 共同控制的,8255 的 PB0 作为 8253 通道 2 的门信号,而 8255 的 PB1 和 8253 通道 2 的输出相与后的信号作为扬声器的驱动信号,了解了其内部接线方式后,思路也就有了,要想让扬声器发声,8255 的 PB0 和 PB1 必须同时为高电平,其中之一为低电平时,扬声器就不能发声,而发声的音调则可通过改变 8253 的计数初值来实现,接下
36、来的任务就是通过编程来控制 8255 和 8253,从而间接地控制扬声器的发声规律,而 8255 和 8253 这两个接口芯片在理论课上都已介绍过,对其工作原理和编程方法都有一定的了解,看到这些熟悉的内容时,我淡定了很多。有了思路之后,我并没有急着写程序,因为我怀疑是不是每台 PC机的扬声器接线方式都是这样的,所以我开始只编了一段控制扬声器发音的程序,来看看程序运行时扬声器到底发不发音,结果发声了,这让我很惊喜,也很有动力,更加激发了我的兴趣,接下来我就开始编写实现指定功能的程序了,首先是最简单的弹奏功能,通过对按键的判断来发出相应频率的声音,因为要判断按键,所以很自然地就想到了 CMP 指令
37、,在计算计数初值时,因为要用到相应音符的频率,所以需要将按键转换为音符的频率,我开始想用书上常见的 XLAT 换码指令 7,但 AL 存放的数最大为 128,很明显容量不够,于是我采用了基址+变址的寻址方法,在编程的过程中,由于要程序实现多个功能,所以用子程序的结构会比较方便,需要完成某个功能时,只需调用相应子程序就可以了,这样会使得程序的结构清楚明了。在完成基本功能后,我还试着加上一些附加功能,比如延时,变调,通过我的不断尝试,终于把延时功能实现了,但变调功能没能像预期的那样。总之,这次课程设计让我学到了许多从课本上学不到的知识,加深了对理论知识的理解,激发了我对汇编语言的兴趣。上理论课时,
38、只是老师讲,我们听,那些指令让我感到很枯燥,因为不知道它到底有什么作用,而这次课程设计刚好把这些指令应用到了实际中来,加深了对各种指令功能的理解,最后功能实现时,感到很有成就感,觉得汇编语言很神奇,激发了我对它的兴趣。参考文献1专著.杨素行.微型计算机系统原理及应用M.北京.清华大学出版社,20042专著.龚尚福.微机原理与接口技术M.西安电子科技大学出版社,2003.83专著.李芷.微机原理与接口技术M.电子工业出版社,2002 4专著.宋杰等.微机原理与接口技术课程设计M.机械工业出版社,20055专著.小捷. 汇编语言程序设计(第二版)M.西安电子科技大学出版社,2003 6专著.钱晓捷.汇编语言程序设计(第二版)M.电子工业出版社,20037专著.杨立,邓振杰等.微型计算机原理与接口技术(第二版)M.中国铁道出版社,2006 附录 1:总体电路原理图