滨州网站建设哪家专业,做网站建设最好学什么,代理服务器国外,网站打不开是什么原因矩阵键盘#xff1a; 这个矩阵键盘可以接到P0、P1、P2、P3都是可以的。 使用矩阵键盘是能节省单片机的IO口。 P3.0 P3.1 P3.2 P3.3 称之为行号。
P3.4 P3.5 P3.6 P3.7 称之为列号。 矩阵键盘检测原理#xff1a;
1、检查是否有键按下#xff1b;
2、键的抖动处理#xf…
矩阵键盘 这个矩阵键盘可以接到P0、P1、P2、P3都是可以的。 使用矩阵键盘是能节省单片机的IO口。 P3.0 P3.1 P3.2 P3.3 称之为行号。
P3.4 P3.5 P3.6 P3.7 称之为列号。 矩阵键盘检测原理
1、检查是否有键按下
2、键的抖动处理
3、查询按下键所在行和列的位置并对行号和列号译码得到键值。 #includereg52.h#define uchar unsigned char
#define uint unsigned intsbit dulaP2^6;
sbit welaP2^7;uchar disnum,temp,key;uchar code table_duan[]{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};void delay(uchar);void main()
{disnum16;wela1;P00xfe;wela0;while(1){P30xf0;tempP3;temptemp0xf0; //按位与if(temp!0xf0) //判断是否有按键按下{delay(10);if(temp!0xf0){tempP3;temptemp|0x0f;P3temp;keyP3;switch(key){case 0xee: disnum0; break;case 0xde: disnum1; break;case 0xbe: disnum2; break; case 0x7e: disnum3; break; case 0xed: disnum4; break; case 0xdd: disnum5; break; case 0xbd: disnum6; break; case 0x7d: disnum7; break; case 0xeb: disnum8; break; case 0xdb: disnum9; break; case 0xbb: disnum10; break; case 0x7b: disnum11; break; case 0xe7: disnum12; break; case 0xd7: disnum13; break; case 0xb7: disnum14; break; case 0x77: disnum15; break;}} }P0table_duan[disnum];dula1;dula0;}
}void delay(uchar x)
{uchar a, b;for(ax;a0;a--){for(b200;b0;b--);}
} 使用子模块函数的方法
#includereg52.h#define uchar unsigned char
#define uint unsigned intsbit dulaP2^6;
sbit welaP2^7;uchar disnum,temp,key,num;void delay(uchar);
uchar keyscan();uchar code table_duan[]{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0};void main()
{disnum16;wela1;P00xfe;wela0;while(1){numkeyscan();P0table_duan[num];dula1;dula0;}
}uchar keyscan()
{P30xf0;tempP3;temptemp0xf0; //按位与if(temp!0xf0) //判断是否有按键按下{delay(10);if(temp!0xf0){tempP3;temptemp|0x0f;P3temp;keyP3;switch(key){case 0xee: disnum0; break;case 0xde: disnum1; break;case 0xbe: disnum2; break; case 0x7e: disnum3; break; case 0xed: disnum4; break; case 0xdd: disnum5; break; case 0xbd: disnum6; break; case 0x7d: disnum7; break; case 0xeb: disnum8; break; case 0xdb: disnum9; break; case 0xbb: disnum10; break; case 0x7b: disnum11; break; case 0xe7: disnum12; break; case 0xd7: disnum13; break; case 0xb7: disnum14; break; case 0x77: disnum15; break;}} }return disnum;
}void delay(uchar x)
{uchar a, b;for(ax;a0;a--){for(b200;b0;b--);}
}
光看不练就是眼高手低。多练习才行的。