主程序中
while部分
while{
for(circle_cnt=0;circle_cnt<128;circle_cnt++)//circle_cnt<2也是效果也是一样的不知道怎么回事。
{
A[circle_cnt] =(int16_t)((*(data_DMA+(3*circle_cnt)) & ADC1_value_mask) )*3.3*25/4096;//将AD转换的数据存到A[]中,在显示的时候用此来表示纵坐标。
}
circle_cnt=1;
/*判断当两个纵坐标之差的绝对值是否大于1,如果大于1则在此中间插入相差的点*/
if(A[circle_cnt]-A[circle_cnt-1]>1)
{
unsigned short k;
for(k=1;A[circle_cnt-1]+k<A[circle_cnt];k++)
{
Line(x+10,150-A[circle_cnt-1],x+10,150-A[circle_cnt-1]+k);
A[circle_cnt-1]=A[circle_cnt-1]+1;
}
}
else if(A[circle_cnt]-A[circle_cnt-1]<-1)
{
unsigned short k;
for(k=1;A[circle_cnt]+k<A[circle_cnt-1];k++)
{
Line(x+10,150-A[circle_cnt-1],x+10,150-A[circle_cnt-1]-k);
A[circle_cnt-1]=A[circle_cnt-1]-1;
}
}
else //从左往右依次两个点两个点的画线
{
SetPaintMode(2,COLOR_Blue);
Line(x+10,150-A[circle_cnt-1],x+10+1,150-A[circle_cnt]);
SetPaintMode(2,COLOR_White);
Line(x+10,150-B[circle_cnt-1],x+10+1,150-B[circle_cnt]);
x++;
circle_cnt++;
if(circle_cnt==126) //发现这个用不用无所谓,而且circle_cnt的值总是1不变的,请指教?
{
Line(x+10,150-A[circle_cnt+1],x+10+1,150-A[0]);
circle_cnt=0;
}
if(x+10>610) //超屏时从原先的坐标显示,并清除显示区域的波形
{
x=0;
WaveFormInitial(10,10,610,230,1);
WaveFormSetGrid(20,20,COLOR_Red,COLOR_Yellow,COLOR_Black);
WaveFormReDraw();
}
}
}
发现在前面用的判断两个纵坐标之差的绝对值是否大于1,根本没有作用。而且circle_cnt的值似乎总是1,请高手帮忙修改,或者有没有相应的参考程序。。 |