简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
海南大学信息科学技术学院
2012-2013 第一学期
《微机原理与接口技术课程设计》
题
学
姓
专
目:
简易电子琴设计的实现
号:
20101616310049
名:
王
猛
涛
业:
信 息 安 全
指导老师:
李
红
蕾
成
绩:
简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
目 录
引 言..........................................................................................................................1
摘 要..........................................................................................................................2
简易电子琴设计的实现................................................................................................3
1. 微机接口课程设计概述.................................................................................3
1.1 设计题目及要求.................................................................................3
1.2 设计目的及意义.................................................................................3
1.3 开发设计环境.....................................................................................3
2. 开发设计思路及所涉及的相关理论.............................................................4
2.1 开发设计思路.....................................................................................4
2.2 开发所涉及的相关理论.....................................................................4
3. 简易电子琴开发设计方案的确定...............................................................10
4. 简易电子琴开发设计线路连接...................................................................11
5. 程序代码执行流程图...................................................................................12
6. 主要功能实现的说明...................................................................................13
6.1 数据段的定义...................................................................................13
6.2 发音部分功能的实现.......................................................................13
6.3 弹奏功能的实现...............................................................................14
6.4 延时功能的实现...............................................................................15
7. 程序代码执行结果与分析及个人感悟.......................................................15
7.1 程序代码执行结果与分析...............................................................15
7.2 个人感悟...........................................................................................15
参考文献............................................................................................................16
附录(程序代码):........................................................................................17
简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
引 言
电子科学技术是人类在生产斗争和科学实验中发展起来的。1883 年美国发
明家爱迪生发现了“热电子”效应,1904 年弗莱明利用这个效应制成了电子二
极管,并证实了电子管具有“阀门”作用,它首先被用于无线电检波。1906 年
美国的德福雷斯在弗莱明的二极管中放进了第三电极——栅极而发明了电子三
极管,从而建树了早期电子技术上最重要的里程碑。半个多世纪以来,电子管在
电子技术中立下了很大功劳;但是电子管毕竟成本高,制造繁,体积大,耗电多,
从 1948 年美国贝尔实验室的几位研究人员发明晶体管以来,在大多数领域中已
逐渐用晶体管来取代电子管。但是,我们不能否定电子管的独特优点,在有些装
置中,不论从稳定性、经济性或功率上考虑,还需要采用电子管。
随着科学技术的发展和人类的进步,电子技术已经成了各种工程技术的核
心,特别是进入信息时代以来,电子技术更是成了基本技术,其具体应用领域涵
盖了通信领域、控制系统、测试系统、计算机等等各行各业。
生活中常使用到许多的电子设备,它给我们生活上的便利与影响。而电子琴
就是一个很明显的例子,这些有时甚至含有内建音乐,有时又可以千变万化,真
让人想动手试试看,因此我对它产生了许多问题与想象。它是如何动作?不同的
音调产生原理又是什么?而若是改变它们的音调,不知道会不会很麻烦,其电路
要重新制作吗?系统会怎么修改?
乐器的发展与科学技术的发展密切相关,现代电子技术的兴起,使一些机械
的装置逐步电动化、电子化。科学技术上的这些变化及发展促进了乐器的发展,
由此出现了许多新的电子乐器,如电子琴、电钢琴等。
本文就是关于用 8253 定时器制作简易电子琴的过程及基本原理。
1
简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
摘 要
汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并
能直接控制硬件的语言。利用汇编语言能够直接访问与硬件相关的存储器或 I/O
端口,从而最大限度地发挥硬件的功能。
本文主要介绍了利用汇编语言设计一个运行于计算机的简易电子琴,主要包
括两个部分——输入部分与发音输出部分。其中,输入部分:通过 8255 并行接
口芯片和 8 个常用型开关来完成;发音输出部分:CUP 通过对定时器 8253 的
通道 0 进行编程,使其 I/O 寄存器接收一个控制声音频率的 16 位计数值,端口
61H 的最低位控制通道 0 门控的开断,以产生特殊的音响。
具体实现方法:用开关 K1~K8(与 8255A 的 PB0~PB7 连接)模拟琴键,
当开关拨为“1”(高电平)时,相当于有键按下,喇叭(喇叭引脚 SIN 与 8253
芯片的引脚 OUT0 连接,喇叭 J5 引脚与 DV88 实验箱相连)发出声音。拨动不
同的开关则对应不同的音符,每次只能拨一个开关(相当于按下一个键)。连续
拨动开关,喇叭发出音乐。
文章首先介绍了相关接口芯片 8255 和 8253 的内部结构和工作原理,接着讲
述了各部分功能的具体实现方法以及实验程序的调试结果,并对结果进行了分
析。
关键词: 汇编语言
8253 定时器
8255
电子琴设计
2
简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
简易电子琴设计的实现
1.1.1.1. 微机接口课程设计概述
1.11.11.11.1 设计题目及要求
简易电子琴的设计
设计要求:利用用实验箱上的扬声器与 8 个开关设计一个电子琴。用开关模
拟琴键,当开关拨为“1”时,相当于有键按下,喇叭发出声音。拨动不同的开
关则对应不同的音符,每次只能拨一个开关(相当于按下一个键)。连续拨动开
关,喇叭发出音乐。
可选用芯片:8253 定时/计数器,8255 并行接口,8259 中断控制器,DAC0832
D/A 转换器,ADC0809A/D 转换器。
报告要求:(1)写出设计思路;
(2)画出实验线路连接图;
(3)写出程序清单(或程序框图)及注释;
(4)设计及调试心得。
1.21.21.21.2 设计目的及意义
(1)进一步熟练各种已学过接口芯片的编程方法;
(2)掌握各芯片间的相互连接;
(3)检验学生在原理与接口综合应用方面分析问题与解决问题的能力;
(4)培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实
事求是的科学态度和勇于探索的创新精神;
(5)通过课程设计,使学生在理论分析、结构设计、汇编语言的应用和标
准与规范的运用方面的能力得到训练和提高;
(6)巩固、深化和扩展学生的理论知识与初步的专业技能。
1.31.31.31.3 开发设计环境
测试平台:Windows XP Professional Operating System
测试设备:DVCC 工具箱、DV88h 实验系统
开发语言:.ASM 汇编语言
3
简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
2.2.2.2. 开发设计思路及所涉及的相关理论
2.12.12.12.1 开发设计思路
电子琴的设计实际上就是要设计一个程序,能够通过该程序控制实验箱上扬
声器的发声规律,按下相应的按键(这里相当于拨动相应的开关至状态“1”)
后,喇叭能发出指定频率的声音。实验箱上的扬声器是通过并行接口芯片 8255
和定时芯片 8253 来控制发音的(具体的实验连接线路见下文)。
扬声器是由 8253 通道 0 产生的方波信号和 8255 的 PB1 相与后驱动发声的,
且通道 0 的门信号由 8255 的 PB0 提供,要想让扬声器发声,PB0 和 PB1 必须同
时为高电平,因此,可以通过对 8255 的 PB0 和 PB1 的设置来控制扬声器的开通
和中断,而其发音频率可以通过对 8253 通道 0 的计数初值的设置来控制。
因此,所设计程序的任务就是要通过对按键的判断来设置8255 的PB0 和PB1
输出电平的高低,以及 8253 通道 0 计数初值的设置。计数初值 N=时钟频率/音
阶频率。各音阶的频率如下表 2-1 所示。
表 2-1 各音符的频率表
音符
频率/HZ
计数值
1
250
4002
2
280
3567
3
315
3178
4
353
2834
5
396
2527
6
444
2250
7
499
2005
i
560
1786
2.22.22.22.2 开发所涉及的相关理论
2.2.12.2.12.2.1 8253
2.2.1
825382538253 芯片的工作原理
(1)8253A 内部结构
8253A 定时/计数器具有定时、计数双功能。它具有三个相同且相互独立的
16 位减法计数器,分别称为计数器 0、计数器 1、计数器 2。每个计数器计数频
率为 0~2MHZ;8253A 的内部数据总线缓冲器为双向三态,可直接接在系统数据
总路线上,通过 CPU 写入计数初值,也可由 CPU 读出计数当前值; 其工作方
式通过控制字确定。具体如下图 2-1 所示。
4
简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
图 2-1
8253 内部结构
(2)计数器内部结构
每个计数器由一个 16 位可预置的减 1 计数器组成,计数初值可保存在 16
位的锁存器中,该锁存器只写不能读。在计数器工作时,初值不受影响,以便进
行重复计数。每一个计数器有一个时钟输入端 CLK 作为计数脉冲源,计数方式
可以是二进制,计数范围 1~10000H,也可以是十进制,计数范围 1~65536。门
控端 GATE 用于控制计数开始和停止。输出 OUT 端当计数器计数值减到零时,
该端输出标志信号。
(3)8253A 端口地址选择
表 2-2
RD WR
1
1
1
1
0
0
0
0
×
1
0
0
0
0
1
1
1
1
×
1
CS
0
0
0
0
0
0
0
0
1
0
8253A 端口地址选择表
A1
0
0
1
1
0
0
1
1
×
A2 寄存器选择与操作
0
1
0
1
0
1
0
1
×
写入计数器 0
写入计数器 1
写入计数器 2
写入控制寄存器
读计数器 0
读计数器 1
读计数器 2
无操作(三态)
禁止(三态)
无操作(三态)
×
×
5
简易电子琴设计的实现
姓名:王猛涛
学号:20101616310049
(4)8253A 功能
8253A 既可作定时器又可作计数器:
计数:计数器装入初值后,当 GATE 为高电平时,可用外部事件作为 CLK
脉冲对计数值进行减 1 计数,每来一个脉冲减 1,当计数值减至 0 时,由 OUT
端输出一个标志信号。
定时:计数器装入初值后,当 GATE 为高电平时,由 CLK 脉冲触发开始自
动计数,当计数到零时,发计数结束定时信号。
除上述典型应用外,8253A 还可作频率发生器、分频器、实时钟、单脉冲发
生器等。
(5)8253A 控制字
图 2-2
8253 方式控制字
(6)8253A 工作方式
I. 方式 0:计数结束产生中断方式
当写入控制字后,OUT 变为低电平,当写入初值后立即开始计数,当计数
结束时,变成高电平。
II. 方式 1:可编程单次脉冲方式
当初值装入后且 GATE 由低变高时,OUT 变为低电平,计数结束变为高电
平。
III. 方式 2:频率发生器方式
当初值装入时,OUT 变为高电平;计数结束,OUT 变为低电平。该方式下
如果计数未结束,但 GATE 为低电平时,立即停止计数,强迫 OUT 变为高电平,
当 GATE 再变为高时,便启动一次新的计数周期。
6