版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
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ā)聲的音長(zhǎng)了。二、課程設(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)榈?。該方式下如果?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;加上當(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,jiepa
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中興方式購銷合同
- 民間房產(chǎn)抵押貸款協(xié)議樣式
- 認(rèn)證服務(wù)合同加快
- 會(huì)議服務(wù)團(tuán)隊(duì)與服務(wù)合同
- 投標(biāo)代理合同注意事項(xiàng)及范本
- 服務(wù)器選購合同示例
- 外業(yè)勘察分包合同樣本格式模板
- 建筑智能化分包合同
- 購銷合同空白格式版式模板
- 招標(biāo)文件汽車選購指南
- 壓力容器安全技術(shù)-壓力容器的安全附件
- 《0~3歲嬰幼兒動(dòng)作發(fā)展與指導(dǎo)》項(xiàng)目一-0~3歲嬰幼兒動(dòng)作發(fā)展概述
- 個(gè)人晉升現(xiàn)實(shí)表現(xiàn)材料范文四篇
- 國標(biāo)安全標(biāo)志-中英文禁止標(biāo)志標(biāo)識(shí)
- 湖北省武漢市青山區(qū)2023-2022學(xué)年度第二學(xué)期五年級(jí)英語期末測(cè)試試卷(劍橋版)(PDF版 含答案 含聽力原文及音頻)
- 《動(dòng)畫鑒賞》教學(xué)大綱
- 三年級(jí)法制教育課件
- 捅馬蜂窩(2003山西中考記敘文閱讀試題含答案)
- 科室質(zhì)量與安全管理小組專題活動(dòng)記錄
- 2022年安徽省公務(wù)員錄用考試《行測(cè)》真題及答案
- 2023年高中音樂課件大宅門-電視劇《大宅門》主題歌
評(píng)論
0/150
提交評(píng)論