各位大神·,这是我根据普中单片机开发板HC6800-ES-V2.0的矩阵键盘上的讲解编的程序,但达不到预期效果,显示倒是可以显示,但按键只能按一次,比如按s1就显示0,但接着按其他键就没反应了,还是0。求大神指导。
#include<reg51.h>
void Delay10ms();
unsigned char S[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void Delay10ms();
void main()
{
unsigned char a=0;
P2=0x0f;
while(1)
{
if(P2!=0x0f)
{
Delay10ms();
if(P2!=0x0f)
{
switch (P2)
{
case(0x07):M=1;break;
case(0x0b):M=2;break;
case(0x0d):M=3;break;
case(0x0e):M=4;break;
}
P2=0xf0;
switch(P2)
{
case(0x70):M=M;break;
case(0xb0):M=M+4;break;
case(0xd0):M=M+8;break;
case(0xe0):M=M+12;break;
}
while((a<50)&&(P2!=0xf0))
{
Delay10ms();
a++;
}
switch(M)
{
case(1):P0=S[0];break;
case(2):P0=S[1];break;
case(3):P0=S[2];break;
case(4):P0=S[3];break;
case(5):P0=S[4];break;
case(6):P0=S[5];break;
case(7):P0=S[6];break;
case(8):P0=S[7];break
case(9):P0=S[8];break;
case(10):P0=S[9];break;
}
}
}
}
}
void Delay10ms()
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
此帖出自
小平头技术问答
一周热门 更多>