硬件课程设计_可存储式电子琴Word格式文档下载.docx
《硬件课程设计_可存储式电子琴Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《硬件课程设计_可存储式电子琴Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
6.软件功能 14
7.软件主要模块流程图 15
7.1高中低音转换程序流程图
7.2播放预定音乐子程序流程图
7.3弹奏子程序流程图
8.程序代码 16
9.问题分析与解决方案 25
10.实验体会 25
参考文献 26
1.选题
我的硬件课程设计的课题是《可存储式电子琴》,这是一个很好的课题。
我们不仅可以在设计中学习硬件、软件相关的知识,通过实践巩固理论知识,并做到活学活用,更能在美妙动听的音乐中享受我们的劳动成果,可谓是一举多得,能够在过程中有动力,所以选择了这个电子琴来增强我们对硬件课程设计的学习。
。
2.需求分析
加强学生们对硬件课程设计的掌握,熟练使用汇编语言解决硬件问题,制作电子琴,弹奏音乐,也可以作为娱乐工具.也可以进一步开发作为一个小玩具的内置芯片程序.
3.设计任务与要求
利用8255A、8253芯片和4×
4键盘、喇叭等器件设计硬件电子琴,具备如下功能:
当按下琴键时,扬声器发出该琴键相对应的音阶,同时可以通过按键转换高中低音节,会有灯显示此时的按键是哪种音阶,可以播放预存音乐。
可存储式电子琴硬件课程设计主要是居于8255A芯片和8253芯片的基本功能进行设计的。
我们将8255A芯片的A端口作为输出端口,而B端口作为输入端口,两个端口都与键盘相连接:
A端口的低四位连在键盘的行线上,B端口的高四位连在键盘的列线上。
再将它的输出端口PC1与8253相应门控信号GATE0相连接。
这样可以通过控制PC1来控制8253的输出:
当PC1为“1”时,GATE0有效,8253能够输出频率方波;
当PC1为“0”时,GATE0无效,OUT0无法输出频率方波。
而8253的时钟输入引脚CLK0与相应的时钟发生器相连接,8253的0通道的OUT0信号与8255A的PC0通过与门以后与蜂鸣器相连接,从而驱动并控制蜂鸣器发音的发音和终端:
当PC0为
“1”时蜂鸣器连通,能够发出声音;
当PC0为“0”时蜂鸣器被中断,不能发出声音。
这样,我们在硬件上实现了通过8255A芯片输入设备的输入信号并通过它传送给8253,让8253进行相应的处理后输出给蜂鸣器的功能。
从8255A芯片的端口中确认是键盘中的哪一个键被按下,并进行编码。
从8255A的B端口中读入键盘的状态,进行一系列的比较。
确认是哪一个键按下了,接着再通过着不同的键被按下进行执行不同的程序段。
将不同的键所对应的频率的N值送入
8253的0通道。
这样,就产生了不同频率的方波。
在送入扬声器后就能发出不同音频和音长的声音。
1
电子琴电路图
4.总体方案与说明
方案利用8253进行周期性扫描8255A是否有键按下,使用小键盘的按键实现电子琴音节按键、功能的切换。
本次设计功能分为:
高中低音阶的音频转换,提供给8253的时钟频率为1MHZ,
4.1设计电路如下
键盘扫描,把扫描到的值给8255A,8255A再把信号给8253,不同的按键,赋给不同的初始计数,然后产生不同频率的方波,输出端给喇叭,并控制喇叭的放音的开关,既可以发出不同的声音。
4.2.地址说明
(1)各芯片及器件地址:
8255A的控制端地址为28BH,A口,B口,C口地址分别为:
288H,289H,28AH。
8253的控制端地址为:
283H,计数器0地址为:
280H。
(2)按键说明如下表4-3:
dou音
7
xi音
2
rui音
A
高音转换键
3
mi音
B
中音转换键
4
fa音
C
低音转换键
5
so音
D
放歌键1
6
la音
4.3功能模块图
低
音模
块
中
高
键
盘扫
描
延
时模
发
声模
电子琴
主要包括:
中音模块,低音模块,高
音模块,键盘扫描,发
声
模块,延时模块六部分
4.31低中高音模块
进入模块,先进行键盘扫描,获得键盘行列值,并与键盘扫描码比对,如果是功能键A,B,C等跳转到相应的模块,不是则默认进入中音,并且按照键盘值,按照对应的计数初值,由8253进行发出对应频率的方波。
调用发声模块发出声音
4.32键盘扫描模块
(1)检测所有按键是否全都松开了,直到所有键松开
(2)检测是否有键按下,直到有键按下。
(3)若有键按下,消除抖动,确认有键按下
(4)然后得到一个行列值跟键盘扫描码比较,即可判定哪个键按下
4.33键盘扫描流程图
开始
列线全为℃1№?
从A端口读入行值,并送给AL
通过B端口输出保存的列值,送给AH
重置A端口为输入方式,B为输出
保存列值,延时消抖动
A输出全℃0№,从B口读取列值
置A端口为输出方式,B端口为输入方式
高中低音模块
键盘扫描流程图
4.34发声、延时模块
结束
PC1PC0=00
关扬声器
调用延时子程序
PC1PC0=11
开扬声器
8255初始化
8254初始化
8255A控制C端口,PC1,PC0的值,通过与门来控制喇叭的开关。
全为1,喇叭打开
—发声。
全为0,喇叭关闭—发声停止。
通过延时,来控制发声的时间。
如果没有延时,发声模块无法正常工作。
4.5电路实物连线图
电子琴实物连接图
5.硬件框图与说明
5.18255A芯片介绍
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有
A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、
32位等。
用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图5.1
内部结构及引脚
为读信号线,与其他信号线一起实现对8255接口的读操作。
通常接系统总线的 信号。
为写信号线,与其他信号一起实现对8255的写操作,通常接系统总线的 。
为片选信号线,当它为低电平时,才能选中该8255芯片,也才能对8255进行
操作。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
这里的8255接口所占地址范围为0680H~0686H。
当对8255接口进行写操作时,各信号线的状态如表5.1所示
CS
A1
A0
IOR
IOW
操作
写A口
写B口
写控制寄存器
写C口
8255在应用过程中,将不同的控制字装入芯片中控制寄存器,即可确定8255的工作方式。
8255的控制字由8位二进制数构成,各位的控制功能如图5.2所示:
8255控制字
5.28253芯片介绍
8253芯片引脚图
8253是可编程计数器/定时器,内部有三个计数器,分别为计数器0、计数器1
和计数器2,一个时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端
OUT。
每个计数器内部有一个8位的控制寄存器。
8253的通道:
8253有3个通道,分别为通道0、通道1和通道2。
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
8253的各种工作方式如下:
(1)方式0:
计数结束则中断
工作方式0被称为计数结束中断方式。
当任一通道被定义为工作方式0时,OUT
输出为低电平;
若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUT仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUT将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUT端输出的高电平一直维持到下次再写入计数值为止。
在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。
当
GATE=1时,允许减“1”计数;
GATE=0时,禁止减“1”计数;
计数值将保持GATE
有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。
显然,利用工作方式0既可完成计数功能,也可完成定时功能。
当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLK端输入,由它对计数器进行减“1”计数,直到计数值为0,此刻OUT输出正跳变,表示计数次数到。
当用作定时器时,应把根据要求定时的时间和CLK的周期计算出定时系数,预置到计数器中。
从CLK,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数,定时时间从写入计数值开始,到计数值计到“0”为止,这时OUT输出正跳变,表示定时时间到。
有一点需要说明,任一通道工作在方式0情况下,计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。
(2)方式1:
单脉冲发生器
工作方式1被称作可编程单脉冲发生器。
进入这种工作方式,CPU装入计数值n后OUT输出高电平,不管此时的GATE输入是高电平还是低电平,都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。
与此同时,OUT输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”,