微機(jī)原理課程設(shè)計-電子琴的設(shè)計微機(jī)原理課程設(shè)計-電子時鐘設(shè)計_第1頁
微機(jī)原理課程設(shè)計-電子琴的設(shè)計微機(jī)原理課程設(shè)計-電子時鐘設(shè)計_第2頁
微機(jī)原理課程設(shè)計-電子琴的設(shè)計微機(jī)原理課程設(shè)計-電子時鐘設(shè)計_第3頁
微機(jī)原理課程設(shè)計-電子琴的設(shè)計微機(jī)原理課程設(shè)計-電子時鐘設(shè)計_第4頁
微機(jī)原理課程設(shè)計-電子琴的設(shè)計微機(jī)原理課程設(shè)計-電子時鐘設(shè)計_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課程設(shè)計任務(wù)書學(xué)生姓名:專業(yè)班級:電氣指導(dǎo)教師:工作單位:自動化學(xué)院題目:計算機(jī)電子琴軟件軟件設(shè)計初始條件:1.用于調(diào)試程序的IBM兼容PC機(jī)一臺;2.安裝DOS/WIN98操作系統(tǒng)或運行于DOS/WIN98兼容方式;3.EDIT等文本編輯器輸入80x86匯編程序,MASM5.0編譯及鏈接程序。要求完成的主要任務(wù):(包括課程設(shè)計工作量及其技術(shù)要求,以及說明書撰寫等具體要求)1.使用匯編語言設(shè)計一個運行于計算機(jī)的電子琴軟件,軟件應(yīng)實現(xiàn)彈奏功或演奏。其中彈奏:用戶每按一琴鍵彈奏相應(yīng)音符;演奏:按下某鍵后自動彈奏預(yù)存琴譜功能;還可以附加變調(diào)、變速和記錄創(chuàng)作等其它功能。2.說明書撰寫格式應(yīng)符合《課程設(shè)計說明書統(tǒng)一書寫格式》。時間安排:1.程序框圖設(shè)計,3天2.編程,4天3.調(diào)試,3天4.編寫設(shè)計報告,4天指導(dǎo)教師簽名:年月日系主任(或責(zé)任教師)簽名:年月日目錄摘要································································=1\*ROMANI1設(shè)計任務(wù)和思路····················································11.1設(shè)計任務(wù)······················································11.2設(shè)計思路······················································12更件部分工作原理··················································22.18255工作原理·················································22.28253工作原理·················································23程序流程圖························································43.1主程序流程圖··················································43.2演奏子程序流程················································53.3音樂播放子程序流程············································63.4彈奏子程序流程圖··············································63.5發(fā)音子程序流程圖·············································74各部分功能實現(xiàn)說明················································74.1發(fā)音部分功能實現(xiàn)··············································74.2變調(diào)功能的實現(xiàn)················································84.3彈奏功能的實現(xiàn)················································84.4演奏功能的實現(xiàn)················································94.4.1歌曲選擇功能實現(xiàn)········································94.4.2音樂播放功能實現(xiàn)········································95程序運行結(jié)果·····················································10結(jié)束語·····························································12參考文獻(xiàn)···························································13附錄程序清單······················································14成績評定表·························································19摘要匯編語言是一種功能很強(qiáng)的程序設(shè)計語言,也是利用計算機(jī)所有硬件特性并能直接控制硬件的語言。利用匯編語言能夠直接訪問與硬件相關(guān)的存儲器或I/O端口,從而最大限度地發(fā)揮硬件的功能。本文主要介紹了利用匯編語言設(shè)計一個運行于計算機(jī)的電子琴軟件,軟件能夠?qū)崿F(xiàn)彈奏,演奏的功能,當(dāng)按下彈奏鍵時,實現(xiàn)彈奏功能,發(fā)出音符對應(yīng)頻率的聲音,按下演奏鍵時,實現(xiàn)演奏功能,播放預(yù)存的音樂,按下指定的音調(diào)選擇按鍵后,選擇低音,中音或高音,則分別用低音,中音或高音進(jìn)行彈奏或演奏。首先介紹了PC機(jī)內(nèi)揚聲器的控制電路,接著介紹了相關(guān)接口芯片8255和8253的內(nèi)部結(jié)構(gòu)和工作原理,接著講述了各部分功能的具體實現(xiàn)方法。關(guān)鍵詞:匯編語言,8255,8253,揚聲器PAGEPAGE50計算機(jī)電子琴軟件設(shè)計1設(shè)計任務(wù)和思路1.1設(shè)計任務(wù)使用匯編語言設(shè)計一個運行于計算機(jī)的電子琴軟件,軟件應(yīng)實現(xiàn)彈奏功能或演奏功能。其中彈奏:用戶每按一琴鍵彈奏相應(yīng)音符;演奏:按下某鍵后自動彈奏預(yù)存琴譜功能;還可以附加變調(diào)、變速和記錄創(chuàng)作等其它功能。軟件預(yù)想功能為:按數(shù)字1-8為彈奏功能;按字母p為演奏功能;按d選擇低音,按z選擇中意,按g選擇高音。1.2設(shè)計思路電子琴的設(shè)計實際上就是要設(shè)計一個程序,能夠通過該程序控制PC機(jī)內(nèi)揚聲器的發(fā)聲規(guī)律,按下相應(yīng)的按鍵后,揚聲器能發(fā)出指定頻率的聲音。PC機(jī)內(nèi)的揚聲器是通過并行接口芯片8255和定時芯片8253來控制發(fā)音的,其電路連接方式如下圖所示。8255APB1PB08255APB1PB0CLK28253GATE2OUT2&揚聲器1.19318MHZ圖1PC機(jī)內(nèi)揚聲器控制電路由圖可知,揚聲器是由8253通道2產(chǎn)生的方波信號和8255的PB1相與后驅(qū)動發(fā)聲的,且通道2的門信號由8255的PB0提供,要想讓揚聲器發(fā)聲,PB0和PB1必須同時為高電平,因此,可以通過對8255的PB0和PB1的設(shè)置來控制揚聲器的開通和關(guān)斷,而其發(fā)音頻率可以通過對8253通道2的計數(shù)初值的設(shè)置來控制。所設(shè)計程序的任務(wù)就是要通過對按鍵的判斷來設(shè)置8255的PB0和PB1輸出電平的高低,以及8253通道2計數(shù)初值的設(shè)置。計數(shù)初值N=時鐘頻率/音階頻率.各音階的頻率如下表所示。表1各音符頻率表音符1234567頻率(低)131147165175196220247頻率(中)262294330349392440494頻率(高)5245886606987848809882硬件部分工作原理2.18255工作原理8255的內(nèi)部結(jié)構(gòu)圖如圖2所示,它有3個數(shù)據(jù)端口,分為兩組,A組由A口和C口高四位組成,B組由B口和C口低四位組成。其方式控制字如圖3所示。圖28255內(nèi)部結(jié)構(gòu)圖圖38255方式控制字圖38255方式控制字方式控制字的特征位D0D7D6D5D4D3D2D11A組工作方式00——方式001——方式11——方式2B組工作方式0——方式01——方式1A口輸入/輸出1——輸入0——輸出PC7PC4輸入/輸出1——輸入0——輸出B口輸入/輸出1——輸入0——輸出PC3PC0輸入/輸出1——輸入0——輸出PC機(jī)內(nèi)8255的A口,B口,C口和控制口的端口地址分別為:60H,61H,62H,63H。2.28253工作原理8253芯片中有3個計數(shù)通道,稱為通道0,1,2,它們與外部電路相連的信號線有3根:CLK,GATE,OUT,CLK是脈沖輸入端,GATE是門控信號,OUT是輸出信號,計數(shù)器工作在減1狀態(tài)。其內(nèi)部結(jié)構(gòu)圖和方式控制字格式如圖4,圖5所示。其中當(dāng)計數(shù)器工作在方式3時,輸出信號為方波信號。內(nèi)內(nèi)部總線A1GATE0CLK0OUT0GATE1CLK1OUT1GATE2CLK2OUT2D0-D7計數(shù)器0計數(shù)器2計數(shù)器1控制寄存器A0數(shù)據(jù)總線緩沖器R/W邏輯電路圖48253內(nèi)部結(jié)構(gòu)圖D7D6D5D4D3D2D1D0計數(shù)器選擇計數(shù)器選擇00計數(shù)器001計數(shù)器110計數(shù)器211不用00計數(shù)器鎖存01讀寫低8位10讀寫高8位11讀寫16位工作方式選擇000方式0001方式1×10方式2×11方式3100方式4101方式5計數(shù)方式0二進(jìn)制1BCD計數(shù)圖58253控制字格式PC機(jī)內(nèi)8253的通道0,通道1,通道2,控制口的端口地址分別為:40H,41H,42,43H。因為揚聲器是由通道2來控制的,故應(yīng)選擇通道2,工作方式選為方式3,輸出的信號則為方波信號。3程序流程圖3.1主程序流程圖主程序的流程圖如下圖所示:為d?為z?為g?開始顯示輸入提示信息從鍵盤讀入字符為q?結(jié)束選擇低音選擇中音選擇高音為d?為z?為g?開始顯示輸入提示信息從鍵盤讀入字符為q?結(jié)束選擇低音選擇中音選擇高音顯示輸入提示從鍵盤讀入字符為q?為p?為1~8?調(diào)用演奏子程序調(diào)用彈奏子程序YNYNYNYNNYYNYN圖6主程序流程圖3.2演奏子程序流程圖當(dāng)按鍵為p為時,調(diào)用音樂播放子程序,音樂播放子程序的流程圖如下圖所示。顯示輸入提示從鍵盤讀入字符為q?為1?為2?返回調(diào)用音樂1播放子程序調(diào)用音樂2播放子程序顯示輸入提示從鍵盤讀入字符為q?為c?返回NYNNYYYNNY顯示輸入提示從鍵盤讀入字符為q?為1?為2?返回調(diào)用音樂1播放子程序調(diào)用音樂2播放子程序顯示輸入提示從鍵盤讀入字符為q?為c?返回NYNNYYYNNY圖7音樂播放子程序流程圖3.3音樂播放子程序流程圖演奏時,通過判斷按鍵為1或2來調(diào)用音樂播放子程序1或2,音樂播放子程序流程圖如圖8所示。計數(shù)器清零CL自增1CL>歌曲長度?返回查表得相應(yīng)頻率計算計數(shù)初值調(diào)用發(fā)音子程序NY計數(shù)器清零CL自增1CL>歌曲長度?返回查表得相應(yīng)頻率計算計數(shù)初值調(diào)用發(fā)音子程序NY圖8音樂播放子程序流程圖3.4彈奏子程序流程圖當(dāng)按鍵為1-8時,調(diào)用演奏子程序,演奏子程序的流程圖如下圖所示:查表得相應(yīng)頻率計算計數(shù)初值查表得相應(yīng)頻率計算計數(shù)初值返回調(diào)用發(fā)音子程序圖9演奏子程序流程圖3.5發(fā)音子程序流程圖在彈奏和演奏時都需調(diào)用發(fā)音子程序,發(fā)音子程序的作用是控制揚聲器的發(fā)音,其流程圖如下:8253初始化8253初始化開揚聲器延時關(guān)揚聲器返回圖10發(fā)音子程序流程圖4各部分功能實現(xiàn)說明4.1發(fā)音部分功能實現(xiàn)由更件的連接形式可知,揚聲器的開斷是由8255的PB0和PB1以及8253通道2同時控制的,PB0和PB1同時為高電平時,揚聲器開,有一個為低電平時,揚聲器關(guān)斷,又知8255B口地址為61H,8253通道2地址為42H,控制口地址為43H。具體程序編寫如下。8253初始化程序段:moval,10110110b;選擇8253的通道2,并設(shè)置為工作方式3out43h,almovax,bxout42h,al;將計數(shù)初值的低8位寫入計數(shù)通道m(xù)oval,ahout42h,al;將計數(shù)初值的高8位寫入計數(shù)通道開揚聲器程序段:inal,61h;讀入B口數(shù)據(jù)oral,03h;將PB0和PB1置1out61h,al;將設(shè)置好的數(shù)據(jù)送回B口關(guān)揚聲器程序段:inal,61h;讀入B口數(shù)據(jù)andal,0fch;將PB0和PB1置0out61h,a;將設(shè)置好的數(shù)據(jù)送回B口4.2變調(diào)功能的實現(xiàn)揚聲器發(fā)音的頻率是由8253產(chǎn)生方波的頻率決定的,而方波頻率又是由通道的計數(shù)初值來決定的,因此可以通過改變通道的計數(shù)初值來實現(xiàn)變調(diào)功能。計數(shù)初值N=時鐘頻率/音階頻率,時鐘頻率為1.19318MHZ=1234DCH,可以將相應(yīng)音調(diào)對應(yīng)的時鐘頻率存入內(nèi)存單元,當(dāng)選擇相應(yīng)的音調(diào)時,計算計數(shù)初值時,采用對應(yīng)的時鐘頻率值,具體程序如下。cmpal,'d';為d則選擇低音jnej1movnum2,50jmpchoicej1:cmpal,'z';為z則選擇中音jnej2movnum2,12hjmpchoicej2:cmpal,'g';為g則選擇高音jneloop0movnum2,06h其中,num1和num2中存放的是時鐘頻率值,num1中固定為34DCH,選擇低音時,num2值設(shè)為50,中音時設(shè)為12H,高音時設(shè)為06H。計算計數(shù)初值程序如下:movax,num1movdx,num2div音符頻率通過這樣的設(shè)置,即可實現(xiàn)電子琴的變調(diào)功能。4.3彈奏功能的實現(xiàn)當(dāng)按鍵為數(shù)字1-8時,選擇彈奏功能,通過對按鍵的判斷,求得其偏移地址,然后通過查表得其相應(yīng)頻率值,再由上述計算計數(shù)初值的方法求得計數(shù)初值,然后將計數(shù)初值送人8253的通道2,最后調(diào)用發(fā)音子程序即實現(xiàn)彈奏功能。具體程序段如下:subal,31h;求偏移量shlal,1movbl,al;保存偏移量movbh,0movax,num1;計算計數(shù)初值movdx,num2divwordptr[tab+bx]movbx,ax;保存計數(shù)初值4.3演奏功能的實現(xiàn)4.3.1歌曲選擇功能實現(xiàn)當(dāng)按鍵為p時,選擇演奏功能,播放預(yù)存的音樂,由于預(yù)存了兩首歌曲,因此需進(jìn)行選擇,按下p后,顯示輸入提示信息,按1或2選擇對應(yīng)的歌曲,然后調(diào)用相應(yīng)的音樂播放子程序,播放完后顯示輸入提示信息,按q退出,按c繼續(xù)。具體程序?qū)崿F(xiàn)如下:loop2:movdx,offsetmesg1;顯示輸入提示信息movah,09hint21hmovah,07h;從鍵盤讀入一個字符int21hcmpal,'q';為q則退出jechoicecmpal,'1';為1則選擇歌曲1jnenext1callmusic1jmploop3next1:cmpal,'2';為2則選擇歌曲2jneloop2;不為q,1,2則重新選擇callmusic2loop3:movdx,offsetmesg2;播放完后顯示輸入提示信息movah,09hint21hmovah,7;從鍵盤讀入一個字符int21hcmpal,'q';為q則返回jechoicecmpal,'c';為c則繼續(xù)播放jeloop2jmploop34.3.2音樂播放功能實現(xiàn)選擇歌曲后,調(diào)用對應(yīng)的音樂播放子程序,音樂播放需用到循環(huán)結(jié)構(gòu),首先將計數(shù)器清零,接著計數(shù)器自增1,求得偏移量,然后通過查表的到相應(yīng)的頻率,再計算計數(shù)初值,將計數(shù)初值送人8253計數(shù)通道,調(diào)用發(fā)音子程序,若計數(shù)器的值大于歌曲長度,則返回。具體程序段如下。movcl,0;將計數(shù)器清零ad:inccl;計數(shù)器值自增1cmpcl,31;計數(shù)器值若大于歌曲長度,則返回jereturnmoval,clsubal,1;求偏移量shlal,1movbl,al;保存偏移量movbh,0movax,num1;計算計數(shù)初值movdx,num2divwordptr[song2+bx]movbx,axcallspeaker;調(diào)用發(fā)音子程序jmpad5程序運行結(jié)果運行程序后,顯示如下界面,等待輸入字符。圖11程序運行結(jié)果圖1按提示輸入字符,按q則退出,按d選擇低音,按z選擇中音,按g選擇高音,選擇音調(diào)后,顯示如下界面:圖12程序運行結(jié)果圖2等待輸入字符,按q則退出,按p則演奏,按數(shù)字1-8則彈奏。按下p后,程序運行如下:圖13程序運行結(jié)果圖3按提示輸入字符,按下q則返回,按下1或2進(jìn)行歌曲選擇,歌曲播放完后程序運行如下:圖14程序運行結(jié)果圖4按提示按下鍵盤,若按下q,則推出,若按下c,則繼續(xù)播放歌曲。下面是按下c后的運行結(jié)果:圖15程序運行結(jié)果圖5結(jié)束語通過這次課程設(shè)計,我從中學(xué)到了許多從課本上學(xué)不到的東西,鍛煉了自己編程的能力,最后程序運行時能夠?qū)崿F(xiàn)目標(biāo),我感到很有成就感,從中也獲得了很多樂趣,當(dāng)然,最重要的是加深了我對課本理論知識的理解。當(dāng)剛看到這個課設(shè)題目時,我感到無從下手,因為我都不知道PC機(jī)的內(nèi)部具體結(jié)構(gòu),從理論課上只是了解了CPU的結(jié)構(gòu)和工作原理,以及幾個接口芯片的工作原理,還有匯編語言的一些基本指令。但我沒有被嚇到,我冷靜下來思考后,發(fā)現(xiàn)其本質(zhì)就是控制PC機(jī)內(nèi)揚聲器的發(fā)音,通過查閱資料我了解了PC機(jī)內(nèi)揚聲器的電路連接形式,發(fā)現(xiàn)它是由接口芯片8255和8253共同控制的,8255的PB0作為8253通道2的門信號,而8255的PB1和8253通道2的輸出相與后的信號作為揚聲器的驅(qū)動信號,了解了其內(nèi)部接線方式后,思路也就有了,要想讓揚聲器發(fā)聲,8255的PB0和PB1必須同時為高電平,其中之一為低電平時,揚聲器就不能發(fā)聲,而發(fā)聲的音調(diào)則可通過改變8253的計數(shù)初值來實現(xiàn),接下來的任務(wù)就是通過編程來控制8255和8253,從而間接地控制揚聲器的發(fā)聲規(guī)律,而8255和8253這兩個接口芯片在理論課上都已介紹過,對其工作原理和編程方法都有一定的了解,看到這些熟悉的內(nèi)容時,我淡定了很多。有了思路之后,我并沒有急著寫程序,因為我懷疑是不是每臺PC機(jī)的揚聲器接線方式都是這樣的,所以我開始只編了一段控制揚聲器發(fā)音的程序,來看看程序運行時揚聲器到底發(fā)不發(fā)音,結(jié)果發(fā)聲了,這讓我很驚喜,也很有動力,更加激發(fā)了我的興趣,接下來我就開始編寫實現(xiàn)指定功能的程序了,首先是最簡單的彈奏功能,通過對按鍵的判斷來發(fā)出相應(yīng)頻率的聲音,因為要判斷按鍵,所以很自然地就想到了CMP指令,在計算計數(shù)初值時,因為要用到相應(yīng)音符的頻率,所以需要將按鍵轉(zhuǎn)換為音符的頻率,我開始想用課本上常見的XLAT換碼指令,但AL存放的數(shù)最大為128,很明顯容量不夠,于是我采用了基址+變址的尋址方法,在編程的過程中,由于要程序?qū)崿F(xiàn)多個功能,所以用子程序的結(jié)構(gòu)會比較方便,需要完成某個功能時,只需調(diào)用相應(yīng)子程序就可以了,這樣會使得程序的結(jié)構(gòu)清楚明了;在開揚聲器和關(guān)揚聲器之間需要一定的延時,當(dāng)把計數(shù)器置為0ffffh時,延時還是顯得太短,于是延時我采用了AX和CX相配合的方式,使得延時達(dá)到預(yù)期的目的;在完成基本功能后,我還試著加上一些附加功能,比如變調(diào),錄音,通過我的不斷嘗試,終于把變調(diào)功能實現(xiàn)了,但錄音功能沒能像預(yù)期的那樣??傊@次課程設(shè)計讓我學(xué)到了許多從課本上學(xué)不到的知識,加深了對理論知識的理解,激發(fā)了我對匯編語言的興趣。上理論課時,只是老師講,我們聽,那些指令讓我感到很枯燥,因為不知道它到底有什么作用,而這次課程設(shè)計剛好把這些指令應(yīng)用到了實際中來,加深了對各種指令功能的理解,最后功能實現(xiàn)時,感到很有成就感,覺得匯編語言很神奇,激發(fā)了我對它的興趣。參考文獻(xiàn)[1]彭虎,周佩玲.微機(jī)原理與接口技術(shù)(第二版).電子工業(yè)出版社,2010[2]陳慧杰.計算機(jī)揚聲器發(fā)聲的控制.內(nèi)蒙古民族大學(xué)出版社,2001[3]PeterAbel著,沈美明等譯.IBMPC匯編語言設(shè)計程序.人民郵電出版社,2002[4]馮繼超.微機(jī)原理實驗指導(dǎo)書.武漢理工大學(xué)出版社,2010附錄程序清單datasegmentmesgdb'pressqtoquit,pressdorzorhtochoseyindiao',0ah,0dh,'$'mesg1db'pressqtoreturn,press1or2tochosemusic',0ah,0dh,'$'mesg2db'pressqtoreturn,pressctocontinue',0ah,0dh,'$'mesg3db'pressqtoreturn,pressptoplaymusic,press1~8tohandplay',0ah,0dh,'$'num1dw34dchnum2dw12htabdw262,294,330,347,392,440,494,524song1dw262,294,330,262,262,294,330,262dw330,347,392,330,347,392,392,440dw392,347,330,262,392,440,392,347dw330,262,392,262,392,392,262,392;兩只老虎song2dw330,330,347,392,392,347,330,294dw262,262,294,330,330,294,294,330dw330,347,392,392,347,330,294,262dw262,294,330,294,262,262;歡樂頌dataendscodesegment assumecs:code,ds:datastart:movax,datamovds,axloop0:movdx,offsetmesg;顯示輸入提示信息movah,09hint21loop1:movah,07h;讀入字符int21hcmpal,'q';為q則退出jedonecmpal,'d';為d,選擇低音jnej1movnum2,50jmpchoicej1:cmpal,'z';為z選擇中音jnej2movnum2,12hjmpchoicej2:cmpal,'g';為g選擇高音jneloop0movnum2,06hchoice:movdx,offsetmesg3movah,09hint21hput1:movah,07hint21hcmpal,'q';為q則返回jeloop0cmpal,'p';為p選擇演奏jnenextcallplayjmpput1next:cmpal,'1';為1-8,選擇彈奏jlloop1cmpal,'8'jgput1callhandjmpput1handprocnear;彈奏子程序subal,31hshlal,1movbl,almovbh,0movax,num1movdx,num2divwordptr[tab+bx]movbx,axcallspeakerrethandendpplayprocnear;演奏子程序loop2:movdx,offsetmesg1movah,09hint21hmovah,07h;讀入字符int21hcmpal,'q';為q則返回jechoicecmpal,'1';為1,播放歌曲1jnenext1callmusic1jmploop3next1:cmpal,'2';為2,播放歌曲2jneloop2callmusic2loop3:movdx,offsetmesg2movah,09hint21hmovah,7;讀入字符int21hcmpal,'q';為q則退出jechoicecmpal,'c';為c則繼續(xù)jeloop2jmploop3retplayendpmusic1procnear;音樂1播放子程序movcl,0ad:incclcmpcl,33jereturnmoval,clsubal,1;取偏移量shlal,1movbl,al;保存偏移量movbh,0movax,num1;計算計數(shù)初值movdx,num2divwordptr[song1+bx]movbx,axcallspeakerjmpadreturn:retmusic1endpmusic2procnear;音樂2播放子程序movcl,0ad:incclcmpcl,31jereturnmoval,clsubal,1shlal,1movbl,almovbh,0movax,num1movdx,num2divwordptr[song2+bx]movbx,axcallspeakerjmpadreturn:retmusic2endpspeakerprocnear;發(fā)音子程序moval,10110110bout43h,almovax,bxout42h,almoval,ahout42h,al;8253初始化inal,61h;開揚聲器oral,03hout61h,alcalldelayinal,61h;關(guān)揚聲器andal,0fchout61h,alretspeakerendpdelayprocnear;延時子程序pushaxpushcxmovax,12loop4:movcx,0ffffhloop5:looploop5decaxjnzloop4popcxpopaxretdelayendpdone:movax,4c00hint21hcodeendsendstart本科生課程設(shè)計成績評定表姓名劉沛性別男專業(yè)、班級電氣0901班課程設(shè)計題目:計算機(jī)電子琴軟件設(shè)計課程設(shè)計答辯或質(zhì)疑記錄:成績評定依據(jù):評定項目1.選題合理、目的明確(10分)2.設(shè)計方案正確、具有可行性、創(chuàng)新性(20分)3.設(shè)計結(jié)果(20分)4態(tài)度認(rèn)真、學(xué)習(xí)刻苦、遵守紀(jì)律(10分)5.設(shè)計報告的規(guī)范化、參考文獻(xiàn)充分(20分)6.答辯(20分)7.總分(100分) 最終評定成績(以優(yōu)、良、中、及格、不及格評定)指導(dǎo)教師簽字:年月日2010級微機(jī)原理課程設(shè)計實驗報告設(shè)計題目:電子時鐘設(shè)計班級:電信10102班分組名單:2012-6-28目錄第一章設(shè)計部分1.1設(shè)計目的…………11.2設(shè)計要求…………11.3設(shè)計思路…………1第二章實現(xiàn)部分2.1、分析論證2.1.1顯示模塊……………………12.1.2時鐘運算模塊………………12.1.3對時模塊……………………22.2、原理說明………………………22.3、設(shè)計電路圖……………………22.3.18086最小工作方式…………22.3.2秒脈沖發(fā)生器………………32.3.3時、分調(diào)整電路……………32.3.4.顯示電路………………………42.4、元件功能說明2.4.1.8253的主要功能……………42.4.2.D觸發(fā)器74ls273管腳排列圖及功能表介紹………………52.4.3單向總線驅(qū)動器74ls244功能介紹…………52.5、程序清單…………62.6、調(diào)試過程遇到問題及解決方法…………………9第三章電子時鐘使用說明3.1電子時鐘按鍵說明第四章學(xué)習(xí)心得附錄參考文獻(xiàn)………………9第一章設(shè)計部分1.1設(shè)計目的學(xué)習(xí)掌握protues軟件功能及其使用方法熟練掌握TND86/88教學(xué)系統(tǒng)的基本操作和調(diào)試程序的各種指令。熟練掌握8086CPU的使用與編程調(diào)試程序的方法。掌握8253定時/計數(shù)器的工作原理、工作方式及其應(yīng)用編程。練習(xí)7SEG-MPX8-CA-RED數(shù)碼管的顯示編程方法。1.2、設(shè)計要求利用8253定時器設(shè)計一個具有時、分、秒顯示的電子時鐘,并定義一個啟動鍵,當(dāng)按下該鍵時時鐘從當(dāng)前設(shè)定值(可在顯示緩沖區(qū)中予置)開始走時。1.3、設(shè)計思路電子時鐘主要由顯示模塊、對時模塊和時鐘運算模塊三大部分組成。其中對時模塊和時鐘運算模塊要對時、分、秒的數(shù)值進(jìn)行操作,并且秒計算到60時,要自己清零并向分進(jìn)1;分計算到60時,要自己清零并向時進(jìn)1;時計算到24時,要清零。這樣,才能循環(huán)記時。顯示時利用7段顯示器顯示六位十進(jìn)制數(shù)據(jù)。前兩個顯示小時,中間兩個顯示分鐘,后兩個顯示秒。時鐘的運算是利用中斷來實現(xiàn)的,利用8253的模式三輸出一定頻率的方波作為觸發(fā)中斷的條件。8253A可編程定時/計數(shù)器的輸入時鐘為100KHz,設(shè)定時/計數(shù)器0的計數(shù)初值為100,工作在方式3,即方波發(fā)生器,其輸出的1KHz方波作定時/計數(shù)器2的時鐘。定時/計數(shù)器2的初值設(shè)為1000,工作在方式2,即每隔1s輸出負(fù)脈沖,取反后用作不可屏蔽中斷的中斷申請信號,在中斷服務(wù)程序中計算時間,并通過74ls273并行輸出到數(shù)碼管顯示。第二章實現(xiàn)部分2.1、分析論證2.1.1、顯示模塊利用數(shù)碼管的顯示功能來設(shè)計。數(shù)碼管是由八個條形發(fā)光二極管組成的,這些發(fā)光二極管的陰極是互相連接在一起的,所以稱為共陰極數(shù)碼管。通過在這八個發(fā)光二極管的陽極加+5V或0V的電壓使不同的二極管發(fā)光,形成不同的字符和數(shù)字。電子時鐘用到的是0到9十個數(shù)字,他們所對應(yīng)的字符表依次是3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH。該模塊顯示時先將保存在數(shù)據(jù)單元的當(dāng)前時間包括小時和分鐘讀取出來,把十六進(jìn)制數(shù)字轉(zhuǎn)化成十進(jìn)制用四個字節(jié)分別存放小時和分鐘,并把這四個數(shù)值通過74ls273端口輸出給數(shù)碼管顯示。2.1.2、時鐘運算模塊該模塊的主要功能是對時、分、秒的運算,并把運算出的最終結(jié)果存到事先已經(jīng)開辟的內(nèi)存單元里,以便顯示模塊即時地顯示出來。該模塊可以細(xì)分為秒定時模塊和運算模塊。秒定時模塊負(fù)責(zé)提供中斷信號,由于CPU運算模塊中的指令消耗一定的時間,所以中斷信號最好通過硬件來實現(xiàn),選擇的是8253定時/計數(shù)器,但又因為8253所能提供的信號的周期時毫秒級的,因此必須通過軟件的方法在運算模塊中設(shè)置一個統(tǒng)計中斷次數(shù)的變量,并且這一變量必須事先在內(nèi)存里開辟存儲單元。中斷信號是8253的計數(shù)器2工作方式為方式2時,同過設(shè)置計數(shù)器2的初值來產(chǎn)生一個1s的脈沖信號。運算模塊負(fù)責(zé)時、分、秒的計算,該模塊主要通過8086的NMI信號中斷來實現(xiàn),首先將秒定時模塊提供的中斷信號為8086的NMI中斷請求信號。但由于每1s一次中斷請求。所以在中斷服務(wù)程序必須利用已申請內(nèi)存單元count來統(tǒng)計中斷請求的次數(shù),只有當(dāng)count的值為1000時,才能讓秒單元內(nèi)的數(shù)值加1。另外,在中斷服務(wù)程序里,必須對秒、分和時的單元內(nèi)的數(shù)值進(jìn)行判斷,當(dāng)秒加到60時,分必須加1、秒清零;當(dāng)分加到60時,時加1、分清零。當(dāng)時加到24啊,直接清零。2.1.3、對時模塊該模塊主要功能是修改小時、分鐘內(nèi)存單元的數(shù)值。在對時的時候,秒繼續(xù)走時,并且在對分進(jìn)行調(diào)整的時,時單元內(nèi)的數(shù)值不變。由以上分析可見,對時、分的調(diào)整用兩個優(yōu)先級高于NMI的中斷來完成。兩個中斷源的中斷請求信號只需直接接在兩個按鍵即可起到對時作用。2.2、原理說明電子時鐘主要由74ls273鎖存器、8253定時/計數(shù)器、74ls244反相器、LED數(shù)碼顯示管和兩個按鍵組成。主要用8086的NMI的中斷服務(wù)程序完成秒、分、時的運算即計時功能,兩個開關(guān)的中斷服務(wù)程序完成調(diào)時、調(diào)分功能。8253用來產(chǎn)生1s的脈沖信號作為NMI的中斷請求信號。74ls273負(fù)責(zé)將內(nèi)存里的時位和分位秒位值輸出到數(shù)碼管。2.3、設(shè)計電路圖電子時鐘的完整電路圖如下:2.3.1.8086最小工作方式2.3.2秒脈沖發(fā)生器2.3.3時、分調(diào)整電路2.3.4.顯示電路2.4、元件功能說明2.4.1、8253的主要功能:可編程定時器/計數(shù)器,其定時與計數(shù)功能可由程序靈活地設(shè)定,設(shè)定后與CPU并行工作,不占用CPU的時間。計數(shù)器2工作在模式3方式下,提供計算一秒的中斷請求信號。2.4.2、D觸發(fā)器74ls273管腳排列圖及功能表介紹74LS273是一種帶清除功能的8D觸發(fā)器,1D~8D為數(shù)據(jù)輸入端,1Q~8Q為數(shù)據(jù)輸出端,正脈沖觸發(fā),低電平清除,常用作數(shù)據(jù)鎖存器,地址鎖存器。2.4.3、單向總線驅(qū)動器74ls244功能介紹74LS244是8路3態(tài)單向緩沖驅(qū)動,也叫做總線驅(qū)動門電路或線驅(qū)動。簡單地說,它有8個輸入端,8個輸出端,可以增加信號的驅(qū)動能力.為單向驅(qū)動。A為輸入,Y為輸出,高電平有效。2.5、程序清單.MODELSMALL.8086.STACK.CODE.STARTUPNMI_INIT:PUSHES;nmi不可屏蔽中斷向量表初始化XORAX,AXMOVES,AXMOVAL,02HXORAH,AHSHLAX,1SHLAX,1MOVSI,AX;相當(dāng)于cs,ip入棧MOVAX,OFFSETNMI_SERVICE;調(diào)用中斷處理程序MOVES:[SI],AXINCSIINCSIMOVBX,CS;?MOVES:[SI],BXPOPES;定時器初始化MOVAL,00110111BMOVDX,0406HOUTDX,ALMOVDX,0400HMOVAX,0100HOUTDX,ALMOVAL,AHOUTDX,ALMOVAL,10110101BMOVDX,0406HOUTDX,ALMOVDX,0404HMOVAX,1000HOUTDX,ALMOVAL,AHOUTDX,ALLOOP0:;主任務(wù)CALLKEYCALLDISPJMPLOOP0NMI_SERVICE:;中斷服務(wù)程序PUSHAXMOVAL,SECADDAL,1DAAMOVSEC,ALCMPSEC,60HJBEXITMOVSEC,0MOVAL,MINADDAL,1DAAMOVMIN,ALCMPMIN,60HJBEXITMOVMIN,0MOVAL,HOUADDAL,1DAAMOVHOU,ALCMPHOU,24JBEXITMOVHOU,0EXIT:POPAXIRETDISPPROCNEARMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVBL,SECANDBX,000FHMOVSI,BXMOVAL,SITUATION[SI];段碼MOVDX,0200HOUTDX,ALMOVAL,0FEH;秒個位MOVDX,0201HOUTDX,ALCALLDELAYMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVBL,SECANDBX,00F0HMOVCL,4SHRBX,CLMOVSI,BXMOVAL,SITUATION[SI];段碼MOVDX,0200HOUTDX,ALMOVAL,0FDH;秒十位MOVDX,0201HOUTDX,ALCALLDELAYMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVAL,40H;段碼MOVDX,0200HOUTDX,ALMOVAL,0FBH;秒個位MOVDX,0201HOUTDX,ALCALLDELAYMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVBL,MINANDBX,000FHMOVSI,BXMOVAL,SITUATION[SI];段碼MOVDX,0200HOUTDX,ALMOVAL,0F7H;分個位MOVDX,0201HOUTDX,ALCALLDELAYMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVBL,MINANDBX,00F0HMOVCL,4SHRBX,CLMOVSI,BXMOVAL,SITUATION[SI];段碼MOVDX,0200HOUTDX,ALMOVAL,0EFH;分十位MOVDX,0201HOUTDX,ALCALLDELAYMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVAL,40H;段碼MOVDX,0200HOUTDX,ALMOVAL,0DFH;秒個位MOVDX,0201HOUTDX,ALCALLDELAYMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVBL,HOUANDBX,000FHMOVSI,BXMOVAL,SITUATION[SI];段碼MOVDX,0200HOUTDX,ALMOVAL,0BFH;時個位MOVDX,0201HOUTDX,ALCALLDELAYMOVAL,0FFH;不顯示MOVDX,0201HOUTDX,ALMOVBL,HOUANDBX,00F0HMOVCL,4SHRBX,CLMOVSI,BXMOVAL,SITUATION[SI];段碼MOVDX,0200HOUTDX,ALMOVAL,07FH;時十位MOVDX,0201HOUTDX,ALCALLDELAYRETDISPENDPKEYPROCNEARMOVDX,0600HINAL,DXTESTAL,01HJNZNEXTHOUCALLDISP;消抖CALL

溫馨提示

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

最新文檔

評論

0/150

提交評論