<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

            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)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();