测控技术与仪器毕业论文光学衍射仿真实验系统内容摘要:

axtrixVB 库作为它与 dll 的接口代理, Matlab 编写的函数就 可以在 VB 中直接调用。 利用 dll 技术能够实现 VB 对 Matlab 的调用,利用这种方法可以方便地在自己开发的软件中嵌入 Matlab 强大的运算功能,从而实现高速的运算与友好人机界面的完美结合。 系统设计 本 设计 以设计简单直观, 且操便 捷的人机 交互 界面为理念 ,开发面向学生的光学衍射仿真实验系统。 整个软件以一个主窗体将三个光学衍射实验整合在一起。 点击相应的图标进入二级窗体后,便可进行仿真实验,此外,还有三级窗体,主要是实验原理的查看,数据分析以及相关帮助。 如图 31 所示。 Xx 学院 2020 届本科生毕业设计 10 图 31 光 学衍射实验系统主界面 界面程序如下: Private Sub Command1_Click() End Sub Private Sub Command2_Click() End Sub Private Sub Command3_Click() End Sub Private Sub Command4_Click() End End Sub Private Sub Form_Load() End Sub 二级窗体是本系统的核心所在, 由系统主菜单的相应按钮点击进入即可, 是Xx 学院 2020 届本科生毕业设计 11 衍射实验的可操作界面。 包括 夫琅禾费单缝 衍射窗体,光栅衍射窗体, 夫琅禾费圆 孔 衍射窗体。 界面由参数设置,实验原理图,衍射仿真图像,还有其他一些连接至三级窗体的按钮。 下图 32是 夫琅禾费单缝 衍射的 窗体。 图 32 二级 窗体 图 主要程序如下: Option Explicit Private Declare Sub keybd_event Lib user32 (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlag As Long, ByVal dwExtraInfo As Long) Private Declare Function FindWindow Lib user32 Alias FindWindowA (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function PostMessage Lib user32 Alias PostMessageA (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Sub VScroll1_Change() End Sub Private Sub Command1_Click() Xx 学院 2020 届本科生毕业设计 12 Dim a(0 To 2), e, X Dim winHwnd As Long, RetVal As Long a(0) = Val() a(1) = Val() a(2) = Val() e = ys01(a) Call keybd_event(vbKeySnapshot, 1, 100, 100) DoEvents = (vbCFBitmap) winHwnd = FindWindow(vbNullString, Figure 1) If winHwnd 0 Then RetVal = PostMessage(winHwnd, amp。 H10, 0amp。 , 0amp。 ) End If End Sub Private Sub Command3_Click() End Sub Private Sub Command6_Click() = = = End Sub Private Sub Command7_Click() = 500 = 1 = 1 End Sub Xx 学院 2020 届本科生毕业设计 13 三级窗体由二级窗体右边的按钮点击进入,主要有 “ 实验原理 ” , “ 实验内容 ” ,还有“课后思考 ”。 实验原理讲述实验的原理及基础知识 ,实验内容 主要包含实验步骤和实验要求 ,而 课后思考则是提出一些思考题,让学生通过完成该实验后进行解答。 下图 33到图 35 为夫琅禾费单缝衍射的三级窗体界面。 图 33 实验原理窗体 Xx 学院 2020 届本科生毕业设计 14 图 34 实验内容窗体 图 35 课后思考窗体 Xx 学院 2020 届本科生毕业设计 15 Matlab程序设计 单缝 衍射程序设计 当光源到衍射屏的距离和光屏到衍射屏的距离都是无穷大时,即满足远场条件时,我们称这种衍射为夫琅禾费衍射 . 所以夫琅禾费衍射中入射光和衍射光都是平行光 . 为了模拟单缝衍射现象,我 把单缝看成一排等间隔光源,共 NP 个光源分布在 A~ B 区间内,离 A 点间距为 yp,则屏幕上任一点 S 处的光强为 NP 个光源照射结果的合成 . 如图 所示,子波射线与入射方向的夹角  称为衍射角, 0 时,子波射线通过透镜后,必汇聚到 O 点,这个亮条纹对应的光强称 为主极大 . NP 个光源在其他方向的射线到达 S 点的光程差,应等于它们到达平面 AC 的光程差,即sinyp ,其中 Dyssin (31) ys为 S 点的纵坐标,则与 A点光源位相差为 ysDyP 22  (32) Y s A B φ C O φ 图 36 单缝衍射 设单缝上 NP 个光源的振幅都为 1,在 x, y轴上的分量各为 cos , sin 合振幅的平方为:    22 sinc os  。 又光强正比于振幅的平方,所以相对于 O 点主极大光 强 为 :    220 s inc os  II (33) 程序如下: function y=ys01(lambda,a,D)%lanbda 为波长, a 为缝宽, D 为衍射物到观察Xx 学院 2020 届本科生毕业设计 16 屏的距离 lambda=lambda*1e9。 a=*a。 ym=3*lambda*D/a。 %屏幕上 y 的范围 n=60。 %屏幕上的点数 ys=linspace(ym,ym,n)。 n=60。 %屏幕上的点数 yp=linspace(0,a,n)。 for i=1:n sinphi=ys(i)/D。 alpha=pi*yp*sinphi/lambda。 sumcos=sum(cos(alpha))。 sumsin=sum(sin(alpha))。 B(i,:) =(sumcos^2+sumsin^2)/n^2。 end N=256。 %确定灰度的等级 Br=(B/max(B))*N。 subplot(1,2,1) Brt=Br*ones(1,10)。 image(ym,100*ys,Brt)。 xlabel(39。 单缝衍射图样 39。 ) colormap(gray(N))。 %色调处理 subplot(1,2,2) plot(B,100*ys,39。 k39。 )。 xlabel(39。 光强分布图 39。 ) 设  为入射光波长;  为光栅上每一透光狭缝的宽度; d 为光栅常数;  为衍射角。 一般光栅与光屏的距离 D 远大于衍射条纹在光屏上偏离光屏中心的距离ys,因此有: Dy /~sin  (34) 光栅衍射可以看作是 N个相干光形成的缝间干涉和单缝衍射共同作用的结果。 对于光屏上任一点 P的光强度,等于 N个相干光在该点产生的干涉光强度与宽度为 a的 夫琅禾费 单缝 衍射在该点产生的光强度的乘积,其强度可表示为: Xx 学院 2020 届本科生毕业设计 17   220 ]s in/)[ ( s in]/s in[  NII p  (35) 其中: 0I 为屏中心的最大光强; 2]/)[(sin  为单缝衍射因子; 2)sin/(sin N为多光束干涉因子;  sin/ ;  sin/d。 程序如下: function y=ys02(lambda,N,a,D) lambda=lambda*1e9。 %波长 %N=2。 %缝数,可以随意更改变换 a=a*1e3。 d=5*a。 ym=2*lambda*D/a。 xs=ym。 n=1000。 ys=linspace(ym,ym,n)。 for i=1:n sinphi=ys(i)/D。 alpha=pi*a*sinphi/lambda。 beta=pi*d*sinphi/lambda。 B(i,:) =(sin(alpha)./alpha).^2.*(sin(N*beta)./sin(beta)).^2。 B1=B/max(B)。 end NC=255。 %确定灰度的等级 Br=(B/max(B))*NC。 Brt=Br*ones(1,10)。 subplot(1,2,1) image(xs,ys,Brt)。 xlabel(39。 光栅衍射图样 39。 ) colormap(gray(NC))。 %色调处理 subplot(1,2,2) plot(B1,ys,39。 k39。 )。 set(gca,39。 xlim39。 ,[0,1])。 xlabel(39。 光强分布图 39。 ) 圆 孔 衍射程序设计 考虑由一点光源所发出的球面光波经圆孔衍射屏形成的衍射场 ,根据菲涅耳Xx 学院 2020 届本科生毕业设计 18 基尔霍夫衍射积分公式 ,衍射场中一点 P 的光波振动 复振幅为 :        1c o sc o s2220002   drUiP eriz UU (36) 式中 : 为光波长 ,1r 为 S 到 Q 的距离 ,2r 为 Q 到 P 的距离 ,积分范围为半径为R 的圆孔表面 O ,即所谓透光部分。 程序如下: function y=ys03(lambda,a,f) lambda=lambda*1e9 a=a*1e3 m=200。 ym=2020*lambda*f。 ys=linspace(ym,ym,m)。 xs=ys。 n=255。 for i=1:m r=xs(i)^2+ys.^2。 sinth=sqrt(r./(r+f^2))。 x=2*pi*a*sinth./lambda hh=(2*besselj(1,x)).^2./x.^2。 b(:,i)=(hh)39。 .*5000。 end subplot(1,2,1) image(xs,ys,b) xl。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。