九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

《微型計算機原理與接口技術(shù)》課程設(shè)計音樂播放器課程設(shè)計

上傳人:仙*** 文檔編號:28382075 上傳時間:2021-08-27 格式:DOC 頁數(shù):28 大小:494.05KB
收藏 版權(quán)申訴 舉報 下載
《微型計算機原理與接口技術(shù)》課程設(shè)計音樂播放器課程設(shè)計_第1頁
第1頁 / 共28頁
《微型計算機原理與接口技術(shù)》課程設(shè)計音樂播放器課程設(shè)計_第2頁
第2頁 / 共28頁
《微型計算機原理與接口技術(shù)》課程設(shè)計音樂播放器課程設(shè)計_第3頁
第3頁 / 共28頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《微型計算機原理與接口技術(shù)》課程設(shè)計音樂播放器課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《《微型計算機原理與接口技術(shù)》課程設(shè)計音樂播放器課程設(shè)計(28頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、學號0000000 微型計算機原理與接口技術(shù)課 程 設(shè) 計( 2008級本科)題 目:音樂播放器課程設(shè)計系(部)院: XXXXXX學院 專 業(yè): 電氣工程及其自動化 作者姓名: X X X 指導教師: XX 職稱: 教授 完成日期: 20XX 年 X 月 XX 日微機原理與接口技術(shù)課程設(shè)計成績評定表姓 名XXX學 號0000000專業(yè)班級電氣工程及其自動化課程設(shè)計題目:音樂播放器課程設(shè)計課程設(shè)計答辯或質(zhì)疑記錄:成績評定依據(jù):評 定 項 目評 分 成 績1.選題合理、目的明確(10分)2.設(shè)計方案可行性、創(chuàng)新性(20分)3.設(shè)計結(jié)果(系統(tǒng)原理圖、源程序、調(diào)試運行結(jié)果)(30分)4.平時成績(態(tài)度

2、認真、遵守紀律)(10分)5.設(shè)計報告的規(guī)范性、參考文獻充分(不少于5篇)(10分)6.答辯(20分)總 分最終評定成績(以優(yōu)、良、中、及格、不及格評定) 指導教師簽字: 年 月 日課程設(shè)計任務(wù)書學生姓名XXX學號0000000專業(yè)方向電氣工程及其自動化班級08(X)班題目名稱音樂播放器設(shè)計一、 設(shè)計內(nèi)容及技術(shù)要求:1、 將各音樂音階和其延續(xù)時間存在數(shù)據(jù)段中,然后根據(jù)不同按鍵值選擇不同的音階和時間表,再使用計數(shù)器產(chǎn)生該音階頻率。2、 CPU通過對定時器的通道進行編程,使其I/O寄存器接收一個控制聲音頻率的16位計數(shù)值。3、 當定時器接收的計數(shù)值為533H時,能產(chǎn)生896Hz的聲音,因此產(chǎn)生其他

3、頻率的計數(shù)值就可算出來。4、 在送出頻率計數(shù)值之前,還要給方式寄存器送一個方式值,該數(shù)決定對哪一個通道編程,采用什么模式,送入通道的計數(shù)值是一字節(jié)還是兩字節(jié),是二進制碼還是BCD碼。5、 從定時器輸出的方波信號,經(jīng)功率放大和濾波后驅(qū)動揚聲器。送到揚聲器的信號還受到了從并行接口芯片8255(端口地址為61H)來的雙重控制,端口61H的最低位控制通道2的門控開斷,以產(chǎn)生特殊的音頻信號。6、 控制揚聲器開關(guān)的時間間隔,來控制發(fā)聲的音長了。二、課程設(shè)計總結(jié)報告要求:1、選用8086/8088CPU和適當?shù)某源鎯ζ餍酒?、接口芯片完成相?yīng)的功能。2、設(shè)計鍵盤和LED完成輸入和顯示功能。3、畫出詳細的硬件連

4、接圖。4、給出程序設(shè)計思路、畫出各程序適當?shù)牧鞒虉D。5、給出RAM地址分配圖。6、給出所有程序清單并加上必要注釋。7、完成設(shè)計說明書(包括封面、目錄、設(shè)計任務(wù)書、硬件設(shè)計思路、硬件原理圖、軟件設(shè)計思路、程序流程框圖、程序清單、所用器件型號、總結(jié)體會、參考文獻等)。三、設(shè)計進度:第一周星期一上午 討論論文題目星期一下午 查資料星期二至星期五 完成硬件電路的基本設(shè)計第二周星期一至星期二 完成軟件流程圖及軟件設(shè)計星期三至星期四 軟硬件統(tǒng)調(diào),寫說明書,畫圖星期五 答辯目 錄第一章課程設(shè)計的任務(wù)和目的41.1 課程設(shè)計任務(wù)41.2 課程設(shè)計目的4第二章課程設(shè)計基礎(chǔ)知識52.1 定時/計數(shù)器8253A52

5、.2 8253A內(nèi)部結(jié)構(gòu)52.3 8253A外部引腳62.4 計數(shù)器內(nèi)部結(jié)構(gòu)72.5 8253A端口地址72.6 8253A功能82.7 8253A控制字92.8 8253A工作方式9第三章詳細設(shè)計113.1 硬件設(shè)計113.2 軟件設(shè)計13第四章程序調(diào)試14第五章試驗結(jié)果截屏14第六章總結(jié)15第七章參考文獻16第八章附錄178.1 源代碼178.2 各個音符的對應(yīng)頻率2627第一章 課程設(shè)計的任務(wù)和目的1.1 課程設(shè)計任務(wù)本課程設(shè)計題目是:設(shè)計并實現(xiàn)一個音樂播放器。1. 自己選用芯片和其它的硬件。2. 自行設(shè)計電路并使用匯編語言編寫程序完成音樂播放器功能。3. 利用8253作為音階頻率發(fā)生器

6、,對一段音樂進行編碼后存入音符表,程序中可調(diào)用音符表自動播放音樂,從中了解音樂播放的原理。4. 利用8253A和PC機,設(shè)計并實現(xiàn)簡易音樂播放器5. 使用匯編語言編寫音樂播放程序。6. 上機調(diào)試程序并聯(lián)機,利用試驗箱提供的揚聲器發(fā)聲。7. 完成實驗報告。1.2課程設(shè)計目的本課程設(shè)計注重提高學生應(yīng)用能力、創(chuàng)新能力。在掌握了基本的實驗方法和實驗技能且理論教學完成的基礎(chǔ)上,要求學生通過兩周的集中工作,初步鍛煉綜合運用所學知識的能力,通過討論與合作,完成一項完整的設(shè)計工作。更深入的了解微機芯片的用法和程序的完成過程,調(diào)試方法及技巧。通過這個環(huán)節(jié)來加深對微機原理與接口技術(shù)所學內(nèi)容的理解和融會貫通。設(shè)計音

7、樂播放器主要目的: 通過D/A裝換器產(chǎn)生模擬信號,在實驗平臺上實現(xiàn)簡易音樂播放器。 了解利用數(shù)模轉(zhuǎn)換器產(chǎn)生音樂的基本方法。 掌握定時/計數(shù)器8253A 的使用。第二章 課程設(shè)計基礎(chǔ)知識 2.1 定時/計數(shù)器8253A 在微機及控制系統(tǒng)中,經(jīng)常要用到定時信號。如系統(tǒng)的日歷時鐘,動態(tài)存儲器刷新。對外部執(zhí)行機構(gòu)控制時也需要定時中斷、定時檢測、定時查詢等。定時的方法主要是兩種:軟件定時:利用指令的執(zhí)行時間設(shè)計循環(huán)程序,使CPU 執(zhí)行延遲子程 序的時間就是定時時間。缺點:執(zhí)行延遲時,CPU 一直被占用,降低了CPU 的效率。硬件定時:用計數(shù)器/定時器作為主要硬件,在軟件簡單指令的控制下產(chǎn)生精確的時間延遲

8、。突出優(yōu)點為計數(shù)時不占用CPU 時間,如利用定時器/計數(shù)器產(chǎn)生中斷信號,可建立多作業(yè)環(huán)境,提高了CPU 效率。主要功能:(1)每片上有3 個獨立的16 位的減計數(shù)器通道。(2)對于每個計數(shù)器,都可以單獨作為定時器或計數(shù)器使用,并且都可以按照二進制或十進制來計數(shù)。(3)每個通道都有6 種工作方式,都可以通過程序設(shè)置或改變。(4)每個計數(shù)器的速率可高達2MHz。最高的計數(shù)時鐘頻率為26MHz。2.2 8253A內(nèi)部結(jié)構(gòu)8253的內(nèi)部結(jié)構(gòu)如圖所示,它主要包括以下幾個主要部分:圖21 8253的內(nèi)部結(jié)構(gòu)(1)數(shù)據(jù)總線緩沖器實現(xiàn)8253與CPU數(shù)據(jù)總線連接的8位雙向三態(tài)緩沖器,用以傳送CPU向8253的

9、控制信息、數(shù)據(jù)信息以及CPU從8253讀取的狀態(tài)信息,包括某時刻的實時計數(shù)值。(2)讀/寫控制邏輯控制8253的片選及對內(nèi)部相關(guān)寄存器的讀/寫操作,它接收CPU發(fā)來的地址信號以實現(xiàn)片選、內(nèi)部通道選擇以及對讀/寫操作進行控制。(3)控制字寄存器在8253的初始化編程時,由CPU寫入控制字,以決定通道的工作方式,此寄存器只能寫入,不能讀出。(4)計數(shù)通道0#、1#、2#:這是三個獨立的,結(jié)構(gòu)相同的計數(shù)器/定時器通道,每一個通道包含一個16位的計數(shù)寄存器,用以存放計數(shù)初始值,一個16位的減法計數(shù)器和一個16位的鎖存器,鎖存器在計數(shù)器工作的過程中,跟隨計數(shù)值的變化,在接收到CPU發(fā)來的讀計數(shù)值命令時,

10、用以鎖存計數(shù)值,供CPU讀取,讀取完畢之后,輸出鎖存器又跟隨減1計數(shù)器變化。2.3 8253A外部引腳8253芯片是具有24個引腳的雙列直插式集成電路芯片,其引腳分布如圖所示。8253芯片的24個引腳分為兩組,一組面向CPU,另一組面向外部設(shè)備,各個引腳及其所傳送信號的情況,介紹如下:(1)D7D0:雙向、三態(tài)數(shù)據(jù)線引腳,與系統(tǒng)的數(shù)據(jù)線連接,傳送控制、數(shù)據(jù)及狀態(tài)信息。(2):來自于CPU的讀控制信號輸入引腳,低電平有效。(3):來自于CPU的寫控制信號輸入引腳,低電平有效。(4):芯片選擇信號輸入引腳,低電平有效。圖21 8253的引腳(5)A1、A0:地址信號輸入引腳,用以選擇8253芯片的

11、通道及控制字寄存器。(6)VCC及GND:+5V電源及接地引腳(7)CLKi:i=0,1,2,第i個通道的計數(shù)脈沖輸入引腳,8253規(guī)定,加在CLK引腳的輸入時鐘信號的頻率不得高于2.6MHZ,即時鐘周期不能小于380ns。(8)GATEi:i=0,1,2,第i個通道的門控信號輸入引腳,門控信號的作用與通道的工作方式有關(guān)。(9)OUTi:i=0,1,2,第i個通道的定時/計數(shù)到信號輸出引腳,輸出信號的形式由通道的工作方式確定,此輸出信號可用于觸發(fā)其它電路工作,或作為向CPU發(fā)出的中斷請求信號。2.4 計數(shù)器內(nèi)部結(jié)構(gòu)每個計數(shù)器由一個16位可預置的減1計數(shù)器組成,計數(shù)初值可保存在16位的鎖存器中,

12、該鎖存器只寫不能讀。在計數(shù)器工作時,初值不受影響,以便進行重復計數(shù)。圖中每個計數(shù)器有一個時鐘輸入端CLK作為計數(shù)脈沖源, 計數(shù)方式可以是二進制,計數(shù)范圍110000H,也可以是十進制,計數(shù)范圍165536。門控端GATE用于控制計數(shù)開始和停止。輸出OUT端當計數(shù)器計數(shù)值減到零時,該端輸出標志信號 。圖22 計數(shù)器內(nèi)部結(jié)構(gòu)2.5 8253A端口地址圖23 8253A端口地址2.6 8253A功能 8253 A既可作定時器又可作計數(shù)器: (1) 計數(shù): 計數(shù)器裝入初值后,當GATE為高電平時,可用外部事件作為CLK 脈沖對計數(shù)值進行減1 計數(shù),每來一個脈沖減1,當計數(shù)值減至0時,由OUT 端輸出一

13、個標志信號。(2) 定時: 計數(shù)器裝入初值后,當GATE為高電平時,由CLK 脈沖觸發(fā)開始自動計數(shù),當計數(shù)到零時,發(fā)計數(shù)結(jié)束定時信號。除上述典型應(yīng)用外,8253A還可作頻率發(fā)生器、分頻器、實時鐘、單脈沖發(fā)生器等。2.7 8253A控制字圖24 8253A控制字說明 : (1) 8253 A每個通道對輸入CLK按二進制或二十進制從預置值開始減1計數(shù),減到0時從OUT輸出一個信號。 (2) 8253 A編程時先寫控制字,再寫時間常數(shù)。2.8 8253A工作方式 (1) 方式0:計數(shù)結(jié)束產(chǎn)生中斷方式 當寫入控制字后,OUT變?yōu)榈碗娖?,當寫入初值后立即開始計數(shù),當計數(shù)結(jié)束時,變成高電平。 (2) 方式

14、1:可編程單次脈沖方式 當初值裝入后且GATE由低變高時,OUT變?yōu)榈碗娖?,計?shù)結(jié)束變?yōu)楦唠娖健?(3) 方式2:頻率發(fā)生器方式 當初值裝入時,OUT變?yōu)楦?;計?shù)結(jié)束,OUT變?yōu)榈?。該方式下如果計?shù)未結(jié)束,但GATE為低時,立即停止計數(shù),強制OUT變高,當GATE再變高時,便啟動一次新的計數(shù)周期。 (4) 方式3:方波發(fā)生器當裝入初值后,在GATE上升沿啟動計數(shù),OUT 輸出高電平; 當計數(shù)完成一半時,OUT輸出低電平。圖25 方波圖方式3與方式2的工作方式類似,也是在初始化完成后能重復循環(huán)計數(shù),只是輸出的波形不同。 計數(shù)過程 當把方式3的控制字寫入控制字寄存器后,輸出端OUT變成高電平,作為

15、初始電平。再將計數(shù)初值寫入計數(shù)初值寄存器CR中,再經(jīng)過一個時鐘周期,計數(shù)初值被移入計數(shù)執(zhí)行單元CE中,從下一個時鐘脈沖開始作減1 計數(shù),方式3的計數(shù)過程分為兩種情況:第一種情況:計數(shù)初值為偶數(shù),當作減1計數(shù)減到N/2時,輸出端OUT端變成低電平,減到0時,輸出端OUT變成高電平,并重新從初值開始新的計數(shù)過程。若GATE為高電平,則一直重復同樣的計數(shù)過程。可見,輸出端OUT輸出連續(xù)的方波,故稱方波發(fā)生器。第二種情況:計數(shù)初值為奇數(shù),當作減1計數(shù)減到(N+1)/2以后,輸出端OUT變成低電平,減到0時,輸出端OUT又變成高電平。并重新從初值開始新的計數(shù)過程。這時輸出端的波形為連續(xù)的近似方波。門控信

16、號的影響工作在方式3時,門控信號GATE的功能與工作方式2一樣,即GATE 為高電平時,允許計數(shù);GATE為低電平時停止計數(shù)。GATE引腳上的信號從低電平跳到高電平時,將會重新把計數(shù)初值寄存器CR中的內(nèi)容移入計數(shù)執(zhí)行單元CE中,并以新裝入的值重新開始計數(shù)。新的計數(shù)初值對計數(shù)過程的影響如果在計數(shù)過程中寫入新的初值,而GATE信號一直維持高電平,則新的初值不會影響當前的計數(shù)過程,只有在計數(shù)結(jié)束后的下一個計數(shù)周期,才按新的初值計數(shù)。若寫入新的初值后,遇到門控信號的上升沿,則結(jié)束現(xiàn)行的計數(shù)過程,從下一個時鐘脈沖下降沿開始按新的計數(shù)初值進行計數(shù)??梢?,工作在方式3時,當計數(shù)初值為偶數(shù),OUT端輸出連續(xù)的

17、標準方波;當計數(shù)初值為奇數(shù),在每個計數(shù)周期內(nèi),有(N+1)/2個周期輸出高電平,(N-1)/2個時鐘周期輸出低電平,OUT端輸出連續(xù)的近似的方波。 第三章 詳細設(shè)計3.1硬件設(shè)計音樂播放器用到相關(guān)硬件:1. 定時/計數(shù)器8253A2. 模塊揚聲器和喇叭驅(qū)動3. 頻率發(fā)生芯片74LS393硬件連接: 定時/計數(shù)器8253A芯片模塊的CLK2接時鐘頻率選擇模塊74LS393的T7端口,分頻器的頻率源為5000HZ。 定時/計數(shù)器8253A芯片模塊的GATE2接5V,提供高電平。 定時/計數(shù)器8253A芯片模塊的OUT2 接喇叭驅(qū)動驅(qū)動模塊的SIN 端口。 喇叭驅(qū)動驅(qū)動模塊的J5插座接揚聲器的J5插

18、座。8253A的CLK2接分頻器74LS393(右上方)的T7插孔,分頻器的頻率源為5000。圖31 硬件連接框架圖圖32 揚聲器電路圖33 揚聲器J5插口如圖32為音響電路的控制輸入插口SIN,控制輸入信號經(jīng)放大后接喇叭。圖34 74LS393引腳圖3.2 軟件設(shè)計圖37 軟件流程圖music子程序是音樂子程序,SI指向曲中的頻率,BP指向曲中的時間節(jié)拍。從SI的指向的音節(jié)表中取一個頻率,只要不是0,即有效就再讀取時間,然后調(diào)用speaker子程序,計算計數(shù)初值送入計數(shù)器,產(chǎn)生各種頻率信號,再送至揚聲器,根據(jù)所取的時間調(diào)用若干次延時子程序。這段時間揚聲器就發(fā)出該頻率的聲音,延時結(jié)束,再修改S

19、I和BP,指向下一個頻率,重復上面的工作。播放兩首音樂后自動停止。第四章 程序調(diào)試把程序輸入PC機后,保存為.asm文件。啟用DVCC系統(tǒng): 建立匯編源程序. 建立連接。 編譯為目標文件 調(diào)試。 不通過,重新修改(語句錯誤、音調(diào)頻率不準、音調(diào)節(jié)拍不符合) 重新修改、調(diào)試。 正確運行。第5章 試驗結(jié)果截屏:第六章 總結(jié)經(jīng)過這次的課程設(shè)計,再一次的印證了理論來源于實踐,而實踐又能升華理論這一個觀點。 首先,要實現(xiàn)題目要求的功能并有所創(chuàng)新,我們必須全心地投入其中,養(yǎng)成一種敢于鉆研敢于創(chuàng)新的習慣。在把課程要求實現(xiàn)到實際中來的過程中,參考了一些程序,在研究參考程序的編寫思路的同時也從中獲得不少的啟發(fā)。為

20、了把使得程序更加完整,在了解其他人在相同課題上的思路后,更加加入自己的一些思路,進行創(chuàng)一定的創(chuàng)新。 其次,通過課程設(shè)計,讓我在掌握課本的基礎(chǔ)上,更深入的了解了各種芯片的用法和程序的完成過程,調(diào)試方法及技巧。尤其是對各種芯片在硬件與軟件相互作用下工作的狀況有了更深入的認識。總之,在這次的課程設(shè)計在很大程度上提升了我的動手能力了,培養(yǎng)了自己獨立編寫匯編語言程序的能力,加深了我對理論知識的理解。雖然這兩個星期的課程設(shè)計中,完成任務(wù)的效果和預期有的出入,雖然中間遇到了一些問題,但經(jīng)過我們的努力,還是把問題給解決了。這次課程設(shè)計對我綜合運用所學知識的能力的提高有不小的幫助,之前做的實驗都是很簡單的編程,

21、跟硬件結(jié)合也沒有這么復雜,實現(xiàn)的功能都比較簡單,可是這次要實現(xiàn)的功能相對來說比較復雜,要求掌握的知識比較全面。第七章 參考文獻1.微機原理與接口技術(shù)(第二版) 人民郵電出版社 周明德主編2匯編語言程序設(shè)計 中國水利水電出版社 相偉主編3DVCC系列單片機微機仿真實驗指導書 啟東計算機廠有限公司著4.單片機接口技術(shù) 復旦大學出版社 王修才編著5單片機原理及其接口技術(shù)(第二版) 清華大學出版社 胡漢才編著6單片微機原理及應(yīng)用 機械工業(yè)出版社 丁元杰主編7單片機原理及接口技術(shù)(修訂版) 北京航空航天大學出版社 李朝青編著8單片機原理及應(yīng)用 北京希望電子出版社 成都木馬科技編著9單片機原理及接口技術(shù)學

22、習輔導 電子工業(yè)出版社 朱定華編著10單片微機接口與系統(tǒng)設(shè)計 哈工大出版社 高明編著11.微型計算機原理及應(yīng)用學習知道 化學工業(yè)出版社 趙邦信編著11網(wǎng)上資料第八章 附錄8.1 源代碼data segmentassumeds:datamsg_1 db $,0dh,0ahmsg_2db0dh,0ah,In this OS. you can press below keys to enjoy:$msg_3db0dh,0ah,Super Low:q-w-e-r-t-y-u$msg_4db0dh,0ah, Low:a-s-d-f-g-h-j$msg_5db0dh,0ah, Mid:z-x-c-v-b-

23、n-m$msg_6db0dh,0ah, Hig:1-2-3-4-5-6-7$msg_7 db0dh,0ah,Anytime you can press Esc or Enter to exit.$msg_8db0dh,0ah,Whats more, you can press p to play music!$msg_9db0dh,0ah,Please select the music(press q to exit the main menu):$msg_10db0dh,0ah,1. Huaxin$msg_11db0dh,0ah,2. Jingle bells$msg_12db0dh,0ah

24、,3. Happy birthday to you$msg_13db0dh,0ah,4. Happy new year$msg_21db0dh,0ah, $note_tdw 131,147,165,175,196,220,247;重低音dw 262,294,330,349,392,440,494;低音 dw 523,587,659,698,784,880,988;中音 dw 1046,1175,1318,1397,1568,1760,1975;高音dw0;休止符0;1,2,3,4,5,6,7;從低到高key_tdbq,w,e,r,t,y,u;重低音dba,s,d,f,g,h,j;低音dbz,x

25、,c,v,b,n,m;中音db1,2,3,4,5,6,7;高音db0;休止符0;瑪麗有只小羊羔music_n1 db c,x,z,x,c,c,c db x,x,x,c,c,c db c,x,z,x,c,c,z db x,x,c,x,z,0 music_d1 db 4, 4, 4, 4, 4, 4, 8 db 4, 4, 8, 4, 4, 8 db 16, 8, 4, 4, 8, 4, 4, 8, 4, 4 db 4, 4, 4, 4, 4, 4, 4, 2 db 4, 4, 4, 4, 16 ;鈴兒響叮當+生日快樂+新年好music_n2 db g,c,x,z,g,0,g,h,g,c,x,z;

26、鈴兒響叮當 db h,0,h,a,h,v,c,x,j,g,b,b,v,x,c,z db g,c,x,z,g,0,g,h,g,c,x,z,h,v,c,x db b,b,b,b,n,b,v,x,z db c,c,c,c,c,c,c,b,z,x,c db v,v,v,v,c,c,c,x,x,z,x,b db c,c,c,c,c,c,c,b,z,x,c db v,v,v,v,c,c,b,b,v,x,z,0 db g,g,h,g,z,j;生日快樂 db g,g,h,g,x,z db g,g,b,c,z,j,h db v,v,c,z,x,z,0 db z,z,z,g,c,c,c,z,z,c,b,b,v,c

27、,x,x,c;新年好 db v,v,c,x,c,z,z,c,x,g,j,x,z,0music_d2 db 4, 4, 4, 4, 8, 4, 2, 2, 4, 4, 4, 4 db 8, 4, 2, 2, 4, 4, 4, 4, 8, 8, 4, 4, 4, 4, 8, 4 db 4, 4, 4, 4, 8, 4, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4 db 4, 4, 4, 4, 4, 4, 4, 4, 16 db 4, 4, 8, 4, 4, 8, 4, 4, 4, 2, 16 db 4, 4, 8, 4, 4, 8, 4, 4, 4, 4, 8, 8 db 4, 4,

28、 8, 4, 4, 8, 4, 4, 4, 2, 16 db 4, 4, 8, 4, 4, 8, 4, 4, 4, 4, 16,32 db 4, 4, 8, 8, 8, 16 db 4, 4, 8, 8, 8, 16 db 4, 4, 8, 8, 8, 8, 8 db 4, 4, 8, 8, 8, 16, 32 db 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 16, 4, 4 db 8, 8, 4, 4, 8, 8, 4, 4, 8, 8, 4, 4, 32jiepai db ?;節(jié)拍變量定義speeddb2;播放速度控制jiangedb1;音符間隔停

29、頓時間dataends;數(shù)據(jù)定義段結(jié)束;/*-*/;/*-*/;代碼段定義code segment;代碼定義段 assumecs:code;建立代碼段寄存器尋址;/*-*/;/*-*/;字符顯示show macro str;宏定義,輸入?yún)?shù):字符串str leadx,str;裝入str的有效地址 mov ah,09h;調(diào)用中斷21,09h顯示字符串 int 21h endm;宏定義結(jié)束;/*-*/;/*-*/;主函數(shù)mainprocfar;主函數(shù)過程定義mov ax,data;取數(shù)據(jù)段地址mov ds,ax;裝載數(shù)據(jù)段寄存器ds,使之指向當前數(shù)據(jù)段showmsg_21showmsg_1;調(diào)用宏

30、,顯示字符串showmsg_2showmsg_3showmsg_4showmsg_5showmsg_6showmsg_7showmsg_8showmsg_21movbx,0;設(shè)定查表數(shù)組下標初值;/*-*/;/*-*/;按鍵掃描key_scan:moval,6mov jiepai,al ;初始化節(jié)拍movbx,0000h;初始化指針movah, 00h;利用bios的16號中斷,掃描鍵盤按鍵int16h;AL中返回按鍵的ASCII碼cmpal, 0dh;判斷是否為Enter鍵jzexit;是回車鍵就退出cmpal, 1bh;判斷是否為Esc鍵jzexit;是退出鍵就退出cmpal, p;判斷是

31、否為p鍵jzplay;是p鍵就play musiclookup:cmpkey_tbx,al;取出對應(yīng)頻率值jenextincbx;指針+1jmplookupnext:shlbx,1;指針2,計算頻率表指針movcx,note_tbx;取得對應(yīng)數(shù)組下標值的頻率值callbeep;調(diào)用固定頻率子程序jmpkey_scan;否則繼續(xù)掃描;/*-*/;/*-*/exit:;退出 mov ah,4ch;調(diào)用中斷21,4ch退出系統(tǒng) int 21h;/*-*/;/*-*/;音樂播放菜單play:showmsg_9showmsg_10showmsg_11showmsg_12showmsg_13showmsg

32、_21input:movah, 00h;利用bios的16號中斷,掃描鍵盤按鍵int16h;AL中返回按鍵的ASCII碼cmpal, q;判斷是否為Enter鍵jzstart;是q鍵就退到主菜單cmpal, 1;判斷是否為數(shù)字1jznext6;是1鍵就播放相對應(yīng)的歌曲cmpal, 2;判斷是否為數(shù)字2jznext7;是2鍵就播放相對應(yīng)的歌曲jmpinput;否則繼續(xù)掃描按鍵next6:callplay_m1next7: callplay_m2start:callmain;/*-*/;/*-*/;音樂播放程序1play_m1procnearnext5:movbx,0next3:moval,mus

33、ic_n1bx;取出music頻率值 push ax moval,music_d1bx;取出music節(jié)拍 mov jiepai,al pop axcmpal, 0;是否為音樂結(jié)束標志符jeinput;是則退出playpushbx;保存bx,bx為music頻率指針movbx,0look1:cmpkey_tbx,al;查表取出對應(yīng)頻率值的指針bxjenext1;找到就beepincbx;指針+1andbx,0ffhjmplook1;未找到則繼續(xù)查找next1:shlbx,1;指針2,計算頻率表指針movcx,note_tbx;取得對應(yīng)數(shù)組下標值的頻率值cmpcx,0jenext4callbee

34、p;調(diào)用固定頻率子程序callpause;調(diào)用停頓時間popbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnext3next4:callnobeepcallpause;調(diào)用停頓時間popbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnext3play_m1 endp;/*-*/;/*-*/;音樂播放程序2play_m2 procnearnex5:movbx,0nex3:moval,music_n2bx;取出music頻率值 push ax moval,music_d2bx;取出music節(jié)拍 mov jiepai,al pop axcmpal, 0;是否為音樂結(jié)束標

35、志符jeinput;是則退出playpushbx;保存bx,bx為music頻率指針movbx,0loo1:cmpkey_tbx,al;查表取出對應(yīng)頻率值的指針bxjenex1;找到就beepincbx;指針+1andbx,0ffhjmploo1;未找到則繼續(xù)查找nex1:shlbx,1;指針2,計算頻率表指針movcx,note_tbx;取得對應(yīng)數(shù)組下標值的頻率值cmpcx,0jenex4callbeep;調(diào)用固定頻率子程序callpause;調(diào)用停頓時間popbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnex3nex4:callnobeepcallpause;調(diào)用停頓時間p

36、opbx;獲得music指針incbx;繼續(xù)取得下一個音符jmpnex3play_m2 endp;/*-*/;/*-*/mainendp;主函數(shù)過程結(jié)束;/*-*/;/*-*/;固定頻率響beep procnearmovdx,0012hmovax,34dchdivcx;ax為所得分頻值out42h,al;輸出頻率值,低8位moval,ahout42h,al;輸出頻率值,高8位callspk_on;開啟蜂鳴器movah,00h;取時鐘計數(shù)值int1ahmoval,jiepai;18.2次為1000ms, 2次約為100msaddal,speedcbw ;al值轉(zhuǎn)為16位axaddax,dx;加上

37、當前時鐘計數(shù)值,得到計數(shù)終值movbx,ax;計數(shù)終值置入bxdelay1:movah,00hint1ah;取時鐘計數(shù)值cmpbx,dx;到終值嗎?jnzdelay1;未到,繼續(xù)延時callspk_off;關(guān)閉蜂鳴器retbeep endp;/*-*/;/*-*/;休止符延遲時間nobeep procnearcallspk_off;關(guān)閉蜂鳴器movah,00h;取時鐘計數(shù)值int1ahmoval,jiepai;18.2次為1000ms, 2次約為100msaddal,speedcbw ;al值轉(zhuǎn)為16位axaddax,dx;加上當前時鐘計數(shù)值,得到計數(shù)終值movbx,ax;計數(shù)終值置入bxde

38、lay2:movah,00hint1ah;取時鐘計數(shù)值cmpbx,dx;到終值嗎?jnzdelay2;未到,繼續(xù)延時retnobeep endp;/*-*/;/*-*/;音符間隔停頓時間pause procnearcallspk_off;關(guān)閉蜂鳴器movah,00h;取時鐘計數(shù)值int1ahmoval,jiange;18.2次為1000ms, 2次約為100mscbw ;al值轉(zhuǎn)為16位axaddax,dx;加上當前時鐘計數(shù)值,得到計數(shù)終值movbx,ax;計數(shù)終值置入bxdelay3:movah,00hint1ah;取時鐘計數(shù)值cmpbx,dx;到終值嗎?jnzdelay3;未到,繼續(xù)延時r

39、etpause endp;/*-*/;/*-*/;開啟蜂鳴器spk_on procnearpushax;保存ax的值inal,61h;獲取61h端口的當前值oral,03h;把61h端口低二位置1,即打開蜂鳴器out61h,al;輸出數(shù)據(jù)到61h端口popax;恢復ax的值retspk_on endp;/*-*/;/*-*/;關(guān)閉蜂鳴器spk_off procnear pushax;保存ax的值 inal,61h;獲取61h端口的當前值 andal,0fch;把61h端口低二位置0,即關(guān)閉蜂鳴器 out61h,al;輸出數(shù)據(jù)到61h端口 popax;恢復ax的值 retspk_off endp

40、;/*-*/;/*-*/codeends;代碼段結(jié)束endmain;主程序結(jié)束;/*-*/8.2 各個音符的對應(yīng)頻率音符 頻率/HZ 半周期/us 音符 頻率/HZ 半周期/us低1DO2621908 #4FA# 7400676#1DO#2771805中5SO7840638低2RE2941700#5SO#8310602#2RE#3111608中6LA8800568低3M3301516#6LA#9320536低4FA3491433中7SI9880506#4FA#3701350高1DO10460478低5SO3921276#DO#11090451#5SO#4151205高2RE11750426低6LA4401136#2RE#12450402#6LA#4661072高3M13180372低7SI4941012高4FA13970358中1DO5230956#4FA#14800338#1DO#5540903高5SO15680319中2RE5780842#5S0#16610292#2RE#6220804高6LA17600284中3M6590759#6LA#18650268中4FA6980716高7SI19760253ut2ApOdfXXc02GyBK

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!