51单片机设计的电子琴怎么发出音。。请给出具体电路图啊。。。救命。。

由4X4组成16个按钮矩阵,设计成16个音。

基于51单片机的电子琴_基于51单片机的电子琴设计论文基于51单片机的电子琴_基于51单片机的电子琴设计论文


基于51单片机的电子琴_基于51单片机的电子琴设计论文


基于51单片机的电子琴_基于51单片机的电子琴设计论文


可随意弹奏想要表达的音和音乐。

51单片机如果想发出不同的音阶,需要使用无源蜂鸣器。

可以使用三极管驱动。

电路图及其简单,难点为无源蜂鸣器的驱动部分的程序。

用89C51单片机设计开发简易电子琴,能7个音,并存一首歌就好,要简单点的,做为课程设计用,急需!!!

T0H EQU 30H

T0L EQU 31H

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR

ORG 0030H

MAIN:

MOV SP,#5FH

MOV TMOD,#01H

SETB ET0

SETB EA

LOOP:

MOV DPTR,#FREQ

MOV A,P2 ;控制高中低音区

MOV R1,#0

ANL A,#03H

JB ACC.0,LOOP01

MOV R1,#14

SJMP LOOP0

LOOP01:

JB ACC.1,LOOP0

MOV R1,#28

LOOP0:

JB P0.0,LOOP1 ;控制音频1234567

MOV A,R1

MOVC A,@A+DPTR

MOV T0H,A

INC DPTR

MOV A,R1

MOVC A,@A+DPTR

MOV T0L,A

LJMP LOOP

LOOP1:

JB P0.1,LOOP2

MOV A,R1

ADD A,#2

MOVC A,@A+DPTR

MOV T0H,A

INC DPTR

MOV A,R1

ADD A,#2

MOVC A,@A+DPTR

MOV T0L,A

LJMP LOOP

LOOP2:

JB P0.2,LOOP3

MOV A,R1

ADD A,#4

MOVC A,@A+DPTR

MOV T0H,A

INC DPTR

MOV A,R1

ADD A,#4

MOVC A,@A+DPTR

MOV T0L,A

LJMP LOOP

LOOP3:

JB P0.3,LOOP4

MOV A,R1

ADD A,#6

MOVC A,@A+DPTR

MOV T0H,A

INC DPTR

MOV A,R1

ADD A,#6

MOVC A,@A+DPTR

MOV T0L,A

LJMP LOOP

LOOP4:

JB P0.4,LOOP5

MOV A,R1

ADD A,#8

MOVC A,@A+DPTR

MOV T0H,A

INC DPTR

MOV A,R1

ADD A,#8

MOVC A,@A+DPTR

MOV T0L,A

LJMP LOOP

LOOP5:

JB P0.5,LOOP6

MOV A,R1

ADD A,#10

MOVC A,@A+DPTR

MOV T0H,A

INC DPTR

MOV A,R1

ADD A,#10

MOVC A,@A+DPTR

MOV T0L,A

LJMP LOOP

LOOP6:

JB P0.6,LOOP7

MOV A,R1

ADD A,#12

MOVC A,@A+DPTR

MOV T0H,A

INC DPTR

MOV A,R1

ADD A,#12

MOVC A,@A+DPTR

MOV T0L,A

LJMP LOOP

LOOP7:

CLR TR0

LJMP LOOP

;-----------------------------

T0ISR:

CLR TR0

MOV TH0,T0H

MOV TL0,T0L

SETB TR0

CPL P3.0

RETI

;-----------------------------

FREQ:

DB 0F2H,03DH ;低音1

DB 0F3H,0BDH ;低音2

DB 0F5H,014H ;低音3

DB 0F5H,0B1H ;低音4

DB 0F6H,0D0H ;低音5

DB 0F7H,0D1H ;低音6

DB 0F8H,0B5H ;低音7

DB 0F9H,01EH ;中音1

DB 0F9H,0DEH ;中音2

DB 0FAH,08AH ;中音3

DB 0FAH,0D8H ;中音4

DB 0FBH,068H ;中音5

DB 0FBH,0E8H ;中音6

DB 0FCH,05AH ;中音7

DB 0FCH,08FH ;高音1

DB 0FCH,0EFH ;高音2

DB 0FDH,045H ;高音3

DB 0FDH,06CH ;高音4

DB 0FDH,0B4H ;高音5

DB 0FDH,0F4H ;高音6

DB 0FEH,029H ;高音7

;-----------------------------

END

用51单片机 制作简易电子琴 的两个问题

1,单片机的指令系统执行以下指令就可识别按键被按下,原理就是判别连接按键的端口是否发生了电平变化.用 JNB P1.0,TO_OFF 就可判定如果P1.0脚为低电平就转去TO_OFF那执行.

2,循环是单片机执行指令系统中的转移指令来达到循环.可以用JMP无条件的跳转来循环,和如上题那样有条件判断后的循环.当然也可以利用定时器产生的定时中断来不断的执行中断程序来达到循环.

对于C语言的,单片机内部使用while(1)这个语句实现不断地循环,如果是用汇编来写的话,我记得有伪指令可以实现跳转功能,这跳转功能就能实现不断地循环,汇编还有什么条件转移啊,无条件转移啊,都可实现循环

识别按键按下,对于C语言,可以使用循环语句加上键盘扫描程序来实现,就是不断地扫描端口当前的状态,一旦扫描端口信号被改变即立刻延时一段时间,然后执行一个指定的语句,这个语句可以实现你想要的放出声音或是其他的功能。

语句执行完后,即再次开始扫描,不断地循环

单片机的I/0口默值是高电平,当按键按下时,会使该引脚为低电平。