为什么这个键盘扫描它只有第一行成功,,,第二行没有...
时间:10-02
整理:3721RD
点击:
为什么这个键盘扫描它只有第一行成功,并进入读取键盘值,,第二行却没有?
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- //子函数
- void delay(int i) //延时函数
- {
- while(i--);
- }
- uchar key(void)
- {
- uchar h,numl;
- h=P2;
- while(1){
- P2=0xfe;
- {
- if(h!=0xfe)
- delay(20);
- if(h!=0xfe)
- {
- switch(h)
- {
- case 0xee:numl=1;break;
- case 0xde:numl=2;break;
- case 0xbe:numl=3;break;
- case 0x7e:numl=4;break;
- }
- return(numl);
- } }
- P2=0xfd;
- {
- if(h!=0xfd)
- delay(20);
- if(h!=0xfd)
- {
- switch(h)
- {
- case 0xed:numl=5;break;
- case 0xdd:numl=6;break;
- case 0xbd:numl=7;break;
- case 0x7d:numl=8;break;
- }
- return(numl);
- } }
-
-
-
- }
- }
- void main()
- {
- uchar a;
- a=key();
- switch (a)
- {
- case 1:P0=0x01;delay(20000);break;
- case 2:P0=0x02;delay(20000);break;
- case 3:P0=0x03;delay(20000);break;
- case 4:P0=0x0c;delay(20000);break;
- case 5:P0=0x04;delay(20000);break;
- case 6:P0=0x05;delay(20000);break;
- case 7:P0=0x06;delay(20000);break;
- case 8:P0=0x0d;delay(20000);break;
- }
- }
没有人
第一行后,加一个锁定试试,不行的话把电路图发上,看一下
谢谢分享
电路图,,本来打算做4*4的,,,就是看见不成功就先用2*4的进行试水
感谢 我弄成功了 就加了几句h=P2;
嗯,加油吧