微机原理综合试验报告LED横向滚动显示方向修改、电子钟修改试验_第1页
微机原理综合试验报告LED横向滚动显示方向修改、电子钟修改试验_第2页
微机原理综合试验报告LED横向滚动显示方向修改、电子钟修改试验_第3页
微机原理综合试验报告LED横向滚动显示方向修改、电子钟修改试验_第4页
微机原理综合试验报告LED横向滚动显示方向修改、电子钟修改试验_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理上机实验报告综合实验:1.LED16x16点阵显示实验竖向显示改横向显示2.电子钟功能修改微机原理综合实验报告综合实验1:LED16x16点阵竖向显示改横向显示实验一、实验目的1、熟悉8255的功能,了解点阵显示的原理及控制方法;2、学会使用LED点阵,通过编程显示不同字符;3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。二、实验内容1、编写程序,用B4区的二片74HC273控制16X16点阵的行;8255的PA、PB控制16X16点阵的列;显示字符。2、按图连接线路;运行程序,观察实验结果,学会编程控制LED点阵显示字符。三、实验原理图KSIJr14三三

2、n'.二二二营一产oTivet通AlY1AlY2A3Y3A4Y4A5Y5AfiY&A7Y7AHYSCNDUM召FlVCCOL2AlY1A2Y2Ai¥3A4Y4A3Y5AhYr6A?Y7A8¥«SN4T.S2MNGND应VCC11FEIG诉其RHLGTOBSHHLED3LLEMBO117SIInnLIG汽用0RH-i-6三1:7gItl餐12II5四、实验步骤1、连线说明:D3区:CS(8255)、A0、A1A3区:CS1、A0、A1D3区:JP23(PA)、JP20(PB)A2区:JP21、JP22(列输出线)B4区:JP57(D0.D7)A3区:

3、JP42(D0.D7)B4区:JP56(D8.D15)A3区:JP40(D8.D15)B4(I/O)区:CS273、BLBBHEA3区:CS5、BLE、BHEB4(I/O)区:RD、WRA3区:IOR、IOWB4(I/O)区:JP51、JP55A2区:JP14、JP15(行输出线)(注意连线方向)2、运行程序,观察实验结果。运行演示程序将会看到字符“欢迎使用星研实验仪”在点阵上自下而上循环移动显示。五、实验代码对实验六中的代码做一定的修改,将原程序中使LED显示屏从上至下显示的功能改为从左至右滚动显示有框线部分为修改部分8255PA口8255PB口8255控制口IO区74HC273(16位I/

4、O)行线1,行线2列线1列线2ADDR_8255_PAEQU270HADDR_8255_PBEQU271HADDR_8255_CEQU273HADDR_273EQU230HLINEEQUADDR_273ROW1EQUADDR_8255_PAROW2EQUADDR_8255_PBSTACKSEGMENTSTACKDW1024DUPSTACKENDS_DATASEGMENTWORDPUBLIC'DATA'HUANDB00H,0C0H,00H,0C0H,0FEH,0C0H,07H,0FFH,0C7H,86H,6FH,6CH,3CH,60H,18H,60HDB1CH,60H,1CH,7

5、0H,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,00HSHIDB00H,00H,06H,30H,07H,30H,0FH,0FFH,0CH,30H,1FH,0FFH,3BH,33H,7BH,33HDB1BH,0FFH,1BH,33H,19H,0B0H,18H,0E0H,1

6、8H,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,8

7、0H,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

8、,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,00HYIDB0CH,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,00

9、H,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,00HCHANGERESULTDB00H,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,00HDATAENDSCODESEGMENTSTARTPROCNEARASSU

10、MECS:CODE,DS:_DATA,SS:_STACKMOVAX,_DATAMOVDS,AXNOPCALLINIT_IOCALLTEST_LED;调用测试子程序,测试LED是否全亮CALLCLEARLEASI,HUAN;取首个汉字的有效地址CHS_SHOW:MOVCX,9;九个汉字CALLWORD_MOVE;字模拷贝CHS_1:PUSHCX;CHS_1可以滚动显示多个字符MOVCX,16CHS_2:CALLDISP_CH;实现显示,disp_cht以把每个汉字的32个字节读完并显小出来;INCSI;原程序用于滚动显示的指令;INCSILEASI,CHANGE_RESULT;除了第一次,每次的

11、汉字读取者法CHANGE_RESUL俄,只显示CHANGE_RESUL就头的32个字节CALLWORD_CHANGEaWORD_CHANGE中的字模左移一位LOOPCHS_2POPCXLOOPCHS_1;读卜一个汉字CALLWORD_MOVE;字模复位LEASI,CHANGE_RESULT;显示复位JMPCHS_SHOWWORD_MOVEPROCNEARCHANGE_RESULT®初值HUAN,把十个汉字都拷贝过来PUSHCXPUSHESPUSHDSPUSHSIPUSHDILEASI,HUAN源以LEADI,CHANGE_RESULT;目的字节MOVAX,DSMOVES,AXMOVC

12、X,320CLDWORD_MOVE1:MOVSB;执行完毕后SI,DI自动加一LOOPWORD_MOVE1POPDIPOPSIPOPDSPOPESPOPCXRETWORD_MOVEENDPWORD_CHANGEPROCNEAR把字模拷出来,将WORD_CHANGE中的字模全部整体左移一位PUSHCXPUSHDSPUSHESPUSHSIPUSHBXPUSHFXORBX,BXXORAX,AXLEASI,CHANGE_RESULTMOVAX,DSMOVES,AXMOVCX,320MOVE_TO_LAST:INCSILOOPMOVE_TO_LASTDECSIDECSIMOVCX,16;16行WORD_

13、CHANGE1:CLC;CF存器清零,为后续字节移动做准备XORAX,AXPUSHCXMOVCX,10;1。个字WORD_CHANGE2:CMPAL,AHJZDONT_SAVE_CF2;保存CF标志位XORAX,AXSTCDONT_SAVE_CF2:MOVBL,BYTEPTRSI;循环后移RCRBL,1MOVSI,BLINCSI;指向该行的下一个字节MOVBL,BYTEPTRSI;循环后移RCRBL,1MOVSI,BLJNCDONT_SAVE_CF;保存CF标志位MOVAL,01HDONT_SAVE_CF:SUBSI,33将SI指向卜一个字LOOPWORD_CHANGE2ADDSI,33补偿S

14、IPOPCXADDSI,285将SI移向上一行起点LOOPWORD_CHANGE1SUBSI,285补偿SIPOPFPOPBXPOPSIPOPESPOPDSPOPCXRETWORD_CHANGEENDP;显示一个16*16点阵字子程序,字型码放在DPTR旨出的地址DISP_CHPROCNEAR把每个汉字的32个字节读完PUSHCXMOVCX,8DISP_CH_1:CALLDISP1LOOPDISP_CH_1POPCXRETDISP_CHENDP;显示一个16*16点阵字子程序,字型码放在显示缓冲区XBUFFDISP1PROCNEARPUSHSIPUSHCXMOVCX,16MOVBL,0FEHM

15、OVBH,0FFHREPEAT:MOVAX,BXOUTLODSBCALLADJUSTOUTMOVMOVDX,ROW1OUTDX,ALLODSBCALLADJUSTMOVDX,ROW2OUTDX,ALCALLDL10MSCALLCLEARSTCRCLBL,1RCLBH,1LOOPREPEATPOPCXPOPSIRETDISP1ENDPINIT_IOPROCNEARMOVAL,80HRETINIT_IOENDPCLEARPROCNEARMOVAX,0FFFFHMOVDX,LINEMOVAL,0OUTDX,ALMOVDX,ROW2OUTDX,ALRETCLEARENDP;WLE“程序,点亮LED延时

16、1STEST_LEDPROCNEARMOVDX,LINEXORAX,AXOUTDX,AXMOVAL,0FFHMOVDX,ROW1OUTDX,ALMOVDX,ROW2CODESEGMENTOUTDX,ALCALLDL500msCALLDL500msRETTEST_LEDENDP;调整AL中取到的字型码的一个字节,将最高位调整位最低位,最低位调整为最高位ADJUSTPROCNEARPUSHCXMOVCX,8ADJUST1:RCLAL,1XCHGAL,AHRCRAL,1XCHGAL,AHLOOPADJUST1MOVAL,AHPOPCXRETADJUSTENDPDL10msPROCNEARPUSHCX

17、MOVCX,133LOOP$POPCXRETDL10msENDPDL500msPROCNEARPUSHCXMOVCX,0FFFFHLOOP$POPCXRETDL500msENDPSTARTENDPCODEENDSENDSTARTSTARTPROCASSUMEMOVMOVMOVNOPCALLCALLNEARCS:CODE,DS:_DATASS:_STACKAX,_DATADS,AXES,AXINIT_IOTESTLED实验十四:电子钟一、实验目的进一步熟悉8253、8259、8279二、实验内容1、使用8253定时功能,产生0.5S的定时中断给82592、在F5区的数码管上显示时间3、允许设置时

18、钟初值三、实验步骤1、连线说明:D3区:CS、A0、A1A3区:CS1、A0、A1D3区:PC0、PC1F5区:KL1、KL2D3区:JP20(PB)、B、CF5区:A、B、CB3区:CSA0A3区:CS3、A0B3区:INT、INTAA3区:INTR、INTAB3区:IR0C4区:OUT0C4区:CS(8253)、A0、A1A3区:CS2、A0、A1(注意连线方向)2、运行程序,按F5区的F键,设置时钟初值。3、观察F5区数码管上显示的时间是否正确四、功能修改实验代码IO8259_0EQU0250HIO8259_1EQU0251HCon_8253EQU0263HT0_8253EQU0260H

19、COM_ADDEQU0273HPA_ADDEQU0270HPB_ADDEQU0271HPCADDEQU0272HSTACKSEGMENTSTACKDW200DUP(?)STACKENDS_DATASEGMENTWORDPUBLIC'DATA'halfsecDB0;0.5秒计数SecDB0秒MinDB0;分hourDB0;时bufferDB8DUP(0)显示缓冲区,8个字节buffer1DB8DUP(0)显示缓冲区,8个字节bNeedDisplayDB0;需要刷新显本numberDB0;设置哪一位时间bFlashDB0;设置时是否需要刷新VICODEDBDBDB40H,79H,2

20、4H,30H,19H12H,02H,78H,00H,18H80H,03H,43H,21H,06H,0EHKEYVALUEDB0FFHKEYSTATEDB00HDATAENDSCODESEGMENTSTARTPROCNEARASSUMECS:CODE,DS:_DATA,SS:_STACKbNeedDisplay,1Init8253Init8259WriIntverGetKeyA8255初始化MOVAX,_DATAMOVDS,AXMOVES,AXNOPCALLInitKeyDisplaymovsec,0movmin,58movhour,23MOVCALLCALLCALLSTIMAIN:CALLJN

21、BMain1CMPAL,0FHJNZMain1CALLSetTime对键盘、数码管扫描控制器;时分秒赋初值23:58:00;显示初始值按键扫描;设置时间Mainl:CMPJZMAINbNeedDisplay,0CALLDisplay_LEDMOVbNeedDisplay,0Main2:JMPMAINSetTimePROCNEARLEASI,buffer1CALLTimeToBufferMOVNumber,。Key:CMPbFlash,0JZKey2LEASI,buffer1LEADI,bufferMOVCX,8REPMOVSBCMPhalfsec,0JNZFLASHMOVBL,numberNO

22、TBLANDBX,07HLEASI,bufferMOVBYTEPTRSI+BX,10HFLASH:LEASI,bufferCALLDisplay8MOVbFlash,0Key2:CALLGetKeyAJNBKeyCMPAL,0EHJNZKey1JMPExitKey1:CMPAL,0FHJZSetTime8SetTimel:CMPAL,10JNBKey;无效按键CMPnumber,0JNZSetTime2CMPAL,3JNBKeyMOVbufferl+7,ALJMPSetTime7SetTime2:CMPnumber,1JNZSetTime3CMPbuffer1+7,1JZSetTime21;显

23、示时分秒;1s定时到刷新转速;循环进行实验内容介绍与测速功能测试;当前设置位置产生闪烁效果;放弃设置;调整时的十位数;调整时的个位数CMPAL,4JNBKeySetTime2_1:MOVbufferl+6,ALINCnumberJMPSetTime7SetTime3:CMPnumber,3JNZSetTime4;调整分的十位数CMPAL,6JNBKeyMOVbuffer1+4,ALJMPSetTime7SetTime4:CMPnumber,4JNZSetTime5;调整分的个位数MOVbuffer1+3,ALINCnumberJMPSetTime7SetTime5:CMPnumber,6JNZ

24、SetTime6;调整秒的十位数CMPAL,6JBSetTime51JMPKeySetTime5_1:MOVbuffer1+1,ALJMPSetTime7;调整秒的个位数SetTime6:MOVbuffer1,ALSetTime7:INCnumberCMPnumber,8JNBSetTime8MOVbFlash,1;需要刷新JMPKeySetTime8:MOVAL,buffer1+1;确认MOVBL,10MULBLADDAL,buffer1MOVsec,AL秒MOVAL,buffer1+4MULBLADDAL,buffer1+3MOVmin,AL分MOVAL,buffer1+7MULBLADD

25、AL,buffer1+6MOVhour,AL;时JMPExitExit:RETSetTimeENDPTimeToBufferPROCNEARMOVAL,secXORAH,AHMOVBL,10DIVBLMOVSI,AHMOVSI+1,AL秒MOVBYTEPTRSI+2,10HMOVAL,minXORAH,AHDIVBLMOVSI+3,AHMOVSI+4,ALMOVBYTEPTRSI+5,10HMOVAL,hourXORAH,AHDIVBLMOVSI+6,AHMOVSI+7,AL;时RETTimeToBufferENDP;显示时分秒Display_LEDPROCNEARLEASI,bufferCA

26、LLTimeToBufferLEASI,bufferCALLDisplay8RETDisplay_LEDENDPTimer0Int:PUSHAXPUSHDXMOVbFlash,1INChalfsecCMPhalfsec,2JNZTimer0Int1MOVbNeedDisplay,1MOVhalfsec,0INCsecCMPsec,60JNZTimer0Int1;hourminsec转化成可显示格式;这位不显示;分;这位不显示显示;0.5s产生一次中断MOVsec,0INCminCMPmin,60JNZTimer0Int1MOVmin,0INChourCMPhour,24JNZTimer0Int

27、1MOVhour,0Timer0Int1:MOVDX,IO8259_0MOVAL,20HOUTDX,ALPOPDXPOPAXIRETInit8253PROCNEARMOVDX,Con_8253MOVAL,34HOUTDX,AL计数器T0设置在模式2状态,HEX计数MOVDX,T0_8253MOVAL,12HOUTDX,ALMOVAL,7AHOUTDX,AL;CLK0=62.5kHz,0.5s定时RETInit8253ENDPInit8259PROCNEARMOVDX,IO8259_0MOVAL,13HOUTDX,ALMOVDX,IO8259_1MOVAL,08HOUTDX,ALMOVAL,09

28、HOUTDX,ALMOVAL,0FEHOUTDX,ALRETInit8259ENDPWriIntverPROCNEARPUSHESMOVAX,0MOVES,AXMOVDI,20HLEAAX,Timer0IntSTOSWMOVAX,CSSTOSWPOPESRETWrilntverENDPInitKeyDisplayPROCNEARMOVDX,COM_ADDMOVAL,80HOUTDX,ALMOVAL,0FFHMOVDX,PA_ADDOUTDX,ALMOVDX,PB_ADDOUTDX,ALMOVAL,00HMOVDX,PC_ADDOUTDX,ALRETInitKeyDisplayENDPGetKeyAPROCNEARPUSHBXPUSHDXPUSHCXPUSHSILEASI,bufferCALLDisplay8POPSIMOVDX,COM_ADDMOVAL,82HOUTDX,ALMOVAL,00HOUTDX,ALMOVAL,03HOUTDX,ALMOVDX,PB_ADDINAL,DXMOVBL,ALMOVDX,COM_ADDMOVAL,01HOUTDX,ALMOVAL,02HOUTDX

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论