简易电子琴设计(单片机课程设计)
简易电子琴设计
用单片机控制扬声器,弹奏出一段音乐。
一、预备知识:
乐曲由不同音符组成,各音符都有对应的频率,频率不同的方波加在扬声器上,
就产生一个持续的音符。利用不同的音符、音高、音长组合,就可产生想要的音乐。
对于单片机来说,利用其定时器产生不同频率的方波非常方便,以11.0592、
22.1184MHz 晶振(实验箱)为例,列出高中低音符与单片机定时器初值如下表所示
注意:
1、一个音段常见由7 个标准音组成(1do、2ri、3mi、4fa、5sol、6la、7si),但实际乐曲中还有一些介于2 个标准音之间的音,即半度音,有1.5、2.5、4.5、5.5、6.5 共
5 个,所以完整的1 个音段有12 个音。
2、选择简谱时,尽量选用只含7 个标准音的乐曲,而且要选C 大调的(简谱左上角
标着1=C X/4),否则各音符的频率要做相应的变化。
10
二、设计目的
了解扬声器的发声原理,进一步熟悉定时器、键盘扫描、LED 显示电路的工作原理及编程方法。
三、设计内容
1、设计键盘、LED 显示、扬声器驱动电路原理图;
2、设计程序流程图;
3、编程调试,利用按键作为琴键,按下不同的键发出相应的音调,同时在LED 最右位显示对应键号值。
四、参考接线
扬声器的SPK+端接VCC,SPK 负端连接到某一I/O 口。
五、设计步骤
程序:
KEYBUF EQU 30H
STH0 EQU 31H
STL0 EQU 32H
TEMP EQU 33H
ORG 0000
LJMP MAIN
ORG 000BH
LJMP INT_T0
MAIN:
MOV TMOD,#01H
SETB ET0
SETB EA
WAIT:
MOV P3,#0FFH
CLR P3.4
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY1
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK1
MOV KEYBUF,#0
LJMP DK1
NK1:
CJNE A,#0DH,NK2
MOV KEYBUF,#1
LJMP DK1
NK2:
CJNE A,#0BH,NK3
MOV KEYBUF,#2
LJMP DK1
NK3:
CJNE A,#07H,NK4
MOV KEYBUF,#3
LJMP DK1
NK4:
NOP
DK1:
MOV A,KEYBUF
MOV B,#2
MUL AB
MOV TEMP,A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV STH0,A
MOV TH0,A
INC TEMP
MOV A,TEMP
MOVC A,@A+DPTR
MOV STL0,A
MOV TL0,A
SETB TR0
DK1A:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK1A
CLR TR0
NOKEY1:
MOV P3,#0FFH
CLR P3.5
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY2
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK5
MOV KEYBUF,#4
LJMP DK2
NK5:
CJNE A,#0DH,NK6
MOV KEYBUF,#5
LJMP DK2
NK6:
CJNE A,#0BH,NK7
MOV KEYBUF,#6
LJMP DK2
NK7:
CJNE A,#07H,NK8
MOV KEYBUF,#7
LJMP DK2
NK8:
NOP
DK2:
MOV A,KEYBUF
MOV B,#2
MUL AB
MOV TEMP,A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV STH0,A
MOV TH0,A
INC TEMP
MOV A,TEMP
MOVC A,@A+DPTR
MOV STL0,A
MOV TL0,A
SETB TR0
DK2A:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK1A
CLR TR0
NOKEY2:
MOV P3,#0FFH
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY3
MOV A,P3
ANL A,#0FH
CJNE A,#0EH,NK9
MOV KEYBUF,#8
LJMP DK1
NK9:
CJNE A,#0DH,NK10
MOV KEYBUF,#9
LJMP DK1
NK10:
CJNE A,#0BH,NK11
MOV KEYBUF,#10
NK11:
CJNE A,#07H,NK12
MOV KEYBUF,#11
LJMP DK3
NK12:
NOP
DK3:
MOV A,KEYBUF
MOV B,#2
MUL AB
MOV TEMP,A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV STH0,A
MOV TH0,A
INC TEMP
MOV A,TEMP
MOVC A,@A+DPTR
MOV STL0,A
MOV TL0,A
SETB TR0
DK3A:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ DK3A
CLR TR0
NOKEY3:
MOV P3,#0FFH
CLR P3.7
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY4
MOV A,P3
ANL A,#0FH