首页 > 代码库 > 单片机第8课:矩阵键盘扫描
单片机第8课:矩阵键盘扫描
JP3接P0,VCC接+5V,矩阵键盘的左边八个引脚接在P1上面。想要的结果是按第0个按键,数码管显示0,以此类推。注意,这里的数码管是共阳极的。
#include<reg51.h> #define uint unsigned int #define uchar unsigned char uchar code table[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e}; uchar code table_scan[] = {0xfe, 0xfd, 0xfb, 0xf7}; void init(); uchar temp; void main() { uint i_row; init(); while(1) { for(i_row=0; i_row<4; i_row++) { P1 = table_scan[i_row]; temp = P1; temp = P1 & 0xf0; switch(temp) { case 0xe0: if(i_row==0) P0 = table[0]; else if(i_row==1) P0 = table[4]; else if(i_row==2) P0 = table[8]; else P0 = table[12]; break; case 0xd0: if(i_row==0) P0 = table[1]; else if(i_row==1) P0 = table[5]; else if(i_row==2) P0 = table[9]; else P0 = table[13]; break; case 0xb0: if(i_row==0) P0 = table[2]; else if(i_row==1) P0 = table[6]; else if(i_row==2) P0 = table[10]; else P0 = table[14]; break; case 0x70: if(i_row==0) P0 = table[3]; else if(i_row==1) P0 = table[7]; else if(i_row==2) P0 = table[11]; else P0 = table[15]; break; } } } } void init() { P0 = 0xff; }
注意,代码中没有进行消抖操作,是因为这个不消抖不会影响实验结果。
单片机第8课:矩阵键盘扫描
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。