計(jì)算機(jī)綜合實(shí)踐_第1頁
計(jì)算機(jī)綜合實(shí)踐_第2頁
計(jì)算機(jī)綜合實(shí)踐_第3頁
計(jì)算機(jī)綜合實(shí)踐_第4頁
計(jì)算機(jī)綜合實(shí)踐_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

/9通過4次想乘然后把部分積想加。對于帶符號數(shù),可以先根據(jù)絕對值求得積。然后判斷積的符號,若積為負(fù)數(shù),應(yīng)將其用補(bǔ)碼表示。五,程序設(shè)計(jì)1、字符串統(tǒng)計(jì)程序設(shè)計(jì)#include<iostream>usingnamespacestd;intmain()(chara;intb=O,c=O,d=O,e=O,f=O;COUtVV”請輸入一行任意字符:";a=cin.get();while(a!='\n')(if(a<0||a>=128)b++;elseif(a>=,a,&&a<='z,||a>=,A,&&a<=,Z,)C++;elseif(a=='')d++;elseif(a>='0'&&a<=,9,)elsef++;a=cin.get();)coutvv”總共有“vvb/2+c+d+e+fvv”個(gè)字符:"vvendl;cout?"中文英文空格數(shù)字其他"?endl;cout?b/2?,,\t"?c?,,\t"?d?,,\t"?e?"\t"?f?endl;return0;)分別統(tǒng)計(jì)出英文字母,空格,數(shù)字和其他字符的個(gè)數(shù)。2、雙字乘法程序設(shè)計(jì)datasegmentxdw1,2;被乘數(shù)ydw3,4;乘數(shù)zdw4dup(?);積dataendscodesegmentassumeds:data,cs:codestart:movax,datamovds,axmovax,xmulymovz,axmovz+2,dxmovax,x+2mulymovz+4,axmovz+6,dxmovax,xmuly+2addz+4,axadcz+6,dxmovax,x+2muly+2adcz+8,axadcz+10,dxadcz+12,0movax,4c00hnt21hcodeendsendstart驗(yàn)三8253定時(shí)器/計(jì)數(shù)器接口與數(shù)字電子琴一、實(shí)驗(yàn)題目8253定時(shí)器/計(jì)數(shù)器接口與數(shù)字電子琴二、實(shí)驗(yàn)日期:2016/08/07三、實(shí)驗(yàn)?zāi)康模焊淖兌〞r(shí)器 2的計(jì)數(shù)值來改變聲音頻率,通過編程來獲得聲調(diào)(頻率)和節(jié)奏 (延時(shí)長短)使計(jì)算機(jī)演奏出樂曲來。四、實(shí)驗(yàn)內(nèi)容 :設(shè)計(jì)程序讓微機(jī)演奏一段簡單樂曲利用DOS勺鍵盤管理功能。將微機(jī)變?yōu)橐粋€(gè)具有簡單功能的電子琴 (選作)。五、程序設(shè)計(jì)硬件設(shè)計(jì)利用實(shí)驗(yàn)板上的8253計(jì)數(shù)/定時(shí)器和8255并行接口,定時(shí)器 8253利用工作方式3產(chǎn)生一定頻率信號,通過可編程的并行外圍接口芯片8255控制頻率信號的通斷。8255的A口設(shè)置為輸出,8255的A口的低兩位用來控制揚(yáng)聲器驅(qū)動(dòng),當(dāng)輸出端口的PA0位為“1”或?yàn)椤?”時(shí)。將使控制驅(qū)動(dòng)器的與門電路接通或關(guān)閉,使8253所發(fā)出的音頻信號能到達(dá)驅(qū)動(dòng)器或被阻斷。這樣通過控制 PA0的變化,可使揚(yáng)聲器接通和斷開,控制揚(yáng)聲器是否能發(fā)出聲音。止匕外,通過控制PA0的通斷時(shí)間,就能發(fā)出不同的音長。8255的PA1位為“1”時(shí),控制8253定時(shí)器產(chǎn)生驅(qū)動(dòng)揚(yáng)聲器發(fā)聲的音頻信號,該位為“ 0”則不發(fā)信號。 8253有三個(gè)定時(shí)器。分為0號、1號和2號定時(shí)器,驅(qū)動(dòng)揚(yáng)聲器的是 0號定時(shí)器,該定時(shí)器工作方式3,是一個(gè)頻率發(fā)生器,它負(fù)責(zé)向揚(yáng)聲器發(fā)送指定頻率的脈沖信號。當(dāng) 8255的PA0和PA1都為1時(shí),8253發(fā)出指定頻率的聲音信號的前提下,聲音信號通過與門到達(dá)驅(qū)動(dòng)器驅(qū)動(dòng)揚(yáng)聲器發(fā)聲。硬件原理圖如圖1所示:X255Q口8255揚(yáng)聲器驅(qū)動(dòng)電路如圖2X255Q口8255揚(yáng)聲器驅(qū)動(dòng)電路如圖2所示.圖2揚(yáng)聲器驅(qū)動(dòng)電路軟件設(shè)計(jì)系統(tǒng)要求實(shí)現(xiàn)2個(gè)功能,電子琴和音樂盒的功能。兩者發(fā)聲的方法一樣,只是一個(gè)數(shù)據(jù)是從鍵盤讀取的,另一個(gè)是已經(jīng)保存好的數(shù)據(jù)。首先我們可以用一個(gè)子程序?qū)崿F(xiàn)單個(gè)音調(diào)的產(chǎn)生,對8253輸入不同的計(jì)數(shù)初值生成不同頻率的波形,然后延時(shí)一段時(shí)間。電子琴程序主要是讀取鍵盤按鍵,根據(jù)鍵值產(chǎn)生不同的音調(diào)即可。而樂曲的播放先將樂曲的音符編碼表和節(jié)拍編碼表建立好的 ,然后在播放時(shí)讀取數(shù)據(jù)。1.單音調(diào)子程序SOUND!音調(diào)子程序的調(diào)用前需要進(jìn)行以下幾個(gè)方面工作,1)確定相應(yīng)的音調(diào)所對應(yīng)的頻率,查表可以得到,再由頻率得到對應(yīng)的8253計(jì)數(shù)初值。2)確定音長,即一個(gè)音符所持續(xù)的時(shí)間。在單音調(diào)子程序中實(shí)現(xiàn)發(fā)出一個(gè)音符的聲音,持續(xù)所需的時(shí)間,流程圖如圖3所示:圖3單音調(diào)子程序流程圖2,音樂盒程序音樂盒的樂曲播放程序中需要有兩組數(shù)據(jù)支持,一組是頻率數(shù)據(jù),一組是節(jié)拍時(shí)問數(shù)據(jù)。音符的頻率可以通過簡譜從頻率表中查得。 節(jié)拍時(shí)間就是音符的持續(xù)時(shí)問,取決于樂曲的速度和每個(gè)音符的節(jié)拍數(shù)據(jù)。如 4/4,四四拍,中,每小節(jié)包括4拍,全音符持續(xù)4拍,二分音符持續(xù)2拍,四分音符持續(xù)一拍,八分音符持續(xù)半拍等。有了音調(diào)與頻率和時(shí)間的關(guān)系后,就可以按照樂曲的曲譜將每個(gè)音符的頻率和持續(xù)的時(shí)間定義成兩組數(shù)據(jù)表,然后編程依次取出表中的頻率值和節(jié)拍值 ,調(diào)用單音調(diào)子程序就可依次產(chǎn)生各個(gè)音調(diào),播放出樂曲。在程序中存儲(chǔ)幾個(gè)樂曲數(shù)據(jù),根據(jù)音樂盒子菜單選擇相應(yīng)的樂曲演奏,讀取對應(yīng)的數(shù)據(jù)輸出。樂曲《兩只老虎》的簡譜如下:兩只老虎1-C4/41231|1231|345-|3 4 5 -I56 543 1I 5_65^3 12 5 1 - 2 51 -對應(yīng)的頻率數(shù)據(jù)表Freq、節(jié)拍數(shù)據(jù)表Time如下:TWOTIGERS_FREDW2DUP(524,588,660,524,0);

樂曲的頻率表 DWDW樂曲的頻率表 DWDWDWTWOTIGERS_TIME樂曲的時(shí)間表 DWDW2DUP(784,880,784,698,660,524,0)2DUP(588,392,524,0),1DW10DUP(100),200,100,100,200;2DUP(50,50,50,50,100,100)2DUP(100,100,200)outb_p(0x34,0x43);utb_p(LATCH&0xff,0x40);outb_p(LATCH>>8,0x40);outb(inb_p(0x21)&~0x01,0x21);//允許接收定時(shí)器中斷}voiddo_timer(void){這是定時(shí)器主程序,用于每隔一段時(shí)間后進(jìn)行某些操作}[8253.asm]://以下是nasm格式的匯編代碼,這個(gè)中斷處理函數(shù)必須用匯編timer_interrupt:pushgspushfspushespushdspushebppushedipushesipushedxpushecxpushebxpusheax如果你不在操作系統(tǒng)下使用,以下三行必須刪除 ,否則必須把 0x10更改為內(nèi)核段選擇符moveax,0x10movds,axmoves,axmoval,0x20out0xa0,al;發(fā)送EOIout0x20,alcalldo_timerpopebxpopecxpopedxpopesipopedipopebppopdspopespopfspopgsxoreax,eaxiretd踐體會(huì)次微機(jī)實(shí)驗(yàn)課程設(shè)計(jì) ,使我對微機(jī)軟硬件結(jié)合有了進(jìn)一步的了解。原來并不太清楚是什么意思,一直都很模糊 ,聽課本也是很迷茫 ,而之前的那些單元實(shí)驗(yàn) ,也沒有都做好。之前做的實(shí)驗(yàn) ,由于大部分是驗(yàn)證性的,所以就很被動(dòng)地去做 ,甚至并沒有想為什么要那樣連電路 ,內(nèi)部的代碼更沒有認(rèn)真看。這次課程設(shè)計(jì) ,因?yàn)橐约喝ピO(shè)計(jì)整個(gè)過程 ,所以就不得不去了解學(xué)習(xí)自己原來并沒有真正弄懂的東西。比如一些程序的代碼的意思,匯編語言的邏輯 ,比如一些芯片的用途。使我對前面所做的實(shí)驗(yàn)有了原理性的了解 ,回頭看一些實(shí)驗(yàn) ,也知其然其所以然了。同時(shí)對課本上講的一些內(nèi)容 ,不再像以前那樣覺得抽象 ,通過這次設(shè)計(jì) ,有了具體的理解。同時(shí),我也知道了設(shè)計(jì)一個(gè)項(xiàng)目,應(yīng)該如何下手。應(yīng)該先對項(xiàng)目要求有個(gè)全面的了解,知道要做什么,然后根據(jù)要求所要涉及到的知識我們要主動(dòng)去攝取,結(jié)合自己已學(xué)過的,再對整體框架有個(gè)感知,心里有數(shù)后,進(jìn)行設(shè)計(jì)。設(shè)計(jì)時(shí)用流程圖,這很重要,這樣整個(gè)思路就很清晰,而且是按照軟硬件語言的邏輯順序進(jìn)行就很方便。設(shè)計(jì)過程可以分模塊,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論