我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 2734|回复: 4

[资料贡献] 单片机音乐盒DIY——生日快乐歌程序

[复制链接]

该用户从未签到

12

主题

0

回帖

0

积分

一级逆天

积分
0

终身成就奖

QQ
发表于 2013-11-4 17:04:58 | 显示全部楼层 |阅读模式
基于STC 89C52单片机的七彩迷你音乐盒。在单片机最小系统的基础上,对其他两个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
reti
delay: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
希望结识更多的电子工程师朋友们32.768KHZ晶振
回复

使用道具 举报

该用户从未签到

10

主题

423

回帖

491

积分

二级逆天

积分
491

终身成就奖特殊贡献奖原创先锋奖社区居民

QQ
发表于 2013-11-4 18:39:22 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

196

主题

3558

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖原创先锋奖

发表于 2020-10-17 13:57:05 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

29

主题

389

回帖

1280

积分

PADS20210412初级班

积分
1280

终身成就奖特殊贡献奖

发表于 2021-4-12 08:59:20 | 显示全部楼层
~只要思想不滑坡,办法总比困难多~
回复

使用道具 举报

  • TA的每日心情
    开心
    14 小时前
  • 签到天数: 109 天

    [LV.6]常住居民II

    2

    主题

    8566

    回帖

    9882

    积分

    二级逆天

    积分
    9882

    社区居民终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2022-1-4 08:50:13 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    论坛开启做任务可以
    额外奖励金币快速赚
    积分升级了


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    平平安安
    TOP
    快速回复 返回顶部 返回列表