一、实验目的
设计一个具有录音功能的简易电子琴。
二、实验内容及要求
设计一个具有录音功能的简易电子琴:
1、16个矩阵键盘作为输入设备,扬声器作为输出设备。实现用键盘演奏乐曲;
2、可以切换音调(A~G),也可以切换音区(高音区、中音区和低音区);
3、用数码管分别显示音调、音区和音符;
4、记录按键值及按键按下和弹起的时间存入内存(程序的数据段预留200个字节可以存放40个按键的按键值及按键按下和弹起的时间)中;
5、从内存中读出按键按下的时间、弹起的时间、音调、音区和按键值,播放记录的乐曲。
三、实验原理
1,实验仪器:1,:唐都微机实验箱;2,8255芯片;3,8254芯片;4:扬声器模块;5:键盘扫描模块;6:数码管显示模块
2:,不同按键按下,将对应频率的方波送给扬声器,即可发声
3:键盘扫描
8255的 B口控制数码管的段显示,A口控制键盘列扫描及数码管的位驱动,C口控制键盘的行扫描。A,B,C 口均采用方式0,A,B口输出,C口低四位输入。
行列扫描,一开始让X1-4口输出高电平,Y1-4输出低电平,若这4行按键里,有按键按下了,那么那一行按键对应的端口的电平就会被拉低,我们就可以知道按键的行坐标。然后再获取按键列坐标,让X1-4输出低电平,Y1-4输出高电平,若这4列按键里,有按键按下了,那么那一列按键对应的端口的电平就会被拉低。
4:8254+发声器
要使扬声器发出不同的音阶,就得输入不同频率的信号。通过给计数器 8253送入不同的初值,可以从输出端得到不同频率的波形, 驱动扬声器发出不同的音阶。音阶声音的持续时间可以通过软件延时程序实现。
将8253的输出端OUT0连接音频模块上,GATE1给高电平,运用8253通道二工作在方式3的状态下控制其计数器对应寄存器中的数值,然后将输出端口OUT2产生的方波通过扬声器转换成为声音。
计数初值= 输入时钟÷ 输出频率
音符与频率对照表
四、实验电路图
8255接线图
8254接线图
键盘与数码管电路图:
五、实验流程图
六、实验程序
;============================================
; wjtest_changekey2_3.asm
;使9 10 11 13 14 15不发声 ,按键9 播放友谊地久天长 按键10 显示学号
;测试
;============================================
;端口定义
IOY0 EQU 0600H
MY8255_A EQU IOY0+00H*2 ;8255的A口地址
MY8255_B EQU IOY0+01H*2 ;8255的B口地址
MY8255_C EQU IOY0+02H*2 ;8255的C口地址
MY8255_CON EQU IOY0+03H*2 ;8255的控制寄存器地址
IOY1 EQU 0640H
MY8254_COUNT0 EQU IOY1+00H*2 ;8254计数器0端口地址
MY8254_COUNT1 EQU IOY1+01H*2 ;8254计数器1端口地址
MY8254_COUNT2 EQU IOY1+02H*2 ;8254计数器2端口地址
MY8254_MODE EQU IOY1+03H*2 ;8254控制寄存器端口地址
SI_YINQU EQU 3006H ;用于装载音区
SI_YINDIAO EQU 3007H ;用于装载音符
SSTACK SEGMENT STACK ;定义堆栈段
DW 256 DUP(?)
SSTACK ENDS
DATA SEGMENT
BASS DW 221,248,278,294,330,371,416 ;A low
DW 248,278,312,330,371,416,467 ;B
DW 131,147,165,175,196,221,248 ;C
DW 147,165,185,196,221,248,278 ;D
DW 165,185,208,221,248,278,312 ;E
DW 175,196,221,234,262,294,330 ;F
DW 196,221,248,262,294,330,371 ;G
DW 441,495,556,589,661,742,833 ;A middle
DW 495,556,624,661,742,833,935 ;B
DW 262,294,330,350,393,441,495 ;C
DW 294,330,371,393,441,495,556 ;D
DW 330,371,416,441,495,556,624 ;E
DW 350,393,441,467,525,589,661 ;F
DW 393,441,495,525,589,661,742 ;G
DW 882,990,1112,1178,1322,1484,1665 ;A high
DW 990,1112,1248,1322,1484,1665,1869 ;B
DW 525,589,661,700,786,882,990 ;C
DW 589,661,742,786,882,