freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

微機(jī)原理課程設(shè)計(jì)電子琴設(shè)計(jì)(已修改)

2025-01-30 15:00 本頁(yè)面
 

【正文】 武漢理工大學(xué)《微機(jī)原理及接口技術(shù)》課程設(shè)計(jì)說(shuō)明書課程設(shè)計(jì)任務(wù)書學(xué)生姓名: 鄭舟 專業(yè)班級(jí): 自動(dòng)化0808 指導(dǎo)教師: 徐小強(qiáng) 工作單位: 自動(dòng)化 題 目: 電子琴軟件設(shè)計(jì)初始條件:用匯編語(yǔ)言設(shè)計(jì)一個(gè)電子琴,在屏幕上顯示出來(lái),界面要美觀,功能上模擬現(xiàn)實(shí)電子琴功能。要求完成的主要任務(wù): (包括課程設(shè)計(jì)工作量及其技術(shù)要求,以及說(shuō)明書撰寫等具體要求)1.實(shí)現(xiàn)彈奏功或演奏。其中彈奏:用戶每按一琴鍵彈奏相應(yīng)音符;演奏:按下某鍵后自動(dòng)彈奏預(yù)存琴譜功能;還可以附加變調(diào)功能。2.界面要美觀。3.撰寫符合學(xué)校要求的課程設(shè)計(jì)說(shuō)明書,內(nèi)容包括:摘要、目錄、正文、參考文獻(xiàn)、附錄(程序清單)。正文部分包括:設(shè)計(jì)任務(wù)及要求、方案比較及論證、軟件設(shè)計(jì)說(shuō)明(軟件思想,流程,源程序設(shè)計(jì)及說(shuō)明等)、程序調(diào)試說(shuō)明和結(jié)果分析、課程設(shè)計(jì)收獲及心得體會(huì)。時(shí)間安排:1. 1月08日1月10日 查閱資料及方案設(shè)計(jì)2. 1月11日1月13日 編程3. 1月14日1月16日 調(diào)試程序4. 1月17日1月18日 撰寫課程設(shè)計(jì)報(bào)告5. 1月19日 上午準(zhǔn)備答辯,下午正式答辯指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目錄摘 要 11 設(shè)計(jì)任務(wù)及要求 22 工作原理 2 8253簡(jiǎn)介 3 8255簡(jiǎn)介 43設(shè)計(jì)思路 4 程序功能描述 4 程序流程圖 5 DOS/BIOS功能調(diào)用 6 INT 16H(鍵盤I/O中斷) 6 INT 10H(屏幕及顯示器中斷) 7 INT 21H(DOS系統(tǒng)功能調(diào)用) 84 方案比較及論證 85 程序源代碼及注釋 86 運(yùn)行結(jié)果分析 117 調(diào)試過程記錄 128 課程設(shè)計(jì)小結(jié) 13參考文獻(xiàn) 14附錄 15 電子琴軟件設(shè)計(jì)摘 要本文通過8255和8253來(lái)實(shí)現(xiàn)電子琴模擬,主要可以分成兩部分,分別為輸入部分和發(fā)音部分。輸入部分主要是由8255和8個(gè)常開型開關(guān)來(lái)完成。發(fā)音部分由CUP通過對(duì)定時(shí)器8253的通道2進(jìn)行編程,使其I/O寄存器接收一個(gè)控制聲音頻率的16位計(jì)數(shù)值,端口61H的最低位控制通道2門控的開斷,以產(chǎn)生特殊的音響。本文用到的是8253的方式3——方波發(fā)生器。在程序設(shè)計(jì)中,為了避免過于頻繁的調(diào)用中斷顯示字符串,應(yīng)用了宏定義;還通過子程序調(diào)用,有效的解決了跳轉(zhuǎn)和轉(zhuǎn)移過多的問題;再加上合理的DOS和BIOS功能調(diào)用,以及各種指令的綜合,最終作出了漂亮的電子琴界面,并實(shí)現(xiàn)了電子琴演奏高、中、低音,以及播放預(yù)存樂曲的功能。關(guān)鍵詞:電子琴 8253定時(shí)器 8255 DOS調(diào)用 宏定義 1 設(shè)計(jì)任務(wù)及要求初始條件:用匯編語(yǔ)言設(shè)計(jì)一個(gè)電子琴,在屏幕上顯示出來(lái),界面要美觀,功能上模擬現(xiàn)實(shí)電子琴功能。要求完成的主要任務(wù):1.實(shí)現(xiàn)彈奏功或演奏。其中彈奏:用戶每按一琴鍵彈奏相應(yīng)音符;演奏:按下某鍵后自動(dòng)彈奏預(yù)存琴譜功能;還可以附加變調(diào)2.界面要美觀。2 工作原理PC機(jī)揚(yáng)聲器電路以及相關(guān)接口電路如圖21。圖21 PC機(jī)揚(yáng)聲器電路及相關(guān)接口電路通過8255和8253來(lái)實(shí)現(xiàn)電子琴模擬,主要可以分成兩部分,分別為輸入部分和發(fā)音部分。輸入部分:主要是由8255和8個(gè)常開型開關(guān)來(lái)完成。 發(fā)音部分:CUP通過對(duì)定時(shí)器的通道2進(jìn)行編程,使其I/O寄存器接收一個(gè)控制聲音頻率的16位計(jì)數(shù)值,端口61H的最低位控制通道2門控的開斷,以產(chǎn)生特殊的音響。 當(dāng)通道2用于發(fā)聲時(shí),采用的是方式3,在方式3下,輸出線為“1”和為“0”的時(shí)間各占計(jì)數(shù)時(shí)間的一半,因而產(chǎn)生一系列間隔均勻的脈沖。從定時(shí)器輸出的方波信號(hào),經(jīng)功率放大和濾波后驅(qū)動(dòng)揚(yáng)聲器。送到揚(yáng)聲器的信號(hào)還受到了從并行接口芯片8255(端口地址為61H)來(lái)的雙重控制,端口61H的最低位控制通道2的門控開斷,以產(chǎn)生特殊的音頻信號(hào),端口61H的PB1位和定時(shí)器的輸出信號(hào)同時(shí)作為與門的輸入,PB0和PB1位可由程序決定為0還是為1。顯然只有PB0和PB1都是1時(shí),才能使揚(yáng)聲器發(fā)出聲音??刂埔糸L(zhǎng)的時(shí)間可以簡(jiǎn)單地通過反復(fù)執(zhí)行指令來(lái)得到。 8253簡(jiǎn)介8253芯片是常用的可編程計(jì)數(shù)器,在微機(jī)中有著極其重要的作用。常用于事件計(jì)數(shù)器,單穩(wěn)態(tài)觸發(fā)器,分頻器,方波發(fā)生器,硬件觸發(fā)的單脈沖發(fā)生器等。計(jì)數(shù)器/定時(shí)器8253包括3個(gè)獨(dú)立的16位計(jì)數(shù)器通道,而每個(gè)計(jì)數(shù)器都有6種工作方式,可以按二進(jìn)制或十進(jìn)制(BCD碼)進(jìn)行計(jì)數(shù)。本文用到的是8253的方式3——方波發(fā)生器來(lái)實(shí)現(xiàn)了簡(jiǎn)易電子琴的設(shè)計(jì)。8253的方式控制字如圖22所示。圖22 8253的方式控制字8253的工作方式3——方波發(fā)生器:它的特點(diǎn)是:(1)輸出為周期性的方波。若計(jì)數(shù)值為N,則輸出方波的周期是N個(gè)CLK脈沖的寬度。(2)寫入控制字后,輸出將變?yōu)楦唠娖?,?dāng)寫入計(jì)數(shù)初值后,就開始計(jì)數(shù),輸出仍為高電平;當(dāng)計(jì)數(shù)到初值的一半時(shí),輸出變?yōu)榈碗娖剑敝劣?jì)數(shù)到0,輸出又變?yōu)楦唠娖?,重新開始計(jì)數(shù)。(3)若計(jì)數(shù)值為偶數(shù),則輸出對(duì)稱方波;如果計(jì)數(shù)值為奇數(shù),則前(N+1)/2個(gè)CLK脈沖期間輸出為高電平,后(N1)/2個(gè)CLK脈沖期間輸出為低電平。(4)GATE信號(hào)能使計(jì)數(shù)過程重新開始,GATE=1允許計(jì)數(shù),GATE=0禁止計(jì)數(shù)。停止后OUT將立即變高電平,當(dāng)GATE再次變高以后,計(jì)數(shù)器將自動(dòng)裝入計(jì)數(shù)初值,重新開始計(jì)數(shù)。 8255簡(jiǎn)介按功能可把8255分為三個(gè)邏輯電路部分,即:口電路、總線接口電路和控制邏輯電路。8255共有三個(gè)8位口,其中A口和B口是單純的數(shù)據(jù)口,供數(shù)據(jù)I/O使用。而C口則既可以作數(shù)據(jù)口,又可以作控制口使用,用于實(shí)現(xiàn)A口和B口的控制功能。8255A的方式控制字如圖23所示。圖23 8255A的方式控制字3設(shè)計(jì)思路 程序功能描述程序開始,顯示電子琴界面和提示信息,對(duì)緩存區(qū)初始化。按鍵掃描,接著調(diào)用發(fā)音子程序把a(bǔ)l送緩存區(qū),發(fā)出與按鍵相對(duì)應(yīng)頻率的聲音,從而實(shí)現(xiàn)計(jì)算機(jī)鋼琴功能:鍵盤按鍵“q、w、e、r、t、y、u”實(shí)現(xiàn)音調(diào)的高音輸入;鍵盤按鍵“a、s、d、f、g、h、j”實(shí)現(xiàn)音調(diào)的中音輸入;鍵盤按鍵“z、x、c、v、b、n、m”實(shí)現(xiàn)音調(diào)的低音輸入。不停地對(duì)Esc鍵進(jìn)行掃描,當(dāng)Esc鍵按下時(shí),就退出程序;當(dāng)按下p時(shí),播放預(yù)存音樂;當(dāng)檢測(cè)到Enter鍵時(shí),退出到計(jì)算機(jī)鋼琴演奏狀態(tài)。 程序流程圖程序流程圖如圖31所示。圖31 程序流程圖 DOS/BIOS功能調(diào)用DOS操作系統(tǒng)為程序設(shè)計(jì)者提供了可以直接調(diào)用的軟中斷處理程序,每一個(gè)中斷處理程序完成一個(gè)特定的功能操作。依據(jù)編程需要選擇適當(dāng)?shù)奶幚沓绦?,編程者不需再重新編寫程序,而是使用INT n軟中斷指令。每執(zhí)行一種不同類型碼n的軟中斷指令,就執(zhí)行一個(gè)中斷處理程序,其主要功能如下: (1)磁盤的讀/寫控制。 (2)內(nèi)存管理、文件操作和目錄管理。 (3)基本輸入/輸出(對(duì)鍵盤、打印機(jī)和顯示器等)控制,另外還有日期、時(shí)間管理等。BIOS是固化在只讀存儲(chǔ)器ROM中的一系列輸入/輸出服務(wù)程序,它存放于內(nèi)存的高地址區(qū)域內(nèi),除負(fù)責(zé)處理系統(tǒng)中的全部?jī)?nèi)部中斷外,還提供對(duì)主要I/O接口的控制功能,如鍵盤、顯示器、磁盤、打印、日期與時(shí)間等。BIOS采用模塊化結(jié)構(gòu),每個(gè)功能模塊的入口地址都存于中斷向量表中。對(duì)這些中斷調(diào)用是通過軟中斷指令I(lǐng)NT n來(lái)實(shí)現(xiàn)的,中斷指令中的操作數(shù)n即為中斷類型碼。   BIOS的調(diào)用方法與DOS系統(tǒng)功能調(diào)用方法類似: (1)置功能號(hào)于AH中。 (2)置入口參數(shù)。 (3)執(zhí)行INT n 。 (4)分析出口參數(shù)及狀態(tài)。下面介紹程序中將要用到的一下DOS/BIOS功能調(diào)用: INT 16H(鍵盤I/O中斷)1. 功能號(hào):00H功能:從鍵盤讀入ASCII字符,放在AL中入口參數(shù):AH=00H2. 功能號(hào):01H功能:測(cè)試有無(wú)鍵被按下入口參數(shù):AH=01H INT 10H(屏幕及顯示器中斷)1. 功能號(hào):00H功能:設(shè)置顯示模式入口參數(shù):AH=00H AL=顯示模式2. 功能號(hào):02H 功能:用文本坐標(biāo)下設(shè)置光標(biāo)位置 入口參數(shù): AH=02H BH=顯示頁(yè)碼 DH=行(Y坐標(biāo)) DL=列(X坐標(biāo)) 3. 功能號(hào):09H 功能:在當(dāng)前光標(biāo)處按指定屬性顯示字符 入口參數(shù):AH=09H AL=字符 BH=顯示頁(yè)碼 BL=屬性(文本模式)或顏色(圖形模式) CX=重復(fù)輸出字符的次數(shù) 4. 功能號(hào):0BH 功能:設(shè)置調(diào)色板、背景色或邊框 入口參數(shù):AH=0BH設(shè)置顏色:BH=00H,BL=顏色選擇調(diào)色板:BH=01H,BL=調(diào)色板(320200、4種顏色的圖形模式) 。5. 功能號(hào):0CH 功能:寫圖形象素 入口參數(shù):AH=0CH AL=象素值 BH=頁(yè)碼 (CX、DX)=圖形坐標(biāo)列(X)、行(Y) INT 21H(DOS系統(tǒng)功能調(diào)用)功能號(hào):4CH功能:退出系統(tǒng),返回DOS入口參數(shù):AH=4CH4 方案比較及論證在程序設(shè)計(jì)的過程中,遇到了很多問題,總結(jié)起來(lái)有以下幾點(diǎn):?jiǎn)栴}1:要顯示的字符串過多,但又不想重復(fù)寫代碼原因:過于頻繁的調(diào)用中斷顯示字符串,導(dǎo)致程序過于龐大和復(fù)雜,可讀性差。解決辦法:解決這種問題的最好方法是直接把顯示部分寫成子過程,但是子過程在遞參數(shù)的時(shí)候不方便,所以就用宏定義,宏定義可以很方便的傳遞參數(shù),不僅使得程序美觀好看,而且可讀性好,程序代碼緊湊。問題2:寄存器不夠用原因:使用了太多的寄存器,AX、BX、CX、DX。解決辦法:使用外部變量定義,定義外部變量的方法為:變量名 數(shù)據(jù)類型 ?問題3:跳轉(zhuǎn),轉(zhuǎn)移指令跳出的范圍太大,編譯出現(xiàn)錯(cuò)誤原因:程序結(jié)構(gòu)過于復(fù)雜,龐大。解決辦法:使用過程,也就是子程序設(shè)計(jì),直接把一個(gè)要頻繁要用到的函數(shù)打包成一個(gè)子過程,然后用CALL調(diào)用子過程就可以了,這樣就可以避免使用跳轉(zhuǎn)和轉(zhuǎn)移指令了。5 程序源代碼及注釋主程序如下(宏定義及子程序見附錄):data segment。進(jìn)度條字符st_load db 10 。起始行 db 4 。起始列 db 0bh 。字體顏色 db 39。IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII39。 db 00。字符定義start_col db ? 。存儲(chǔ)起始行text db 14 。起始行 db 2 。起始列 db 0fh 。字體顏色 db 39。piano AUTOMATION 0808 ^_^39。,0ffh,0ffh 。顯示字 db 39。 HAVE A GOOD TIME!39。,0ffh 。以0ffh來(lái)判斷是否換行 db 39。 [1234567]39。,0ff
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1