首页 > 编程知识 正文

矩阵键盘(最完整的矩阵键盘-数码管显示1-16数字)

时间:2023-05-03 22:26:47 阅读:122759 作者:1105

完整的电路模拟图:

有两根导线管、4*4的矩阵键盘,还有排阻。 其中一根导线管连接到P0端口,因此需要引起电阻。 因为使用排阻力很方便,所以使用了这个。 如果你觉得可以的话,请称赞收藏!

# includere g51.h # define key _ portP2//定义p2端口#define DIG_PORT_1 P0 //定义P0端口,作为一位#define DIG_PORT_2 P1 //=)0x4f、0x 06、0x5b、0x4f、0x 66、0x7d、0x7d、0x 07、0x7f、0x6f}; //数码管分段值voidkeyvaluedisplay(u8val ); //void delay函数声明10ms (void )的u8密钥扫描(void );/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。 t0; t-- ) for(j=2; j0; j----; (()、)、)、)、(()、()、)、()、)、()、()、()、()、()、()、()、()、()、()、()、()、函数名称)、矩阵键盘扫描*参数) (无返回值) KEY_PORT=0x0f; //P2端口的后4位为高电平IF(Key_Port!=0x0f ()//如果注意到p2端口的电平变化,则在下一步骤Delay ); //输入延迟函数,确认存在按键被按下的if (key _ port!=0x0f(//验证按钮按下并确认switch(key_port ) )//哪一列的case0x07:val=1; 布雷克; case0x0b:val=2; 布雷克; case0x0d:val=3; 布雷克; case0x0e:val=4; 布雷克; 默认: break; } KEY_PORT=0xf0; 确定switch(key_port )//哪一行case0x70:val=val 0; 布雷克; case0xb0:val=val 4; 布雷克; case0xd0:val=val 8; 布雷克; case0xe0:val=val 12; 布雷克; 默认: break; }返回val; //返回计算的值} } return 0; (()、()、)、()、()、()、()、()、()、()、()、()、()、()、()、()、()、()、)、()、)、()、函数名称(函数(函数(函数(以及(keyvalvalalue。 voidkeyvaluedisplay(U8val ) if ) val10 ) /判定返回值,小于10,1位DIG_PORT_1=gDuanMa[val]; DIG_PORT_2=0x00; 延迟(; DIG_PORT_1=0x00; DIG_PORT_2=0x00; (else(/val值大于10时,P0端口为1位,P1端口为10位DIG_PORT_1=gDuanMa[val]; DIG_PORT_2=gDuanMa[val/10]; 延迟(; DIG_PORT_1=0x00; DIG_PORT_2=0x00; }/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *。 wile(1) {key=KeyScan ); //矩阵键盘扫描函数if(key!=0) {key1=key; } key value显示(key 1; //数码管显示函数}}效果展示:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。