标题:
单片机+光纤传感器程序,识别不准确,求分析
[打印本页]
作者:
啊h啊
时间:
2020-8-11 13:53
标题:
单片机+光纤传感器程序,识别不准确,求分析
最近想玩一个识别卡片的小玩具,在卡片上排列两行排列不同的激光点,光纤有信号时输出高电平。char ah,al;
int temp;
temp=(ah<<4)|al;
总是识别不准确,不知道有没有大神指导指导。
单片机源程序如下:识别不准确
void LIGHT(void)
{
// short flag_key;
unsigned char xms=20;
if(LIGHT_G1==0)
{
while(1)
{
LIGHT_LNF=0;
while(LIGHT_G1==0&&LIGHT_G2==1)
{
if(LIGHT_L1==1&&LIGHT_L2==1)
{
delay_ms(xms);
if(LIGHT_L1==1&&LIGHT_L2==1)
{
while(LIGHT_L1==1);
lig1=1;
lig2=1;BEEP=1;
break;
}
}
else if(LIGHT_L1==1&&LIGHT_L2==0)
{
delay_ms(xms);
if(LIGHT_L1==1&&LIGHT_L2==0)
{
while(LIGHT_L1==1);
lig1++;
break;
}
}
else if(LIGHT_L1==0&&LIGHT_L2==1)
{
delay_ms(xms);
if(LIGHT_L1==0&&LIGHT_L2==1)
{
while(LIGHT_L2==1);
lig2++;
break;
}
}
else if(LIGHT_L1==0&&LIGHT_L2==0&&u==0)
{
delay_ms(xms);
if(LIGHT_L1==0&&LIGHT_L2==0&&u==0)
{
lig1=0;
lig2=0;
u=1;
}
}
}
while(LIGHT_G1==0&&LIGHT_G2==0)
{
if(LIGHT_L1==1&&LIGHT_L2==1)
{
delay_ms(xms);
if(LIGHT_L1==1&&LIGHT_L2==1)
{
while(LIGHT_L1==1);
lig1++;
lig2++;
break;
}
}
else if(LIGHT_L1==0&&LIGHT_L2==1)
{
delay_ms(xms);
if(LIGHT_L1==0&&LIGHT_L2==1)
{
while(LIGHT_L2==1);
lig2++;
break;
}
}
else if(LIGHT_L1==1&&LIGHT_L2==0)
{
delay_ms(xms);
if(LIGHT_L1==1&&LIGHT_L2==0)
{
while(LIGHT_L1==1);
lig1++;
break;
}
}
else if(LIGHT_L1==0&&LIGHT_L2==0&&u==1)
{
lig1 <<= 1;
lig2 <<= 1;
u=2;
}
}
while(LIGHT_G2==0&&LIGHT_G1==1)
{
if(LIGHT_L1==1&&LIGHT_L2==1)
{
delay_ms(xms);
if(LIGHT_L1==1&&LIGHT_L2==1)
{
while(LIGHT_L1==1);
lig1++;
lig2++;
break;
}
}
else if(LIGHT_L1==1&&LIGHT_L2==0)
{
delay_ms(xms);
if(LIGHT_L1==1&&LIGHT_L2==0)
{
while(LIGHT_L1==1);
lig1++;
break;
}
}
else if(LIGHT_L1==0&&LIGHT_L2==1)
{
delay_ms(xms);
if(LIGHT_L1==0&&LIGHT_L2==1)
{
while(LIGHT_L2==1);
lig2++;
break;
}
}
else if(LIGHT_L1==0&&LIGHT_L2==0&&u==2)
{
lig1 <<= 1;
lig2 <<= 1;
u=0;
}
}
if(LIGHT_G2==1&&LIGHT_G1==1)
{
LIGHT_LNF=1;
lig3=(lig1<<4)|lig2;
LM_Cler();
LM_ShowNum(15,0,lig1,3,16);
LM_ShowNum(15,2,lig2,3,16);
sprintf((char*)LIG1,"%x",lig3);
LM_ShowString(0,2, LIG1);
lig3=lig1=lig2=0;BEEP=0;
break;
}
}
}
}
作者:
啊h啊
时间:
2020-8-12 16:38
识别的过程比较快,所以导致上述不准,有什么办法优化一下程序嘛,例如不要死循环等待光纤经过
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1