资源描述:
《跑马灯与键盘显示控制实验.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、.中国矿业大学计算机学院2015级本科生实验报告课程名称《微机原理与接口实验》实验名称学生姓名学号专业任课教师实验一:跑马灯.资料..a)实验内容及要求1、静态显示:按4-4-1连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1接PC0、PC1;S2、S3接地,编程在数码管上循环显示“00-99”。2、接线:PA7~PA0/8255接dp~a/LED数码管PC1~PC0/8255接S1~S0/LED数码管GND接S3~S2/LED数码管CS/8255接Y1/IO地址b
2、)设计原理及硬件连线图c)实验代码及完成情况及结果PORT_AEQU280H;8255A口地址PORT_BEQU281H;8255B口地址.资料..PORT_CTLEQU283H;8255控制口地址CODESEGMENTASSUMECS:CODE;B端口输出START:MOVAX,STACKMOVSS,AXLEASP,TOP_SMOVDX,PORT_CTL;控制字端口MOVAL,10010000B;控制字OUTDX,ALMOVAL,01MOVDX,PORT_BTEST:OUTDX,ALMOVBX,1000;BX*20msDELA
3、Y1:MOVCX,16EAHDELAY2:LOOPDELAY2;延时20msDECBXJNZDELAY1ROLAL,01;循环左移JMPTESTCODEENDS.资料..ENDSTARTd)实验体会及建议实验进入第二次开始真正地通过接口芯片8255A控制外设的动作实现了更加复杂和精确的控制。数码管的动态扫描需要多重循环程序设计的时候需要有清晰的逻辑转移。我在实验中遇到的主要问题是时间的控制具体在单个数码管显示时间、状态间转换的等待时间控制方面。由于循环较多容易造成的问题是外层循环次数设置过大导致整个程序的循环过大单
4、次大循环时间太长显示出现问题。经过多次的调整才对时间的控制和配合找到了感觉。实验二:键盘显示控制实验a)实验内容及要求1、编程:使得在小键盘上每按一个健,4位数码管上显示出相应字符,它们的对应关系如下:小键盘显示小键盘显示0—0C—C1—1D—d2—2E—E3—3F—F4—45—56—67—78—89—9A—B—b2、接线:PC7~PC0/8255接行3~列0/4X4键盘PA7~PA0/8255接dp~a/LED数码管CS/8255接Y1/IO地址+5V接S0/LED数码管GND接S3~S1/LED数码管.资料..b)设计原理,
5、给出硬件连线图c)实验代码及完成情况及结果.资料..PORT_AEQU280H;8255A口地址PORT_BEQU281H;8255B口地址PORT_CEQU282H;8255C口地址PORT_CTLEQU283H;8255控制口地址DATASEGMENT;键盘扫描表;01234567KEYBDB77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH;89ABCDEFDB0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH;数码管表,共阳;01234567TUBEDB40H,79H,24
6、H,30H,19H,12H,02H,78H;89ABCDEFDB00H,10H,08H,03H,46H,21H,06H,0EHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;方式0,A端口和C端口输出,B端口输入MOVDX,PORT_CTL;控制字端口MOVAL,10000010B;控制字OUTDX,ALMOVDX,PORT_CMOVAL,0FFHOUTDX,AL;向所有行送0RE:MOVDX,PORT_AMOVAL,00HOUTDX,AL;查是否
7、全松开MOVDX,PORT_BWAIT_O:INAL,DXANDAL,0FHCMPAL,0FHJNEWAIT_O;查是否有键按下WAIT_P:INAL,DXANDAL,0FH.资料..CMPAL,0FHJEWAIT_P;消抖MOVCX,16EAHDELAY:LOOPDELAY;延时20ms;检查按键是否仍按着INAL,DXANDAL,0FHCMPAL,0FHJEWAIT_P;确定那一个键按下MOVAL,0FEHMOVCL,ALNEXT_R:MOVDX,PORT_AOUTDX,ALMOVDX,PORT_BINAL,DXANDAL,
8、0FHCMPAL,0FHJNEENCODEROLCL,01MOVAL,CLJMPNEXT_R;编码ENCODE:MOVBX,0000FHINAL,DXNEXT_T:CMPAL,KEYB[BX]JEDONEDECBXJNSNEXT_T;不为负值,继续查MOVAH,