电子产业
数字化服务平台

扫码下载
手机洽洽

  • 微信小程序

    让找料更便捷

  • 扫码下载手机洽洽

    随时找料

    即刻洽谈

    点击下载PC版
  • 华强电子网公众号

    电子元器件

    采购信息平台

  • 华强电子网移动端

    生意随身带

    随时随地找货

  • 华强商城公众号

    一站式电子元器件

    采购平台

  • 芯八哥公众号

    半导体行业观察第一站

基于STC89C52单片机的七彩迷你音乐盒的制作

2013/3/26 16:03:42;
来源:-- 作者:-- 浏览:1254

标签: 单片机 stc89c52

摘要: 单片机音乐盒DIY—生日快乐歌程序。在单片机最小系统的基础上,对其他两个I/O口连接硬件电路。P1.0接一个七彩快闪LED灯。P1.5口接一个NPN型三极管的放大电路,再连接一个无源蜂鸣器(用来播放乐曲)。 这样一个迷你音乐盒就完成了。硬件电路非常简单,其中单片机任意一个I/O口

       单片机音乐盒DIY—生日快乐歌程序。在单片机最小系统的基础上,对其他两个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

 

型号 厂商 价格
EPCOS 爱普科斯 /
STM32F103RCT6 ST ¥461.23
STM32F103C8T6 ST ¥84
STM32F103VET6 ST ¥426.57
STM32F103RET6 ST ¥780.82
STM8S003F3P6 ST ¥10.62
STM32F103VCT6 ST ¥275.84
STM32F103CBT6 ST ¥130.66
STM32F030C8T6 ST ¥18.11
N76E003AT20 NUVOTON ¥9.67