中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機音樂盒DIY—生日快樂歌程序

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

        作者: 時間:2011-12-01 來源:網(wǎng)絡(luò) 收藏

          基于STC89C52單片機的七彩迷你音樂盒。在單片機最小系統(tǒng)的基礎(chǔ)上,對其他兩個I/O口連接硬件電路。P1.0接一個七彩快閃LED燈。P1.5口接一個NPN型三極管的放大電路,再連接一個無源蜂鳴器(用來播放樂曲)。

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

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

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

          單片機匯編源代碼分享:

          org 0000h

          ajmp main

          org 000bh

          jmp tim0

          org 0030h

          main: ;主程序

          setb p1.1

          clr p1.4

          setb p3.0

          mov tmod,#01h ;設(shè)定時方式

          mov ie,#82h ;開中斷

          start0:

          mov 30h,#00h ;

          next:mov a,30h

          mov dptr,#table

          movc a,@a+dptr ;查表取音調(diào)和節(jié)拍

          mov r2,a

          jz end0 ;為零,不進行處理.

          anl a,#0fh

          mov r5,a ;將節(jié)拍存入R5

          mov a,r2

          swap a

          anl a,#0fh

          jnz sing ;根據(jù)音調(diào)決定是否演奏.

          clr tr0

          jmp d1

          sing:dec a

          mov 22h,a ;將音調(diào)存入22H.

          rl a

          mov dptr,#table1

          movc a,@a+dptr ;根據(jù)音調(diào)決定定時器初值.

          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: ;定時器中斷服務(wù)程序

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

          dw 64260,64400,64524,64580

          dw 64684,64777,64820,64898

          dw 64968,65030,65058,65110

          dw 65157,65178,65217

          table: ;決定音調(diào)和節(jié)拍的表格,不同的歌曲只是此表不同

          ;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



        關(guān)鍵詞: 單片機音樂盒

        評論


        技術(shù)專區(qū)

        關(guān)閉