主程序中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,请高手帮忙修改,或者有没有相应的参考程序。。 |