求大神指导..
我现在是用
STM32内置AD采集数据,然后发送TFT显示屏显示波形...
采用的是把一整个屏幕要显示的adc值放进一个数组,然后将送到显示屏显示,然后再用这个数组清除显示...
现在的问题是 显示--清屏--显示 的过程中,在处理上面的时候,是有一部分数据是丢失的,要怎样才能做到真正的实时显示,数据不丢失
void Dispvave(u16 *Padval, u16 vavecolor, u16 linecolor, u16 backcolor,u8 n_Szu)
{
u16 i;
u32 point1,point2;
// for(i=0; i<=320; i+=40) //ƽÐÐYÖáµÄÏß
// {
// POINT_COLOR=linecolor;
// LCD_DrawLine(i,0,i,240);
// }
//
// for(i=0;i<=240;i+=40)
// {
// POINT_COLOR=linecolor;
// LCD_DrawLine(0,i,320,i);
// }
POINT_COLOR=vavecolor;
// for(i=0; i<320*n_Szu; i++)
for(i=0; i<320; i++)
{
point1=Padval[i]/High; //HighΪÏÔʾµÄ·ù¶È,ֻΪ1»òÕß2,Ϊ1ʱ·ù¶ÈÔö´ó,Ϊ2ʱ¿É¼õÒ»°ë.ȱʡֵΪ1
point2=Padval[i+1]/High;
if(point2<=240&&point1<240) //X×ø±êСÓÚ170ʱ²Å»Ïß,
{
//LCD_DrawLine(point1+10, i/n_Szu, point2+10, (i+1)/n_Szu);
// LCD_DrawLine(i/n_Szu, 240-point1, (i+1)/n_Szu, 240-point2);
LCD_DrawLine(i,point1, i+1,point2);
}
}
delay_ms(20);
//Çå³ýµã
POINT_COLOR=backcolor;
// for(i=0; i<320*n_Szu; i++)
for(i=0; i<320; i++)
{
point1=Padval[i]/High; //HighΪÏÔʾµÄ·ù¶È,ֻΪ1»òÕß2,Ϊ1ʱ·ù¶ÈÔö´ó,Ϊ2ʱ¿É¼õÒ»°ë.ȱʡֵΪ1
point2=Padval[i+1]/High;
if(point2<=240&&point1<240) //X×ø±êСÓÚ170ʱ²Å»Ïß,
{
//LCD_DrawLine(point1+10, i/n_Szu, point2+10, (i+1)/n_Szu);
// LCD_DrawLine(i/n_Szu, 240-point1, (i+1)/n_Szu, 240-point2);
LCD_DrawLine(i,point1, i+1,point2);
}
}
for(i=0; i<=320; i+=40) //ƽÐÐYÖáµÄÏß
{
POINT_COLOR=linecolor;
LCD_DrawLine(i,0,i,240);
}
for(i=0;i<=240;i+=40)
{
POINT_COLOR=linecolor;
LCD_DrawLine(0,i,320,i);
}
}
一周热门 更多>