一种高效DSO波形显示算法的实现
数字存储示波器所显示的波形是由系列直线段有效地逼近而得到的。画波形函数是由画点函数按照一定的算法写出的,不同的算法画出的波形在速度和效果上会有所不同。因此有效的波形显示算法可以很大程度上提高波形的显示速度和视觉效果。
1 示波器程序模块的介绍
示波器采用嵌入式μC/OS操作系统。每一个任务都是一个无限循环。为了降低耦合,增强内聚,需要建立消息邮箱,以保证不同任务之间的通信。示波器的模块示意图如图1所示。
2 波形显示线程和画波形函数的说明
波形显示功能是由波形显示线程实现的,画点、画线、显示字符等都由基本的画点函数来实现。一种常见的波形显示方法就是:分别根据示波器通道的采样数据绘制波形,待下一屏显示数据准备就绪之后,将上一屏已经显示的波形全部擦除,再绘制准备就绪的波形数据。由于执行画点函数比较耗时,特别是在接近图形满屏的情况下,画点函数被调用次数较多,严重影响其他线程获得CPU的使用权,有可能会产生拖屏现象。示波器采用一种高效地波形显示算法,可以有效的解决上述问题,算法是在画波形函数中实现的。图2是画波形函数的流程图。
首先,声明一个wavebuff类型的指针pdl,pdl指向封装采样数据的链表。如果示波器仅有一个通道处于工作状态,则pdl→next指向NULL;如果双通道同时工作,则将激活状态的通道数据封装于链表的头结点,next指向封装另一通道数据的结点。以链表的方式封装数据,灵活方便,节省内存,扩展性强,如果有其他功能需求可以自由扩展链表长度。波形需要由经过处理的采样值构造系列直线段逼近得到。直线段的参数由CLINE类型的数据结构封装。遮蔽分析主要是为了在两通道同时工作的情况下,尽量减少画点。清屏和绘图分析是为了将待擦除线段与待绘制线段进行比较,重复线段保留,多余线段擦除,进一步达到减少画点的目的。
2.1 构造绘图线段
画波形函数是由画点函数按照一定的算法写出的,不同的算法绘制波形在速度和效果上会有所不同。波形显示算法要求达到波形粗细均匀,连续,绘制的速度快。示波器每屏显示600个离散数据。如果仅是将经处理后的采样离散数据在LCD对应的位置画出点来,波形不是连续的,而是离散的点,且看起来不清晰。构造绘图线段的作用就是根据相邻离散数据的大小关系得到绘制连续波形的一系列直线段的上下端点数值,流程图如图3所示。其方法如下:定义一个wavebuff类型的指针pdl。如果当前点的值大于与之相邻的下一点的值即pdl→buff[i]>pdl→buff[i+1],那么当前点所对应的直线段的上端点值hi=pdl→buff[i],下端点值lo=pdl→buff[i+1]+1;如果pdl→buff[i]
相关文章
- 2024-01-30记忆合金海底火山口热液采样器
- 2024-02-06临床生化自动分析仪的实验室管理体会
- 2023-06-28一种显微镜LED光源驱动设计
- 2023-08-02一种低温混合样品状态监测仪
- 2022-09-15旧式大型工具显微镜数显化
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。