




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、單片機(jī)原理及應(yīng)用期末課程設(shè)計(jì)基于at89c52單片機(jī)的簡易電子琴 單片機(jī)原理及應(yīng)用期末課程設(shè)計(jì) 題 目: 基于at89c52單片機(jī)的簡易電子琴 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(非師范) 目 錄第1節(jié) 引 言4 1.1 單片機(jī)發(fā)音概述4 1.1.1 音調(diào) 41.1.2節(jié)拍71.1.3單片機(jī)演奏音樂的方法8 1.2本次設(shè)計(jì)的任務(wù)和主要內(nèi)容8第2節(jié) 系統(tǒng)的主要硬件電路的設(shè)計(jì)92.1 單片機(jī)控制系統(tǒng)原理92.1.1 芯片的選用 92.1.2 簡易電子琴的組成框圖 102.1.3 簡易電子琴的proteus總體仿真圖 102.2 單片機(jī)主機(jī)系統(tǒng)電路 112.2.1 時(shí)鐘頻率 112.2.2 晶振電路 112
2、.2.3 鍵盤掃描 122.2.4 發(fā)音電路 142.2.5 供電及復(fù)位電路 14第3節(jié) 系統(tǒng)的軟件設(shè)計(jì) 163.1 主程序 163.1.1 主程序流程圖 163.1.2 主程序 173.2 歌曲播放子程序243.3 產(chǎn)生1/8拍延時(shí)子程序253.4 發(fā)音子程序253.5 延時(shí)子程序253.6 1/8拍周期表263.7 延時(shí)參數(shù)表 263.8 10ms延時(shí)子程序 263.9 中斷服務(wù)子程序273.10 音符參數(shù)表273.11 計(jì)數(shù)器初值表273.12 預(yù)存歌曲表蘭花草27第4節(jié) 結(jié)束語 29參考文獻(xiàn) 30 基于at89c52單片機(jī)的簡易電子琴第1節(jié) 引 言 隨著生活水平的提高,在放松自己的同時(shí)
3、又能提高各個(gè)方面的能力。學(xué)習(xí)和欣賞音樂可以在使人們得到放松的同時(shí),提高人們的精神品質(zhì)和個(gè)人素養(yǎng)。當(dāng)代,愛好音樂的年輕人越來越多,有不少人自己練習(xí)彈奏樂器,作為業(yè)余愛好和一種放松的手段,鑒于一些樂器學(xué)習(xí)難度大需要太多的學(xué)習(xí)時(shí)間,且其價(jià)格又太過于高昂,使得一部分有這種想法的人不得不放棄這種想法。而一些簡易的電子樂器價(jià)格相對便宜,學(xué)習(xí)上手快,價(jià)格相對便宜,一般人容易負(fù)擔(dān)的起,能夠滿足一般愛好者的需求。故簡易電子樂器的研制具有一定的社會意義。本次課程設(shè)計(jì)主要研究基于at89c52單片機(jī)的16鍵簡易電子琴的設(shè)計(jì)。1.1 單片機(jī)發(fā)音概述 由于單片機(jī)的強(qiáng)大功能,除了在測試控制領(lǐng)域中有著廣泛的應(yīng)用外,還有一些
4、而有趣的應(yīng)用。比如,使用單片機(jī)可以驅(qū)動蜂鳴器或者揚(yáng)聲器發(fā)出聲音,還可以控制其發(fā)出不同的聲調(diào),從而連接起來構(gòu)成一個(gè)曲子。目前,市場上有很多種音樂模塊或者音樂芯片,可以直接產(chǎn)生各種曲子。但是,這種模塊價(jià)格比較昂貴,電路結(jié)構(gòu)比較復(fù)雜。如果系統(tǒng)中僅需要產(chǎn)生簡單的音符或者簡短的曲子,可以使用單片機(jī)配合簡單的揚(yáng)聲器而產(chǎn)生需要的音樂效果。一般說來,單片機(jī)不像其他專業(yè)樂器那樣能奏出多種音色的聲音,即不包含相應(yīng)幅度的諧波頻率。單片機(jī)演奏的音樂基本都是單音頻率。因此單片機(jī)演奏音樂比較簡單,只需要清楚“音調(diào)”和“節(jié)拍”。音調(diào)表示一個(gè)音符唱多高的頻率節(jié)拍表示一個(gè)音符唱多長的時(shí)間1.1.1音調(diào) 音調(diào)是音樂學(xué)中的名詞,與
5、平時(shí)所說的音高十分相似。在音樂中常把中音c上方的a音定為標(biāo)準(zhǔn)音高,其頻率為 f = 440hz,其余音均與其進(jìn)行比較。 和為兩個(gè)音符,如果兩個(gè)音符的頻率相差一倍時(shí),即時(shí),則稱比高一個(gè)倍頻程。在音樂中音符1(do)與音符之間正好相差一個(gè)倍頻程,在音樂學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音里,有12個(gè)半音。以1-八音區(qū)為例。12個(gè)半音是:1-#1,#1-2,2-#2,#23,34,4-#4,#45,5-#5,#56,6-#6,#67,7-。由于人耳的聽覺效果,這12個(gè)音節(jié)的分度基本上是以對數(shù)關(guān)系來劃分的。只要知道了這12個(gè)音符的音高,也就是其基本的音樂的頻率,就可以根據(jù)音符之間的倍頻程關(guān)系得到其他音
6、符基本的音調(diào)頻率。知道了一個(gè)音符的頻率后,便可以讓單片機(jī)發(fā)出相應(yīng)的頻率的振蕩信號,從而產(chǎn)生相應(yīng)的音符聲音。常采用的方法是通過單片機(jī)的定時(shí)器進(jìn)行定時(shí)中斷,在中斷服務(wù)子程序中將單片機(jī)上外界揚(yáng)聲器的i/o口來回置高電平或置低電平,從而讓揚(yáng)聲器發(fā)出聲音。為了讓單片機(jī)發(fā)出不同頻率音符的聲音,只需將定時(shí)器預(yù)置不同的定時(shí)值來實(shí)現(xiàn)。 以標(biāo)準(zhǔn)音高a為例:標(biāo)準(zhǔn)音高a的頻率 f=440hz,其對應(yīng)的周期為: (1-1)因此需要在單片機(jī)i/o口輸出周期為 t=2272us的方波脈沖,如圖1-1所示圖1-1單片機(jī)控制音調(diào)示意圖由上圖可知: 單片機(jī)輸出高電平和低電平信號均為: (1-2)也就是說,單片機(jī)上定時(shí)器的中斷觸發(fā)
7、時(shí)間為1136us。如果單片機(jī)采用定時(shí)器工作方式1,它以振蕩器的十二分頻信號為計(jì)數(shù)脈沖。設(shè)外接晶振的振蕩器頻率為f0,則定時(shí)器的預(yù)置初值由下式來確定: (1-3) 式中,count = =65536, 為定時(shí)器待確定的計(jì)數(shù)初值。因此定時(shí)器的高低計(jì)數(shù)器的初值為: (1-4) (1-5)如果單片機(jī)外接12mhz的晶振,則,將t=1136us和代入上面兩式,即可求得標(biāo)準(zhǔn)音高a在單片機(jī)定時(shí)器工作方式1下的定時(shí)器高低計(jì)數(shù)器的初值為: (1-6) (1-7)根據(jù)上面的求法,我們可以求出其他音調(diào)相應(yīng)的計(jì)數(shù)器的預(yù)置初值。在單片機(jī)晶振頻率,定時(shí)器在工作方式1下定時(shí)器計(jì)數(shù)初值見表1-1表1-1晶振頻率定時(shí)器在工作
8、方式1下定時(shí)器計(jì)數(shù)初值表音符頻率/hz計(jì)數(shù)初值音符頻率/hz計(jì)數(shù)初值低1 do26263628# 4 fa #74064860#1 do#27763731中 5 so78464898低2 re29463835# 5 so#83164934#1 re#31163928中 6 la88064968低 3 mi33064021# 6 la#93264994低 4 fa34964013中 7 si98895030#4 fa#37064185高 1 do104665058低5 so39264260# 1 do110965085#5 so41564331高117565110低 6 la44064400#2
9、 re#124565134#6 la#46664463高 3 mi131865157低7 si49464524高 4 fa139765178中 1 do52364580# 4 fa#148065198# 1 do#55464633高 5 so 156865217中 2 re58764684# 5 so#166165235#2 re#62264732高 6 la176065252中 3 mi65964777# 6 la#186565268中 4 fa69864820高 7 si1967652831.1.2節(jié)拍在一張完整樂譜開頭,都有如1=c、1=g等等的標(biāo)識。這里1=c,1=g標(biāo)識樂譜的曲調(diào),簡
10、單的說就是跟音調(diào)有關(guān)系;這里的、用來表示節(jié)拍。對于音符的節(jié)拍,以為例。它表示樂譜中以四分音符為節(jié)拍,每一小節(jié)有三拍。1= g的節(jié)拍示意圖,見圖1-2 在圖中,總共有三拍:1、2為一拍,3、4、5為一拍,6為一拍。從時(shí)長角度看,1、2的時(shí)長為四分音的一半,即為八分音符長;3、4的時(shí)長為八分音符的一半,即為十六分音符長;5的時(shí)長為四分音符的一半,即為八分音符長;6的時(shí)長為四分音符長。1=g圖1-2節(jié)拍示意圖對于一拍的發(fā)音時(shí)間,如果樂曲沒有特殊說明,一般說來,一拍的時(shí)長大約為400450ms。如果這里規(guī)定一拍的時(shí)長為400ms,那么以四分音符為節(jié)拍時(shí),四分音符的時(shí)長為400ms,八分音符的時(shí)長為20
11、0ms,十六分音符的時(shí)長為100ms。從而,在單片機(jī)上可采用循環(huán)延時(shí)的辦法來實(shí)現(xiàn)控制一個(gè)音符唱多長時(shí)間。首先要編寫一個(gè)精確的基本時(shí)長的延時(shí)程序,比如說以八分音符的時(shí)長為基本延時(shí)時(shí)間,那么對于一個(gè)音符,如果它是四分音符,只需調(diào)用四次延時(shí)程序,如果它是二分音符,則只需調(diào)用八次延時(shí)程序,以此類推。 1.1.3單片機(jī)電子琴演奏音樂的方法步驟一:將樂譜中的每個(gè)音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍數(shù)。步驟二:將這些參數(shù)做成數(shù)據(jù)表格,存放在存儲器中。步驟三:通過按鍵調(diào)用程序取出一個(gè)音符的相關(guān)參數(shù),播放該音符。步驟四:播放完該音符后,等待下一次按鍵調(diào)用程序去取出下一次的音符的相關(guān)參數(shù),再播放音符。對于演
12、奏樂曲,一般將休止符的音調(diào)參數(shù)設(shè)置為ffh,節(jié)拍參數(shù)設(shè)置為00h。1.2本設(shè)計(jì)任務(wù)和主要內(nèi)容本次課程設(shè)計(jì)主要研究基于at89c52單片機(jī)的16鍵簡易電子琴的設(shè)計(jì)。具體要求實(shí)現(xiàn)以下功能: 按下音符鍵可以發(fā)出相應(yīng)的音符 按下音樂播放鍵可以自動播放預(yù)先存在內(nèi)存中的曲子第2節(jié) 系統(tǒng)主要硬件電路設(shè)計(jì) 2.1 單片機(jī)控制系統(tǒng)原理2.1.1芯片選用在本次課程設(shè)計(jì)中我采用atmel公司的at89c52單片機(jī)。at89c52是美國atmel公司生產(chǎn)的低電壓、高性能cmos 8位單片機(jī),片內(nèi)含8kb的可反復(fù)檫寫的程序存儲器和12b的隨機(jī)存取數(shù)據(jù)存儲器(ram),器件采用atmel公司的高密度、非易失性存儲技術(shù)生產(chǎn)
13、,兼容標(biāo)準(zhǔn)mcs-51指令系統(tǒng),片內(nèi)配置通用8位中央處理器(cpu)和flash存儲單元,功能強(qiáng)大的at89c52單片機(jī)可靈活應(yīng)用于各種控制領(lǐng)域。at89c52單片機(jī)屬于at89c51單片機(jī)的增強(qiáng)型,與intel公司的80c52在引腳排列、硬件組成、工作特點(diǎn)和指令系統(tǒng)等方面兼容。at89c52引腳圖見圖2-1.圖2-1 at89c52引腳圖其主要功能特性:· 兼容mcs51指令系統(tǒng) · 8k可反復(fù)擦寫(>1000次)flash rom · 32個(gè)雙向i/o口 · 256x8bit內(nèi)部ram · 3個(gè)16位可編程定時(shí)/計(jì)數(shù)器中斷 ·
14、; 時(shí)鐘頻率0-24mhz · 2個(gè)串行中斷 · 可編程uart串行通道 · 2個(gè)外部中斷源 · 共6個(gè)中斷源 · 2個(gè)讀寫中斷口線 · 3級加密位 · 低功耗空閑和掉電模式 · 軟件設(shè)置睡眠和喚醒功能 2.1.2 簡易電子琴的組成框圖at89c524×4矩陣鍵盤發(fā)音電路供電及復(fù)位電路晶振電路 圖2-2 電子琴系統(tǒng)原理框圖2.1.3 簡易電子琴的proteus總體仿真圖 電子琴的proteus總體仿真圖見圖2-3。按下musickey鍵,系統(tǒng)自動播放預(yù)存在內(nèi)存中的曲子,按下reskey鍵,系統(tǒng)復(fù)位,停止播
15、放。按下矩陣鍵盤中的任意鍵,揚(yáng)聲器發(fā)出相應(yīng)的音符。圖2-3 簡易電子琴的proteus總體仿真圖2.2單片機(jī)主機(jī)系統(tǒng)電路2.2.1時(shí)鐘頻率 單片機(jī)必須在時(shí)鐘的驅(qū)動下才能工作。在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號送到單片機(jī)內(nèi)部的各個(gè)單元,決定單片機(jī)的工作速度。外部振蕩源電路一般選用石英晶體振蕩器,此電路在加電大約延遲10ms后振蕩器起振,在xtal2引腳產(chǎn)生幅度為3v左右的正弦波時(shí)鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中兩個(gè)電容c1,c2,作用有兩個(gè):一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。c1,c2的典型值為30pf。 單片機(jī)在工作時(shí),由
16、內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號的周期稱為時(shí)鐘周期。起大小是時(shí)鐘信號頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為12mhz,即fosc=12mhz,則時(shí)鐘周期為1/12µs。2.2.2 晶振電路at89c52單片機(jī)的定時(shí)控制功能是用時(shí)鐘電路和振蕩器完成的,而根據(jù)硬件電路的不同,連接方式分為內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。本設(shè)計(jì)中采用內(nèi)部時(shí)鐘方式。單片機(jī)內(nèi)部有一個(gè)反相放大器xtal1、xtal2分別為反相放大器的輸入端和輸出端,外接定時(shí)反饋元件組成振蕩器(內(nèi)部時(shí)鐘方式),產(chǎn)生時(shí)鐘送至單片機(jī)內(nèi)部各元件。時(shí)鐘頻率越高,單片機(jī)控制器的控制節(jié)拍就越快,運(yùn)算速度也就越快。一
17、般來說單片機(jī)內(nèi)部有一個(gè)帶反饋的線性反相放大器,外界晶振(或接陶瓷振蕩器)和電容就可組成振蕩器,如圖2-4所示。加電以后延時(shí)一段時(shí)間(約10ms)振蕩器產(chǎn)生時(shí)鐘,不受軟件控制,圖中x1為晶振,震蕩產(chǎn)生的時(shí)鐘頻率主要由y1確定。電容c1,c2的作用有兩個(gè):一是幫助振蕩器起振,二是對振蕩器的頻率起微調(diào)作用,典型值為30pf。圖2-4 晶振電路2.2.3鍵盤掃描在單片機(jī)應(yīng)用中鍵盤用得最多的形式是獨(dú)立鍵盤及矩陣鍵盤,如圖2-5,圖2-6所示。圖2-5 獨(dú)立鍵盤圖2-6 矩陣鍵盤它們各有自己的特點(diǎn),其中獨(dú)立鍵盤硬件電路簡單,而且在程序設(shè)計(jì)上也不復(fù)雜,一般用在對硬件電路要求不高的簡單電路中;矩陣鍵盤與獨(dú)立鍵
18、盤有很大區(qū)別,首先在硬件電路上它要比獨(dú)立鍵盤復(fù)雜得多,而且在程序算法上比它要煩瑣,但它在節(jié)省端口資源上有優(yōu)勢得多,因此它更適合于多按鍵電路。本次課程設(shè)計(jì),我采用矩陣式鍵盤電路,這樣可以大大的節(jié)省單片機(jī)i/o的開銷。鍵盤電路見圖2-7:圖2-7 鍵盤電路在按鍵過程中常產(chǎn)生“毛刺” 現(xiàn)象,如圖2-8所示,要消除“毛刺”現(xiàn)象,這里采用最常用的方法,即延時(shí)重復(fù)掃描法,延時(shí)法的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而我們按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測到有按鍵動靜后,再延時(shí)一段時(shí)間(10ms20ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。 圖2-8 “
19、毛刺”現(xiàn)象2.2.4 發(fā)音電路 電子琴發(fā)音電路見圖2-9。圖2-9 電子琴發(fā)音電路2.2.5 供電及復(fù)位電路 電子琴的供電電路和復(fù)位電路見圖2-10。圖2-10 電子琴供電及復(fù)位電路第3節(jié) 系統(tǒng)的軟件設(shè)計(jì)3.1 主程序 3.1.1主程序的流程圖 主程序的程序流程圖見圖3-1.按鍵是否按下開始去抖動,延時(shí)10ms掃描按鍵位置做一次按鍵處理,播放相應(yīng)的音符或音樂按鍵是否按下圖3-1程序流程圖3.1.2 主程序 keybuf equ 30h sth0 equ 31h stl0 equ 32h temp equ 33h spkequp1.6; 蜂鳴器所在端口org 0000h ljmp start o
20、rg 0bh ljmp int_t0 ;轉(zhuǎn)定時(shí)器t0中斷服務(wù)程序start:mov tmod,#01h ;選擇定時(shí)器t0工作于方式1setb et0 ;允許t0溢出中斷setb ea wait: mov p2,#0ffh clr p2.4 ;從第四行開始掃描mov a,p2 anl a,#0fh ;屏蔽高四位,高四位為行,低四位為列xrl a,#0fh jz nokey1 ;判斷是否有鍵按下,沒有就跳轉(zhuǎn)lcall dely10ms mov a,p2 ;消除抖動和干擾anl a,#0fh xrl a,#0fh jz nokey1 mov a,p2 ;確定有鍵按下以后的處理anl a,#0fh c
21、jne a,#0eh,nk1 ;是否為第四行第一列的鍵被按下mov keybuf,#0 ;保存列號ljmp dk1 nk1:cjne a,#0dh,nk2 mov keybuf,#1 ljmp dk1 nk2:cjne a,#0bh,nk3 mov keybuf,#2 ljmp dk1 nk3:cjne a,#07h,nk4 mov keybuf,#3 ljmp dk1 nk4:nop dk1: ;第四行的處理mov a,keybuf mov dptr,#table movc a,a+dptr mov p0,a mov a,keybuf mov b,#2 ;table1以字保存,所以散轉(zhuǎn)mul
22、 ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a ;送入高字節(jié)mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a ;送入低字節(jié)mov tl0,a setb tr0 dk1a:mov a,p2 ;判斷按鍵是否松開anl a,#0fh xrl a,#0fh jnz dk1a clr tr0 nokey1: mov p2,#0ffh clr p2.5 mov a,p2 anl a,#0fh xrl a,#0fh jz nokey2 lcall dely10ms mov a,p2
23、anl a,#0fh xrl a,#0fh jz nokey2 mov a,p2 anl a,#0fh cjne a,#0eh,nk5 mov keybuf,#4 ljmp dk2 nk5:cjne a,#0dh,nk6 mov keybuf,#5 ljmp dk2 nk6:cjne a,#0bh,nk7 mov keybuf,#6 ljmp dk2 nk7:cjne a,#07h,nk8 mov keybuf,#7 ljmp dk2 nk8:nop dk2: mov a,keybuf mov dptr,#table movc a,a+dptr mov p0,a mov a,keybuf mo
24、v b,#2 mul ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a mov tl0,a setb tr0 dk2a:mov a,p2 anl a,#0fh xrl a,#0fh jnz dk2a clr tr0 nokey2: mov p2,#0ffh clr p2.6 mov a,p2 anl a,#0fh xrl a,#0fh jz nokey3 lcall dely10ms mov a,p2 anl a,#0fh
25、xrl a,#0fh jz nokey3 mov a,p2 anl a,#0fh cjne a,#0eh,nk9 mov keybuf,#8 ljmp dk3 nk9:cjne a,#0dh,nk10 mov keybuf,#9 ljmp dk3 nk10:cjne a,#0bh,nk11 mov keybuf,#10 ljmp dk3 nk11:cjne a,#07h,nk12 mov keybuf,#11 ljmp dk3 nk12:nop dk3: mov a,keybuf mov dptr,#table movc a,a+dptr mov p0,a mov a,keybuf mov b
26、,#2 mul ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a mov tl0,a setb tr0 dk3a:mov a,p2anl a,#0fh xrl a,#0fh jnz dk3a clr tr0 nokey3: mov p2,#0ffh clr p2.7 mov a,p2 anl a,#0fh xrl a,#0fh jz nokey4 lcall dely10ms mov a,p2 anl a,#0fh xrl
27、a,#0fh jz nokey4 mov a,p2 anl a,#0fh cjne a,#0eh,nk13 mov keybuf,#12 ljmp dk4 nk13:cjne a,#0dh,nk14 mov keybuf,#13 ljmp dk4 nk14:cjne a,#0bh,nk15 mov keybuf,#14 ljmp dk4 nk15:cjne a,#07h,nk16 mov keybuf,#15 ljmp dk4 nk16:nop dk4: mov a,keybuf mov dptr,#table movc a,a+dptr mov p0,a mov a,keybuf mov b
28、,#2 mul ab mov temp,a mov dptr,#table1 movc a,a+dptr mov sth0,a mov th0,a inc temp mov a,temp movc a,a+dptr mov stl0,a mov tl0,a setb tr0 dk4a:mov a,p2 anl a,#0fh xrl a,#0fh jnz dk4a clr tr0 nokey4:jnb p1.0,musicljmp wait music:movr3,#00hnext:mova,r3movdptr,#table2movca,a+dptrjzmusicmovr7,aincr3mova
29、,r3movca,a+dptrmovr2,aacallsongincr3sjmpnext3.2 歌曲播放子程序;= 歌曲播放子程序 =song:mova,r2; 取出節(jié)拍rlajnzkeepmova,#01hkeep:movr2,arepeat:acalleighthdjnzr2,repeatret3.3產(chǎn)生1/8拍延時(shí)子程序;= 產(chǎn)生1/8拍延時(shí)子程序 =eighth:mova,r7; 查表取出廷時(shí)參數(shù),保存到r4movdptr,#delay_tmovca,a+dptrmovr4,amova,r7; 查表取出1/8拍周期數(shù),保存到r5movdptr,#s_paramovca,a+dptrmo
30、vr5,anextcyc:acallsounddjnzr5,nextcycret3.4 發(fā)音子程序;= 發(fā)聲子程序 =sound:setbspkacallsdelayclrspkacallsdelayret3.5 延時(shí)子程序;= 延時(shí)子程序 =sdelay:mova,r4; 廷時(shí)值在r4內(nèi)movr0,axl2:movr1,#03hdl1:nopdjnzr1,dl1djnzr0,xl2ret3.6 1/8拍周期表;= 1/8拍周期表 =s_para:ds1dhdb15h,16h,00db19h,00h,1ch,00h,1fh,21h,00h,25hdb00h,29h,2ch,00h,31h,34
31、h,37h,00hdb3eh,41h,00h,49h,00h,52h,57h,00hdb62h3.7 延時(shí)參數(shù)表;= 延時(shí)參數(shù)表 =delay_t:ds1dhdb7eh,77h,00hdb6ah,00h,5eh,00h,54h,4fh,00h,46hdb00h,3fh,3bh,00h,35h,32h,2fh,00hdb2ah,27h,00h,23h,00h,1fh,1dh,0c0hdb1ah3.8 10ms延時(shí)子程序;= 10ms延時(shí)子程序 =dely10ms: mov r6,#10 d1: mov r7,#248 djnz r7,$ djnz r6,d1 ret3.9中斷服務(wù)子程序;= 中斷
32、服務(wù)子程序 =int_t0: mov th0,sth0 mov tl0,stl0 cpl p1.6 reti3.10音符參數(shù)表;= 音符參數(shù)表=table: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h db 7fh,6fh,77h,7ch,39h,5eh,79h,71h3.11計(jì)數(shù)器初值表;= 計(jì)數(shù)器初值表=table1: dw 64021,64103,64260,64400 dw 64524,64580,64684,64777 dw 64820,64898,64968,65030 dw 65058,65110,65157,651783.12預(yù)存歌曲表蘭花草;= 預(yù)存
33、歌曲表蘭花草 =table2:dw2202h,2902h,2902h,2902h,2906h,2702h;我從山中來dw2502h,2702h,2502h,2402h,2208h;帶著蘭花草dw2e02h,2e02h,2e02h,2e02h,2e06h,2c02h;種在小園中dw2902h,2c02h,2d02h,2a02h,2908h;祈禱花開早dw2902h,2e02h,2e02h,2c02h,2906h,2702h;一日看三回dw2502h,2702h,2502h,2402h,2206h,1d02h;看得花時(shí)過dw1d02h,2502h,2502h,2402h,2206h,2902h;蘭花卻依然dw2702h,2502h,2402h,2002h,2208h;苞也
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化工項(xiàng)目建設(shè)合同范本
- 0物業(yè)合同范本
- 廠家和平臺合同范本
- 吊車交易合同范例
- 吹塑加工采購合同范例
- 單位貨車出售合同范本
- 農(nóng)村公墓建設(shè)合同范本
- 信貸擔(dān)保合同范本
- 吊裝安裝服務(wù)合同范本
- 個(gè)人投資股票借款合同范本
- 2025年哈爾濱鐵道職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點(diǎn)含答案解析
- 2025年貴州黔源電力股份有限公司招聘筆試參考題庫含答案解析
- 2024年湖南食品藥品職業(yè)學(xué)院高職單招語文歷年參考題庫含答案解析
- 《船舶油漆作業(yè)》課件
- 2025年中國融通農(nóng)發(fā)社會招聘筆試參考題庫含答案解析
- 中藥玫瑰花培訓(xùn)
- 廣東省佛山市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版小升初真題((上下)學(xué)期)試卷及答案
- 全國扶貧開發(fā)信息系統(tǒng)業(yè)務(wù)管理子系統(tǒng)用戶操作手冊20241110(升級版)
- 五下數(shù)學(xué)人教版課件教學(xué)課件教學(xué)課件
- 第五課+弘揚(yáng)勞動精神、勞模精神、工匠精神【中職專用】中職思想政治《職業(yè)道德與法治》高效課堂(高教版2023·基礎(chǔ)模塊)
- 建筑施工安全員述職
評論
0/150
提交評論