接口課程設(shè)計菜單選擇的音樂程序設(shè)計與實現(xiàn)_第1頁
接口課程設(shè)計菜單選擇的音樂程序設(shè)計與實現(xiàn)_第2頁
接口課程設(shè)計菜單選擇的音樂程序設(shè)計與實現(xiàn)_第3頁
接口課程設(shè)計菜單選擇的音樂程序設(shè)計與實現(xiàn)_第4頁
接口課程設(shè)計菜單選擇的音樂程序設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、目錄第1章 課程設(shè)計簡介11.1課程設(shè)計題目11.2課程設(shè)計目的11.3課程設(shè)計設(shè)備11.4課程設(shè)計任務(wù)11.5課程設(shè)計要求1第2章 程序設(shè)計22.1程序設(shè)計方法22.2 音樂菜單界面設(shè)計22.3音樂程序設(shè)計52.3.1音符與頻率值52.3.2 選擇音樂52.3.3設(shè)計6第3章 總結(jié)13參考文獻(xiàn)14致謝15第1章 課程設(shè)計簡介1.1課程設(shè)計題目菜單選擇的音樂程序設(shè)計與實現(xiàn)(一)1.2課程設(shè)計目的掌握pc系列微機發(fā)聲系統(tǒng)的工作原理,掌握模塊化程序設(shè)計的方法。1.3課程設(shè)計設(shè)備硬件環(huán)境:ibm-pc機,硬盤40g以上,內(nèi)存256m以上,打印機等。軟件環(huán)境:windows 2000 server或w

2、indows xp server操作系統(tǒng),masm匯編軟件。1.4課程設(shè)計任務(wù)(1) 如下圖所示,設(shè)計一個簡單的音樂程序菜單界面,用戶鍵入菜單項序號選擇菜單項。1.music-12.music-23.music-34.return dos(2) 限定使用模塊化程序設(shè)計的方法,最少組織三首歌曲,每首歌曲只反復(fù)演唱幾個小節(jié)即可。(3) 三首歌曲只能使用一個音樂控制程序。1.5課程設(shè)計要求(1)選擇音樂菜單界面的設(shè)計要求采用兩種方法,一種是用戶鍵入菜單項序號選擇菜單項,一種是用彩色條選擇菜單項。(2)首先要求設(shè)計與實現(xiàn)一首歌曲演唱幾個小節(jié),然后設(shè)計與實現(xiàn)該首歌曲重復(fù)演唱,最后組織三首不同歌曲用同一個

3、音樂控制程序選擇。要求每名學(xué)生組織的歌曲不同于其他同學(xué)。第2章 程序設(shè)計2.1程序設(shè)計方法2.1.1模塊化程序設(shè)計方法的指導(dǎo)思想如果待解決的問題比較簡單,所編制的程序又不大時,就可以將整個程序放在一個模塊中。但對大而復(fù)雜的設(shè)計任務(wù),不可能由一個人用一個程序來實現(xiàn)。為了解決這些問題,必須采用自頂向下,逐步求精的模塊化和結(jié)構(gòu)化的設(shè)計方法,即將一個大而復(fù)雜的設(shè)計任務(wù)按其需要實現(xiàn)的主要功能分解為若干相對獨立的模塊,并確定好各模塊之間的調(diào)用關(guān)系和參數(shù)傳遞方式,對其中的公共部分還可以抽出來作為獨立的公共子程序模塊供大家調(diào)用,然后可以將這些模塊分配給個人,每個人在設(shè)計自己的一部分時,還可以采用自頂向下,逐步

4、求精的方法進(jìn)一步細(xì)化,分解成一些更小的模塊,并將各個模塊的功能逐步細(xì)化為一系列的處理步驟或某種程序設(shè)計語言的語句,分別編寫、調(diào)試,最后再將它們的目標(biāo)模塊連接裝配成一個完整的整體。2.2 音樂菜單界面設(shè)計程序流程框圖如下: nynynyny主模塊 顯示菜單框顯示選擇字符串 等待鍵輸入鍵值=4鍵值=1鍵值=2鍵值=3 返回dos 轉(zhuǎn)musici1模塊 轉(zhuǎn)musici2模塊 轉(zhuǎn)musici3模塊 圖一 音樂菜單界面設(shè)計流程圖源程序代碼如下: public statro extrn start1:far,srart2:far,srart3:fardisp macro yyxx,var mov ah,2

5、 mov bh,0 mov dx,yyxx int 10h mov ah,9 mov dx,0ffset var int 21h endmdata0 segmentl1 db menu , 0ah,0dh db xxxxxxxxxxxxxxxx ,0ah,0dh db x x ,0ah,0dh db x 1.music1 x ,0ah,0dh db x 2.music2 x ,0ah,0dh db x 3.music2 x ,0ah,0dh db x 4.return dos x ,0ah,0dh db xxxxxxxxxxxxxxxx ,0ah,0dh,$l9 db choice(1,2,3

6、,4): ,$data0 endscode0 segmentassume cs:code0,ds:data0;-start0: mov ax,data0 mov ds,ax mov ax,2 int 10h disp 0800h,l1 ;顯示菜單框圖dp: disp 0d00h,l9;- mov ah,1 int 21h 等待鍵入 cmp al,4 je rt cmp al,1 je strt1 cmp al,3 je strt2 cmp al,3 je strt3 jmp dpstrt: jmp start1strt: jmp start2strt: jmp start3rt: mov ah

7、,4ch int 21hcode endsend start02.3音樂程序設(shè)計音符456712345671234567.1頻率17519622024726229433034939244049452458866069878488098810482.3.1音符與頻率值2.3.2 選擇音樂music-1的簡譜頻率以及時間對應(yīng)頻率:440,440,440,392,440,1048,1048,294,時間:20 ,20 ,20 ,10 ,10 ,20 ,20 ,40,頻率:330,1048,294,294,1048,440,440時間:20 ,20 ,20 ,10 ,10 ,20 ,60music-2

8、的簡譜頻率以及時間的對應(yīng)頻率:660,660,784,880,988,784,660,588,時間:20 ,20 ,20 ,20 ,20 ,20 ,20 ,20 ,頻率:660,588,660,524,880,880,784時間:20 ,20 ,20 ,20 ,30 ,10 ,40music-3的簡譜頻率以及時間的對應(yīng):頻率:880,524,880,880,660,588,660,784,時間:40 ,30 ,10 ,30 ,10 ,10 ,10 ,20 ,頻率:880,880,660,880,524,880,880時間:30 ,10 ,10 ,10 ,10 ,10 ,802.3.3設(shè)計mus

9、ic1 流程圖如下: 設(shè)置顯示方式music1建音符頻率表建音符時間表音符頻率表指針di音符時間表指針di轉(zhuǎn)發(fā)聲模塊圖二 music1 流程圖music1 源程序代碼如下:public start1 ;music 模塊 extrn start4;fardata1 segmentmusic dw 440,440,440,392,440,1048,1048,294 dw 330,1048,294,294,1048,440,440,0ffffhtime1 db 20,20,20,10,10,20,20,40,20,20,20,10,10,20,60data1 endscode1 segmentass

10、ume cs:code1,ds:data1start1: mov ax,data1 mov ds,as mov ax,2 int 10h mov si,offset music1 mov di,offset time1 jmp start4code1 endsendmusic2流程圖如下: 設(shè)置顯示方式music2建音符頻率表建音符時間表音符頻率表指針di音符時間表指針di轉(zhuǎn)發(fā)聲模塊圖三 music2流程圖music2 源程序代碼如下:public start2 ;music2 extrn start4:fardata2 segmentmusic2 dw 660,660,784,880,988

11、,784,660,588 dw 660,588,660,524,880,880,784,0ffffhtime2 db 20,20,20,20,20,20,20,20,20,20,20,20,30,10,40data2 endscode2 segmentassume cs:code2,ds:data2start2: mov ax,data2 mov ds,ax mov ax,2 int 10h mov si,0ffset music2 mov di,0ffset time2 jmp start4code2 endsendmusic3流程圖如下: 設(shè)置顯示方式music3建音符頻率表建音符時間表音

12、符頻率表指針di音符時間表指針di轉(zhuǎn)發(fā)聲模塊 圖四 music3流程圖music3 源程序代碼如下:public start3extrn start4:fardata3 segmentmusic3 dw 880,524,880,880,660,588,660,784 dw 880,880,660,880,524,880,880,0ffffhtime3 db 40,30,10,30,10,10,10,20,30,10,10,10,10,10,80data3 endscode3 segmentassume cs:code3,ds:data3start3: mov ax,data3 mov ds,a

13、x mov ax,2 in 10h mov si,offset music3 mov di,offset time3 jmp start4code3 endsend發(fā)聲模塊流程圖如下:發(fā)聲模塊設(shè)置顯示方式顯示提示信息si、di 壓入堆棧 取出堆棧中的si、di的值再次將si、di壓入堆棧取音符頻率頻率=fffh?計音符的8254通道2的計數(shù) 值送8254的控制字送8254的計數(shù)值打開發(fā)聲 通道延遲(音符發(fā)聲 持續(xù)時間) 關(guān)閉發(fā)聲 通道si+2si 、di+1di 又鍵入?轉(zhuǎn)主模塊延遲ynny圖五 發(fā)聲模塊流程圖發(fā)聲源程序代碼如下:public start4 extrn start0:fardi

14、sp macro yyxx,varmov ah,2mov bh,0mov dx,yyxxint 10hmov ah,09mov dx,offset varint 21hendmstack segmentsta dw 50 dup(?)top equ length stastack endsdata4 segmentmess db strike any key,return to menu !,oah,odh,$data4 endscode4 segmentassume cs:code4,ds:data4start4: push dsmov ax,data4mov ds,axmov ax,2in

15、t 10hdisp 1000h,messpop dspush sipush diplay: pop dipop sipush sipush diply1: mov ax,word ptr sicmp ax,offffhjz play_endmov dx,12hmov ax,34eoh div word ptr si mov bx,ax mov al,0b6h out 43h,al mov ax,bxout 42h,almov al,ahout 42h,alin al,61hor al,03hout 61h,alcall delayin al,61hand al,0fchout 61h,alad

16、d si,02inc dijmp ply1play_end: mov ah,01int 16hjz wait1pop dipop sijmp start0wait1: pushaxpushcxmov ax,0600hwt1: mov cx,0ffffhwt2: loopwt2dec axjnz wt1pop cxpop axjmp playdelay proc nearpush axpush cxmov al,didly: mov cx,0060dly1: mov bx,0ffffhdly2: dec bxjnz dly2 loop dly1 dec al jnz dly pop cx pop

17、 ax retdelay endpcode4 endsend第三章 總結(jié)這次課程設(shè)計完成后,體會頗多,不斷學(xué)習(xí)新的知識,吸取經(jīng)驗,達(dá)到進(jìn)步的目的。在課程設(shè)計中,通過努力以及相關(guān)圖書資料的幫助,逐漸熟悉了微型機與接口的應(yīng)用知識及其相關(guān)的操作。在這次課程設(shè)計過程中,我學(xué)會了利用匯編程序?qū)崿F(xiàn)軟件的具體功能,同時對語言的編寫能力有了進(jìn)一步加強,在指導(dǎo)教師的悉心講解下,我解了的在編寫程序中遇到的種種困難,例如:如何利用匯編程序來實現(xiàn)音樂界面的設(shè)計,怎樣通過程序來實現(xiàn)音樂的播放等等,都在老師的指導(dǎo)下一一解決,是我從中受到很大啟發(fā)。通過本次課程設(shè)計,讓我有機會將平時所學(xué)到的書本知識得以實踐化,檢驗了本身對知

18、識了解程度的不足,也從中學(xué)到了很多知識點與應(yīng)用技術(shù)。這里我衷心的感謝王老師的耐心指導(dǎo)!參考文獻(xiàn)1 雷曉平 .微型計算機原理與應(yīng)用.北京:電子工業(yè)出版社,2002年2 周明德,張淑玲.80x86、80x87結(jié)構(gòu)與匯編語言程序設(shè)計.北京:清華大學(xué)出版社,1993年3 周明德,蔣本珊.微機原理與接口技術(shù).北京:人民郵電出版社,2002年4 鄭緯民,湯志中.計算機系統(tǒng)結(jié)構(gòu)(第二版).北京:清華大學(xué)出版社,1998年5 凌志浩 微機原理與接口技術(shù)教程與實訓(xùn) . 華東理工大學(xué)出版社,20056 齊志儒,高福祥.匯編語言程序設(shè)計(第三版).東北大學(xué)出版社, 2003.057 齊志儒.匯編語言程序設(shè)計實驗教程.東北大學(xué)出版社,20038 沈美明,溫冬嬋.ibm-pc 匯編語言程序設(shè)計.清華大學(xué)出版社,20049 張君,齊志儒.匯編語言程序設(shè)計題集.東北大學(xué)出版社,2

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論