TFT-LCD显示波形

2019-07-21 08:51发布

                各位大侠好,我用STM32显示正弦波形在mini开发板的TFTLCD上,我是用打点的方法来显示正弦波的,但是LCD上有画出坐标轴,有显示出频率,幅度。但是当我要显示下一次采集到的点到LCD上的时候,之前显示在LCD上的点又还在LCD上,于是我想在每次显示采样的一组点到LCD上之前都LCD_Clear(BLACK);这个函数,把屏幕清为黑 {MOD}的,这样的话之前的波形就不会一直留着屏幕上了,但是我不想去掉的频率,幅度的显示值又被我LCD_Clear(BLACK);这个函数给清掉了。  我只想清掉我之前画上去的一组正弦波的点,其他地方不想修改的,请问该怎么办呢?求大侠指点。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
bg2ixd
2019-07-22 18:45
这是我的一段代码,仅供参考。
void  DMA1_Channel1_IRQHandler(void)
{
        u16 bc=BLACK,
                        fc=YELLOW ;
        u16 k0, //adc[512],
                i=0,
                //m=0,
                x0,
                y0,       
                x=9,
                y=159;
        //TIM2->CR1&=~(1<<0);    //使能定时器2

        tese_FFT() ;
        for(K=0;K<200;++K)
        {
                if(n==1)
                {       
                        Gui_DrawPoint(x+K,y-adc[K],bc);
                 if((K>0)&(K<200)&(adc[K+1]>adc[K]))
                        for(i=adc[K+1]-adc[K];i>0;i--)
                                Gui_DrawPoint(x+K+1,y-adc[K+1]+i,bc);
                                                               
                 if((K>0)&(K<200)&(adc[K+1]<adc[K]))
                        for(i=adc[K]-adc[K+1];i>0;i--)
                                Gui_DrawPoint(x+K+1,y-adc[K+1]-i,bc);
                // FFT_Window( 0,100);
                }               
                        adc[K]=Buff_MAG[K+1];  
                 Gui_DrawPoint(x+K,y-adc[K],fc);
                if((K>1)&(K<200)&(adc[K]>adc[K-1]))
                        for(i=adc[K]-adc[K-1];i>0;i--)
                                Gui_DrawPoint(x+K,y-adc[K]+i,fc);
                                                               
                if((K>1)&(K<200)&(adc[K]<adc[K-1]))
                        for(i=adc[K-1]-adc[K];i>0;i--)
                                Gui_DrawPoint(x+K,y-adc[K]-i,fc);
                                               
        }
                                       
        if(K>=199)
        {
                FFT_Window( 0,100);
         QDTFT_Test_Demo();
                       
        n=1;
        K=0;
        DMA_ClearFlag(DMA1_FLAG_TC1);   //clear the flag
                }

//        TIM2->CR1|=1<<0;                
//        n=1;
//        K=0;
//DMA_ClearFlag(DMA1_FLAG_TC1);   //clear the flag
//MYDMA_GOnes(DMA1_Channel1) ;
// ADC1->SQR3|=10<0;
//  ADC1->CR2|=1<<0;//开启 AD 转换器               
//        DMA1_Channel1->CCR|=(1<<0);  //开启DMA传输
}

一周热门 更多>