(3)运行/停止控制。波形显示完后,若读到stop为1,则等到FIFO写满后进入停止状态。在停止状态FIFO中的数据保持不变。在停止状态若检测到用户输入,则执行相应函数。若检测到stop为0,则清屏,重绘图形界面,输出运行图标,返回到显示波形状态。
(4)光标测量。在停止状态若检测到光标测量为1,则进入光标测量状态。首先将2个光标的y轴坐标转换为实际电压值输出到LCD,然后计算2个光标电压的差值输出到LCD上的相应位置处。再根据分频系数将2个光标的x轴差值转换为实际的时间,输出到LCD。最后绘制2个十字光标,每个光标由一横一纵2条直线构成,其交点位于波形上。
光标绘制完成后检测用户按键,如果有左右移动或光标切换按键操作,则对相应光标的x坐标做加减运算,然后从缓冲区重新读取波形输出到LCD,将之前的信息覆盖,接着再次调用光标绘制函数绘制新的光标位置和光标的信息。流程如图5所示。
(5)将波形保存到SD卡。在停止状态若检测到保存按键输入,则将数据保存到SD卡。首先在FAT表中查找空簇,返回簇号,并在FAT表中标记该簇已被占用,同时更新FAT表。然后在根目录中查找已存在的DAT文件,若有DAT文件则返回最大的文件名,否则返回0。然后将缓冲区的数据写入SD卡的对应扇区,扇区地址=根目录地址+根目录大小+(簇号-2)×每簇的扇区数。接着在根目录中找到一个空闲项,将文件名称、大小、所在簇写入该项,即完成文件的保存。最后在LCD上输出相应的提示信息。流程如图6所示。
(6)波形显示窗口的移动。在停止状态若检测到左右移动输入,则进行波形显示窗口的移动。当左/右键按下时,若窗口没超过FIFO边界,则将窗口的首地址左/右移2个像素,然后更新显示的窗口,同时按比例更新窗口指示器的位置。
(7)波形文件格式。用于保存波形的文件使用8.3格式命名,名称为OSC_xxxx.DAT,其中xxxx为文件的编号。由于每次采集的波形数据量大小相同,因此文件的大小也为固定值。FIFO深度为256 B,添加触发电平、触发沿、时间刻度等信息后,文件的体积为260 B。由于磁盘的底层读写操作是按照扇区进行的,一个扇区512 B,所以将文件的大小定义为512 B。前256 B为波形数据,第257 B为触发沿信息,第258 B为触发电平信,第259 B,260 B为分频系数,通过软件转换后可得时间刻度的大小。