18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機 >> 正文

單片機匯編:音樂盒DIY—生日快樂歌程序

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2012-1-12
基於STC89C52單片機的七彩迷你音樂盒。在單片機最小係統的基礎上,對其他兩個I/O口連接硬件電路。P1.0接一個七彩快閃LED燈。P1.5口接一個NPN型三極管的放大電路,再連接一個無源蜂鳴器(用來播放樂曲)。

  這樣一個(ge) 迷你音樂(le) 盒就完成了。硬件電路非常簡單,其中單片機任意一個(ge) I/O口都可以作為(wei) 樂(le) 曲的輸出,信號經過NPN三極管放大驅動蜂鳴器發出電子樂(le) 曲。

  緊接著就是為(wei) 單片機設計運行的程序了,這裏我用匯編寫(xie) 了一段《生日快樂(le) 》的程序。大家可以仿照,我的思路修改樂(le) 曲。

  DIY手記:用C52這麽(me) 大塊頭的單片機,確實很浪費。因為(wei) 一共有32個(ge) I/O引腳,設計音樂(le) 盒隻用了其中的兩(liang) 個(ge) ,非常的浪費。大家可以用其他的單片機代替,例如16引腳的單片機。價(jia) 格相對會(hui) 便宜一點。

  單片機匯編源代碼分享:

  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 ;為(wei) 零,不進行處理.

  anl a,#0fh

  mov r5,a ;將節拍存入R5

  mov a,r2

  swap a

  anl a,#0fh

  jnz sing ;根據音調決(jue) 定是否演奏.

  clr tr0

  jmp d1

  sing:dec a

  mov 22h,a ;將音調存入22H.

  rl a

  mov dptr,#table1

  movc a,@a+dptr ;根據音調決(jue) 定定時器初值.

  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: ;決(jue) 定音調的定時初值.

  dw 64260,64400,64524,64580

  dw 64684,64777,64820,64898

  dw 64968,65030,65058,65110

  dw 65157,65178,65217

  table: ;決(jue) 定音調和節拍的表格,不同的歌曲隻是此表不同

  ;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

Tags:單片機,匯編,音樂程序  
責任編輯:admin
  • 上一篇文章:
  • 下一篇文章:
  • 請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁麵
    下到頁底
    晶體管查詢