久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 11102|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)音樂(lè)編程實(shí)驗(yàn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1 發(fā)表于 2010-6-26 02:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
 在很多兒童玩具或一些需要音樂(lè)提示(如報(bào)警儀、定時(shí)鬧鐘、電子寵物等)的場(chǎng)合,需要用到單片機(jī)音樂(lè)編程的功能。原理就是利用單片機(jī)的引腳發(fā)出某一定頻率的信號(hào)驅(qū)動(dòng)外部發(fā)聲設(shè)備發(fā)出聲音,或者放出美妙的音樂(lè)。
  在這個(gè)例程中,音樂(lè)曲調(diào)的原始編碼已做好,只要按照曲譜給定參數(shù)即可實(shí)現(xiàn)播放不同的樂(lè)曲,使實(shí)驗(yàn)生動(dòng)有趣。參數(shù)兩個(gè):前一個(gè)按照曲譜對(duì)照編碼表給定,第二個(gè),為節(jié)拍數(shù),8->1拍,4->半拍。
 

           Beep equ P2.2         ;板子上的蜂鳴器是接的P2.2
          musich equ 40h         ;音樂(lè)定時(shí)高位數(shù)據(jù) 
           musicl equ 41h         ;音樂(lè)定時(shí)低位數(shù)據(jù)
           musicstart equ 42h     ;音樂(lè)開(kāi)始首地址
; ************************ 預(yù)定義結(jié)束 *******************

            org 00h                ;程序開(kāi)始
            jmp main               ;跳轉(zhuǎn)到主程序

            org 1bh                ;定時(shí)器T1中斷入口地址
            jmp timer1             ;定時(shí)器服務(wù)程序 

            org 030h               ;主程序代碼開(kāi)始 
       main:mov sp,#30h            ;設(shè)置堆棧
            lcall music            ;調(diào)用音樂(lè)程序
            jmp main               ;重新開(kāi)始

   musdelay:mov r0,#20             ;短時(shí)間延時(shí)
          d:djnz r0,d              ;延時(shí)時(shí)間 20uS
            ret                    ;返回
; ************ 定時(shí)器 服務(wù)程序 *******************
     timer1:clr tr1                ;停止定時(shí)器工作
            mov th1,musich         ;重新設(shè)置定時(shí)初值 
            mov tl1,musicl         ;
            cpl beep               ;從蜂鳴器輸出聲音 
            setb tr1               ;開(kāi)始定時(shí)工作 
            reti                   ;中斷返回
;**************************************************** 
;************ 音樂(lè)播放程序 ********************* 
      music:mov tmod,#10h          ;設(shè)置定時(shí)器T1工作方式1 
            setb ea                ;總的中斷
            setb et1               ;定時(shí)器T1中斷允許
            mov musicstart,#00h    ;音樂(lè)開(kāi)始地址
            mov musich,#0ffh       ;音樂(lè)定時(shí)常數(shù)高位 
            mov musicl,#0ffh       ;音樂(lè)定時(shí)常數(shù)低位
      loopm:mov dptr,#mu_tab       ;得到音符表頭
            mov a,musicstart       ;開(kāi)始查表 
            movc a,@a+dptr         ;獲得音樂(lè)數(shù)據(jù)
            jz musend              ;結(jié)束符 00H,返回 
            rl a ;A*2
            mov b,a                ;暫存地址
            mov dptr,#mustab       ;獲得音符表頭
            movc a,@a+dptr         ;根據(jù)音樂(lè)數(shù)據(jù)查得定時(shí)常數(shù)
            mov musich,a           ;保存定時(shí)常數(shù)高位 
            mov th1,a              ;設(shè)置定時(shí)器高位常數(shù) 
            mov a,b                ;開(kāi)始找低位數(shù)據(jù) 
            inc a                  ;指向下一個(gè)數(shù)據(jù)
            mov dptr,#mustab       ;得到音符表頭
            movc a,@a+dptr         ;查得低位數(shù)據(jù) 
            mov musicl,a           ;保存數(shù)據(jù)
            mov tl1,a              ;設(shè)置定時(shí)低位常數(shù) 
            setb tr1               ;定時(shí)器T1開(kāi)始工作 
            mov dptr,#mu_tab       ;得到音樂(lè)表 
            inc musicstart         ;指向下一個(gè)單元(音符節(jié)拍)
            mov a,musicstart       ;開(kāi)始查找
            movc a,@a+dptr         ;找到數(shù)據(jù)
            lcall delay1           ;根據(jù)參數(shù)延時(shí),發(fā)出持續(xù)音樂(lè)
            inc musicstart         ;指向下一個(gè)音 
            clr tr1                ;停止發(fā)聲
            lcall delay 
            jmp loopm              ;重復(fù),直到遇到結(jié)束符號(hào) 00H.
     musend:clr tr1                ;樂(lè)曲播放完畢,關(guān)閉定時(shí)器 
            clr ea                 ;禁止中斷
            clr et1                ;關(guān)閉定時(shí)器T1中斷
            clr beep               ;禁止蜂鳴器 
            mov a,#20 
            lcall delay1
            ret                   
;********************* 
;************ 節(jié)拍發(fā)生器 ,產(chǎn)生音樂(lè)節(jié)拍 ********************************* 
     delay1:mov r0,#00h            ;節(jié)拍發(fā)生器,用來(lái)發(fā)生節(jié)拍
            mov r1,#00h            ;
            mov r2,a               ;這是節(jié)拍發(fā)生器的參數(shù),當(dāng)它為8
      dlay1:djnz r0,dlay1          ;表示1拍 
            mov r0,#00h 
            djnz r1,dlay1
            mov r0,#00h 
            mov r1,#00h
            djnz r2,dlay1
            ret 
;  ????????????????????
; ******** 延時(shí) 產(chǎn)生休止符 ***************** 

      delay:mov r0,#00h            ;延時(shí) 10ms
            mov r1,#100
       dlay:djnz r0,dlay 
            mov r0,#100 
            djnz r1,dlay 
            ret
; ************************
; ************************曲譜編碼,這是定義的曲譜表,對(duì)應(yīng)如下 **************************************************
; 1 低音 DO 2 低音 RE 3 低音ME 4 低音 FA 5 低音 SO 6 低音LA 7 低音SI
mustab: db 'h','j', 0f8h,8bh, 0f9h,5bh, 0fah,14h, 0fah,0ch, 0fbh,03h, 0fbh,8fh, 0fch,0bh
; 8 中音 DO 9 中音 RE 0ah 中音ME 0bh 中音 FA 0ch 中音 SO 0dh 中音LA 0eh 中音SI
db 0fch,43h, 0fch,0abh, 0fdh,08h, 0fdh,33h, 0fdh,81h, 0fdh,0c7h, 0feh,05h 
; 0fh 高音 DO 10h 高音 RE 11h 高音ME 12h 高音 FA 13h 高音 SO 14h 高音LA 15h 高音SI 
db 0feh,21h, 0feh,55h, 0feh,84h, 0fdh,99h, 0feh,0c0h, 0feh,0e3h, 0ffh,02h

;以下為音樂(lè)樂(lè)譜代碼,前兩位表示曲譜,后一位表示節(jié)拍 
;8為 1 拍,4 ->半拍 

mu_tab: db 6,4,8,4,10,4,1,4, 9,8,8,4,7,4,10,8,9,8,6,16
        db 8,4,10,4,12,4,12,4, 13,8,12,4,11,4,10,16
        db 00h
        end 
[此貼子已經(jīng)被作者于2010-6-26 2:14:01編輯過(guò)]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:23004 發(fā)表于 2010-6-26 13:09 | 只看該作者

好東西,都要支持一下。。。。

回復(fù)

使用道具 舉報(bào)

板凳
ID:34619 發(fā)表于 2013-7-21 09:42 | 只看該作者
支持一下
回復(fù)

使用道具 舉報(bào)

地板
ID:66061 發(fā)表于 2014-9-15 15:11 | 只看該作者
謝謝胡老師分享,,
回復(fù)

使用道具 舉報(bào)

5#
ID:81556 發(fā)表于 2015-5-30 11:56 | 只看該作者
老師曲譜怎么編碼啊?下面節(jié)拍意思是6和4為曲譜,8為節(jié)拍是嗎?還有老師,f8h 、8bh代表什么意思啊?
回復(fù)

使用道具 舉報(bào)

6#
ID:288930 發(fā)表于 2019-1-29 09:11 | 只看該作者
謝謝分享!
回復(fù)

使用道具 舉報(bào)

7#
ID:426516 發(fā)表于 2019-3-29 08:46 | 只看該作者
雖然目前沒(méi)看懂,但是感覺(jué)很好
回復(fù)

使用道具 舉報(bào)

8#
ID:48127 發(fā)表于 2019-4-20 06:45 來(lái)自觸屏版 | 只看該作者
能詳細(xì)解釋就更好了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 福利视频免费观看 | 国产日韩欧美一区 | 成人黄色av| 一级免费黄色片 | 欧美性一区二区 | 香蕉在线观看 | 精品久久久久久久 | av日韩精品| 亚洲一区中文 | 亚洲一区二区国产精品 | 风间由美一区二区三区 | 欧美日韩在线视频观看 | 福利影院在线观看 | 欧美毛片基地 | 在线看黄色片 | 天天摸天天操 | 日本中文字幕在线播放 | 天天干天天弄 | 日本特黄特色aaa大片免费 | 91视频在线免费观看 | 羞羞的视频在线观看 | 黄色片网站在线观看 | 亚洲女优在线 | 国产一区二区免费在线观看 | 欧美色图一区二区三区 | 天天色天天 | 超碰97av | 天天操网 | www.伊人网| 国产女人18毛片水18精品 | 福利视频网址 | 91丨九色丨蝌蚪丨丝袜 | 欧美一级日韩一级 | 性做久久久久久久免费看 | 人人干人人草 | 天天干天天插 | 国产精品自拍av | 免费在线成人 | 久久久精品一区二区三区 | 99久久视频 | 在线观看国产小视频 |