8、、10、11接X2;12、13、14、15接X3。即16个按钮空接,即十六个键一端低电平,另一端接高电平;当按下任意一个按钮时显示对应数字。该系统可以实现四则运算,当分別按下2个数字,再按任意一个功能键即可实现相应的运算。(2)按键的识别判断键盘上有无按键闭合,先判断行线XO—X3输出低电平“0”,然后判断列线Y0-Y3的状态,若为全1,即列线全为高电平,说明键盘上没有按键闭合,若Y0-Y3不全为1,说明有键按下。(3)消抖处理当判断有键按下后,需要进行消除抖动,这里使用了软件方法即程序中采用吋间延吋0.5秒,待信号稳定后再判别键盘的状态,若有键按下,则再进行键号的
9、计算。(4)判别键号先判断行线X0-X3是否有输出低电平若有键按下,则相应的列线也为低电平“0”,例如行线XI输出为低电平“0”,且列线Y2为低电平,即XI与Y2相交的键被按下,进行键号二行号*4+列号的计算。T1R2R1图(2)(5)显不结果图2显示器接高电频,左边显示器接P0.0-P0.7,右边接P2.0—P2.7,当按下一个数字时右显示器显示相应的数字,按第2个数字时左边显示器显示相应数字;当进行除法运算时,除的的数据要看接口P0.7接高还是低电频,低电频则结果为儿点儿,为高电频则几十几。英它运算直接看数据即可。16灭丄Mb图(3)(6)复位电路图3为攵位电路
10、,接AT89C51上的RST接口,当显示器显示数据时,按下16键时显示器不显示任何数据。如果进行了某一运算后,若这吋还要进行运算吋,可以直接按要进行运算的键号。四、程序流程图开始YPI口高4位置1送入P0显示第二次键入的值扫描键盘调用延时0.5s子程序消除抖动再按一次键N计算键入的值送入P2显示第一次键入的值调用延时0.5s子程序消除抖动送出结果P2显示个位,P0显示十位计算键入的值((A五、程序ORG0000HL1:LCALLSCANMOV40H,3211MOVRl,40HLCALLMOLCALLXY1MOVPO,#OFFIILCALLSCANMOV41H,32
11、HMOVR1,41HLCALLMOLCALLXY2L2:LCALLSCANMOV42H,32HMOVR7,42HCJNER7,#10D,L3MOVA,4011ADDA,41HMOVB,#1ODDIVABCJNEA,#OOH,L8MOVPO,#OFFIILJMPL9L8:MOV32H,ALCALLXY2L9:MOV32H,BLCALLXY1LJMPLI13:cjner7,#lld,14MOVA,40HsubbA,41HJBACC.7,N1MOV32H,AMOVPO,#OFFHLCALLXY1LJMPLIN1:MOVPO,#OBFHMOVA,4111SUBBA,40HA
12、DDA,#1DMOV32H,ALCALLXY1;将键号保存在4011;暂存在R1;使卩0口置1;将键号保存在41H;暂存在R1;是否进行加法运算;商存在制«即十位,余数存在B中即个位;判断十位是否为0,不为0跳转;置1不显示;商非0则调用显示十位数;调用显示个位数;是否进行减法运算;结果存在A;判断正负;减法结果为正;显示负号;显示结果LJMPLI14:cjner7,#12d,15;是否进行乘法运算MOVA,40HMOVB,41HMULAB;结果存在A中MOV50H,AMOVB,#1ODDIVAB;商存在A中即十位,余数存在B中即个位CJNEA,#0011,LI