主要问题是:显示150个数据还没显示完,就自动复位回主程序。请大虾解答下。是什么原因呢,我用的是手动按键复位
程序如下:
void Data_Display( float x9[], int i)
{
float x3=0,x6;
unsigned char x7[15];
unsigned int k=0,j=0, x4[10];
TRISD=0x00;//PORTD口为输出
for(j=0; j<150;j++)
{
k=0;
x3=x9[j];
if(x3>=1000&&x3<10000)//数字转换成字符为显示作准备
{
x4[k]=(int)x3/1000;
x7[k]=x4[k]+'0';
x6=x3-x4[k]*1000;
k++;
x4[k]=(int)x6/100;
x7[k]=x4[k]+'0';
x6=x6-x4[k]*100;
k++;
x4[k]=(int)x6/10;
x7[k]=x4[k]+'0';
x6=x6-x4[k]*10;
k++;
x4[k]=(int)x6;
x7[k]=x4[k]+'0';
x6=x6-x4[k];
k++;
x7[k]='.';
x6=x6*100;
x4[k]=(int)x6/10;
x7[k+1]=x4[k]+'0';
x6=x6-x4[k]*10;
k++;
x4[k]=(int)x6;
x7[k+1]=x4[k]+'0';
x7[k+2]='\0';
}
else if(x3>=100&&x3<1000)
{
x4[k]=(int)x3/100;
x7[k]=x4[k]+'0';
x6=x3-x4[k]*100;
k++;
x4[k]=(int)x6/10;
x7[k]=x4[k]+'0';
x6=x6-x4[k]*10;
k++;
x4[k]=(int)x6;
x7[k]=x4[k]+'0';
x6=x6-x4[k];
k++;
x7[k]='.';
x6=x6*100;
x4[k]=(int)x6/10;
x7[k+1]=x4[k]+'0';
x6=x6-x4[k]*10;
k++;
x4[k]=(int)x6;
x7[k+1]=x4[k]+'0';
x7[k+2]='\0';
}
else if(x3>=10&&x3<100)
{
x4[k]=(int)x3/10;
x7[k]=x4[k]+'0';
x6=x3-x4[k]*10;
k++;
x4[k]=(int)x6;
x7[k]=x4[k]+'0';
x6=x6-x4[k];
k++;
x7[k]='.';
x6=x6*100;
x4[k]=(int)x6/10;
x7[k+1]=x4[k]+'0';
x6=x6-x4[k]*10;
k++;
x4[k]=(int)x6;
x7[k+1]=x4[k]+'0';
x7[k+2]='\0';
}
else if (x3<10)
{
x4[k]=(int)x3;
x7[k]=x4[k]+'0';
x6=x3-x4[k];
k++;
x7[k]='.';
x6=x6*100;
x4[k]=(int)x6/10;
x7[k+1]=x4[k]+'0';
x6=x6-x4[k]*10;
k++;
x4[k]=(int)x6;
x7[k+1]=x4[k]+'0';
x7[k+2]='\0';
}
else if(x3>=10000)
{
NOP();
}
// LCMInit(); //LCM初始化
// LCM_Data_DIR = 0x00;
WriteCommandLCM(0x01,1);//显示清屏
if(i==0)
{
DisplayOneChar(0, 0, '-');
for(k=0;x7[k]!='\0';k++)
{
DisplayOneChar(1+k, 0, x7[k]);
}
DisplayOneChar(k+1, 0, 'm');
DisplayOneChar(2+k, 0,'V');
}
else
{
for(k=0;x7[k]!='\0';k++)
{
DisplayOneChar(k, 0 , x7[k]);
}
DisplayOneChar(k, 0, 'm');
DisplayOneChar(k+1, 0,'V');
}
// Delay5Ms();
Delay400Ms();//Delay400Ms();
}
} |