打印

如何解决动态波形显示程序出现断续的问题?

[复制链接]
1393|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zh9091y|  楼主 | 2012-9-8 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
主程序中
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,请高手帮忙修改,或者有没有相应的参考程序。。
沙发
zh9091y|  楼主 | 2012-9-8 10:24 | 只看该作者
说错了 circle_cnt的值似乎总是0

使用特权

评论回复
板凳
梅花望青竹| | 2012-9-8 22:00 | 只看该作者
使用GUI的memdev

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

19

帖子

1

粉丝