矩阵键盘+数码管动态显示
2022-03-15 来源:eefocus
我把矩阵键盘和数码管动态显示综合起来写了个程序。这个代码的意思是在一开始8个数码管什么也不显示,因为p0的初始值是0x00,当我们按下矩阵按键里的按键时,8个数码管动态显示该按键的键值,直到按下了下一个按键,8个数码管显示的内容才可能改变。
#include sbit lsa=P2^2; sbit lsb=P2^3; sbit lsc=P2^4; #define duanxuan P0 #define keyboard P1 int zxm[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; int x,y; void delay(int i) { while(i--); } void keyproc() { int a=0; P1=0x0f;//检测是哪一列有按键按下; if(P1!=0x0f) { delay(1000); if(P1!=0x0f) { P1=0x0f; switch(P1) { case(0x07):y=1;break; case(0x0b):y=2;break; case(0x0d):y=3;break; case(0x0e):y=4;break; } } P1=0xf0;//检测是哪一行有按键按下 switch(P1) { case(0x70):x=1;break; case(0xb0):x=2;break; case(0xd0):x=3;break; case(0xe0):x=4;break; } P0=zxm[(x-1)*4+y-1]; } } int main() { P0=0x00; while(1) { lsa=0;lsb=0;lsc=0;//位选选了第1个 lsa=1;lsb=0;lsc=0;//位选选了第2个 lsa=0;lsb=1;lsc=0;//位选选了第3个 lsa=1;lsb=1;lsc=0;//位选选了第4个 lsa=0;lsb=0;lsc=1;//位选选了第5个 lsa=1;lsb=0;lsc=1;//位选选了第6个 lsa=0;lsb=1;lsc=1;//位选选了第7个 lsa=1;lsb=1;lsc=1;//位选选了第8个 keyproc(); } return 0; }
上一篇:矩阵键盘的原理及应用
下一篇:C51独立键盘按键检测示例