如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
附数码管和矩阵键盘实例大家学习辛苦了,还是要坚持键盘扫描程序第一步:判断有无按键按下使A端口输出00H,读入B端口的数据,如果是FFH,则没有按键按下,继续第一步。否则进行第二步。第二步:行扫描法识别按键(1)使A端口的PA0输出低电平,其余为高电平。(2)观察列线的状态。(3)如果某条列线变为低电平,则第0行与该列相交位置上的键被按下;否则第0行没有键按下。(4)使PA1输出低电平,其余为高电平。(5)观察列线的状态判断是否有键按下。(6)如此逐行扫描下去,直到最后一行。通过分析可知,8255A的端口A工作在方式0的输出,端口B工作在方式0的输入,端口C不用。8255A端口的地址如下:A端口:60HB端口:62HC端口:64H控制口:66H8255的初始化及检测有无按键按下:PORTAEQU60HPORTBEQU62HPORTCEQU64HPORTCNEQU66HMOVDX,PORTCN;置8255A端口A、B工作在方式0MOVAL,10000010B;端口A为输出口,端口B为输入口OUTDX,ALWAITK:MOVDX,PORTA;等待键闭合MOVAL,00;行码送全“0”OUTDX,ALMOVDX,PORTB;读列码INAL,DXCMPAL,0FFHJZWAITK;无键按下,继续等待行扫描法识别按键MOVBL,0;扫描键盘矩阵,送键号初值MOVBH,11111110B;置初始扫描模式-行码送FEHMOVCX,8FNDROW:MOVAL,BH;送行码MOVDX,PORTAOUTDX,ALROLBH,1;修改行码MOVDX,PORTB;读列码INAL,DXCMPAL,0FFHJNZFNDCOL;有键按下,查列号ADDBL,8;无键按下,指向下一行键号初值LOOPFNDROW;8行扫描未完,送下一行扫描码JMPDONE;8行扫描完,无键按下FNDCOL:RORAL,1;查哪一列有键按下JNCRIGHT;查到按下键的键号INCBL;键号加1,查下一列JMPFNDCOLRIGHT:…;按下键的编号在BL中DONE:…;无键闭合共阴极:公共端接低电平“L”发光段接高电平“H”8位7段数码管动态显示电路图显示系统的具体工作步骤如下:a、设要显示的初始位码i=0;b、送第i位的段信号;c、送第i位的位信号;d、延时;e、i+1->if、如果i小于8,转bg、8位数据显示结束。程序如下:a_portequ80h;定义8255A的四个端口b_portequ82hc_portequ84hctrl_portequ86h……datasegment;定义数据段tab1db3FH,06H,5BH,4FH,…,;定义段码表dispbuffdb2,0,0,6,1,2,0,9;定义显示缓冲区dataends……