微機(jī)原理課程設(shè)計(jì)報(bào)告-12_第1頁
微機(jī)原理課程設(shè)計(jì)報(bào)告-12_第2頁
微機(jī)原理課程設(shè)計(jì)報(bào)告-12_第3頁
微機(jī)原理課程設(shè)計(jì)報(bào)告-12_第4頁
微機(jī)原理課程設(shè)計(jì)報(bào)告-12_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

合肥工業(yè)大學(xué)計(jì)算機(jī)與信息學(xué)院課程設(shè)計(jì)課程:微機(jī)原理與接口技術(shù)設(shè)計(jì)專業(yè)班級(jí):計(jì)算機(jī)科學(xué)與技術(shù)11-1班學(xué)號(hào):20112446姓名:朱明明用8255和8253使發(fā)光二極管按一定規(guī)律輪流點(diǎn)亮一、設(shè)計(jì)題目及要求:發(fā)光二極管點(diǎn)亮方式:將發(fā)光二極管分為n組,每組12/n個(gè)燈管,從左到右依次點(diǎn)亮這些燈管,每組燈管發(fā)光時(shí)間為t。設(shè)有4種發(fā)光組合:(1)n=12,t=1s:每個(gè)燈管間隔1s循環(huán)點(diǎn)亮。(2)n=12,t=2s:每個(gè)燈管間隔2s循環(huán)點(diǎn)亮。(3)n=6,t=1s:每?jī)蓚€(gè)燈管間隔1s循環(huán)點(diǎn)亮。(4)n=6,t=2s:每?jī)蓚€(gè)燈管間隔2s循環(huán)點(diǎn)亮。這四種方式分別對(duì)應(yīng)按鍵“A”、“B”、“C”、“D”。按對(duì)應(yīng)按鍵后進(jìn)入對(duì)應(yīng)方式。退出:按“E”鍵后,所有燈管滅,七段數(shù)碼管顯示初始“P.”狀態(tài)二、設(shè)計(jì)思想:82538253鍵盤八段數(shù)碼管二極管8255控制暗滅提供延時(shí)接受顯示按鍵圖1各模塊之間的關(guān)系該系統(tǒng)以可編程并行接口芯片8255為核心控制二極管的暗滅,通過Intel8253可編程定時(shí)/計(jì)數(shù)器產(chǎn)生的延時(shí)來延時(shí),通過鍵盤掃描來接受外部控制.并通過八段數(shù)碼管將A,B,C,D顯示,并且轉(zhuǎn)入相應(yīng)的模式執(zhí)行。三、功能流程圖:由于四種發(fā)光組合分別對(duì)應(yīng)按鍵“A”、“B”、“C”、“D”。按對(duì)應(yīng)按鍵后進(jìn)入對(duì)應(yīng)方式。因此這里我們只描述一種發(fā)光情況下的功能流程圖,不同情況下的發(fā)光方式切換由程序調(diào)用不同的子模塊完成。這里為了描述方便,我們選取發(fā)光組合1來描述,n=12,t=1s,即每個(gè)燈管間隔1s循環(huán)點(diǎn)亮。功能流程如下:初始化8255,8253的工作方式,循環(huán)次數(shù)=12,當(dāng)前二極管狀態(tài)i初始化8255,8253的工作方式,循環(huán)次數(shù)=12,當(dāng)前二極管狀態(tài)i顯示當(dāng)前二極管狀態(tài),調(diào)用8253提供的延時(shí)循環(huán)次數(shù)減一,二極管狀態(tài)加一顯示當(dāng)前二極管狀態(tài),調(diào)用8253提供的延時(shí)循環(huán)次數(shù)減一,二極管狀態(tài)加一掃描小鍵盤鍵盤判斷是否按下A,B,C,D判斷是否按下A,B,C,DNNYY轉(zhuǎn)到對(duì)應(yīng)按鍵的發(fā)光組合轉(zhuǎn)到對(duì)應(yīng)按鍵的發(fā)光組合模塊一8255實(shí)驗(yàn)中我們使用8255的B口和C口的低4位控制二極管的開關(guān),由于實(shí)驗(yàn)箱提供的二極管采用共陽極接法,因此當(dāng)B,C口輸出低電平則點(diǎn)亮對(duì)應(yīng)的二極管,輸出高電平則關(guān)閉對(duì)應(yīng)的二極管,所以B,C口設(shè)置為輸出口,實(shí)驗(yàn)中采用方式一;模塊二小鍵盤識(shí)別實(shí)驗(yàn)系統(tǒng)的實(shí)驗(yàn)臺(tái)上有1個(gè)24鍵小鍵盤,組成一個(gè)3X8的鍵盤矩陣。在設(shè)計(jì)鍵盤程序時(shí),我們采用行掃描法,所謂行掃描法,就是一行一行地掃描,以確定按鍵的位置。具體地說:先使第0行接地,其余行為高電平,看第一行是否有鍵閉合。如果此時(shí)某條列線為低電平,則表示第0行和此列相交位置上的鍵被按下;如果所有列線均為高電平,則無鍵按下。接著掃描下一行,用同樣方法確定是否有鍵按下,如此往下逐行掃描,直至最后一行。在掃描的過程中,當(dāng)發(fā)現(xiàn)有鍵按下時(shí)便退出掃描。根據(jù)行線和列線位置,便可識(shí)別出是哪一個(gè)鍵閉合。通常在鍵盤掃描程序的第一步迅速判斷是否有鍵按下。具體辦法是使所有行均輸出低電平,檢查列線中是否有低電平。若有,則表示有鍵按下,經(jīng)延遲去抖動(dòng)后,在按前述方法判別按鍵的具體位置;若無則循環(huán)等待。另外,在設(shè)計(jì)鍵盤程序時(shí),我們還考慮了如何消除抖動(dòng)問題。抖動(dòng)是指用手按下鍵時(shí),按鍵往往會(huì)在閉合狀態(tài)和斷開狀態(tài)之間來回跳動(dòng)。若不解決抖動(dòng)問題會(huì)引起對(duì)閉合鍵的錯(cuò)誤識(shí)別,由于抖動(dòng)持續(xù)時(shí)間通常不大于10ms,因此可通過延遲來等待抖動(dòng)消失。模塊三七段數(shù)碼管為了使我們的系統(tǒng)更便于觀察和驗(yàn)證,我們添加了8段數(shù)碼管的應(yīng)用,即不僅在小鍵盤上按下ABCD任意一個(gè)按鍵后,程序不僅跳到相應(yīng)的發(fā)光組合下執(zhí)行,而且還先會(huì)在七段數(shù)碼管上顯示相應(yīng)的按鍵。如圖圖2所示,實(shí)驗(yàn)臺(tái)上設(shè)有6個(gè)共陰極七段數(shù)碼管及驅(qū)動(dòng)電路,段碼為同向驅(qū)動(dòng),位碼為反向驅(qū)動(dòng),從段碼與位碼的驅(qū)動(dòng)器輸入端(段碼輸入端:a、b、c、d、e、f、g、dp,位碼輸入端:s1,s2,s3,s4,s5,s6)輸入不同的代碼就可以顯示不同數(shù)字或符號(hào)。圖2 數(shù)碼管顯示電路當(dāng)往段碼鎖存器的某位輸出高電平,則對(duì)應(yīng)的二極管發(fā)光。據(jù)此,可得字形代碼表,見圖3。段碼鎖存器的最高位為dp,此位對(duì)應(yīng)數(shù)碼管右下角的小圓點(diǎn),當(dāng)dp位為1,小圓點(diǎn)發(fā)光。圖6-2數(shù)碼管字形代碼表往段碼鎖存器輸出字形后,還需要相應(yīng)位的位碼選中的數(shù)碼管才能顯示段碼對(duì)應(yīng)的字形。位碼格式如下:D7D6D5D4D3D2D1D0XXS6S5S4S3S2S1位碼的高兩位無意義,當(dāng)其余某位為1時(shí),則對(duì)應(yīng)的數(shù)碼管被選中,顯示段碼對(duì)應(yīng)的字形。例如,當(dāng)位碼為01H時(shí),左方第一個(gè)數(shù)碼管被選中;當(dāng)位碼為3FH時(shí),6個(gè)數(shù)碼管均被選中。模塊三LED二極管控制在某一種方式下,循環(huán)點(diǎn)亮各二極管所以每次顯示各二極管的狀態(tài)是確定的,在n=12,t=1s,12輪循環(huán)的狀態(tài)對(duì)應(yīng)如下B口:07FH0BFH0DFH0EFH0F7H0FBH0FDH0FEH0FFH0FFH,0FFH,0FFHC口0FFH0FFH0FFH0FFH0FFH0FFH0FFH0FFH0F7H0FBH0FDH0FEH把這些狀態(tài)做成一張狀態(tài)表,每次直接從8255的BC口輸出即可;模塊四8253提供延時(shí)實(shí)驗(yàn)臺(tái)上數(shù)碼管的左下方有個(gè)分頻器模塊,有T0到T78個(gè)固定頻率輸出可以作為8253的時(shí)鐘輸入。8253采用計(jì)數(shù)器1和計(jì)數(shù)器2,其中計(jì)數(shù)器1的輸出作為計(jì)數(shù)器2的輸入,得到一秒的低電平型號(hào),接到8255的A0引腳上,所以8255A口設(shè)置為輸入口,同樣采用方式0.結(jié)果討論:實(shí)驗(yàn)連線如下8253延時(shí)連線系統(tǒng)整體連線經(jīng)老師驗(yàn)證,實(shí)驗(yàn)很好的完成了課程設(shè)計(jì)的要求,除此之外,我們做了以下幾點(diǎn)改進(jìn)第一,設(shè)計(jì)鍵盤程序時(shí),我們做了消除按鍵抖動(dòng)問題。抖動(dòng)是指用手按下鍵時(shí),按鍵往往會(huì)在閉合狀態(tài)和斷開狀態(tài)之間來回跳動(dòng)。若不解決抖動(dòng)問題會(huì)引起對(duì)閉合鍵的錯(cuò)誤識(shí)別,由于抖動(dòng)持續(xù)時(shí)間通常不大于10ms,因此可通過延遲來等待抖動(dòng)消失。第二,將按鍵顯示到七段數(shù)碼管上。為了使我們的系統(tǒng)更便于觀察和驗(yàn)證,我們添加了8段數(shù)碼管的應(yīng)用,即在小鍵盤上按下ABCD任意一個(gè)按鍵后,程序不僅跳到相應(yīng)的發(fā)光組合下執(zhí)行,而且還會(huì)在七段數(shù)碼管上顯示相應(yīng)的按鍵。第三,添加了依次點(diǎn)亮4個(gè)黃燈,綠燈,紅燈的發(fā)光組合。由于我們組5個(gè)人,完成了基本功能后,向老師征求意見,添加了新的亮燈方式,并很好的是實(shí)現(xiàn)了。附錄:實(shí)驗(yàn)代碼:(完整的源程序)CODESEGMENTASSUMECS:CODE,DS:CODE,ES:CODEORG1000HSTART:CALLMODE1CMPFLAG,1JEGO1CALLMODE2CMPFLAG,1JEGO1CALLMODE3CMPFLAG,1JEGO1CALLMODE4CMPFLAG,1JEGO1CALLMODE5CMPFLAG,1JEGO1JMPSTART;顯示期間無A-F鍵按下就循環(huán)顯示4中模式HERE:CALLGETKEYGO1:MOVFLAG,0PUSHCXMOVCX,1000HDIS:CALLDISPLAY;顯示按鍵LOOPDISPOPCXCMPAL,0AH;按下A鍵JEL1CMPAL,0BH;按下B鍵JEL2CMPAL,0CH;按下C鍵JEL3CMPAL,0DH;按下D鍵JEL4CMPAL,0FH;按下F鍵JEL5JMPSTARTL:MOVLEDBUF,0CH;顯示P.JMPHEREL1:CALLMODE1CMPFLAG,1JEGO1JMPLL2:CALLMODE2CMPFLAG,1JEGO1JMPLL3:CALLMODE3CMPFLAG,1JEGO1JMPLL4:CALLMODE4CMPFLAG,1JEGO1JMPLL5:CALLMODE5CMPFLAG,1JEGO1JMPLMODE1:;小燈分為12組,每隔1秒循環(huán)顯示一個(gè)LED亮,其它都滅MOVDX,PCTLMOVAL,90H;A口作為輸入口,用于接收8253的out2輸出信號(hào)B,C口作為輸出口,用于控制LED的亮滅OUTDX,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVCX,000CH;循環(huán)12次MOVSI,0MOVDI,0AGAIN1:PUSHCXCALLGETKEY;掃描鍵盤,得到按鍵的數(shù)值,結(jié)果保存在al中POPCXCMPAL,0AHJBMODE1_GO1CMPAL,0FHJAMODE1_GO1MOVFLAG,1JMPMODE1_GO2MODE1_GO1:MOVDX,PBMOVAL,MODE12_DATA_PB[SI];向PB口輸出數(shù)據(jù)OUTDX,ALMOVDX,PCMOVAL,MODE12_DATA_PC[DI];向PC口輸出數(shù)據(jù)OUTDX,ALINCSIINCDICALLDELAY_1_SECOND;延時(shí)一秒LOOPAGAIN1MODE1_GO2:MOVAH,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVAL,AHRETMODE2:;小燈分為12組,每隔2秒循環(huán)顯示一個(gè)LED亮,其它都滅MOVDX,PCTLMOVAL,90H;A作為輸出口B,C口作為輸出口,用于控制LED的亮滅OUTDX,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVCX,000CH;循環(huán)12次MOVSI,0MOVDI,0AGAIN2:PUSHCXCALLGETKEY;掃描鍵盤POPCXCMPAL,0AHJBMODE2_GO1CMPAL,0FHJAMODE2_GO1MOVFLAG,1JMPMODE2_GO2MODE2_GO1:MOVDX,PBMOVAL,MODE12_DATA_PB[SI];向PB口輸出數(shù)據(jù)OUTDX,ALMOVDX,PCMOVAL,MODE12_DATA_PC[DI];向PC口輸出數(shù)據(jù)OUTDX,ALINCSIINCDICALLDELAY_1_SECOND;延時(shí)2秒CALLDELAY_1_SECONDLOOPAGAIN2MODE2_GO2:MOVAH,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVAL,AHRETMODE3:;小燈分為6組,每隔1秒循環(huán)顯示2個(gè)LED亮,其它都滅MOVDX,PCTLMOVAL,90H;B,C口作為輸出口,用于控制LED的亮滅OUTDX,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVCX,0006H;循環(huán)6次MOVSI,0MOVDI,0AGAIN3:PUSHCXCALLGETKEY;掃描鍵盤POPCXCMPAL,0AHJBMODE3_GO1CMPAL,0FHJAMODE3_GO1MOVFLAG,1JMPMODE3_GO2MODE3_GO1:MOVDX,PBMOVAL,MODE34_DATA_PB[SI];向PB口輸出數(shù)據(jù)OUTDX,ALMOVDX,PCMOVAL,MODE34_DATA_PC[DI];向PC口輸出數(shù)據(jù)OUTDX,ALINCSIINCDICALLDELAY_1_SECONDLOOPAGAIN3MODE3_GO2:MOVAH,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVAL,AHRETMODE4:;小燈分為6組,每隔2秒循環(huán)顯示2個(gè)LED亮,其它都滅MOVDX,PCTLMOVAL,90H;B,C口作為輸出口,用于控制LED的亮滅OUTDX,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVCX,0006H;循環(huán)6次MOVSI,0MOVDI,0AGAIN4:PUSHCXCALLGETKEY;掃描鍵盤POPCXCMPAL,0AHJBMODE4_GO1CMPAL,0FHJAMODE4_GO1MOVFLAG,1JMPMODE4_GO2MODE4_GO1:MOVDX,PBMOVAL,MODE34_DATA_PB[SI];向PB口輸出數(shù)據(jù)OUTDX,ALMOVDX,PCMOVAL,MODE34_DATA_PC[DI];向PC口輸出數(shù)據(jù)OUTDX,ALINCSIINCDICALLDELAY_1_SECONDCALLDELAY_1_SECONDLOOPAGAIN4MODE4_GO2:MOVAH,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVAL,AHRETMODE5:;小燈分為3組,每隔1秒循環(huán)顯示4個(gè)LED亮,其它都滅MOVDX,PCTLMOVAL,90H;B,C口作為輸出口,用于控制LED的亮滅OUTDX,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVCX,0003H;循環(huán)3次MOVSI,0MOVDI,0AGAIN5:PUSHCXCALLGETKEY;掃描鍵盤POPCXCMPAL,0AHJBMODE5_GO1CMPAL,0FHJAMODE5_GO1MOVFLAG,1JMPMODE5_GO2MODE5_GO1:MOVDX,PBMOVAL,MODE5_DATA_PB[SI];向PB口輸出數(shù)據(jù)OUTDX,ALMOVDX,PCMOVAL,MODE5_DATA_PC[DI];向PC口輸出數(shù)據(jù)OUTDX,ALINCSIINCDICALLDELAY_1_SECONDLOOPAGAIN5MODE5_GO2:MOVAH,ALMOVDX,PB;滅所有的LED燈MOVAL,0FFHOUTDX,ALMOVDX,PCMOVAL,0FFHOUTDX,ALMOVAL,AHRETDELAY_1_SECOND:;8253MOVDX,DCTLMOVAL,37H;計(jì)數(shù)器0,模式三,BCD碼輸入初始值OUTDX,ALMOVDX,DATA0;計(jì)數(shù)初值為384MOVAL,0FFHOUTDX,ALMOVAL,03HOUTDX,ALMOVDX,DCTL;計(jì)數(shù)器2,模式3,BCD碼輸入初始值MOVAL,0B7HOUTDX,ALMOVDX,DATA2;計(jì)數(shù)初值為100MOVAL,0FFHOUTDX,ALMOVAL,01HOUTDX,AL;8255MOVAL,0;測(cè)試PA0=1時(shí),計(jì)時(shí)達(dá)一秒,跳出延時(shí)程序MOVDX,PABACK:INAL,DXTESTAL,1JNZBACKRETGETKEY:;鍵掃子程序moval,0ffh;關(guān)顯示口movdx,OUTSEGoutdx,almovbl,0movah,0fehmovcx,8key1:moval,ahmovdx,OUTBIToutdx,alshlal,1movah,alnopnopnopnopnopnopmovdx,IN_KEYinal,dxnotalnopnopandal,0fhjnzkey2incblloopkey1nkey:moval,20hretkey2:testal,1jekey3moval,0jmpkey6key3:testal,2jekey4moval,8jmpkey6key4:testal,4jekey5moval,10hjmpkey6key5:testal,8jenkeymoval,18hkey6:addal,blcmpal,10hjncfkeymovbx,offsetKeyTablexlatfkey:retDISPLAY:MOVAH,AL;保存ALMOVLEDBUF,0CHCMPAL,0AHJELEAVE1CMPAL,0BHJELEAVE2CMPAL,0CHJELEAVE3CMPAL,0DHJELEAVE4CMPAL,0EHJELEAVE5CMPAL,0FHJELEAVE6BACK1:MOVDX,OUTBITMOVAL,0OUTDX,AL;關(guān)所有八段管,對(duì)應(yīng)位為1時(shí)該段被選中MOVAL,LEDBUFMOVDX,OUTSEGOUTDX,ALMOVDX,OUTBITMOVAL,00100000BOUTDX,AL;顯示最左邊一位八段管CALLDELAYMOVDX,OUTBITMOVAL,0OUTDX,AL;關(guān)所有八段管MOVAL,AH;恢復(fù)ALRETLEAVE1:MOVLEDBUF,088HJMPBACK1LEAVE2:MOVLEDBUF,083HJMPBACK1LEAVE3:MOVLEDBUF,0C6HJMPBACK1LE

溫馨提示

  • 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)論