请教大神,我想使用按键控制数码管显示不同的内容,为啥实现不了呢
教大神,我想使用按键控制数码管显示不同的内容,为啥实现不了呢,同一个按键,按一次显示温度、按一次显示时间,如此循环。按键加了延时后,按下去后数码管会变黑也切换不了。感觉按键处理这块有问题,求帮我分析下。
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//显示0~9的值
u8 DisData[8];
u8 DisplayData[8];
u8 Data[8];
u8 keypro() //按键处理函数
{
u8 i,flag=0,t=0;
if(k1==0)
{
if(k1==0)
{
for(i=0;i<2;i++)
{
delay2s();
flag++;
if(flag==2)flag=0;
}
}
//while(!k1);
}
switch(flag)
{
case (0):t=0;break;
case (1):t=1;break;
}
return t;
}
void dyna() \\数码管显示函数
{
unsigned int i;
for(i=0;i<8;i++)
{
switch(i)
{
case (0):SA=0;SB=0;SC=0;break;
case (1):SA=1;SB=0;SC=0;break;
case (2):SA=0;SB=1;SC=0;break;
case (3):SA=1;SB=1;SC=0;break;
case (4):SA=0;SB=0;SC=1;break;
case (5):SA=1;SB=0;SC=1;break;
case (6):SA=0;SB=1;SC=1;break;
case (7):SA=1;SB=1;SC=1;break;
}
switch(keypro())
{
case 1:Data[i]=DisplayData[i];break;
case 0:Data[i]=DisData[i];break;
}
GPIO_DIG=Data[i];
delay(20);
GPIO_DIG=0x00;//消隐
}
}