1 硬件设计
如图8-8所示为电子琴原理图电路。通过按下方的音调键演奏乐曲,16个按钮可以演奏出基本的16种音调:低音的Mi、Fa、So、La、Si,中音的Do、Re、Mi、Fa、So、La、Si,高音的Do、Re、Mi、Fa;演奏的同时会以数字显示出当前的音调,有利于培养乐感。由单片机的P3.0口输出音频信号驱动扬声器(最好用晶体管构成达林顿结构放大)。P1口连接16个按键作为输入(当然也需要考虑连接8只10kΩ的电阻至电源作为上拉电阻)。P1.0~P1.7依次为行列排列。
图8-8 电子琴原理图电路
要让单片机发出不同的音符,只要让它发出不同频率的方波信号即可。一般采用单片机的定时器中断方法来产生不同频率的方波信号。例如要发出中音Do,可查阅表8-4所示的音符对应定时器初值表,可知Do的频率是523Hz,当单片机晶振频率为12MHz时,Do对应的是周期为1912μs的方波,因为每个周期包括半个周期高电平和半个周期低电平,这时只要定时器每隔半个周期(956μs)中断一次让对应的I/O接口线置反,就可以在相应的口线上产生523Hz的方波,扬声器上发出的就是中音Do。时钟周期是1μs,方式1时956μs定时器的初值为65536-956=64580。
表8-4 音符对应定时器初值表
(续)
2 程序设计
KEYL EQU 30H;定义KEYL变量,用于键盘扫描
KEYR EQU 31H;定义KEYR变量,用于键盘扫描
VAL EQU 32H;定义键值变量VAL
ORG 0000H
SJMP START;主程序入口
ORG 0BH
LJMP INT_T0;T0中断入口
START:MOV TMOD,#01H;T0作定时器,方式1
LSCAN: ;键盘按键判断
MOV P1,#0F0H;行全为1
L1: ;判断第1行
JNB P1.0,L2
LCALL DELAY
JNB P1.0,L2
MOV KEYL,#00H
LJMP RSCAN
L2: ;判断第2行
JNB P1.1,L3
LCALL DELAY
JNB P1.1,L3
MOV KEYL,#01H
LJMP RSCAN
L3: ;判断第3行
JNB P1.2,L4
LCALL DELAY
JNB P1.2,L4
MOV KEYL,#02H
LJMP RSCAN
L4: ;判断第4行
JNB P1.3,L1
LCALL DELAY
JNB P1.3,L1
MOV KEYL,#03H
RSCAN:MOV P1,#0FH ;键盘列输出1
C1: ;判断第1列
JNB P1.4,C2
MOV KEYR,#00H
LJMP CALCU
C2: ;判断第2列
JNB P1.5,C3
MOV KEYR,#01H
LJMP CALCU
C3: ;判断第3列
JNB P1.6,C4
MOV KEYR,#02H
LJMP CALCU
C4: ;判断第4列
JNB P1.7,C1
MOV KEYR,#03H
CALCU: ;计算按键号(www.xing528.com)
MOV A,KEYL
MOV B,#04H
MUL AB
ADD A,KEYR
MOV VAL,A
MOV DPTR,#TABLE2;装表
MOV B,#2
MUL AB
MOV R1,A
MOVC A,@A+DPTR;把表中计数初始值装入累加器A
MOV TH0,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV TL0,A
MOV IE,#82H;使能T0中断
SETB TR0;启动T0
MOV A,VAL
MOV DPTR,#TABLE1
MOVC A,@A+DPTR
MOV P0,A
W0: ;等待按键释放
MOV A,P1
CJNE A,#0FH,W1
MOV P0,#00H
CLR TR0;TR0清0
LJMP LSCAN
W1:MOV A,P1
CJNE A,#0F0H,W2
MOV P0,#00H
CLR TR0
LJMP LSCAN
W2:SJMP W0;T0中断服务程序,输出某一频率的方波
INT_T0:MOV DPTR,#TABLE2
MOV A,VAL
MOV B,#2
MUL AB
MOV R1,A
MOVC A,@A+DPTR
MOV TH0,A
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV TL0,A
CPL P3.0;清P3.0口
RETI
DELAY:MOV R6,#10
D1:MOV R7,#250
DJNZ R7,$
DJNZ R6,D1
RET
TABLE1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
TABLE2: ;16个琴键发音频率的计数初始值
DW 64021,64103,64260,64400
DW 64524,64580,64684,64777
DW 64820,64898,64968,65030
DW 65058,65110,65157,65178
END
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。