stc89c51单片机音乐盒系统设计_基于STC89C52单片机的七彩迷你音乐盒

stc89c51单片机音乐盒系统设计_基于STC89C52单片机的七彩迷你音乐盒基于STC89C52单片机的七彩迷你音乐盒。在单片机最小系统的基础上,对其他两个I/O口连接硬件电路。P1.0接一个七彩快闪LED灯。P1.5口接一个NPN型三极管的放大电路,再连接一个无源蜂鸣器(用来播放乐曲)。这样一个迷你音乐盒就完成了。硬件电路非常简单,其中单片机任意一个I/O口都可以作为乐曲的输出,信号经过NPN三极管放大驱动蜂鸣器发出电子乐曲。紧接着就是为单片机设计运行的程序了,这里我用…

基于STC89C52单片机的七彩迷你音乐盒。在单片机最小系统的基础上,对其他两个I/O口连接硬件电路。P1.0接一个七彩快闪LED灯。P1.5口接一个NPN型三极管的放大电路,再连接一个无源蜂鸣器(用来播放乐曲)。

这样一个迷你音乐盒就完成了。硬件电路非常简单,其中单片机任意一个I/O口都可以作为乐曲的输出,信号经过NPN三极管放大驱动蜂鸣器发出电子乐曲。

紧接着就是为单片机设计运行的程序了,这里我用汇编写了一段《生日快乐》的程序。大家可以仿照,我的思路修改乐曲。

DIY手记:用C52这么大块头的单片机,确实很浪费。因为一共有32个I/O引脚,设计音乐盒只用了其中的两个,非常的浪费。大家可以用其他的单片机代替,例如16引脚的单片机。价格相对会便宜一点。

单片机汇编源代码分享:

org 0000h

ajmp main

org 000bh

jmp tim0

org 0030h

main: ;主程序

setb p1.1

clr p1.4

setb p3.0

mov tmod,#01h ;设定时方式

mov ie,#82h ;开中断

start0:

mov 30h,#00h ;

next:mov a,30h

mov dptr,#table

movc a,@a+dptr ;查表取音调和节拍

mov r2,a

jz end0 ;为零,不进行处理。

anl a,#0fh

mov r5,a ;将节拍存入R5

mov a,r2

swap a

anl a,#0fh

jnz sing ;根据音调决定是否演奏。

clr tr0

jmp d1

sing:dec a

mov 22h,a ;将音调存入22H.

rl a

mov dptr,#table1

movc a,@a+dptr ;根据音调决定定时器初值。

mov th0,a ;放入TH0

mov 21h,a

mov a,22h

rl a

inc a

movc a,@a+dptr

mov tl0,a ;放入TL0

mov 20h,a

setb tr0 ;启动定时

d1: call delay

inc 30h

jmp next

end0:clr tr0

jmp start0

tim0: ;定时器中断服务程序

push acc

push psw

mov tl0,20h ;重赋初值。

mov th0,21h

cpl p1.7

pop psw

pop acc

retidelay:mov r7,#02h ;延时子程序

d2: mov r4,#130

d3: mov r3,#248

djnz r3,$

djnz r4,d3

djnz r7,d2

djnz r5,delay

ret

table1: ;决定音调的定时初值。

dw 64260,64400,64524,64580

dw 64684,64777,64820,64898

dw 64968,65030,65058,65110

dw 65157,65178,65217

table: ;决定音调和节拍的表格,不同的歌曲只是此表不同

;1

db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h

;2

db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h

;3

db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h

;4

db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h,00

end

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/38909.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注