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

下載本文檔

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

文檔簡(jiǎn)介

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

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論