STM32 LCD屏绘制折线图(曲线图)

    科技2022-07-11  191

    在做温度、湿度等显示的时候,折线图是十分有用的。当采样点足够密集的时候,折线图也近似成曲线图。下面介绍基于正点原子STM32 F1开发板的LCD屏折线图绘制。

    屏幕大小2.8寸 320*240

    实现绘制折线的函数如下:

    函数的功能是对于入口参数的短整型数据绘制到LCD屏上,并连接成折线。 我们采用横屏显示的方式,因此只有240个像素点可以用来表示输入的数值,那么如何把输入的数据与240个像素点对应起来?这里采用了分段的对应方式。rawValue/280,这样对于短整型的rawValue(-32768~32767)对应的值范围为-117到117。将其加上120(屏幕宽度的一半),这样得到的范围为3到237,和LCD屏的宽度接近。根据不同的需求只要更改y= 120 - rawValue/280;以及入口参数的类型就可以了 。

    u16 lastX,lastY; u8 firstPoint = 1; void drawCurve(short int rawValue) { u16 x,y; y = 120 - rawValue/280; //data processing code //这里之所以是120-rawValue/280,与屏幕的扫描方向有关,如果出现上下颠倒的情况,可以改成120 + if(firstPoint)//如果是第一次画点,则无需连线,直接描点即可 { LCD_DrawPoint(0,y); lastX=0; lastY=y; firstPoint=0; } else { x=lastX+1; if(x<320) //不超过屏幕宽度 { LCD_DrawLine(lastX,lastY,x,y); lastX=x; lastY=y; } else //超出屏幕宽度,清屏,从第一个点开始绘制,实现动态更新效果 { LCD_Clear(WHITE);//清屏,白色背景 LCD_DrawPoint(0,y); lastX=0; lastY=y; } } }

    显示效果

    Processed: 0.010, SQL: 8