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

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

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

15 積分

下載資源

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

資源描述:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

22、習(xí)輔導(dǎo) 電子工業(yè)出版社 朱定華編著10單片微機(jī)接口與系統(tǒng)設(shè)計(jì) 哈工大出版社 高明編著11.微型計(jì)算機(jī)原理及應(yīng)用學(xué)習(xí)知道 化學(xué)工業(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 ;鈴兒響叮當(dāng)+生日快樂+新年好music_n2 db g,c,x,z,g,0,g,h,g,c,x,z;

26、鈴兒響叮當(dāng) 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、頓時(shí)間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,使之指向當(dāng)前數(shù)據(jù)段showmsg_21showmsg_1;調(diào)用宏

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

31、否為p鍵jzplay;是p鍵就play musiclookup:cmpkey_tbx,al;取出對(duì)應(yīng)頻率值jenextincbx;指針+1jmplookupnext:shlbx,1;指針2,計(jì)算頻率表指針movcx,note_tbx;取得對(duì)應(yīng)數(shù)組下標(biāo)值的頻率值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號(hào)中斷,掃描鍵盤按鍵int16h;AL中返回按鍵的ASCII碼cmpal, q;判斷是否為Enter鍵jzstart;是q鍵就退到主菜單cmpal, 1;判斷是否為數(shù)字1jznext6;是1鍵就播放相對(duì)應(yīng)的歌曲cmpal, 2;判斷是否為數(shù)字2jznext7;是2鍵就播放相對(duì)應(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é)束標(biāo)志符jeinput;是則退出playpushbx;保存bx,bx為music頻率指針movbx,0look1:cmpkey_tbx,al;查表取出對(duì)應(yīng)頻率值的指針bxjenext1;找到就beepincbx;指針+1andbx,0ffhjmplook1;未找到則繼續(xù)查找next1:shlbx,1;指針2,計(jì)算頻率表指針movcx,note_tbx;取得對(duì)應(yīng)數(shù)組下標(biāo)值的頻率值cmpcx,0jenext4callbee

34、p;調(diào)用固定頻率子程序callpause;調(diào)用停頓時(shí)間popbx;獲得music指針incbx;繼續(xù)取得下一個(gè)音符jmpnext3next4:callnobeepcallpause;調(diào)用停頓時(shí)間popbx;獲得music指針incbx;繼續(xù)取得下一個(gè)音符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é)束標(biāo)

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

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

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

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

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

40、;/*-*/;/*-*/codeends;代碼段結(jié)束endmain;主程序結(jié)束;/*-*/8.2 各個(gè)音符的對(duì)應(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

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

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

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


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