当前位置:文档之家› 音乐盒+电子琴

音乐盒+电子琴

音乐盒+电子琴
音乐盒+电子琴

;***************************************************; ;子程序定?

;key_scan键盘扫描子程序

;display_select 显示“请按键选歌/录歌?

;select 选歌子程序

;play 弹奏子程序

;delay_jp 延时子程序,用于得节拍,1/4节拍,187ms

;display_error 显示“按键错误”

;display_sele 显示“请选歌”

;display_name 显示歌曲名

;display_close 显示“正在关机,请稍后”

;display_left 显示剩余时间条子程序

;panduan 用于判断歌曲播放过程中的按键,并依键值确定跳转;pause 暂停子程序

;stop_play 停止播放子程序

;replay 回放所录歌曲

;record 录音并播放子程序

;键值定义:

;0到9 歌曲号

;A 选歌键

;B 暂停/播放

;C 停止播放

;D 弹奏

;E 回放

;F 开机/关机/停止弹奏

; p0.0 接蜂鸣器

; P1口接键盘

; P2,P3 接LED点阵

;

;00h 设为暂停标志位

;01h 设为弹奏标志位

;02H 设为回放标志位

;

; 发音简谱吗T值

;

; 低音FA 1 64103

; 低音SO 2 64260

; 低音LA 3 64400

; 低音TI 4 64524

; 中音DO 5 64580

; 中音RE 6 64684

; 中音MI 7 64777

; 中音FA 8 64820

; 中音SO 9 64898

; 中音LA A 64968

; 中音TI B 65030

; 高音DO C 65080

; 高音RE D 65110

; 高音MI E 65157

; 高音FA F 65178

; 0 65110

;

;****************************************************;

key equ 21h ;扫描所得键值

xuhao equ 22h ;查音符表时开始的0值

HIGH_T equ 23h ;音符表首地址高位存放地址

LOW_T equ 24h ;音符表首地址低位存放地址

TH0_D equ 25h ;存放定时器0初值高位的地址

TL0_D equ 26h ;存放定时器0初值低位的地址

TH1_J equ 27h ;存放节拍数地址

sele_addr equ 28h ;选择的歌曲序号存放位置

d1 equ 29h

record_addr equ 30h ;弹奏歌曲存放首地址

yinfu_addr equ 50h ;播放歌曲是音符码存放位置

sum_jiepai equ 51h ;节拍总和存放地址

dec_jiepai equ 52h ;剩余时间条中每熄灭一个LED点所需的单位节拍数存放地址dec_zancun equ 53h ;单位节拍数暂存地址

left_1 equ 54h ;了里面初始值为11111110b

left_2 equ 55h ;放置显示剩余时间条时赋给列的值

;***************************************************;

org 0000h

ajmpMAIN

org 000bh ;

ljmp T0_INT

org 001bH

LJMP T1_INT

ORG 0030H

MAIN: MOV IE,#8AH ;开总中断

mov TMOD,#11H ;TM0D,#11H ;定时,工作1状态

MOV TH1,#3cH

MOV TL1,#0b0H

f_scan: mov 20h,#00h

clr TR0 ;关时间中断0

CLR T R1 ;清中断1

LCALL key_scan ;调键扫

jnb psw.5,f_scan ;没有按键,继续扫描键盘

MOV A,key ;取键值

cjne a,#0fh,f_scan ;不是开机键F,重扫

LCALL display_opening ;调“正在开机,请稍候。?

mov r1,#05h

d_2: mov r0,#0ffh

d_1: lcall delay

djnz r0,d_1

djnz r1,d_2

sele: LCALL display_wel ;调“请按键选歌/录歌”

clr TR0

SETB TR0

again:

CLR T R0

JNB PSW.5,sele ;无按键,重扫

judge: mov a,key ;取键值

XRL A,#0AH

JZ select1 ;A键,跳入选歌子程序

MOV A,key

XRL A,#0DH

JZ play ;D键,跳入弹奏子程序

MOV A,key

XRL A,#0EH

JZ replay ;E键,跳入回放子程序

MOV A,key

XRL A,#0FH

JZ close ;F键,跳入关机子程序

error: LCALL display_error ;显示“按键错误”

JNB PSW.5,error

LJMP judge ;有键的话,跳到judge判断是哪个键

select1:

ljmp select ;跳往select子程序的一个中转站

;*************************************************************************** ;close 关机子程序

;***************************************************************************; close: ljmp sele

;********************************************************************;

;play弹奏子程序

;*********************************************************************; play:lcall display_play

mov r0,#record_addr ;把存放录音的首地址给r0

setb 01h

clr TR0 ;关中断0

n_play: mov TH1_J,#00H

lcall key_scan ;键扫

jnb psw.5,tingdun ;没有按键,确定间隔时间长短

record3:

mov a,key ;取键值

cjne a,#0fh,record ;如果不是停止弹奏键,则跳到录音,并播放子程序

mov @r0,#00h ;如果是停止弹奏键,在存放录音的内存的最后一位赋0

clr 01h ;请弹奏标志位

ljmp sele ;如果是停止弹奏键,则跳到键盘扫描及跳转确定子程序

;****************************************************************************** ***************;

;tingdun 确定弹奏时两次按键之间的时间间隔

;****************************************************************************** *****************;

tingdun:

lcall delay_jp ;调1/4节拍

lcall key_scan

jnz record3 ;有按键,继续

;tingdun1:

INC TH1_J ;

tingdun1:

LCALL delay_jp

INC TH1_J

lcall key_scan

jnb psw.5,tingdun1

mov a,TH1_J ;取节拍数

anl a,#0fh ;防止节拍数太长

mov @r0,a ;存表

inc r0 ;地址加1

ljmp record3 ;

;****************************************************************************** ;

;record 录音并播放子程序

;****************************************************************************** *;

record: mov a,key ;取键值

inc a

mov @r0,a ;把键值存入内存

mov TH1_J,#00h ;用于存放节拍数

mov dptr,#TABLE01 ;把弹奏所查时间初值表地址给dptr

ljmp sing2 ;播放

record2:

lcall delay_jp ;调1/4节拍延迟

inc TH1_J

lcall scan ;键扫

jnz record2 ;没有抬起,继续扫

clr TR0 ;键抬起后关中断0

MOV a,TH1_J

anl a,#0fh

MOV r1,a ;防止一个键按的太长

mov a,@r0

swap a

orl a,r1

mov @r0,a ;存表

inc r0

ajmpn_play ;扫下一个按键

;****************************************************************************** **;

;replay 回放子程序

;****************************************************************************** *;

zhong1_sele:

ljmp sele

replay: mov r0,#30h

setb 02h ;置回放标志位

replay2:

mov a,@r0 ;取音符码

JZ zhong1_sele

mov r4,a ;暂存音符码

anl a,#0fh

mov r5,A ;存节拍数

mov a,R4

swap a

anl a,#0fh ;取低四位

mov dptr,#TABLE01 ;取录音所用频率表

jnz zhong_sing2 ;取到的音符码是否为0

clr TR0 ;是0,不发音

ljmp back

replay3:

inc r0

ajmpreplay2

zhong_sing2: ljmp sing2

END1: CLR T R0

CLR 02h ;清回放标志位

LJMP select

;****************************************************************************** ****;

;**************************************************************************;

;键盘扫描,键值放入key(20h)中

;*************************************************************************; key_scan:

CLR psw.5 ;清按键标志位

once: call scan ;diao jian pan sao miao

jz return0 ; mei you an jian ,fan hui chong sao

call k_delay ;yan shi zi cheng xu

call scan ;diao sao miao

jz return0 ;mei you an jian ,fan hui

call decide ;diao yong jian hao que ding zi cheng xu

mov key,a ;ya zhan bao hu jian hao

jnb 01h,return ;如果是在弹奏中的按键的话,就不检验键有没有弹起了

setb psw.5 ;在弹奏过程中,有按键,不等按键谈起就要返回

ajmp fanhui

return:

call scan ;sao miao deng dai jian tan qi

jnz return ;mei you tan qi ,fan hui chong sao

call k_delay ;yan shi

call scan ;chong sao

jnz return ;fan hui cong sao

setb psw.5

ajmpfanhui

return0:

clr psw.5

fanhui: ret

k_delay: ;yan shi zi cheng xu

mov r1,#100

del:

mov r2,#100

djnz r2,$

djnz r1,del

ret

scan: ;jian pan sao miao

mov p1,#0fh ;

mov a,p1

xrl a,#0f0h ;gao si wei (du dao de hang zhi yi)zhi yi

cpl a ;qu fan

ret

decide:

mov r3,#00h ;shou hang hao

mov r4,#0efh ;

line1: ;di yi hang

mov p1,r4 ;sao miao zhi song p1 kou

nop

nop

nop

mov a,p1 ;du p1

jb acc.0,line2

mov a,#00h

add a,r3 ;de jian hao

ret

line2:

jb acc.1,line3

mov a,#01h

add a,r3 ;de jian hao

ret

line3:

jb acc.2,line4

mov a,#02h

add a,r3 ;de jian hao

ret

line4:

jb acc.3,next

mov a,#03h

add a,r3 ;de jian hao

ret

next:

mov a,r4

rl a ;sao miao zhi zuo yi yi wei

mov r4,a

mov a,r3

add a,#04h ;shou hang hao jia 4

mov r3,a

cjne r3,#10h,line1

;*******************************************************; ;选歌子程序

;******************************************************; zhong_sele:

ljmp sele

sele_erro:

lcall display_error

select: mov 20h,#00h ;请标志位

CLR T R0 ;关中断0

clr TR1 ;关中断1

LCALL display_sele ;调“请选歌”显示

jnb psw.5,select ;没有按键,继续显示“请选歌”,并重扫键盘

zhongjian:

setb IT1 ;开定时器T1中断

mov a,key ;取键值

xrl a,#0fh

jz zhong_sele ;如果是F键的话就返回选歌/弹奏选择程序mov dptr,#sing

mov xuhao,#00h

mov sele_addr,key ;存选择的歌曲序号

mov r5,key ;保护歌曲序号

mov a,r5

setb cy

subb a,#09h ;检验按键是否大于9

jnb cy,sele_erro ;按键大于9,重新检测按键

mov a,r5

MOV B,#03H

MUL AB

jmp @a+dptr ;散转

sing: L JMP PLAY1 ;播放第一首歌

LJMP PLAY2

LJMP PLAY3

LJMP PLAY4

LJMP PLAY5

LJMP PLAY6

LJMP PLAY7

LJMP PLAY8

LJMP PLAY9

LJMP PLAY10

;*********************************************************;

;1到10首歌播放

;********************************************************;

PLAY1:

mov HIGH_T,#HIGH TABLE10 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE10 ;去首地址低位

ljmp b_play

PLAY2:

mov HIGH_T,#HIGH TABLE20 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE20 ;去首地址低位

ljmp b_play

PLAY3:

mov HIGH_T,#HIGH TABLE30 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE30 ;去首地址低位

ljmp b_play

PLAY4:

mov HIGH_T,#HIGH TABLE40 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE40 ;去首地址低位

ljmp b_play

PLAY5:

mov HIGH_T,#HIGH TABLE50 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE50 ;去首地址低位

ljmp b_play

PLAY6:

mov HIGH_T,#HIGH TABLE60 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE60 ;去首地址低位

ljmp b_play

PLAY7:

mov HIGH_T,#HIGH TABLE70 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE70 ;去首地址低位

ljmp b_play

PLAY8:

mov HIGH_T,#HIGH TABLE80 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE80 ;去首地址低位

ljmp b_play

PLAY9:

mov HIGH_T,#HIGH TABLE90 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE90 ;去首地址低位

ljmp b_play

PLAY10:

mov HIGH_T,#HIGH TABLE100 ;取第一首歌首地址高位

mov LOW_T,#LOW TABLE100 ;去首地址低位

b_play: SETB TR1 ;开中断1,中断1的作用是在歌曲播放过程中显示信息

mov DPH,HIGH_T

mov DPL,LOW_T

mov a,xuhao ;取序号值

movc a,@a+dptr

mov r4,a ;暂存音符码

mov yinfu_addr,a ;保存音符码

b_play1:

JZ END0

anl a,#0fh

mov r5,A ;存节拍数

mov a,R4

swap a

anl a,#0fh ;取低四位

jnz sing1 ;取到的音符码是否为0

clr TR0 ;是0,不发音

ljmp back

zhongzhuan1:

ljmp record2 ;中转站

sing1: mov dptr,#TABLE00

; lcall get_jiepai ;得节拍总数

sing2: dec a

rl a

MOV d1,a ;

movc a,@a+dptr

mov TH0,A

MOV TH0_D,A ;存定时器0初值的高四位

MOV A,d1

inc a

movc a,@a+dptr

mov TL0,A

MOV TL0_D,A ;存定时器0初值的低四位

setb TR0 ;开定时器0中断

jb 01h,zhongzhuan1 ;如果是弹奏中的播放的话,再转回弹奏程序back: lcall delay_jp

lcall key_scan ;键扫,看是否有按键

jb psw.5,panduan

jb 02h,zhong_replay

panduan1:

inc xuhao

ljmp b_play

END0: CLR T R0

LJMP select

zhong_replay:

ljmp replay3

;*********************************************************************; ;延时子程序,以1/4节拍为基准(187ms)

;r5中放的是表中的节拍数

;*****************************************************************; delay_jp: mov r7,#02

del_1: mov r4,#150

del_2: mov r3,#248

djnz r3,$

djnz r4,del_2

djnz r7,del_1

jb 01h,return1 ;弹奏子程序中,只需要1/4节拍

djnz r5,delay_jp

return1: ret

;********************************************************************;

;panduan 用于判断歌曲播放过程中的键值,并依键值确定跳转

;***********************************************************************; panduan:

mov a,key ;取键值

cjne A,#0AH,K_B ;不是A键,跳到B键判断

ljmp select ;跳到选歌子程序

K_B: jb 00h,K_B1 ;判断是否从暂停子程序跳转过来的

CJNE A,#0BH,K_C ;不是B键,跳到C键判断

clr TR0 ;关中断0.暂停

ljmp pause ;跳到暂停子程序

K_B1: jb 02h,K_B2 ;如果是从回放暂停的,跳到K_B2

CJNE A,#0BH,K_C

setb TR0

clr 00h ;清暂停标志位

LJMP panduan1;b_play ;暂停后继续播放

K_B2: cjne a,#0bh,K_C

clr 00h ;清暂停标志位

SETB TR0

ljmp replay3 ;返回回放继续播放

K_C: cjne a,#0ch,K_D ;不是c键,跳到D键判断

ljmp select ;跳到停止播放子程序,即选歌子程序

K_D: cjne a,#0dh,K_E ;不是D键,跳到E键判断

ljmp play ;跳到弹奏子程序

K_E: CJNE A,#0EH,K_F ;不是E键,跳到F键判断

ljmp replay ;调回放子程序

K_F: cjne a,#0fh,zhongjian1 ;不是F键,播放重新选择的歌曲

ljmp close ;跳到关机子程序

zhongjian1:

ljmp zhongjian ;跳往zhongjian子程序的一个中转站

;**********************************************************************; ;pause 暂停子程序

;************************************************************************; pause: lcall key_scan ;键扫

jnb psw.5,pause ;

setb 00h

LJMP panduan ;有键值,判断键值,做出相应处理

;****************************************************************************** ***;

;定时器0中断

;****************************************************************************** *;

T0_INT: PUSH ACC

PUSH psw

mov TH0,TH0_D ;重新赋值

mov TL0,TL0_D

CPL P0.0 ;蜂鸣器取反

pop psw

pop acc

RETI

;************************************************************8

;作用:保持LED点阵的持续显示

;0.5ms一次

;*************************************************************;

T1_INT: push acc

mov a,r5

push acc

mov a,r6

push acc

MOV TH1,#3cH

MOV TL1, #0b0H

; setb p2.6

; setb p2.7

; lcall display_left ;跳到显示剩余时间条显示子程序

; mov a,sele_addr ;取歌曲序号

; jnz ge1

; lcall ;第一首歌

;ge1:cjne a,#01h, ge2 ;

; lcall ;第二首歌

;ge2:cjne a,#02h,ge3

; lcall ;第三首歌

;ge3:cjne a,#03h,ge4

; lcall ;第四首歌

;ge4:cjne a,#04h,ge5

; lcall ;第五首歌

;ge5:cjne a,#05h,ge6

; lcall ;第六首歌

;ge6:cjne a,#06h,ge7 ;

; lcall ;第七首歌

;ge7:cjne a,#07h,ge8

; lcall ;第八首歌

;ge8:cjne a,#08h,ge9

; lcall ;第九首歌

;ge9:cjne a,#09h,t_fanhui

; lcall ;第十首歌

t_fanhui:

pop acc

mov r6,a

pop acc

mov r5,a

pop acc

reti

;*********************************************; ;welcome

;*******************************************;

display_wel:

clr TR0

MOV r0,#30H

SSS:

mov p2,#10011001b

MOV P3,#11111110b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O1

LJMP RET6

O1: mov p2,#10011001b

MOV P3,#11111101b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O2

LJMP RET6

O2: mov p2,#10011001b

MOV P3,#11111011b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O3

LJMP RET6

O3: mov p2,#10011001b

MOV P3,#11110111b

LCALL DELAY LCALL key_scan

JNB psw.5 ,O4

LJMP RET6

O4: mov p2,#10011001b

MOV P3,#11101111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O5

LJMP RET6

O5: mov p2,#10011001b MOV P3,#11011111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O6

LJMP RET6

O6: mov p2,#10011001b MOV P3,#10111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O7

LJMP RET6

O7: mov p2,#11111111b MOV P3,#01111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O8

LJMP RET6

O8: mov p2,#11111111b

mov p3,#11111111b

LCALL DELAY

djnz r0,hhx

ajmpfuk

hhx:LJMP SSS

fuk: LCALL key_scan

JNB psw.5 ,O9

LJMP RET6

O9: MOV R1,#0Fh

D3001: MOV R2,#0Fh

D4001: mov R3,#5H

DJNZ R3,$

DJNZ R2,D4001

DJNZ R1,D3001 ;w

MOV r0,#30H

YYY1:

mov p2,#11111111b

MOV P3,#11111110b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O10

LJMP RET6

O10: mov p2,#10000000b

MOV P3,#11111101b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O11

LJMP RET6

O11: mov p2,#10000000b MOV P3,#11111011b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O12

LJMP RET6

O12: mov p2,#11111111b

MOV P3,#11110111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O13

LJMP RET6

O13: mov p2,#11111111b

MOV P3,#11101111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O14

LJMP RET6

O14: mov p2,#10000000b MOV P3,#11011111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O16

LJMP RET6

O16: mov p2,#10000000b MOV P3,#10111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O17

LJMP RET6

O17: mov p2,#11111111b MOV P3,#01111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O18

LJMP RET6

O18: mov p2,#11111111b mov p3,#11111111b

djnz r0,hhx1

ajmpfuk1

hhx1:LJMP YYY1

fuk1: LCALL key_scan

JNB psw.5 ,O19

LJMP RET6

O19: MOV R1,#0Fh

D3006: MOV R2,#0Fh

D4006: mov R3,#5H

DJNZ R3,$

DJNZ R2,D4006

DJNZ R1,D3006 ;e

MOV r0,#30H

YYY2:

mov p2,#01000000b

MOV P3,#11111110b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O20

LJMP RET6

O20: mov p2,#01000000b

MOV P3,#11111101b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O21

LJMP RET6

O21: mov p2,#01000000b MOV P3,#11111011b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O23

LJMP RET6

O23: mov p2,#01000000b

MOV P3,#11110111b

LCALL DELAY

JNB psw.5 ,O24

LJMP RET6

O24: mov p2,#01000000b

MOV P3,#11101111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O25

LJMP RET6

O25: mov p2,#01000000b MOV P3,#11011111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O26

LJMP RET6

O26: mov p2,#01000000b MOV P3,#10111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O27

LJMP RET6

O27: mov p2,#01111111b MOV P3,#01111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O28

LJMP RET6

O28: mov p2,#11111111b mov p3,#11111111b

LCALL DELAY

djnz r0,hhx2

ajmpfuk2

hhx2:LJMP YYY2

fuk2: LCALL key_scan

JNB psw.5 ,O29

LJMP RET6

O29: MOV R1,#0Fh

D3005: MOV R2,#0Fh

D4005: mov R3,#5H

DJNZ R3,$

DJNZ R2,D4005

DJNZ R1,D3005 ;L

MOV r0,#30H

YYY3:

mov p2,#01111110b

MOV P3,#11111110b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O30

LJMP RET6

O30: mov p2,#01000000b

MOV P3,#11111101b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O32

LJMP RET6

O32: mov p2,#01000000b MOV P3,#11111011b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O33

LJMP RET6

O33: mov p2,#01000000b

MOV P3,#11110111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O34

LJMP RET6

O34: mov p2,#01000000b

MOV P3,#11101111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O35

LJMP RET6

O35: mov p2,#01000000b MOV P3,#11011111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O36

LJMP RET6

O36: mov p2,#01000000b MOV P3,#10111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O37

LJMP RET6

O37: mov p2,#01111110b MOV P3,#01111111b

LCALL DELAY

LCALL key_scan

JNB psw.5 ,O38

LJMP RET6

O38: mov p2,#11111111b mov p3,#11111111b

LCALL DELAY

djnz r0,hhx3

ajmpfuk3

hhx3:LJMP YYY3

fuk3: LCALL key_scan

JNB psw.5 ,O39

(完整版)基于51单片机的电子八音盒详细设计步骤

一、设计目的 利用8052单片机结合内部定时器设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。 二、设计要求 其基本功能为:1,使用LED显示器来显示目前演奏的歌曲编号;2,具有8个按键操作来选择演奏哪一首歌曲;3,内建8首歌曲旋律,按下单键可以演奏歌曲。 三、设计器材 T89C52单片机、晶振、八个按键、二位一体共阳极数码管、电阻电容若干、导线。 四、设计方案及分析 设计思路: (1)选择8052单片机,通过T0定时中断,并配合P2.0引脚输出音频频率。 (2)P2.0引脚输出接蜂鸣器。 (3)通过P0口接LED。 (4)P1口接键盘,输入歌曲号。 音符产生方法: 不同的音调有不同的频率。频率不同,音调也就不同。 利用定时器,使其工作在模式1,定时中断,然后控制P2.0引脚的输出每次取反,就可以在P2.0的引脚输出相应的方波频率。改变计数初值,就改变了频率。定时器的定时时间等于半个周期,定时时间到就输出脉冲取反,重复此过程,就可在P2.0引脚得到一音频的脉冲。 如:中音1的频率=523HZ,周期T=1/523=1912us; 定时器的定时时间为:T/2=1912/2us=956us; 计算得TH0,TL0的计数初值THTL=64580 下面是个音符计数初值

节拍产生方法: 音乐中的节拍用延时时间产生。假设1/4拍执行一次延时程序,这1/2拍就执行两次延时程序,所以只要求出1/4延时时间,其余的节拍就是他的倍数。为方便记谱,将节拍数也进行编码,如下: 建立曲谱编码表: 编谱用8位编码,高4位代表音符,低4位代表节拍。如5 6中音5,中音6,都是1/2拍,则编码为:82H 92H 程序清单: #include #define uchar unsigned char #define uint unsigned int #define ulong unsigned long sbit SPEAK = P2^0;//接蜂鸣器管脚 uchar th0_f; uchar tl0_f;

音乐盒设计

基于89c52单片机音乐播放的设计安庆师范学院物理与电气工程学院

1、设计任务和要求 (1) 2、总体设计 (1) 3、硬件设计 (2) 3.1 硬件电路 (2) 3.2 原理说明 (2) 4、软件设计 (2) 5、仿真、安装和调试 (5) 6、收获与体会 (6) 附件1:元件清单 (6) 附件2: 总仿真电路图 (7) 附件3:音乐程序 (8)

音乐盒设计 1、设计任务和要求 (1)利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演乐曲。 (2直接当前播放的歌曲。 (3)可通过功能键选择播放上一首、下一首和暂停播放歌曲。 2、总体设计 (1)要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲 (2)利用8052的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。 记数脉冲值与频率的关系公式如下: N=Fi/2/Fr N:记数值 Fi:内部计时一次为1微秒.故其频率为1MHZ Fr;要产生的频率 (3):起记数值的求法如下: T=65536-N=65536-Fi/2/Fr 例如:设K=65536,F==Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。 T=65536-N=65536-Fi/2/Fr=65536-/2/Fr=65536-500000/Fr 低音D0的T=65536-500000/262=63627 中音D0的T=65536-500000/523=64580 高音D0的T=65536-500000/1047=65059

音乐盒设计

机电学院单片机课程设计 任务书 设计名称:音乐盒的设计 学生姓名:*** 指导教师:***** 起止时间:自*** 年* 月* 日起至*** 年*月* 日止 一、课程设计目的 利用AT89C51系列单片机,实现两首歌曲的依次、循环播放,并在播放歌曲的同时,与之对应的LED灯亮起,形成三种绚丽的灯光效果,制作成一个简单的音乐盒。 二、课程设计任务和基本要求 设计任务: 1.运用AT89C51系列单片机的技术原理,通过硬件电路制作以 及软件编译,设计制作出一个多功能音乐盒; 2.运用2N2905三极管放大技术,对扬声器音频信号进行放大, 实现音乐播放功能; 3.8个LED灯对应音乐的不同音阶,实现伴随音乐播放,发出 不同的花样效果的功能。 基本要求: 1. 能够实现设计任务的基本功能; 2. 至少设计两种音乐的播放和三种灯光效果的制作; 3. 能够完成音乐盒实物的焊接; 4. 完成设计后独立撰写3000字左右的设计报告。

目录 摘要 (1) 关键字 (1) 1 概述 (2) 1.1设计意义 (2) 1.2设计方案 (2) 1.3设计内容 (2) 2 硬件设计 (3) 2.1音乐盒的结构框图 (3) 2.2单片机模块 (3) 2.2.1 AT89C51系列单片机介绍 (3) 2.2.2 最小系统 (4) 2.3扬声器模块 (4) 2.4LED显示模块 (5) 2.5按键模块 (5) 3 软件设计 (6) 3.1音乐盒的功能框图 (6) 3.2音调、节拍以及编码的确定方法 (6) 3.2.1 音调的确定 (6) 3.2.2 节拍的确定 (7) 3.2.3 编码 (8) 3.3软件程序设计 (9) 3.3.1 程序流程图 (9) 3.3.2 程序源代码 (10) 4 调试 (10) 4.1实验环境 (10) 4.1.1 PROTEUS软件简介 (10) 4.1.2 KEIL简介 (11) 4.2仿真调试 (11) 4.3花样灯3种效果 (12) 4.4实物调试 (13) 5 总结 (14) 参考文献 (15) 附录 (16) 附录1仿真电路图 (16) 附录2实物图 (16) 附录3元器件清单 (16) 附录4程序源代码及注释 (17)

单片机课程设计---电子音乐盒的设计

课程设计(说明书) 电子音乐盒的设计 院(系)名称工学院机械系 专业名称机械设计制造及其自动化学生姓名 指导教师 2013年01月12日

课程设计任务书 题目: 电子音乐盒的设计 课程:单片机课程设计 课程设计时间 2012年12月21 日至2012年1 月3日共2 周课程设计工作内容与基本要求(设计要求、设计任务、工作计划、所需相关资料)(纸张不够可加页) 1.设计要求 查阅资料,了解单片机控制单音喇叭发声原理;设计基于单片机的电子音乐盒;通过按钮可选择不同的音乐。 创新设计: 1、安装复位键,暂停、播放键; 2、有6首不同的音乐用程序编出可供选择。 2. 设计任务与要求 2.1系统硬件电路设计 根据该系统设计的功能要求选择所用元器件,设计硬件电路。要求用Proteus绘制整个系统电路原理图。 2.2软件设计 根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。 2.3 Proteus仿真 用Proteus对系统进行仿真并进行软硬件调试。 2.4 编写设计说明书 内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于4000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要绘制整个系统及各部分的软件流程图,列出程序清单,逐条加以注释,并在各功能块前

加程序功能注释。 3.工作计划 4.主要参考资料 单片机课程设计指导书皮大能北京理工大学出版社2010.7 8051单片机实践与应用吴金戎清华大学出版社2003.8 单片机技术基础教程与实践夏路易电子工业出版社2008.1 MCS-51单片机原理接口及应用王质朴北京理工大学出版社2009.11 基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社2009.7 指导老师签字: 日期:

单片机电子琴音乐盒课程设计

课程设计报告 设计题目:单片机多功能音乐盒设计 【摘要】本设计是一个基于AT89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来暂停歌曲,另一个用来切换歌曲本音乐盒共有四首歌曲,还有4*4矩阵键盘电子琴弹奏功能,播放歌曲时,蜂鸣器发出音调,矩阵键盘无扫描信号,不动作。当按下暂停歌曲键时,可继续弹奏电子琴。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。 设计作者:吴文豪 专业班级/学号:10应电三班 1006020144 合作者1:专业班级/学号: 合作者2:专业班级/学号: 指导教师:王明文 设计时间:2012年5月12日———2012年6月3日

目录 引言 (1) 1.设计任务及要求 (2) 1.1设计任务 (2) 1.2设计要求 (2) 1. 3研究内容 (2) 2.系统总体设计 (3) 2.1系统结构框图设计及说明 (3) 3.软、硬件设计…………………………………………………………….. 3.1 系统硬件设计………………………………………………………… 3.1.1系统硬件原理图及工作原理说明………………………… 3.1.2单元电路设计原理与元件参数选择……………………… 3. 2系统软件设计…………………………………………………….. 3. 2. 1软件系统总流程图及设计思路说明…………………... 3. 2. 2软件各功能模块的流程图设计及思路说明…………... 4.安装与调试………………………………………………………………. 4.1安装调试过程……………………………………………………… 4.2调试中遇到的问题…………………………………………………5.结论………………………………………………………………………. 6.使用仪器设备清单………………………………………………………. 7.收获、体会和建议………………………………………………………. 8.参考文献…………………………………………………………………. 9.附录………………………………………………………………………

电子音乐盒地设计

电气信息学院 微机与单片机综合课程设计报告 课题名称电子音乐盒的设计 专业班级 13电气3 班 学号 学生姓名 指导教师 评分 2015年12月14日至12月20日

课程设计的任务要求 一、课程设计选题: 从以下课题中任选一题进行,各课题具体要求详见“微机与单片机综合课程设计题目汇总”文档。并在课程设计报告的正文中详细说明。 1.彩灯控制器的设计 2.电子时钟的设计 3.现代交通灯的设计 4.多路抢答器的设计 5.波形发生器的设计 6.点阵广告牌的设计 7.篮球记分器的设计 8.数字式温度计的设计 9.步进电机的控制 10.电子音乐盒的设计 11.电风扇模拟控制系统设计 12.洗衣机人机界面的设计 13.秒表系统的设计 14.多机串行通信的设计 15.电子密码锁的设计 16.4位数加法计算器的设计 17.数字频率计 18.数字电压表 二、选题说明:一人一题,一个教学班级同一题不能被选超过两次。鼓励同学们将各设计中的基本任务完成后,选做部分发挥项。题中带*和#符号的任务,属于发挥部分。 三、设计时间及进度安排: 第16周,12. 14~12.20 12.14 题目分析,文献查阅 12.15 设计方案 12.16~12.17 元器件选型,硬件电路设计 12.18~12.19 软件设计,系统调试 12.20 课程设计说明书(报告)撰写 四、设计作品提交: (1)课程设计说明书(纸质版,用于存档); (2)课程设计说明书(电子版),单片机源程序文件(电子版); (3)Proteus仿真程序或实物。 五、设计考核评定: 教师评分:80%,答辩成绩:20%

答辩记录 1、例举设计过程中遇到的主要问题及其解决方法。 (1)问题说明: ①编写好程序之后用keil调试没有错误,但将源程序导入到protues中去并进行仿真时,音乐盒并不能放歌。 ②将问题一解决后再次进行调试时,音乐盒只能播放一首歌曲。 (2)解决方法: ①针对问题一,首先检查硬件电路,发现单片机的RST接口始终都是高电平,于是修改复位电路,并联一个接地的电阻,终于使单片机在工作时RST接口为低电平。更正之后还是不能放歌,于是检查软件程序。发现主程序中令count2=0,而count2是跳出播放音乐子程序的,于是将count2=0改为count2=1,于是可以放第一首歌。 ②针对问题二,在播放音乐子程序中加入了if语句,当k1=0时,count2=1,播放第一首歌曲;当k2=0时,count2=2,播放第二首歌曲;当k3=0时,count2=3,播放第三首歌曲;当k4=0时,暂停歌曲。 2、教师现场提的问题记录在此(不少于2个问题)。 ①问:蜂鸣器的发声原理? 答:用单片机的定时器产生不同频率的方波,方波驱动定时器发声。驱动方波频率越高,音调就越高;驱动方波频率越低,音调越低。 ②问:单片机的时钟频率和机器周期各是多少? 答:时钟频率为12MHZ,机器周期为1us。 ③问:如何用proteus改变单片机的时钟周期? 答:在proteus界面左边有个激励源模式,里面有各种激励源。里面的DCLOCK就是可以产生时钟信号的(也就是方波),在属性里面设置不同的频率就可以得到不同的时钟信号。

八音盒设计[实用版]..

《单片机原理及应用》课程设计 —八音盒设计 完成日期:2013年06月11日 目录 一、单片机设计课程的目的和基本要求 (2) 二、八音盒的设计要求 (3) 三、关于AT89C51 (3)

3.1、对于AT89C51的性能介绍 (3) 3.2、AT89C51的管脚介绍 (4) 四、总体设计 (5) 五、硬件原理及设计说明 (7) 六、软件设计流程图 (7) 七、程序输入窗口、编码及音乐程序 (7) 7.1程序输入窗口 (8) 7.2编码 (8) 7.3音乐程序 (9) 八、仿真和调试 (9) 九、元器件清单 (10) 十、电路总图 (10) 十一、实验总结 (11) 参考文献: (12) 一、单片机设计课程的目的和基本要求 大学本科生动手能力的培养和提高时大学本科的一个重要内容。本次课程的设计目的,是让我们通过课程设计建立起单片机应用系统的概念,根据系统设计要求,掌握初步的单片机系统设计方法,让学生的动手能力和对单片机系统从硬件系统和软件系统设计两个方面都得到实际的提高。为今后的毕业设计打下良好的基础。 课程设计的基本要求有: (1)在课程设计过程中,学会使用89S51单片机及相应绘图软件,根据设计要

求设计,编程,运行,调试最后提供课程设计报告; (2)课程设计应由学生本人独立完成,严禁抄袭; (3)认真编写课程设计报告。 二、八音盒的设计要求 8051八音盒 本设计利用8051单片机结合内部定时器LCD设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。本设计可以学习8051定时器程序设计,按键扫描及歌曲旋律简单直觉式输入法的设计方法。 其基本功能为:1使用LCD显示器来显示目前演奏的歌曲编号;2具有16个按键操作来选择演奏哪一首歌曲;3内建10首歌曲旋律,按下单键可以演奏歌曲;4演奏时可以按键中断。程序执行后工作指示LED闪动,表示程序开始执行,按下单键0~9便可以演奏歌曲,歌曲演奏中,可以按键中断。 三、关于AT89C51 3.1、对于AT89C51的性能介绍 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 它可以提供以下的功能标准: (1)4K的字节闪烁存储器; (2)128字节随机存取数据存储器; (3)32个I/O口; (4)2个16位定时/计数器; (5)1个5向量两级中断结构; (6)1个串行通信口; (7)片内振荡器和时钟电路。 另外AT89C51还可以警醒OHZ的惊涛逻辑操作,并支持两种软件的节点模式。

基于单片机的音乐盒设计_毕业设计

毕业设计 基于单片机的音乐盒设计 【摘要】本设计是一个基于A T89C51系列单片机的音乐盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能多功能音乐盒。该音乐盒主要由按键电路、复位电路、时钟电路以及蜂鸣器组成。使用两个按键控制音乐盒,一个用来切换歌曲,另一个用来切换8路LED的变化花样,本音乐盒共有两首歌曲,花样灯花样共计3种。播放歌曲时,蜂鸣器发出某个音调,与之对应的LED亮起。本设计利用KEIL编程软件对音乐盒源程序进行编程并调试,配合PROTEUS仿真软件对硬件进行仿真调试,节约了设计时间。 【关键字】音乐盒;A T89C51单片机;KEIL;PROTEUS;音调

Design Of Music Box Based On SCM Li Kun (Grade06,Class1, Major Computer Science and Technology, Computer Science and Technology Dept,Shaanxi University Of Technology,Hanzhong 723003,Shaanxi) Tutor: FENG Yong-Zheng Abstract:This design is a series based on A T89C51 microcontroller Music Box, based on principles of SCM technology, through the production of hardware and software compilation, designed a multi-function music box. Mainly by the keys of the music box circuit, reset circuit, clock circuit and the buzzer composition. Using two buttons control music box, one to switch songs, and the other is used to switch the 8 LED pattern changes, the music box has two songs, a total of three kinds of pattern light pattern. Play a song, the buzzer sounded a tone, corresponding LED lights up. This design using KEIL programming software to program the music box and debug source code, with the PROTEUS simulation software to simulate hardware, debugging, saving design time. Key Words: Music Box ;A T89C51 SCM; KEIL; PROTEUS; TONE

电子音乐盒(单片机课程设计)说明书

课程设计工作内容与基本要求(设计要求、设计任务、工作计划1.设计要求 查阅资料,了解单片机控制单音喇叭发声原理;设计基于单片机的电子音乐盒;通过按钮可选择不同的音乐。 创新设计: 1、安装复位键,暂停、播放键; 2、有6首不同的音乐用程序编出可供选择。 2. 设计任务与要求 2.1系统硬件电路设计 根据该系统设计的功能要求选择所用元器件,设计硬件电路。要求用Proteus绘制整个系统电路原理图。 2.2软件设计 根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。 2.3 Proteus仿真 用Proteus对系统进行仿真并进行软硬件调试。 2.4 编写设计说明书 内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于4000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要绘制整个系统及各部分的软件流程图,列出程序清单,逐条加以注释,并在各功能块前加程序功能注释。

电子音乐盒 1设计任务和要求 (1) 2总体方案设计 (1) 3硬件设计 (2) 3.1 硬件电路 (2) 3.2 系统总框图 (2) 3.3器件选择 (2) 3.4 原理图设计 (3) 3.5 原理说明 (6) 4软件设计 (7) 5仿真、安装和调试 (8) 收获与体会 (10) 参考文献 (11) 附件1:元件清单 (12) 附件2: 总电路图 (13) 附件3:音乐程序 (14)

1设计任务和要求 1.利用I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演 乐曲(内存六首乐曲)。 2.采用七段数码管显示当前播放的歌曲序号。 3.可通过功能键选择乐曲,包括暂停和播放,上一曲,下一曲,复位。 2 总体方案设计 1. 要产生音频脉冲,只要算出某一音频的周期(1/音频),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O口反相,就可在I/O脚上得到此频率的脉冲 2. 利用8051的内部定时器使其工作在计数器模式MODE1下,改变记数值TH0及TL0以产生不同频率的方法。例如频率为523HZ,其周期T=1/523=1912微秒,因此只要令计数器定时956/1=956在每记数9次时将I/O口反相,就可得到中音D0(523HZ)。 记数脉冲值与频率的关系公式如下: N=Fi/2/Fr N:记数值 Fi:内部计时一次为1微秒.故其频率为1MHZ Fr;要产生的频率 3. 起记数值的求法如下: T=65536-N=65536-Fi/2/Fr 例如:设K=65536,F=1000000=Fi=1MHZ,求低音D0(523HZ),高音的D0(1046HZ)的记数值。 T=65536-N=65536-Fi/2/Fr=65536-1000000/2/Fr=65536-500000/Fr 低音D0的T=65536-500000/262=63627 中音D0的T=65536-500000/523=64580 低音D0的T=65536-500000/1047=65059

音乐盒课程设计报告

音乐盒课程设计报告 XXXXXXXXXXXXX 一、项目概述: 随着社会的发展进步,许多人性化的电子产品被用在人们的日常生活中,而单片机被广泛运用到人们长期接触的事物上,比如银行交易窗口的滚动字幕,还有各种彩灯的控制,手机、计算机、机器人等各行各业中。基于AT89C52单片机的数字音乐盒就是这类产品,它不仅给人们带来了快乐,而且提高了人们的生活质量。 二、项目要求: 基于AT89C52单片机的数字音乐盒的设计要求如下: (1)用AT89C2单片机的I/O端口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。 (2)共有10首乐曲,每首乐曲都有相应的按键控制,并且有开关键、暂停键、上一曲以及下一曲的控制键。 (3)LCD液晶显示歌曲的序号、播放时间、开机时显示英文欢迎提示字符。 三、知识要点: (一)、AT89C2芯片资料: 1)功能说明: 1、兼容MCS51指令系统。 2、8k可反复擦写(大于1000次)Flash ROM。 3、2KB的E2PROM程序存储器,可擦写10万次 4、32个双向I/O口。 5、256x8bit内部RAM。 5、3个16位可编程定时/计数器中断。 6、时钟频率12MHz。 7、1个可编程UART串行通道。 8、2个外部中断源,共9个中断源,6个中断矢量。 9、2个读写中断口线,3级加密位。 10、低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。 11、有PDIP、PQFP、TQFP及PLCC等几种封装形式,以适应不同产品的需求。 2)引脚说明:

AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等。主要管脚有:XTAL1(19 脚)和XTAL2(18 脚)为振荡器输入输出端口,外接12MHz 晶振。RST/VPd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。VCC(40 脚)和VSS(20 脚)为供电端口,分别接+5V电源的正负端。P0~ P3 为可编程通用I/O 脚,其功能用途由软件定义,在本设计中,P0 端口(32~39 脚)被定义为 N1 功能控制端口,分别与N1的相应功能管脚相连接,13 脚定义为IR输入端,10 脚和11脚定义为I2C总线控制端口,分别连接N1的SDAS(18脚)和SCLS(19脚)端口,12 脚、27 脚及28 脚定义为握手信号功能端口,连接主板CPU 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。 本项目使用到的单片机引脚说明: 1)20、40号引脚分别接地和+5V电源。 2)18、29号引脚分别接振荡器反相放大器的输出端和振荡器反相放大器的及内部时钟发生器的输入端。 3)9号引脚接RST复位电路。 3)单片机使能信号接31号引脚,接+5V。 4)17号引脚(P3.7)接蜂鸣器电路通过定时器控制P3.7引脚上方波的占空比可以实现驱动蜂鸣器,发出不同的音调的功能。 5)P1端口控制4×4矩阵键盘,其中P1.0~P1.3 进行列扫描,P1.4~P1.7进行行扫描。6)P0端口用于接液晶显示器的数据位,由于P0端口驱动能力小,需外接电源和上拉电阻,此项目中接1K的排阻。 (二)、LCD1602资料: 1)、LCD1602介绍: 1602液晶显示器也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有也有间隔,起到了字符间距和行间距的作用,正因为如此所以他不能显示图形。 LCD1602是指显示的内容为16X2,即可以显示2行,每行16个字符液晶模块(显示字符和数字)。 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 。 2)1602引脚说明:

电子音乐盒设计方案

电子音乐盒设计方案 第1章绪论 音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的的钟塔报时,而将大小的钟表上机械装置,被称为“可发出声音的组钟”。 音乐盒悠扬的乐声,经常勾起人们对美好往事的回忆,甚至魂牵梦萦,坠入时光岁月的追忆中。300多年来席卷全球市场的机械音乐盒的最大魅力,也许就在于它能将抽象的音乐,凝固成具象的艺术品。成为人们表达美好情感,追思逝去岁月的最佳选择吧! 机械音乐盒的发展史,可追溯至14世纪初期,所发明挂在教堂钟楼上的排钟,这种用发条装置来演奏的乐器,能发出清脆如水晶般的乐声,一度风靡荷兰,比利时和法国北部。1811年以来,瑞士曾经是这项技艺的中心,它和瑞士钟表工业一样,两者相辅相成,一段时间名领风骚,称霸全球。 音乐盒300多年的产品发展,同时也是人类文明300多年发展的历史鉴证。每个不同时期的音乐盒造型,都能折射出当时不同的社会心态和文明发展现状,它也成了时代的一面镜子。 现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念,或为了居室的美化,等等,而得到众多品位人士的追求。 音乐盒的分类: 18音,30音,这些是代表音乐盒机芯的音数,其实也就是机芯里面,那一排钢条的数量,钢条的数量越多,也就是音数越高,奏出来的音色就越丰富,曲子也就是越好听,同时曲子的播放时间也相应长一点。一般18音的曲子为25秒左右,30音的曲子为35秒左右。50音的差不多有60秒。目前来说,一般市面上卖的“爱丽丝”都是18音的,其次是30音,50音。 此次设计的目的就是运用单片机来设计一套控制系统,来完成音乐播放的控制,并设计一套硬件来进行音调播放的实际模拟,从而有欣赏音乐的效果。

最新声光音乐盒设计设计说明

声光音乐盒设计设计 说明

湄洲湾职业技术学院声光音乐盒设计说明书 系别:自动化工程系

目录 1.前言 (1) 2.系统设计技术参数要求 (2) 3.系统设计 (3) 3.1系统设计总体框图 (3) 3.2各模块原理说明 (5) 3.3 系统总原理图说明 (7) 3.4系统印刷电路板的制作 (8) 3.5系统的操作说明 (8) 参考文献 (9) 致谢词 (10) 附录 (11) 附录1 系统总原理图 (11) 附录2 系统印刷电路板的制作图 (12) 附录3 元件清单 (13) 附录4 源程序 (14)

1.前言 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本文设计的音乐盒是以AT89C51单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和弦音乐,功能多,外观效果多彩,使用方便,并具有一定的商业价值。 单片微型计算机是大规模集成电路技术发展的产物,属第四代电子计算机,它具有高性能、高速度、体积小、价格低廉、稳定可靠、应用广泛的特点。它的应用必定导致传统的控制技术从根本上发生变革。因此,单片机的开发应用已成为高科技和工程领域的一项重大课题。 电子式音乐盒是现代电子科技与音乐结合的产物,它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C51单片机为核心控制元件,设计一个电子式音乐盒。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块。 本文主要对使用单片机设计简易电子式音乐盒进行了分析,并介绍了基于单片机电子式音乐盒系统统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,可以播放事先保存的三首优美的曲目。本文分别从原理图,主要芯片,各模块原理及各模块的程序的调试来详细阐述。通过设计本系统有助于增进了解单片机的基本功能,使制作者对单片机的原理的理解和应用能力显著提高。

基于51单片机的音乐盒的设计毕业论文

基于51单片机的音乐盒的 设计毕业论文 目次 目次 (3) 1 引言 (4) 1.1 音乐盒的意义 (4) 1.2 研究容 (5) 2.1系统总体框架图 (6) 2.2音乐盒的设计原理 (6) 2.3 单片机芯片概述 (7) 3 硬件电路设计 (8) 3.1 单片机最小系统原理图 (8) 3.1.1 复位电路 (8) 3.1.2 晶振电路 (9) 3.1.3时钟电路 (9) 3.2 LCD显示模块 (9) 3.3 继电器模块 (11) 3.3.1电磁继电器的工作原理和特性 (12)

3.3.2 固态继电器的工作原理和特性 (12) 3.3.3 继电器主要产品技术参数 (12) 3.4 按键模块 (13) 3.5 其它 (13) 4 软件设计 (14) 4.1 软件总体流程图 (14) 4.2播放/暂停子程序 (15) 4.3 LCD显示模块软件设计 (17) 4.3.1 LCD的初始化函数 (17) 4.3.2 LCD与继电器的函数 (18) 5 系统实现 (19) 5.1 硬件调试 (20) 5.1.1 按键控制的实现 (20) 5.1.2 LCD显示 (21) 5.1.3 其他 (21) 总结 (22) 致谢 (23) 参考文献 (24) 附录A 元器件清单 (25) 附录B 源程序 (26)

1 引言 在进入21世纪后,单片机产品的发展正朝着高性能和多品种方向,并且发展趋势是进一步朝着CMOS化、小体积、低功耗、大容量、高性能、低价格以及外围的电路装化等几个方面去发展。单片机的应用的重要意义还是在于它是从根本上改变了传统的控制系统设计思想和设计方法。过去必须要由模拟电路或者数字电路才可以实现的大部分的功能,现在已能完全可以用单片机通过软件的方法来实现了。这种由软件去代替硬件的控制技术也称之为微控制技术,这是传统控制技术的一次革命。单片机可以说渗透到了我们生活的各个方面,几乎难以找到哪个领域里没有单片机的踪迹。导弹中的导航装置,飞机里安装的各种仪表的控制,计算机里的网络通讯与数据传输方面,工业自动化过程中实时控制和数据处理方面,生活中被广泛使用的各种智能IC卡,民用的高档轿车的安全保障系统,摄像机、录像机、全自动洗衣机所涉及的控制方面,以及远程控制的玩具、电子宠物等等,这些全都是离不开单片机的。 而伴随着科学技术的不断进步和社会的持续发展,人类所接触的更种信息也在不断增加并且信息变得越来越复杂。面对着浩如烟海的繁杂信息,人们目前已经能利用计算机等工具快速、精准地对其进行快速处理,但要想将其处理完毕的信息及时、清晰地传递给其他人,还必须要寻找更加卓越的显示技术去实现它。而单片机技术与液晶显示技术的结合,恰恰使得信息的传输交流向着智能化可视化方向进行快速发展。

音乐盒制作方案(版权所有)

用单片机制作一个属于自己的音乐盒,ATMEGA8L musical box 作者:王银玲 一、电路原理图 电路原理图如下图所示,我们的主控芯片是Atmega8L单片机。Atmega8L单片机是一款高性能、低功耗的8位A VR微处理器,采用先进的RISC结构,具有8K字节的系统内可编程Flash和512字节的EEPROM,擦写寿命约1万次,非常适合搞开发。整个系统采用三节5号AA电池供电,S1为电源开关,发光二极管用作电源指示。K1和K2为按键,一端连接单片机的INTO与INT1,K1控制音乐播放的下一曲,K2控制音乐播放的暂停。虽然单片机内部自带1M片内时钟源,但是本系统采用片外8M晶振。J1为ISP下载器接口,可以通过其直接给单片机写入程序。为了保证音乐的质量,SPEAKER不应采用蜂鸣器,本文推荐选用普通的8ΩO.5W的喇叭作为音频输出设备。由于Atmega8L单片机的管脚驱动能力很强,可以输出和吸收大电流,输出电压约为5V,所以与喇叭间可以不加放大电路。 二、PCB板加工及元件装配 当原理图设计完成后,现在需要搭接硬件电路了,该电路比较简单,可以在面包板上搭建。 现在通过热转印方式来加工电路板变得非常容易,为了设计产品的美观,本方案采用热转印来制作一块空板,下面将简单介绍一下制作过程。 1.绘制印制电路图 绘制印制电路图可以用Protel99SE、CADSTAR、POWERPCB等专门的印制电路绘图软件外,还可以通过orcad、corELDraw以及Windows自带的“画图”软件来绘制,本文采用Protel99SE来绘制。 示,由于电路比较简单,印制电路板设为单面板。 由于要通过热转印方式加工印制电路板,所以电路中的元件引脚焊盘要设的大一点,该方案焊盘直径≥2.5毫米,导线宽度为1毫米,为了提高机械强度,增加补泪滴。 由于为单面板,走线在Bottomlayer,焊盘在Multilayer,外边框在Keepoutlayer,所以在输出的时候只保留这三层,输出颜色设为黑白色。选中线路板输出选项卡下的Show Holes复选框,这样打印时可以将过孔打印出来,这样钻孔时就有定位,非常方便。最终设计的印制电路图如下图所示。 2.将印制电路图输出到热转印纸上 利用激光打印机将印制板电路图打印到专用热转印纸上,由于该设计板为单面板,所以在打印时不需要输出反图,可以直接打印。为了使墨粉能清晰打印在热转印纸上,最好选择原装硒鼓。 3.热转印 用剪刀在热转印纸上剪取要转印的部分,剪裁比这稍大的一块覆铜板。将覆铜板用细砂纸打磨表面以

数字音乐盒课程设计

基于单片机多功能数字音乐盒 《单片机原理及应用》课程设计任务书 一、目的意义 《单片机原理及应用》是高校工程专业的一门专业基础课,该门课程具有很强的实践性。通过课程的学习,使学生掌握基本概念、基本理论和基本技能,为今后从事相应的生产设计和科研工作打下一定的基础。因此,除课程的理论教学和实验教学外,课程设计也是一个必要和重要的实践教学环节。通过课程设计,进一步培养学生理论联系实际的能力,学会正确地分析工程实际问题,善于查阅参考文献,准确地选择相应的数据、参数,具备全面地解决实际问题的素质,同时课程设计也为今后的毕业设计打下基础。 二、设计时间、地点、班级 时间:第16、17周(二周) 地点:三教433 、426 班级:09电气99人 三、设计内容 (二十)基于单片机的多功能数字音乐盒的设计 1、功能描述 用A T89S52单片机的I/O口产生一定频率的方波,驱动蜂鸣器,发出不同的音调,从而演奏乐曲。 共有4乐曲,每首乐曲都由相应的按键控制,并且有开关键、暂停键、上一曲以及下一曲控制键。 按键输入电路的设计 复位电路的设计;时钟电路的设计 显示电路及驱动电路的设计;扫描模式的选择设计 系统主程序及子程序的设计;元件及元件参数的选择

前言:本设计是以AT89C51芯片的电路为基础,外部加上放音设备,以此来实现音乐演 奏控制器的硬件电路,通过软件程序来控制单片机内部的定时器使其演奏出优美动听的音乐。用户可以按照自己的喜好选择音乐并将其转化成机器码存入单片机的存储器中。对于不同型号的单片机只需要相应的改变一下地址即可。该软、硬件系统具有很好的通用性,很高的实际使用价值,为广大的单片机和音乐爱好者提供了很好的借鉴。 1、 设计原理及相关说明 设计原理:通过按键给单片机的P2口输入低电平,进而利用程序来判断是否执行某一播放功能。而利用单片机的定时器0中断来控制播放乐曲。 2.1芯片AT89C51的介绍 AT89C51是一种带4K 字节闪存可编程可擦除只读存储器(FPEROM )的低电压,高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K 字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图2.1 图3.2 AT89C51

音乐盒毕业设计论文

毕业设计论文 设计课题:___________________ 设计者1:___________________ 设计者2:___________________ 设计者3:___________________ 指导教师:___________________ 答辩时间:___________________

摘要 本设计是以单片机技术应用为主线,主控芯片采用AT89S51芯片,采用汇编语言设计程序。随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本课程设计的音乐盒式以单片机为核心元件的电子式音乐盒,体积小,重量轻,能演奏和旋音乐,能弹奏do、re、mi、fa、so、la、si七个音,可以当作一个小小电子琴,由弹奏者弹奏想要的歌曲,给弹奏者提供无限音乐乐趣,还可以播放7首歌,曲目可自由选择。本程设计的音乐盒功能多,使用方便,并具有一定的商业价值,可以生产为小朋友的智力开发玩具,也可生产为年轻人和老年人生活中的不可缺少的音乐盒。

1、 系统总体设计方案及硬件设计 1.1系统总体设计方案 利用单片机于外接独立式按键,通过按键可随意选择播放曲目,按键按下一次,歌曲播放一遍。通过切换键,可切换音乐盒功能与电子琴功能。电子琴是利用各音节的频率与延时时间的结合,不同频率的脉冲经扬声器驱动电路放大后,就会发出7不同音调,达到电子琴固有的基本功能。通过接有一个LM386功率放大器的扬声器播放声音。系统总体设计图如图1。 图1系统总体设计图 1.2硬件设计 硬件功能模块划分:单片机最小系统电路模块、按键电路模以及功放电路模块。 (1)最小系统电路模块 最小系统图包括单片机、复位电路、晶振电路以及电源电路。如图 2

微机原理课程设计——音乐播放器

一.课程设计目的 1.通过D/A装换器产生模拟信号,使PC机作为简易音乐播放器。 2.了解利用数模转换器产生音乐的基本方法。 二.课程设计任务 设计并实现一个键控音乐播放器。 要求: (1)自己选用合适的芯片,不少于两种。 (2)自行设计电路并使用汇编语言编写程序完成键控音乐播放器功能。 (3)该播放器有若干首歌曲可以选择,开始时输出说明,要用户选择要播放的歌曲,然后根据用户按键进行播放、退出或出错提示。 三、总体设计方案 1、总体设计方案一 所有音乐都是由各个不同频率的音阶和其延续时间的长短来实现的。不同的音乐是由各个音阶按某种排列各自播放一定时间形成的,将各音乐音阶和其延续时间存在数据段中,然后根据不同按键值选择不同的音阶和时间表,再使用计数器产生该音阶频率。 而我们学过的有计数器可以产生各种频率,所以我们主要采用计数器8253产生各音符,用8255并行接口来控制扬声器的开关,达到播放音乐的功能。 2、总体设计方案二 可以使用0832(数模转换器)来产生频率,原理图: 提出这个方案是因为我想产生模拟信号,来驱动扬声器,这样产生的声音更加圆润感觉更连续,效果更好点。 我们想把一个周期的波形分成32份,然后每份给8253一个值让他转换成模拟信号,不同的频率可以用8253计数器控制,比如要产生261Hz的频率,使用1MHz的话,周期就为1/261=3.83ms,分成32份,每份间隔时间就是3.83ms/32=0.12ms,换句话说就是送计数器0的初值为1M/261/32=120次。

3、各个音符的对应频率表: 音符频率/HZ 半周期/us 音符频率/HZ 半周期/us 低1DO 262 1908 #4FA# 740 0676 #1DO# 277 1805 中5SO 784 0638 低2RE 294 1700 #5SO# 831 0602 #2RE# 311 1608 中6LA 880 0568 低3M 330 1516 #6LA# 932 0536 低4FA 349 1433 中7SI 988 0506 #4FA# 370 1350 高1DO 1046 0478 低5SO 392 1276 #DO# 1109 0451 #5SO# 415 1205 高2RE 1175 0426 低6LA 440 1136 #2RE# 1245 0402 #6LA# 466 1072 高3M 1318 0372 低7SI 494 1012 高4FA 1397 0358 中1DO 523 0956 #4FA# 1480 0338 #1DO# 554 0903 高5SO 1568 0319 中2RE 578 0842 #5S0# 1661 0292 #2RE# 622 0804 高6LA 1760 0284 中3M 659 0759 #6LA# 1865 0268 中4FA 698 0716 高7SI 1976 0253 四.部分电路设计及功能解说 1、频率发生电路 使用8253产生音符频率。8253采用方式3,产生方波信号,根据输入计数初值的不同产生不同频率的方波信号来驱动扬声器。 设某音符频率为fHz,而CLK脉冲是1MHz,则计数初值N=1M/f。8253的控制端口为28BH,控制字为36H。 2、扬声器开关控制电路 使用8255并行接口芯片来控制扬声器的开和关,PC0始终接低电平,PA0和8253的OUT0接在与门上,这样只有PA0=1时扬声器才有可能开通,否则不发声。关闭的方法是,从PC口读入数据再从PA口输出;而开扬声器时只要在输出PA口数据前对数据进行一个取反操作就可以了。

相关主题
文本预览
相关文档 最新文档