微機(jī)原理綜合實(shí)驗(yàn)報(bào)告(LED橫向滾動(dòng)顯示(方向修改)、電子鐘修改實(shí)驗(yàn))_第1頁
微機(jī)原理綜合實(shí)驗(yàn)報(bào)告(LED橫向滾動(dòng)顯示(方向修改)、電子鐘修改實(shí)驗(yàn))_第2頁
微機(jī)原理綜合實(shí)驗(yàn)報(bào)告(LED橫向滾動(dòng)顯示(方向修改)、電子鐘修改實(shí)驗(yàn))_第3頁
微機(jī)原理綜合實(shí)驗(yàn)報(bào)告(LED橫向滾動(dòng)顯示(方向修改)、電子鐘修改實(shí)驗(yàn))_第4頁
微機(jī)原理綜合實(shí)驗(yàn)報(bào)告(LED橫向滾動(dòng)顯示(方向修改)、電子鐘修改實(shí)驗(yàn))_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理上機(jī)實(shí)驗(yàn)報(bào)告綜合實(shí)驗(yàn):LED16x16點(diǎn)陣顯示實(shí)驗(yàn)豎向顯示改橫向顯示電子鐘功能修改微機(jī)原理綜合實(shí)驗(yàn)報(bào)告綜合實(shí)驗(yàn)1:LED16x16點(diǎn)陣豎向顯示改橫向顯示實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?、熟悉8255的功能,了解點(diǎn)陣顯示的原理及控制方法;2、學(xué)會(huì)使用LED點(diǎn)陣,通過編程顯示不同字符;3、認(rèn)真預(yù)習(xí)本節(jié)實(shí)驗(yàn)內(nèi)容,可嘗試自行編寫程序,做好實(shí)驗(yàn)準(zhǔn)備工作,填寫實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)內(nèi)容1、編寫程序,用B4區(qū)的二片74HC273控制16X16點(diǎn)陣的行;8255的PA、PB口控制16X16點(diǎn)陣的列;顯示字符。2、按圖連接線路;運(yùn)行程序,觀察實(shí)驗(yàn)結(jié)果,學(xué)會(huì)編程控制LED點(diǎn)陣顯示字符。實(shí)驗(yàn)原理圖實(shí)驗(yàn)步驟連線說明:D3區(qū):CS(8255)、A0、A1——A3區(qū):CS1、A0、A1D3區(qū):JP23(PA)、JP20(PB)——A2區(qū):JP21、JP22(列輸出線)B4區(qū):JP57(D0..D7)——A3區(qū):JP42(D0..D7)B4區(qū):JP56(D8..D15)——A3區(qū):JP40(D8..D15)B4(I/O)區(qū):CS273、BLE、BHE——A3區(qū):CS5、BLE、BHEB4(I/O)區(qū):RD、WR——A3區(qū):IOR、IOWB4(I/O)區(qū):JP51、JP55——A2區(qū):JP14、JP15(行輸出線)(注意連線方向) 運(yùn)行程序,觀察實(shí)驗(yàn)結(jié)果。運(yùn)行演示程序?qū)?huì)看到字符“歡迎使用星研實(shí)驗(yàn)儀”在點(diǎn)陣上自下而上循環(huán)移動(dòng)顯示。實(shí)驗(yàn)代碼對(duì)實(shí)驗(yàn)六中的代碼做一定的修改,將原程序中使LED顯示屏從上至下顯示的功能改為從左至右滾動(dòng)顯示有框線部分為修改部分ADDR_8255_PA EQU 270H ;8255PA口ADDR_8255_PB EQU 271H ;8255PB口ADDR_8255_C EQU 273H ;8255控制口ADDR_273 EQU 230H ;IO區(qū)74HC273(16位I/O)LINE EQU ADDR_273 ;行線1,行線2ROW1 EQU ADDR_8255_PA ;列線1ROW2 EQU ADDR_8255_PB ;列線2 _STACK SEGMENT STACK DW 1024DUP(?) _STACK ENDS _DATA SEGMENT WORDPUBLIC'DATA' HUAN DB 00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60HDB1CH,60H,1CH,70H,36H,0F0H,36H,0D8H,61H,9CH,0C7H,0FH,3CH,06H,00H,00HYINGDB60H,00H,31H,0C0H,3FH,7EH,36H,66H,06H,66H,06H,66H,0F6H,66H,36H,66HDB37H,0E6H,37H,7EH,36H,6CH,30H,60H,30H,60H,78H,00H,0CFH,0FFH,00H,00HSHI DB00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33HDB1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,18H,60H,18H,0FCH,19H,8FH,1FH,03HYONGDB00,0,1FH,0FEH,18H,0C6H,18H,0C6H,18H,0C6H,1FH,0FEH,018H,0C6H,18H,0C6HDB18H,0C6H,1FH,0FEH,18H,0C6H,18H,0C6H,30H,0C6H,30H,0C6H,60H,0DEH,0C0H,0CCHXINGDB00H,00H,1FH,0FCH,18H,0CH,1FH,0FCH,18H,0CH,1FH,0FCH,01H,80H,19H,80HDB1FH,0FEH,31H,80H,31H,80H,6FH,0FCH,01H,80H,01H,80H,7FH,0FFH,00H,00HYANDB00H,00H,0FFH,0FFH,18H,0CCH,18H,0CCH,30H,0CCH,30H,0CCH,7FH,0FFH,7CH,0CCHDB0FCH,0CCH,3CH,0CCH,3CH,0CCH,3DH,8CH,3DH,8CH,33H,0CH,06H,0CH,0CH,0CHSHI0DB01H,80H,00H,0C0H,3FH,0FFH,3CH,06H,67H,0CCH,06H,0C0H,0CH,0C0H,07H,0C0HDB06H,0C0H,7FH,0FFH,00H,0C0H,01H,0E0H,03H,30H,06H,18H,1CH,1CH,70H,18HYAN0DB00H,00H,0FCH,60H,0CH,60H,6CH,0F0H,6CH,0D8H,6DH,8FH,6FH,0F8H,7EH,00HDB06H,0C6H,07H,66H,3FH,0ECH,0E7H,0ECH,06H,18H,1FH,0FFH,0CH,00H,00H,00HYI DB0CH,0C0H,0CH,60H,18H,7CH,1BH,6CH,33H,0CH,73H,18H,0F1H,98H,31H,98HDB30H,0F0H,30H,0F0H,30H,60H,30H,0F0H,31H,98H,33H,0FH,3EH,06H,30H,00HNONEDB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HCHANGE_RESULTDB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00HDB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H_DATA ENDS CODESEGMENTSTARTPROCNEARASSUMECS:CODE,DS:_DATA,SS:_STACKMOVAX,_DATAMOVDS,AXNOPCALLINIT_IOCALLTEST_LED;調(diào)用測(cè)試子程序,測(cè)試LED是否全亮CALLCLEARLEASI,HUAN;取首個(gè)漢字的有效地址CHS_SHOW:MOVCX,9;九個(gè)漢字CALLWORD_MOVE;字模拷貝CHS_1:PUSHCX;CHS_1可以滾動(dòng)顯示多個(gè)字符MOVCX,16CHS_2:CALLDISP_CH;實(shí)現(xiàn)顯示,DISP_CH可以把每個(gè)漢字的32個(gè)字節(jié)讀完并顯示出來;INCSI;原程序用于滾動(dòng)顯示的指令;INCSILEASI,CHANGE_RESULT;除了第一次,每次的漢字讀取都去CHANGE_RESULT找,只顯示CHANGE_RESULT開頭的32個(gè)字節(jié)CALLWORD_CHANGE;將WORD_CHANGE中的字模左移一位LOOPCHS_2POPCXLOOPCHS_1;讀下一個(gè)漢字CALLWORD_MOVE;字模復(fù)位LEASI,CHANGE_RESULT;顯示復(fù)位JMPCHS_SHOWWORD_MOVEPROCNEAR;給CHANGE_RESULT賦初值HUAN,把十個(gè)漢字都拷貝過來PUSHCXPUSHESPUSHDSPUSHSIPUSHDILEASI,HUAN源字節(jié)LEADI,CHANGE_RESULT;目的字節(jié)MOVAX,DSMOVES,AXMOVCX,320CLDWORD_MOVE1:MOVSB;執(zhí)行完畢后SI,DI自動(dòng)加一LOOPWORD_MOVE1POPDIPOPSIPOPDSPOPESPOPCXRETWORD_MOVEENDPWORD_CHANGEPROCNEAR;把字??匠鰜恚瑢ORD_CHANGE中的字模全部整體左移一位PUSHCXPUSHDSPUSHESPUSHSIPUSHBXPUSHFXORBX,BXXORAX,AXLEASI,CHANGE_RESULTMOVAX,DSMOVES,AXMOVCX,320MOVE_TO_LAST:INCSILOOPMOVE_TO_LASTDECSIDECSIMOVCX,16;16行WORD_CHANGE1:CLC;CF寄存器清零,為后續(xù)字節(jié)移動(dòng)做準(zhǔn)備XORAX,AXPUSHCXMOVCX,10;10個(gè)字WORD_CHANGE2:CMPAL,AHJZDONT_SAVE_CF2;保存CF標(biāo)志位XORAX,AXSTCDONT_SAVE_CF2:MOVBL,BYTEPTR[SI];循環(huán)右移RCRBL,1MOV[SI],BLINCSI;指向該行的下一個(gè)字節(jié)MOVBL,BYTEPTR[SI];循環(huán)右移RCRBL,1MOV[SI],BLJNCDONT_SAVE_CF;保存CF標(biāo)志位MOVAL,01HDONT_SAVE_CF:SUBSI,33將SI指向下一個(gè)字LOOPWORD_CHANGE2ADDSI,33;補(bǔ)償SIPOPCXADDSI,285將SI移向上一行起點(diǎn)LOOPWORD_CHANGE1SUBSI,285;補(bǔ)償SIPOPFPOPBXPOPSIPOPESPOPDSPOPCXRETWORD_CHANGEENDP;顯示一個(gè)16*16點(diǎn)陣字子程序,字型碼放在DPTR指出的地址DISP_CHPROCNEAR;把每個(gè)漢字的32個(gè)字節(jié)讀完P(guān)USHCXMOVCX,8DISP_CH_1:CALLDISP1LOOPDISP_CH_1POPCXRETDISP_CHENDP;顯示一個(gè)16*16點(diǎn)陣字子程序,字型碼放在顯示緩沖區(qū)XBUFFDISP1PROCNEARPUSHSIPUSHCXMOVCX,16MOVBL,0FEHMOVBH,0FFHREPEAT:MOVAX,BXOUTDX,AXLODSBCALLADJUSTMOVDX,ROW1OUTDX,ALLODSBCALLADJUSTMOVDX,ROW2OUTDX,ALCALLDL10MSCALLCLEARSTCRCLBL,1RCLBH,1LOOPREPEATPOPCXPOPSIRETDISP1ENDPINIT_IOPROCNEARMOVAL,80HOUTDX,ALRETINIT_IOENDPCLEARPROCNEARMOVAX,0FFFFHMOVDX,LINEMOVAL,0MOVDX,ROW1OUTDX,ALMOVDX,ROW2OUTDX,ALRETCLEARENDP;測(cè)試LED子程序,點(diǎn)亮LED并延時(shí)1STEST_LEDPROCNEARMOVDX,LINEXORAX,AXOUTDX,AXMOVAL,0FFHMOVDX,ROW1OUTDX,ALMOVDX,ROW2OUTDX,ALCALLDL500msCALLDL500msRETTEST_LEDENDP;調(diào)整AL中取到的字型碼的一個(gè)字節(jié),將最高位調(diào)整位最低位,最低位調(diào)整為最高位ADJUSTPROCNEARPUSHCXMOVCX,8ADJUST1:RCLAL,1XCHGAL,AHRCRAL,1XCHGAL,AHLOOPADJUST1MOVAL,AHPOPCXRETADJUSTENDPDL10msPROCNEARPUSHCXMOVCX,133LOOP$POPCXRETDL10msENDPDL500msPROCNEARPUSHCXMOVCX,0FFFFHLOOP$POPCXRETDL500msENDPSTARTENDPCODEENDSENDSTARTCODESEGMENTSTARTPROCNEARASSUMECS:CODE,DS:_DATA,SS:_STACKMOVAX,_DATAMOVDS,AXMOVES,AXNOPCALLINIT_IOCALLTEST_LED實(shí)驗(yàn)十四:電子鐘實(shí)驗(yàn)?zāi)康倪M(jìn)一步熟悉8253、8259、8279實(shí)驗(yàn)內(nèi)容1、使用8253定時(shí)功能,產(chǎn)生0.5S的定時(shí)中斷給82592、在F5區(qū)的數(shù)碼管上顯示時(shí)間3、允許設(shè)置時(shí)鐘初值實(shí)驗(yàn)步驟連線說明:D3區(qū):CS、A0、A1——A3區(qū):CS1、A0、A1D3區(qū):PC0、PC1——F5區(qū):KL1、KL2D3區(qū):JP20(PB)、B、C——F5區(qū):A、B、CB3區(qū):CS、A0——A3區(qū):CS3、A0B3區(qū):INT、INTA——A3區(qū):INTR、INTAB3區(qū):IR0——C4區(qū):OUT0C4區(qū):CS(8253)、A0、A1——A3區(qū):CS2、A0、A1(注意連線方向) 運(yùn)行程序,按F5區(qū)的F鍵,設(shè)置時(shí)鐘初值。觀察F5區(qū)數(shù)碼管上顯示的時(shí)間是否正確功能修改實(shí)驗(yàn)代碼IO8259_0 EQU 0250H IO8259_1 EQU 0251H Con_8253 EQU 0263H T0_8253 EQU 0260H COM_ADD EQU 0273HPA_ADD EQU 0270HPB_ADD EQU 0271HPC_ADD EQU 0272H_STACK SEGMENT STACK DW 200DUP(?) _STACK ENDS _DATA SEGMENT WORDPUBLIC'DATA' halfsec DB 0 ;0.5秒計(jì)數(shù)Sec DB 0 ;秒Min DB 0 ;分hour DB 0 ;時(shí)buffer DB 8DUP(0) ;顯示緩沖區(qū),8個(gè)字節(jié)buffer1 DB 8DUP(0) ;顯示緩沖區(qū),8個(gè)字節(jié)bNeedDisplay DB 0 ;需要刷新顯示number DB 0 ;設(shè)置哪一位時(shí)間bFlash DB 0 ;設(shè)置時(shí)是否需要刷新VICODE DB 40H,79H,24H,30H,19H DB 12H,02H,78H,00H,18H DB 80H,03H,43H,21H,06H,0EH KEYVALUEDB0FFHKEYSTATEDB00H _DATA ENDS CODE SEGMENT START PROC NEAR ASSUME CS:CODE,DS:_DATA,SS:_STACK MOV AX,_DATA MOV DS,AX MOV ES,AX NOP CALL InitKeyDisplay ;對(duì)鍵盤、數(shù)碼管掃描控制器8255初始化 mov sec,0 ;時(shí)分秒賦初值23:58:00 mov min,58 mov hour,23 MOV bNeedDisplay,1 ;顯示初始值 CALL Init8253 CALL Init8259 CALL WriIntver STI MAIN: CALL GetKeyA ;按鍵掃描 JNB Main1 CMP AL,0FH ;設(shè)置時(shí)間 JNZ Main1 CALL SetTime Main1: CMP bNeedDisplay,0 JZ MAIN CALL Display_LED ;顯示時(shí)分秒 MOV bNeedDisplay,0 ;1s定時(shí)到刷新轉(zhuǎn)速M(fèi)ain2: JMP MAIN ;循環(huán)進(jìn)行實(shí)驗(yàn)內(nèi)容介紹與測(cè)速功能測(cè)試SetTime PROC NEAR LEA SI,buffer1 CALL TimeToBuffer MOV Number,0 Key: CMP bFlash,0 JZ Key2 LEA SI,buffer1 LEA DI,buffer MOV CX,8 REP MOVSB CMP halfsec,0 JNZ FLASH MOV BL,number NOT BL AND BX,07H LEA SI,buffer MOV BYTEPTR[SI+BX],10H ;當(dāng)前設(shè)置位置產(chǎn)生閃爍效果FLASH: LEA SI,buffer CALL Display8 MOV bFlash,0 Key2: CALL GetKeyA JNB Key CMP AL,0EH ;放棄設(shè)置 JNZ Key1 JMP Exit Key1: CMP AL,0FH JZ SetTime8 SetTime1: CMP AL,10 JNB Key ;無效按鍵 CMP number,0 JNZ SetTime2 CMP AL,3 ;調(diào)整時(shí)的十位數(shù) JNB Key MOV buffer1+7,AL JMP SetTime7 SetTime2: CMP number,1 JNZ SetTime3 CMP buffer1+7,1 ;調(diào)整時(shí)的個(gè)位數(shù) JZ SetTime2_1 CMP AL,4 JNB Key SetTime2_1: MOV buffer1+6,AL INC number JMP SetTime7 SetTime3: CMP number,3 JNZ SetTime4 CMP AL,6 ;調(diào)整分的十位數(shù) JNB Key MOV buffer1+4,AL JMP SetTime7 SetTime4: CMP number,4 JNZ SetTime5 MOV buffer1+3,AL ;調(diào)整分的個(gè)位數(shù) INC number JMP SetTime7 SetTime5: CMP number,6 JNZ SetTime6 CMP AL,6 ;調(diào)整秒的十位數(shù) JB SetTime5_1 JMP Key SetTime5_1: MOV buffer1+1,AL JMP SetTime7 SetTime6: MOV buffer1,AL ;調(diào)整秒的個(gè)位數(shù)SetTime7: INC number CMP number,8 JNB SetTime8 MOV bFlash,1 ;需要刷新 JMP Key SetTime8: MOV AL,buffer1+1 ;確認(rèn) MOV BL,10 MUL BL ADD AL,buffer1 MOV sec,AL ;秒 MOV AL,buffer1+4 MUL BL ADD AL,buffer1+3 MOV min,AL ;分 MOV AL,buffer1+7 MUL BL ADD AL,buffer1+6 MOV hour,AL ;時(shí) JMP Exit Exit: RET SetTime ENDP TimeToBuffer PROC NEAR ;hourminsec轉(zhuǎn)化成可顯示格式 MOV AL,sec XOR AH,AH MOV BL,10 DIV BL MOV [SI],AH MOV [SI+1],AL ;秒 MOV BYTEPTR[SI+2],10H ;這位不顯示 MOV AL,min XOR AH,AH DIV BL MOV [SI+3],AH MOV [SI+4],AL ;分 MOV BYTEPTR[SI+5],10H ;這位不顯示 MOV AL,hour XOR AH,AH DIV BL MOV [SI+6],AH MOV [SI+7],AL ;時(shí) RET TimeToBuffer ENDP ;顯示時(shí)分秒Display_LED PROC NEAR LEA SI,buffer CALL TimeToBuffer LEA SI,buffer CALL Display8 ;顯示 RET Display_LED ENDP ;0.5s產(chǎn)生一次中斷Timer0Int: PUSH AX PUSH DX MOV bFlash,1 INC halfsec CMP halfsec,2 JNZ Timer0Int1 MOV bNeedDisplay,1 MOV halfsec,0 INC sec CMP sec,60 JNZ Timer0Int1 MOV sec,0 INC min CMP min,60 JNZ Timer0Int1 MOV min,0 INC hour CMP hour,24 JNZ Timer0Int1 MOV hour,0 Timer0Int1: MOV DX,IO8259_0 MOV AL,20H OUT DX,AL POP DX POP AX IRET Init8253 PROC NEAR MOV DX,Con_8253 MOV AL,34H OUT DX,AL ;計(jì)數(shù)器T0設(shè)置在模式2狀態(tài),HEX計(jì)數(shù) MOV DX,T0_8253 MOV AL,12H OUT DX,AL MOV AL,7AH OUT DX,AL ;CLK0=62.5kHz,0.5s定時(shí) RET Init8253 ENDP Init8259 PROC NEAR MOV DX,IO8259_0 MOV AL,13H OUT DX,AL MOV DX,IO8259_1 MOV AL,08H OUT DX,AL MOV AL,09H OUT DX,AL MOV AL,0FEH OUT DX,AL RET Init8259 ENDP WriIntver PROC NEAR PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,Timer0Int STOSW MOV AX,CS STOSW POP ES RET WriIntver ENDP InitKeyDisplayPROCNEAR MOV DX,COM_ADD MOV AL,80H OUT DX,AL MOVAL,0FFH MOVDX,PA_ADD OUT DX,AL MOVDX,PB_ADD OUT DX,AL MOVAL,00H MOV DX,PC_ADD OUT DX,AL RETInitKeyDisplayENDPGetKeyAPROCNEAR PUSHBX PUSHDX PUSHCX PUSHSI LEASI,buffer CALLDisplay8 POPSI MOV DX,COM_ADD MOV AL,82H OUTDX,AL MOVAL,00H OUT DX,AL MOVAL,03H OUTDX,AL MOVDX,PB_ADD IN AL,DX MOV BL,AL MOVDX,COM_ADD MOVAL,01H OUTDX,AL MOVAL,02H OUTDX,AL MOVDX,PB_ADD IN AL,DX MOVBH,AL MOVDX,PC_ADD MOVAL,0FFH OUTDX,AL CMPBX,0FFFFH JNE REDETECT JMPOVERRE

溫馨提示

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