计数脉冲值与频率的关系式是:
N=fi÷2÷fr 式中,N是计数值;fi是机器频率(晶体振荡器为12MHz时,其频率为1MHz);fr是想要产生的频率。 其计数初值T的求法如下: T=65536-N=65536-fi÷2÷fr
例如:设K=65536,fi=1MHz,求低音DO(261Hz)、中音DO(523Hz)、高音DO(1046Hz)的计数值。
T=65536-N=65536-fi÷2÷fr=65536-1000000÷2÷fr=65536-500000/fr 低音DO的T=65536-500000/262=63628 中音DO的T=65536-500000/523=64580 高音DO的T=65536-500000/1046=65059 C调各音符频率与计数初值T对照如表1所示。
表1 C调各音符频率与计数初值T对照
6
每个音符使用1个字节,字节的高4位代表音符的高低,低4位代表音符的节拍,下表为节拍码的对照。但如果1拍为0.4秒,1/4拍是0.1秒,只要设定延迟时间就可求得节拍的时间。假设1/4节拍为1DELAY,则1拍应为4DELAY,以此类推。所以只要求得1/4拍的DELAY时间,其余的节拍就是它的倍数,如下表为1/4和1/8节拍的时间设定。 表9.2 节拍码对照表
1/4节拍 1/8节拍 节拍码 节拍数 节拍码 节拍数 1 1/4拍 1 1/8拍 2 2/4拍 2 1/4拍 3 3/4拍 3 3/8拍 4 1拍 4 1/2拍 5 1又1/4拍 5 5/8拍
6 1又1/2拍 6 3/4拍
7 1又3/4拍 7 7/8拍 8 2拍 8 1拍 9 2又1/4拍 9 1又1/8拍 A 2又1/2拍 A 1又1/4拍 B 2又3/4拍 B 1又3/8拍 C 3拍 C 1又1/2拍 D 3又1/4拍 D 1又5/8拍 E 3又1/2拍 E 1又3/4拍 F 3又3/4拍 F 1又7/8拍 表9.3 各调节拍的时间设定表
1/4节拍 1/8节拍 曲调值 DELAY 曲调值 DELAY 调4/4 125毫秒 调4/4 62毫秒 调3/4 187毫秒 调3/4 94毫秒 调2/4 250毫秒 调2/4 125毫秒 ⑹ 建立音乐的步骤:
1)先把乐谱的音符找出,然后由上表建立T值表的顺序。 2)把T值表建立在TABLE1,构成发音符的计数值放在“TABLE”。
3)简谱码(音符)为高位,节拍为(节拍数)为低4位,音符节拍码放在程序的“TABLE”处。
表9.4 简谱对应的简谱码、T值、节拍数 简谱 发音 简谱码 T值 节拍码 节拍数 5 低5SO 1 64260 1 1/4拍 6 低6LA 2 64400 2 2/4拍 7 低7SI 3 64524 3 3/4拍 1 中1DO 4 64580 4 1拍
7
2 中2RE 5 64684 5 1又1/4拍 3 中3M 6 64777 6 1又2/4拍 4 中4FA 7 64820 7 1又3/4拍 5 中5SO 8 64898 8 2拍 6 中6LA 9 64968 9 2又1/4拍 7 中7SI A 65030 A 2又2/4拍 1 高1DO B 65058 B 2又3/4拍 2 高2RE C 65110 C 3拍 3 高3M D 65157 D 3又1/4拍 4 高4FA E 65178 E 3又2/4拍 5 高5SO F 65217 F 3又3/4拍 不发音 0
1/4拍的延迟时间=187毫秒
1.4 程序(音乐:祝你平安)
SPK BIT P1.0 ORG 0000H LJMP START ORG 000BH
INC 20H ;中断服务,中断计数器加1
MOV TH0,#0D8H
MOV TL0,#0EFH ;12M晶振,形成10毫秒中断 RETI
START:
MOV SP,#50H MOV TH0,#0D8H MOV TL0,#0EFH MOV TMOD,#01H MOV IE,#82H
MUSIC0:
NOP
MOV DPTR,#DAT ;表头地址送DPTR MOV 20H,#00H ;中断计数器清0 MOV B,#00H ;表序号清0 MUSIC1:
NOP CLR A
MOVC A,@A+DPTR ;查表取代码
8
JZ END0 ;是00H,则结束 CJNE A,#0FFH,MUSIC5 LJMP MUSIC3 MUSIC5:
NOP
MOV R6,A INC DPTR
MOV A,B
MUSIC2:
MUSIC3:
MUSIC4:
END0:
MUSIC6:
DEL:
MOVC A,@A+DPTR ;取节拍代码送R7 MOV R7,A
SETB TR0 ;启动计数 NOP CPL SPK MOV A,R6 MOV R3,A LCALL DEL
MOV A,R7
CJNE A,20H,MUSIC2 ;中断计数器(20H)=R7否? ;不等,则继续循环
MOV 20H,#00H ;等于,则取下一代码 INC DPTR ; INC B
LJMP MUSIC1
NOP
CLR TR0 ;休止100毫秒 MOV R2,#0DH NOP
MOV R3,#0FFH LCALL DEL
DJNZ R2,MUSIC4 INC DPTR LJMP MUSIC1
NOP
MOV R2,#64H ;歌曲结束,延时1秒后继续
MOV R3,#00H LCALL DEL
DJNZ R2,MUSIC6 LJMP MUSIC0 9
NOP DEL3:
MOV R4,#02H DEL4:
NOP
DJNZ R4,DEL4 NOP
DJNZ R3,DEL3 RET NOP DAT:
db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h db30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h,26h,20h,2bh,10h,2bh,10h db 2bh,20h,30h,10h,39h,10h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,20h
db 20h,10h,20h,10h,2bh,10h,26h,30h,30h,80h,18h,20h,18h,20h,26h,20h db 20h,20h,20h,40h,26h,20h,2bh,20h,30h,20h,30h,20h,1ch,20h,20h,20h db 20h,80h,1ch,20h,1ch,20h,1ch,20h,30h,20h,30h,60h,39h,10h,30h,10h db 20h,20h,2bh,10h,26h,10h,2bh,10h,26h,10h,26h,10h,2bh,10h,2bh,80h db 18h,20h,18h,20h,26h,20h,20h,20h,20h,60h,26h,10h,2bh,20h,30h,20h db 30h,20h,1ch,20h,20h,20h,20h,80h,26h,20h,30h,10h,30h,10h,30h,20h db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h db 20h,10h,2bh,10h,26h,30h,30h,80h,00H END
二、电路问题分析
2.1 焊接:出现的问题
2.1.1)短路:过大的焊点造成两焊点相接.
2.1.2)线路设计不良:线路或接点间太过接近(应有0.6mm以上间距); 2.1.3)虚焊
2.2 焊点技术小结.
2.1.1)完全使用软件元件库中的元件,不加任何修改
这是大部分情况下我们应该的,但有时你的器件可能多少有点出入,如果你没有用过,确认是否与库里的元件相符,最好量一下实尺寸,以免出现元件到时插不了、管脚不符等的灾难性后果。
10