简易九键电子琴 下载本文

简易电子琴

Speaker BIT P3.2 ;P3.2(INT0) 接扬声器 ORG 0000H ljmp Start org 000bh LJMP Timer0Int ORG 0030H

Timer0Int: ;定时中断 push PSW clr TR0

mov TH0, ToneHigh mov TL0, ToneLow setb TR0

mov C, Pulse MOV Speaker,C

CPL Pulse pop PSW reti

ToneTable:

DW 64578,64686,64778,64821 DW 64898,64968,65029 TestKey:

MOV P1, #0FFH ;P1 键盘读入口 查询式 MOV A, P1

CPL A ; 读入键状态

ret

KeyTable:DB 0FEH,0FDH,0FBH,0F7H

DB 0EFH,0DFH,0BFH,07FH ; 键码定义

GETKEY:

MOV R6,#10 ACALL DELAY MOV A,P1

CJNE A,#0FFH,K01 ;确有键按下 LJMP MLOOP

K01: MOV R3,#8 ;8个键 MOV R2,#0 ;键码

21

简易电子琴

MOV B,A ;暂存键值 MOV DPTR,#KeyTable K02: MOV A,R2

MOVC A,@A+DPTR ;从键值表中取键值 CJNE A,B,K04 ;键值比较 MOV A,R2 ;得键码 INC A RET

K04: INC R2 ;不相等,到继续访问键值表 DJNZ R3,K02

MOV A,#0FFH ;键值不在键值中,即多键同时按下 LJMP MLOOP

Delay: ; 延时子程序 mov r7, #0 DelayLoop:

djnz r7, DelayLoop djnz r6, Delay ret

;######################### Start:

mov sp, #70h

mov TMOD, #01 ; Timer

mov IE, #82h ; EA=1, IT0 = 1 mov Tone,#0 MLoop:

call TestKey jz MLoop call GetKey mov b, a

jz MLoop ; = 0, < 1 anl a, #8

jnz MLoop ; > 8 dec b mov a, b

rl a ; a = a*2 mov b, a

mov dptr, #ToneTable movc a, @a+dptr mov ToneHigh, a mov TH0, a

22

简易电子琴

mov a, b inc a

movc a, @a+dptr mov ToneLow, a mov TL0, a SETB TR0

MOV P1,#0FFH WAIT:

MOV A,P1

CJNE A,#0FFH, WAIT MOV R6,#10 ACALL DELAY CLR TR0 LJMP MLOOP END

3.3 面包板的结构

面包板是实验室中用于搭试电路的重要工具,它本身就是一种免焊电板,熟练掌握面包板的使用方法是提高实验效率,减少实验故障出现机会的基础之一。

下面我们就面包板的结构和使用技巧做一个简单的介绍:面包板的内部结构如图3-2所示,其外观如图3-3所示。面包板分上下两部分,上面部分一般是由一行或两行的插孔构成的窄条,行和行之间电气不连通。每5列插孔为一组,通常的面包板上有10组或11组。对于10组的结构,左边3组内部电气连通,中间4组内部电气连通,右边3组内部电气连通,但左边3组、中间4组以及右边3组之间是不连通的。对于11组的结构,左边4组内部电气连通,中间3组内部电气连通,右边4组内部电气连通,但左边4组、中间3组以及右边4组之间是不连通的。若使用的时候需要连通,必须在两者之间跨接导线。 下面部分是由中间一条隔离凹槽和上下各5行的插孔构成。在同一列中的5个插孔是互相连通的,列和列之间以及凹槽上下部分则是不连通的。

23

简易电子琴

图3-2 面包板的内部结构

在具体使用的时候,通常是两窄一宽同时使用,两个窄条的第一行一般和地线连接,第二行和电源相连。由于集成块电源一般在上面,接地在下面,如此布局有助于将集成块的电源脚和上面第二行窄条相连,接地脚和下面窄条的第一行相连,减少连线长度和跨接线的数量。中间宽条用于连接电路,由于凹槽上下是不连通的,所以集成块一般跨插在凹槽上。

图3-3面包板的外观

24