【正文】
。 最后感謝 陪伴我四年的同學們,特別要感謝我的室友李波,沈陽和吳捷彪同學。 感謝中山唯美適精密公司給我實習的機會。 感謝中山舜宇 光學給我們提供實習的機會。 感謝北京理工大學珠海學院。他們不僅學識淵博,而且 學術思想活躍,富有責任感?;厥姿哪甑臅r光,很多老師對我的學習和生活給予很大的幫助。) Xx 學院 2020 屆本科生畢業(yè)設計 35 謝 辭 本論文在黃振永老師的悉心指導下和幫助下完成的。) colormap(gray(n)) subplot(1,2,2) b(:,m/2) plot(100*ys,b(:,m/2)) xlabel(39。 end subplot(1,2,1) image(xs,100*ys,b) xlabel(39。 b(:,i)=(hh)39。 sinth=sqrt(r./(r+f^2))。 n=255。 ys=linspace(ym,ym,m)。) function y=ys03(lambda,a,f) lambda=lambda*1e9 a=a*1e3 m=200。 xlabel(39。xlim39。)。 %色調(diào)處理 subplot(1,2,2) plot(B1,ys,39。光柵衍射圖樣 39。 Xx 學院 2020 屆本科生畢業(yè)設計 34 subplot(1,2,1) image(xs,ys,Brt)。 %確定灰度的等級 Br=(B/max(B))*NC。 B1=B/max(B)。 beta=pi*d*sinphi/lambda。 for i=1:n sinphi=ys(i)/D。 n=1000。 ym=2*lambda*D/a。 %縫數(shù),可以隨意更改變換 a=a*1e3。) function y=ys02(lambda,N,a,D) lambda=lambda*1e9。xlabel(39。k39。) colormap(gray(N))。xlabel(39。 subplot(1,2,1) Brt=Br*ones(1,2)。 end N=256。 sumsin=sum(sin(alpha))。 alpha=pi*yp*sinphi/lambda。%屏幕上的點數(shù) yp=linspace(0,a,n)。%屏幕上的點數(shù) ys=linspace(ym,ym,n)。 ym=3*lambda*D/a。) End If End Sub Private Sub Command2_Click() = = = End Sub Private Sub Command3_Click() = 500 = 1 = 1 End Sub Private Sub Command4_Click() End Sub Private Sub Command5_Click() End Sub Private Sub Command6_Click() End Sub Private Sub Command7_Click() Xx 學院 2020 屆本科生畢業(yè)設計 32 End Sub Private Sub Command8_Click() End End Sub 夫瑯禾費圓孔衍射三級窗體代碼: Private Sub Command1_Click() End Sub Private Sub Command2_Click() End Sub Private Sub Form_Load() End Sub Private Sub Image1_Click() End Sub Private Sub Image2_Click() End Sub Private Sub Label1_Click() End Sub Private Sub Label2_Click() End Sub Matlab M 文件函數(shù)代碼: function y=ys01(lambda,a,D)%lanbda 為波長, a 為縫寬, D 為衍射物到觀察屏的距離 lambda=lambda*1e9。H10, 0amp。, 0amp。) End If End Sub Private Sub Command2_Click() End Sub Private Sub Command3_Click() Xx 學院 2020 屆本科生畢業(yè)設計 26 End Sub Private Sub Command4_Click() End Sub Private Sub Command5_Click() End Sub Private Sub Command6_Click() End End Sub Private Sub Command7_Click() = = = = End Sub Private Sub Command8_Click() = 500 = 2 = = 5 End Sub 夫瑯禾費單縫衍射三級窗體代碼: Private Sub Command3_Click() Xx 學院 2020 屆本科生畢業(yè)設計 27 End Sub Private Sub Command4_Click() End Sub Private Sub Command5_Click() End Sub Private Sub Command6_Click() = = = End Sub Private Sub Command1_Click() End Sub Private Sub Command2_Click() End End Sub 光柵衍射二級窗體代碼: 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 suer32 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 Xx 學院 2020 屆本科生畢業(yè)設計 28 Private Sub Command1_Click() Dim a(0 To 3), e, X Dim winHwnd As Long, RetVal As Long a(0) = Val() a(1) = Val() a(2) = Val() a(3) = Val() e = ys02(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。 [14]譚炎,張凌燕 :《 MATLAB 與 VB 混合編程技術研究 》 [J], 微計算機信息 報 ,2020年第 11 期,第 247249 頁。 [12]馮旭 : 《 在 VB開發(fā)環(huán)境中調(diào)用由 MATLAB函數(shù)轉(zhuǎn)化的 DLL》 [J], 《 西北民族大學學報 》 自然科學版, 2020年第 5期,第 6567頁。 [10] 李海濤,鄧櫻 :《 MATLAB6. 1 基礎及應用技巧 》 [M], 國防工業(yè)出版社 2020年版,第 4589 頁。 [8]張德豐:《 詳解 MATLAB 數(shù)字圖像處理 》 [M],電子工業(yè)出版社 2020 年版 , 第2846頁 。 [6]張平:《 MATLAB 基礎與應用》 [M],北京航空航天大學出版社 2020 年版 , 第74135 頁 。 [4]孫緒保 :《 光學實驗與仿真 》, [M], 北京理工大學出版社 2020 年版 , 第 197頁 。 第 1版 ,第 1821 頁 。 Xx 學院 2020 屆本科生畢業(yè)設計 24 參考文獻 [1]廖延彪 :《 光學原理與應用》 [M], 電子工業(yè)出版社 第 1 版 ,第 1138 頁 。 不過 , 功能 上 還不夠豐富,界面還不是很美觀。 在編寫該系統(tǒng)時,我遇到很多困 難,如 Matlab 與 VB 的混合編程, VB 界面的優(yōu)化,還有 Matlab 程序的優(yōu)化等。能較好地應用于大學光學實驗的仿真。 仿真后結果如下: 42 光柵衍射仿真界面 Xx 學院 2020 屆本科生畢業(yè)設計 22 夫瑯禾費 圓 孔 衍射仿真 輸入光學參數(shù):光波波長 500nm,圓孔直徑 1mm,衍射物到觀察屏的距離 1m。 夫瑯禾費 單縫 衍射仿真 輸入光學參數(shù):光波波長 500nm,縫寬 1mm,衍射物到觀察屏的距離 1m。 在左邊的數(shù)據(jù)窗體中輸入相關的光學參數(shù)值,然后點擊右上角的“開始仿真”按鈕,此時,在中心窗體上即可出現(xiàn)衍射的圖樣及光強分布圖。 Xx 學院 2020 屆本科生畢業(yè)設計 20 4 系統(tǒng)仿真 系統(tǒng) 啟動及操作 雙擊制作完成的“光學衍射仿真實驗系統(tǒng) .exe” 文件 ,進入 系統(tǒng)主界面 。 此外 ,還可以用制作安裝程序的軟件(如微軟自帶的 iexpress或網(wǎng)上提供免費下載的安裝程序制作專家)將上面的所有文件打包,并制作成安裝包。由于 COM 服務器,所以必須在操作系統(tǒng)中注冊后方可使用, 在系統(tǒng)開始菜單中點擊“運行 ”,輸入 : regsvr32 。 應用程序打包及發(fā)布 將 Matlab編寫的 M 文件 和 mat生成的 dll文件以及 VB制作的 exe文件 復制到同一文件夾中。這樣就可以用 XXX. bas聲明 XXX. dll,并且通過 XXX. cls建立 VB調(diào)用 XXX. dll的接口。為了能使用 Matlab強大的矩陣運算功能,還須將MaxtrixVB庫加入到工程中,步驟為:點擊工程下拉菜單,點擊 “ 引用 ” ,在 “ 引用 ” 對話框中找到 Mmatrix選項,在選項前面的方框中打勾,點擊確定。再通過編寫簡單程序,建立各種控 件之間的聯(lián)系。在 VB中新建一個 EXE工程,然后新建窗體。 VB 開發(fā)環(huán)境中需要用到的文件有 3 個: XXX. dll(dl