课程设计任务书
学生姓名
课程名称
专业班级
硬件系统综合课程设计
设计名称
模拟电子琴设计
设计周数
2 周
设计
一、设计任务
设计一个模拟电子琴,主机键盘 1~8 为电子琴的琴键。当按下琴键时,通过 8253A
任务
控制
主要
设计
参数
二、设计要求及参数
设计一个模拟电子琴,主机键盘 1~8 为电子琴的琴键。当按下琴键时,通过 8253A
控制系统中喇叭发出相应音阶的声音。
1)用扩展设备上的接口芯片及发音设备,模拟电子琴。
2)发八度音,即 1、2、3、4、5、6、7、i。音符演唱的节奏由打开 8255A 的时
刻调节。
1、收集技术资料:理解设计任务、查阅相关资料。用时 2 天。
2、确定总体设计思想:方案论证比较、确定总体设计方案。用时 2 天。
3、功能模块设计:设计功能模块、选择芯片、元件。用时 1 天。
4、Proteus 仿真以及代码实现:用时 3 天。
a.利用 Proteus 仿真软件验证设计方案的可行性,修改其中错误。
设计内容
设计要求
b.主程序和子程序代码实现。
5、书写设计报告:按照课程设计报告的要求,编写设计报告。用时 1 天。
主要参考
参考书籍及文章格式
作者 1,作者 2.书名[M].出版社名.出版年
作者 1,作者 2..文章标题[J].出版物名称.出版年,卷(期):初始页码-终止页码.
封面—任务书—课程设计报告—图纸
资 料
学生提交
归档文件
注:
1.课程设计完成后,学生提交的归档文件应按照:封面—任务书—说明书—图纸的顺序
进行装订上交(大张图纸不必装订)。
2.可根据实际内容需要续表,但应保持原格式不变。
指导教师签名:
日期:
模拟电子琴的设计报告
一. 设计要求
从课程设计的目的出发,通过设计工作的各个环节,达到以下要求:
1) 掌握汇编语言程序设计的基本方法。
2) 进一步理解各种接口电路的应用。(8255 并行接口,8253 可编程计数器/定时器等)。
3) 掌握利用 PC 机扬声器发出不同频率声音的方法。
二. 设计的作用、目的
本课程课程设计是计算机科学与技术专业学生学习完《微机原理与接口技术》课程后,
进行的一次以汇编语言为主,硬件设计为辅的综合训练。本课程设计的目的在于加深对微机
原理基本知识的理解,掌握汇编语言程序设计的基本方法;掌握运用微机原理开发系统的基
本方法。
三. 设计的具体实现
1.设计原理
(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)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,
选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2.芯片工作原理
8255 的内部结构图如图 2 所示,它有 3 个数据端口,分为两组,A 组由 A 口和 C 口高四位
组成,B 组由 B 口和 C 口低四位组成。其方式控制字如图 3 所示。
D7
1
方式控制字的
特征位
图 2 8255 内部结构图
D6
D5
D4
D3
D2
D1
D0
A 组工作方式
0——方式 0
1——方式 1
——方式 2
0
0
1
B 组
工作方式
0——方式 0
1——方式 1
A 口
输入/输出
1——输入
0——输出
PC7PC4
输入/输出
1——输入
0——输出
B 口
输入/输出
1——输入
0——输出
PC3PC0
输入/输出
1——输入
0——输出
图 3 8255 方式控制字
PC 机内 8255 的 A 口,B 口,C 口和控制口的端口地址分别为:60H,61H,62H,63H。
8253 工作原理
8253 芯片中有 3 个计数通道,称为通道 0,1,2,它们与外部电路相连的信号线有 3 根:
CLK,GATE,OUT,CLK 是脉冲输入端,GATE 是门控信号,OUT 是输出信号,计数器工作在减 1
状态。其内部结构图和方式控制字格式如图 4,图 5 所示。
其中当计数器工作在方式 3 时,输出信号为方波信号。
D0-D7
数 据 总 线 缓
冲器
内
部
总
线
R/W 逻 辑 电
路
RD
WR
A0
A1
CS
计数器 0
计数器 1
控制寄存器
计数器 2
CLK0
GATE0
OUT0
CLK1
GATE1
OUT1
CLK2
GATE2
OUT2
图 4 8253 内部结构图
D7
D6
D5
D4
D3
D2
D1
D0
计数器选择
00 计数器 0
01 计数器 1
10 计数器 2
11 不用
计数方式
0 二进制
1 BCD 计数
00 计数器锁存
01 读写低 8 位
10 读写高 8 位
11 读写 16 位
工作方式选择
000 方式 0
001 方式 1
×10 方式 2
×11 方式 3
100 方式 4
101 方式 5
图 5 8253 控制字格式
PC 机内 8253 的通道 0,通道 1,通道 2,控制口的端口地址分别为:40H,41H,42,43H。因为扬
声器是由通道 2 来控制的,故应选择通道 2,工作方式选为方式 3,输出的信号则为方波信
号。
3.电路连接图如下:
(1)8253 和 8255 连接如下
4.设计思路
在本次课程设计中,根据复杂程序设计思想——模块化程序设计,分析和确定程序总体
设计目标:电子琴基本功能及部分扩展功能后,将总体目标划分为若干模块(子程序,具体
可见下)。
程序设计的思路按以下顺序进行:
1.分析与确定程序总体设计目标
2.将总体目标划分为若干模块
3.定义每个模块的具体任务,明确它与其他模块间的通信方式
4.编写源程序,进行调试,包括:
简单电子琴主程序
结合实验指导书的两程序,将其分为若干个子程序,实现简单的播放和显示音阶的
功能。
发音子程序
本子程序实现放音功能。首先从键盘读出键码,判断,如果键码不是 1-8(9 除外)
即仍然处于音阶输入准备状态,如果是,即求出相应的时间常数的序号,取 60 次 32
个正弦波数据,播放 32 个数据,组成一个正弦波。播放 60 次后,然后判断是否有按
键,如果有就进入死循环,直到下次按键为止。
Led 显示子程序
本程序实现从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
源程序整体
程序开始,显示提示信息,接着调用发音子程序,实现发音和显示。
5.模块连接,形成完整的程序
6.编写程序文档
5.模块设计
琴键模块
发音和 LED 显示模块
6.流程图
以下用主程序与子程序配合流程图其进行说明。
(1)主程序流程图
开始
使用键盘输入
调用广告版子程序
Led 子程序
是否 1 到 8 键
调用发音子程序
Y
N
是 esc 键
Y
退出
(2)发音子程序流程图