24小时论文定制热线

热门毕设:土木工程工程造价桥梁工程计算机javaasp机械机械手夹具单片机工厂供电采矿工程
您当前的位置:论文定制 > 毕业设计论文 >
快速导航
毕业论文定制
关于我们
我们是一家专业提供高质量代做毕业设计的网站。2002年成立至今为众多客户提供大量毕业设计、论文定制等服务,赢得众多客户好评,因为专注,所以专业。写作老师大部分由全国211/958等高校的博士及硕士生设计,执笔,目前已为5000余位客户解决了论文写作的难题。 秉承以用户为中心,为用户创造价值的理念,我站拥有无缝对接的售后服务体系,代做毕业设计完成后有专业的老师进行一对一修改与完善,对有答辩需求的同学进行一对一的辅导,为你顺利毕业保驾护航
代做毕业设计
常见问题

VC++下位移信号检测软件的设计与实现

添加时间:2018/07/02 来源:未知 作者:admin
本文结合了这两种虚拟仪器的优点, 将其应用到线阵CCD位移信号的检测.利用VC++代码执行的高效性, 实现线阵CCD的信号采集, 并将采集到的信号写入文本文件, 再利用Lab VIEW友好的界面和强大的分析功能对采集到的图像信号进行分析和处理。
以下为本篇论文正文:

  摘要:提出了一种基于VC++和LabVIEW的线阵CCD位移信号检测系统, 将VC++的代码执行高效性和LabVIEW程序开发的便捷性、友好的图形化界面相结合, 实现了线阵CCD位移信号边采集边处理, 保证了信号采集的实时性和信号处理的高效性.其中VC++实现了信号的采集、存储, LabVIEW实现了信号的分析、处理和显示.

  关键词:线阵CCD; VC++; TXT文本文件; LabVIEW; 二值化;

  Abstract:This paper introduces a system for acquisition of signal on CCD based on VC++ and LabVIEW. High efficiency of VC++ and convenience of LabVIEW and afriendly graphical interface are combined to achieve concurrence of real time sampling and real time processing. VC++ realized sampling, storing, while LabVIEW realized analyzing, processing and display.

  Keyword:line CCD; VC++; text file; LabVIEW; binarization;

  VC++和Lab VIEW都可用于信号的采集和分析, 是虚拟仪器的两个典型的代表[1-3].Visual C++ (以下简称VC++) 是微软推出的可视化集成开发环境, 基于传统的文本语言编程方式, 开发的应用程序代码执行效率高, 它提供的MFC基础类库和ATL活动模板类也可以自由地设计用户界面及控件, 但由于它更侧重较底层的开发, 所以开发起来有一定难度.Lab VIEW是目前最为成功、应用最为广泛的虚拟仪器软件开发环境, 它采用图形化G语言编程, 具有丰富的函数、数值分析、信号处理等功能, 开发周期短、效率高[4-5].

  本文结合了这两种虚拟仪器的优点, 将其应用到线阵CCD位移信号的检测.利用VC++代码执行的高效性, 实现线阵CCD的信号采集, 并将采集到的信号写入文本文件, 再利用Lab VIEW友好的界面和强大的分析功能对采集到的图像信号进行分析和处理, 实现了VC++和Lab VIEW在位移信号检测上的混合编程, 这样的处理方法能够实现实时的位移信号检测.

  1、系统硬件总体结构

  系统的光源是采用西安思拓公司的光强均布激光器, 该产品是采用非球面透镜, 改善了光强非均匀分布的特性, 使光强呈均匀分布, 适用于高精度的测量和测试.CCD采用东芝公司的TCD1501D, 具有5 000个有效的像素点.采集卡是天津耀辉公司生产的AD12S-USB采集卡.

  系统硬件平台流程图如图1所示:光源1发出的光经凸透镜2后形成平行光, 通过调整高度游标卡尺3的高度对该平行光进行遮挡, 遮挡后的光线通过凸透镜4会聚成像进入CCD, CCD将光信号转换成电信号后, 由采集卡采集并传输至PC机.

图1 硬件平台流程图
图1 硬件平台流程图

  2、系统软件设计流程

  系统软件的总体设计流程如图2所示.CCD将光信号转换成电信号后, VC++通过采集卡采集线阵CCD的信号, 并将采集到的信号写入PC机硬盘的TXT文件, Lab VIEW通过读取该TXT文件, 对该信号进行时域、频域、幅值域等各种分析, 最终对该位移信号进行显示, 实现了信号的边采集和边处理.

图2 软件设计流程图
图2 软件设计流程图

  3、VC++程序设计

  3.1、VC++程序设计流程

  AD12S-USB采集卡出厂时提供了由VC++编写的动态链接程序dllkxusb.dll, 用VC++的Depends工具打开该库函数可以得到7个函数的名称和程序入口, 如图3所示, 函数功能及描述如表1所示.

图3 dllkxusb.dll动态库子函数
图3 dllkxusb.dll动态库子函数

表1 dllkxusb.dll动态库子函数
表1 dllkxusb.dll动态库子函数

  本文中只调用了其中的5个函数, 流程图和采集卡主控面板如图4~5所示.系统上电后先查询采集卡, 查询到的采集卡会显示在图6内的采集卡选择框内, 没有查询到采集卡则提示没有发现采集卡, 选择好采集卡的型号后, 输入采集卡的通道数、采集卡的精度位数、CCD的像元数后打开采集卡, 点击设置采集卡按钮对采集卡进行参数设置, 然后打开指定存储采集数据的TXT文件, 采集信号并写入TXT文件, 当采集完一帧图像后, 关闭TXT文件, 进行下一步的循环操作.

图4 VC++信号采集流程图
图4 VC++信号采集流程图

图5 VC++信号采集控制面板
图5 VC++信号采集控制面板

  3.2、VC++程序设计说明

  1) 查询采集卡.

  如果n Device Sum<=0, 则图5的采集卡选择的下拉列表框内提示没有可用设备, 否则会显示查询到所有的采集卡型号, 程序如下:

查询到所有的采集卡型号

  2) 采集卡参数输入和打开采集卡.

  在输入采集卡的通道数、采集卡的精度位数、CCD的像元数后, 点击打开采集卡的按钮, 触发VC++的按钮控件, 实现3个参数的赋值和取得设备的句柄, 在这里m_h Ccd Device是设备的句柄, 是对这块采集卡的唯一识别, 在以后的函数调用中, 只有取得这个设备的句柄才能对这个设备进行操作, 程序如下:

程序

  3) 设置采集卡.

  将各个参数赋值后, 就调用lc Set CCDParam函数对采集卡进行设置, 程序如下:

调用lc Set CCDParam函数对采集卡进行设置
调用lc Set CCDParam函数对采集卡进行设置 接上部分代码

  4) 循环采集和存储.

  设置好采集卡参数后, 打开所要存储信号数据的文本文件路径, 然后调用采集卡采集函数进行采集并写入TXT文本文件, 采集一帧图像后关闭TXT文件, 循环操作, 程序如下:

循环操作,程序

  4、Lab VIEW程序设计

  4.1、Lab VIEW程序设计流程

  Lab VIEW的程序设计流程图如图6所示.首先Lab VIEW读入存有信号数据的文本文件, 将其转化成数组, 再采用低通滤波滤掉噪声, 利用二值法对线阵CCD检测到的位移图像进行分割, 再通过计算移动像元数得到位移输出.

  4.2、Lab VIEW程序设计说明

  Lab VIEW程序主要包括前面板、框图程序和图标/连接端口3部分.前面板是交互式图形化用户界面, 用于设置输人数值和观察输出量;框图是定义vi功能的图形化源代码, 利用图形化语言对前面板的控制量和指示量进行控制, 这里简称后面板;图标/连接端口用于把程序定义成一个子程序, 以便在其他程序中加以调用[6-9].

  1) 打开TXT文件.

  首先进入Lab VIEW后面板, 从右键菜单选中编程/文件I/O/读取文本文件, 然后进行文本文件的路径设置.

图6 Lab VIEW信号处理流程图
图6 Lab VIEW信号处理流程图

  2) 转化成数组.

  从文本文件输入的信号数值通过调用LabVIEW带有的Extract Numbers.vi子模板转换为数组, 如果采集卡设置只有一个通道, 转换后的数组就是一维数组, 如果是设置两通道, 那么就是两维数组, 本系统选择一个通道.

  3) 低通滤波.

  CCD在采集图像过程中由于各种原因总是存在图像的退化、干扰和噪声, 比如CCD积分时间不足, CCD的抖动等, 所以要进行滤波[10].而在信号的传输过程中经常会混入高频噪声, 噪声的能量甚至会超过信号能量, 所以这里选择低通滤波[11-13], 把原始的信号通过傅里叶变换后如图7所示, 可以看出噪声的信号分布在低频段, 所以这里选择低通滤波器的截止频率为5 Hz, 滤波阶数设置为3阶, 滤波前后效果如图8所示.

图7 傅里叶变换
图7 傅里叶变换

  4) 二值法.

  由Lab VIEW采集到CCD的位移信号, 横坐标表示CCD的像元, 纵坐标表示每个像元所对应的光强信号.由Lab VIEW的统计子模块Mean MedianMode.vi计算出滤波后图像光强的平均值, 再和一个常数相乘得出的积作为图像二值化的阈值, 这里常数选择0.8, 这么做的好处是实现了自适应阈值, 这个阈值随着光强的改变而改变, 将通过滤波后的图像和阈值相比较, 有些像元的光强大于阈值, 有些小于阈值, 调用公式模块并设置符号公式Sign (X) , 就可以将光强信号分开, 这就是图像二值化的过程, 通过虚拟示波器显示出来, 如图9所示.

图8 滤波前后图像
图8 滤波前后图像

图9 二值化图像
图9 二值化图像

  5) 位移输出.

  通过For循环语句对所有的像元光强信号进行索引循环, 并设置条件语句进行正负的判断就可以将信号分成正负两组信号, 分别求出这两组信号中光强正负的像元数.得到了像元数后, 再和光学成像的放大倍数相乘[14], 就可以求出物体的位移量.光学成像的放大倍数计算如图10所示.

  图10中, x1是高度游标卡尺的移动距离, x2是CCD成像暗斑的移动距离, 本系统的CCD采用东芝的TCD1501D, 每个像元的中心距离是14 um, 假设CCD成像暗斑的像元数为n, 则可以得到公式 (1) , 通过公式 (1) 就可以算出物体的移动距离.

公式 (1)

图10 光学成像放大倍数
图10 光学成像放大倍数

  6) Lab VIEW界面.

  本系统的Lab VIEW框图程序如图11所示, 前面板如图12所示.

图11 Lab VIEW框图程序
图11 Lab VIEW框图程序

图12 Lab VIEW前面板
图12 Lab VIEW前面板

  5、结语

  通过VC++和Lab VIEW在线阵CCD上的混合应用设计了一个简单的位移信号检测系统, 将VC++的代码执行高效性和Lab VIEW友好的图形界面结合起来, 实验结果表明系统能够实现VC++边采集信号, Lab VIEW边对该信号进行分析和处理, 实现了CCD位移信号的实时检测.

  参考文献
  [1]刘锐宁, 宋坤.Visual C++程序设计标准教程[M].北京:人民邮电出版社, 2009.
  [2]杨乐平, 李海涛, 杨磊.LabVIEW程序设计与应用[M].2版.北京:电子工业出版社, 2005.
  [3]叶鹏飞.MATLAB与VC++混合编程在系统辨识中的应用[J].电脑开发与应用, 2009, 22 (1) :66-67.
  [4]岂兴明, 周建兴, 矫津毅.LabVIEW 8.2中文版入门与典型实例[M].北京:人民邮电出版社, 2009.
  [5]张建宏.虚拟仪器技术及其应用前景[J].电力学报, 2007, 22 (3) :355.
  [6]程学庆, 房晓溪.LabVIEW图形化编程与实例应用[M].北京:中国铁道出版社, 2005.
  [7]宋长源.基于LabVIEW软件的信号采集与分析[J].河南科技学院学报, 2008, 36 (1) :117-117.
  [8]蔡国英, 张宏群.基于LabVIEW的信号产生与分析系统[J].理论与方法, 2007, 26 (7) :12-14.
  [9]石川, 张琳娜, 刘武发.基于LabVIEW的数据采集与信号处理系统的设计[J].机械设计与制造, 2009 (5) :21-23.
  [10]王庆有.光电传感器应用技术[M].北京:机械工业出版社, 2007.
  [11]杨乐平, 李海涛, 赵勇, 等.LabVIEW高级程序设计[M].北京:清华大学出版社, 2003.
  [12]Wolfe J.Fast median filter implementation[J].SPIE, 1979, 207:154-164.
  [13]项震.基于器件特征的图像噪声消除[J].光电工程, 2001, 28 (5) :66-68.
  [14]吴晓红, 王中林.光学工程基础[M].武汉:湖北科学技术出版社, 2008.

相关内容
相关标签:VC毕业设计
好优论文定制中心主要为您提供代做毕业设计及各专业毕业论文写作辅导服务。 网站地图
所有论文、资料均源于网上的共享资源以及一些期刊杂志,所有论文仅免费供网友间相互学习交流之用,请特别注意勿做其他非法用途。
如有侵犯您的版权或其他有损您利益的行为,请联系指出,论文定制中心会立即进行改正或删除有关内容!