完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一.简介
4x4矩阵按键是单片机外部设备中所使用的排布类似于矩阵的按键组。显然矩阵按键的使用要比独立按键要复杂一些,编程也要复杂一些,但可以单片机IO资源。4x4矩阵按键即分为4组列线,4组行线,并将行线所接的单片机的I/O口作为输出端,而列线所接的I/O口则作为输入。 二.硬件连接图 51单片机的P1口用作按键I/O口,键盘的列线接到P1口的低4位,键盘的行线接到P1口的高4位;把列线P1.0-P1.3设置为输入线,行线P1.4-P.17设置为输出线。4根行线和4根列线形成16个相交点。如图: 三.控制程序 1.矩阵按键程序扫描步骤
void key() //按键程序 { static uchar key_new = 0, key_l; key_can = 20; //按键值还原 P1 = 0x0f; if((P1 & 0x0f) != 0x0f) //按键按下 { delay_1ms(1); //按键消抖动 if(((P1 & 0x0f) != 0x0f) && (key_new == 1)) { //确认是按键按下 key_new = 0; key_l = (P1 | 0xf0); //矩阵键盘的列状态 P1 = key_l; //扫描矩阵键盘的行状态 switch(P1) { case 0xee: key_can = 1; break; //得到按键值 case 0xde: key_can = 4; break; //得到按键值 case 0xbe: key_can = 7; break; //得到按键值 case 0x7e: key_can = 10; break; //得到按键值 case 0xed: key_can = 2; break; //得到按键值 case 0xdd: key_can = 5; break; //得到按键值 case 0xbd: key_can = 8; break; //得到按键值 case 0x7d: key_can = 0; break; //得到按键值 case 0xeb: key_can = 3; break; //得到按键值 case 0xdb: key_can = 6; break; //得到按键值 case 0xbb: key_can = 9; break; //得到按键值 case 0x7b: key_can = 11; break; //得到按键值 case 0xe7: key_can = 15; break; //得到按键值 case 0xd7: key_can = 14; break; //得到按键值 case 0xb7: key_can = 13; break; //得到按键值 case 0x77: key_can = 12; break; //得到按键值 } } } else { key_new = 1; } } |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9002 浏览 16 评论
4051 浏览 18 评论
1110浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
569浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2302浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 21:22 , Processed in 1.160257 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号