表22.2 相关参数之间的关系
由于ADS830E每次重新进入工作状态要有一个稳定的过程,开始采样的几个数据精度不高,因此在读取IDT7205数据时先空读50个数据,将这些数据丢弃,然后再将后面的数据读入ATmega16。
图22.8 显示区域
4. 数据计算处理
数据计算处理工作主要包括同步触发信号检测、信号电压峰峰值测量、信号频率测量。这部分程序设计的思路是:
先在650个数据的前350个数据中以显示屏的垂直中点对应数据120为基准,找到同步触发信号。之所以在前350个数据中找同步触发信号,是为保留后面至少有300个数据供显示波形用。找到同步触发信号后,则把对应该点数据为起点的连续300个数据作为显示数据。
然后找到650个数据中的最大值和最小值,求最大值和最小值的算术平均数,即可得到中点电压值,检测信号相邻两次向上穿过中点的时间差即可计算出信号的周期。
5. LCM的控制与显示
TFT-LCD显示屏的分辨率为320像素×240像素。显示屏的每一个像素都对应着驱动控制芯片ILI9325内部存储器唯一的一个地址(x,y),x为横坐标,寻址范围为0~319;y为纵坐标,寻址范围为0~239。在像素对应地址写入16位颜色数据就可以显示相应的颜色,如果某一点要清除,只要对该像素对应的地址写入背景色就可以了。由于这里ILI9325采用8位接口工作模式,因此传递16位数要分两次进行。
因为数字示波器既要显示被测信号的波形,也要显示有关的测量数据,如电压峰峰值、频率、水平扫描速度、垂直灵敏度等,所以必须对显示区域进行合理的划分,并对颜色进行规划设置,分配好的显示区域如图22.8所示。图中用来显示波形的区域为中间的300×200。在这个区域画了刻度线,将水平方向分成10格,垂直方向分成8格。其余区域用来显示各种数据。
对ILI9325最基本的操作有两种:发送命令和发送数据。无论是显示屏的初始化,还是设置显示地址和显示颜色,都要用到这两种基本操作。
显示被测信号波形的过程是:先清除上一帧显示波形,然后画刻度线(刻度线每次都要重画,因为有些和显示波形交叉的点也被清除了),最后画新的一帧信号波形,同时备份数据作下一次清除用。显示信号波形时,存储器地址(x,y)中的x代表水平扫描信号所处的位置,y代表信号电压的大小。每次刷新信号波形时,信号电压峰峰值和信号频率显示数据也同时刷新一次。水平扫描速度和垂直灵敏度的数据只有在重新调整后才刷新。
表22.3 主要元器件清单
元器件选择主要元器件的清单见表22.3。
经过试验,我发现在工作电压为5V时,单片机ATmega16和ATmega16L在时钟频率为20MHz下均能正常工作。因此,如果你手头只有ATmega16L也可以使用。
IDT7205如果使用PLCC封装的芯片,请注意引脚编号不同。
干簧继电器也可以选用其他型号的,只要工作电压是5V,闭合电流小于20mA即可。
机箱我选用的是成品塑料机箱,你也可以用其他样式的,或者自己用有机玻璃DIY。
显示屏和ADS830E的两块转接板是必须要用的,不然无法在万能板上安装,可以设法和元器件一起采购。
图22.9 缓冲区对比图