简易电子琴设计(单片机课程设计)

简易电子琴设计(单片机课程设计)
简易电子琴设计(单片机课程设计)

简易电子琴设计

用单片机控制扬声器,弹奏出一段音乐。

一、预备知识:

乐曲由不同音符组成,各音符都有对应的频率,频率不同的方波加在扬声器上,

就产生一个持续的音符。利用不同的音符、音高、音长组合,就可产生想要的音乐。

对于单片机来说,利用其定时器产生不同频率的方波非常方便,以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

相关主题
相关文档
最新文档