示波器程序設(shè)計源代碼+實驗報告大作業(yè).doc_第1頁
示波器程序設(shè)計源代碼+實驗報告大作業(yè).doc_第2頁
示波器程序設(shè)計源代碼+實驗報告大作業(yè).doc_第3頁
示波器程序設(shè)計源代碼+實驗報告大作業(yè).doc_第4頁
示波器程序設(shè)計源代碼+實驗報告大作業(yè).doc_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

C語言程序設(shè)計-示波器示 波 器 C語言程序設(shè)計姓 名: 龔 吉 祥 同 組 人: 王 輝 亞 譚 超 班 級: 09 軟件(1)班 學(xué) 號: A093GZ053020129 指導(dǎo)老師: 陳 美 成 院 校: 貴州航天職業(yè)技術(shù)學(xué)院 時 間: 2011-11-09 目 錄一:摘要、引言 -4二:程序分析-62.1:軟件需要實現(xiàn)的功能 -62.2:編譯環(huán)境 -62.3:項目規(guī)劃 - 62.4:程序的技術(shù)難點 - 7三:程序設(shè)計及算法分析 -83.1 程序框架設(shè)計 -83.1.1 :程序設(shè)計草圖 -83.1.2 程序流程圖 - 93.1.3 程序所需全局變量:-103.1.4 函數(shù)分析:-103.2 程序模塊函數(shù)詳解 -133.2.1:按鈕的設(shè)計-133.2.2,設(shè)置按鈕按下的效果函數(shù) -153.2.3,制作旋轉(zhuǎn)圓形按鈕 -173.2.4:圖形模式下的漢字輸出 -203.3 程序界面的繪制 -21 3.3.1 繪波區(qū)的刻度函數(shù) -223.3.2 繪制程序固定不變的界面 -223.4 動態(tài)界面需要的相關(guān)元素 -273.4.1 鼠標(biāo)的監(jiān)聽- 283.4.2 當(dāng)鼠標(biāo)離開按鈕,程序界面的恢復(fù)-303.4.3 當(dāng)鼠標(biāo)在旋轉(zhuǎn)按鈕上點擊鼠標(biāo)左鍵的效果函數(shù) -313.4.4 獲取鼠標(biāo)點擊界面上的那一個按鈕 - 323.5 波形圖函數(shù) -343.5.1 正弦波 -343.5.2 方波 - 363.5.3 三角波 - 373.5.4 鋸齒波 -383.5.5 模擬音波 -383.5.6 無規(guī)律波 -393.6 波形圖函數(shù)測量值輸出 -403.6.1:正弦波的相關(guān)數(shù)據(jù)輸出- 403.7:主要操作界面及函數(shù)(主函數(shù))-42四:示波器最終效果 - 50五:總結(jié) -51六:展望與發(fā)展 - 52七:參考文獻(xiàn)-53摘要:隨著計算機(jī)技術(shù)的發(fā)展,傳統(tǒng)儀器開始向計算機(jī)化的方向發(fā)展。虛擬儀器是90年代提出的新概念。虛擬儀器技術(shù)的提出與發(fā)展,標(biāo)志著二十一世紀(jì)自動測試與電子測量儀器領(lǐng)域技術(shù)發(fā)展的一個重要方向。所謂虛擬儀器,就是在通用的計算機(jī)平臺上定義和設(shè)計儀器的測試功能,使用者操作這臺計算機(jī),就像是在使用一臺專門設(shè)計的電子儀器。本程序就是通過圖形化虛擬示波器,因為在數(shù)據(jù)的采集和處理過程現(xiàn)在本組的技術(shù)能力有限,所以就通過簡單的數(shù)學(xué)知識和C語言的相關(guān)知識來解決這個示波器程序。在程序中利用C語言基礎(chǔ)知識和不斷的重畫圖形來實現(xiàn)模擬的示波器。在程序重主要利用的了鼠標(biāo)中斷,數(shù)學(xué)的正弦函數(shù)和其他的圖形函數(shù)來實現(xiàn)波的顯示來模擬示波器。關(guān)鍵字: 示波器、正弦波、三角波、方波、頻率、周期、振幅引言虛擬示波器是采用基于計算機(jī)的虛擬技術(shù),用以模擬通用示波器的面板操作和處理功能,也就是使用個人計算機(jī)及接口電路來采集現(xiàn)場或?qū)嶒炇倚盘?,并通過圖形用戶界面來模仿示波器的操作界面,完成信息采集、調(diào)理、分析處理和顯示輸出等功能。該程序所設(shè)計的虛擬示波器,是在數(shù)據(jù)采集硬件的支持下,配備一定的軟件,完成波形的存儲、分析、顯示等功能。一般測試儀器有信號采集、信號處理和結(jié)果顯示三大部分組成,這三大部分均由硬件構(gòu)成。虛擬示波器也是由這三大部分組成,但是,除了信號采集部分是有硬件實現(xiàn)之外,其它兩部分都是由軟件實現(xiàn)。所設(shè)計的虛擬示波器總體上包括數(shù)據(jù)采集、波形顯示、參數(shù)測量、頻譜分析、等幾大模塊組成,虛擬示波器的結(jié)構(gòu)框架圖如下:信號輸入數(shù)據(jù)采樣數(shù)據(jù)處理波形顯示參數(shù)測量與控制頻譜分析 這是示波器的基本處理過程,而本程序只實現(xiàn)了, 兩步,前面的數(shù)據(jù)都是通過隨機(jī)函數(shù)或設(shè)定一個值,然后通過后面的相關(guān)調(diào)節(jié)來改變數(shù)據(jù),所以本程序只實現(xiàn)一個簡單的模擬示波器。 程序分析1 該軟件需要實現(xiàn)的功能:(1) 波形的展寬,壓縮。(2) 幅度的放大與縮小。(3) 波形的平移。(4) 實現(xiàn)信號的測量功能。2編譯環(huán)境:(1) 硬件平臺:CPU:P41.8GHz;內(nèi)存:256MB以上。(2) 編譯工具:Wintc中文版(3) 運行環(huán)境:windowsXP3 項目規(guī)劃:q 數(shù)據(jù)的信號的采集這一個模塊用來實現(xiàn)對外界信號的數(shù)據(jù)信號的測量。因為該部分知識尚未掌握。所以這些數(shù)據(jù)通過設(shè)置一個固定值和隨機(jī)函數(shù)來代替數(shù)據(jù)的采集。q 數(shù)據(jù)信號的采集:該模塊實現(xiàn)把收集好的信號轉(zhuǎn)變?yōu)閳D形界面輸出。本程序只通過了一些數(shù)學(xué)函數(shù)來完成。q 實現(xiàn)用戶與程序的交互性:本程序?qū)崿F(xiàn)這一點是通過接收用戶的鼠標(biāo)操作。該模塊由黃金翔來完成。q 波形的顯示: 該模塊以實現(xiàn)波形的圖形顯示。比如:正弦波,三角波,方波,鋸齒波.。該模塊由袁財富完成。q 數(shù)據(jù)信號測量和顯示,調(diào)頻,調(diào)幅,平移:該模塊實現(xiàn)波形的相關(guān)數(shù)據(jù)的顯示,調(diào)頻,調(diào)幅,平移。該模塊由張志中來完成。q 程序的設(shè)計以及程序的最終組合:程序模塊的組合和相關(guān)的完善,該模塊由組長伍俊完成。4 程序技術(shù)難點 1:無法實現(xiàn)對信號的采集,如:電量,電壓、電流、頻率、相位差、調(diào)幅度等 2:在試驗過程中無法反映相關(guān)真實的數(shù)據(jù),只能一味的用函數(shù)模擬波形。 3: 除掉前面兩條沒不用考慮的技術(shù)難點,這個程序在制作過程中的技術(shù)難點就是鼠標(biāo)的控制,即鼠標(biāo)的點擊狀態(tài),和鼠標(biāo)的當(dāng)前位置。4:漢字的圖形畫界面顯示,本程序調(diào)用的是漢字字庫HZK16的文字點陣圖來實行漢字的顯示。 5:波形的重畫方法,程序執(zhí)行過程中因為要不斷的畫波,而又因為不斷的重畫會導(dǎo)致畫面的不流暢和閃爍,所以本程序中暫且采用的是檫去上一次的波的方法來減少程序的閃爍。 6:程序中波的展寬與壓縮,其間不能改變波的原來的參數(shù),只能通過一種算法來實現(xiàn)。 三 程序設(shè)計及算法分析說明:本程序因為需求的知識面甚廣,而現(xiàn)在只學(xué)了C語言。而示波器的真正功能就未實現(xiàn),這個程序做的就是模擬示波器的應(yīng)用的一小部分。3.1 程序框架設(shè)計 3.1.1:程序的設(shè)計草圖, 說明: 程序通過幾次設(shè)計及查看老師給的示例圖片,最終通過PS 畫出了上面的草圖。還有相關(guān)的坐標(biāo)已由圖中給出。該草圖方便其他成員對整個程序大致有一個了解。開始圖形初始化登陸界面:DengLu()繪制界面中的很少變動的場景Graph_face()While(1)獲取鼠標(biāo)的坐標(biāo)和按鍵狀態(tài)mouse(&x,&y,&z,smbo);返回用戶所選的那個按鈕Anniu=Return_button(x,y,z);switch(Anniu) 來恢復(fù)和顯示當(dāng)前按鈕,和設(shè)置準(zhǔn)備繪制什么波根據(jù)上一布獲得的什么波這一不就畫什么波Free(MoliNum)Closegraph結(jié)束如有退出操作沒有退出操作3.1.2:程序流程圖;說明: 該流程圖是整個程序執(zhí)行過程中的大致描述。3.1.3 程序所需全局變量:1int zf=40; /*用于存儲振幅當(dāng)前值*/2int zq=36; /*用于存儲周期當(dāng)前值*/3int py=2; /*用于存儲平移當(dāng)前值*/4int Chang_zf; /*用于存儲振幅值改變前的值*/5int Chang_zq; /*用于存儲當(dāng)前周期的上次周期值*/6int Chang_py; /*用于存儲當(dāng)前平移的上次平移值*/7int smbo=0; /*用于存儲保存當(dāng)前是什么波*/8static int MoliNum32; /*用于存儲模擬音波中的值*/3.1.4函數(shù)分析:void DrawButtonUp(int left,int top,int width,int height,int color)/*函數(shù)說明;函數(shù)用于畫按鈕沒有被按下時的畫面,這個函數(shù)主要畫有背景的按鈕,其中l(wèi)eft,top, width, height ,color 從字面意思就可以明白表示是按鈕的左上角的坐標(biāo)和按鈕的寬度,還有按鈕背景的顏色*/void DrawButtonUp1(int left,int top,int width,int height) /*函數(shù)說明;函數(shù)用于畫按鈕沒有被按下時的畫面,這個函數(shù)沒有畫有背景的按鈕,其中l(wèi)eft,top, width, height ,color 從字面意思就可以明白表示是按鈕的左上角的坐標(biāo)和按鈕的寬度,這個函數(shù)是一個“死“按鈕。因為如果要改變按鈕 那么 就得改原代碼函數(shù)。 這個函數(shù)在本程序下面主要是實現(xiàn)做動態(tài)畫面的,已因為這一點,為了動態(tài)效果的流暢,所以沒有畫按鈕背景*/void DrawForm(int left,int top,int width,int height,int color) /*函數(shù)說明;函數(shù)用于繪畫窗口的函數(shù),因為要達(dá)到窗口的效果所以它和按鈕有相似之處已有不同之處*/void DrawButtonDown(int left,int top,int width,int height,int color) /*函數(shù)說明;函數(shù)用于畫按鈕被按下時的畫面,這個函數(shù)主要畫有背景的按鈕,其中l(wèi)eft,top, width, height ,color 從字面意思就可以明白表示是按鈕的左上角的坐標(biāo)和按鈕的寬度,還有按鈕背景的顏色*/void DrawButtonDown1(int left,int top,int width,int height) /*函數(shù)說明;函數(shù)用于繪畫按鈕被按下的函數(shù),同前面的DrawButtonUp1 一樣沒有畫按鈕背景顏色 */void DrRotationBtn(int x,int y,int r) /*函數(shù)說明;用于實現(xiàn)旋轉(zhuǎn)按鈕的繪制函數(shù) ,X,Y是中心坐標(biāo),R 是最大半徑。*/void DrawKedu(int x,int y) /*函數(shù)說明;用于實現(xiàn)旋轉(zhuǎn)按鈕DrRotationBtn刻度的繪制函數(shù) ,X,Y是中心坐標(biāo)。該函數(shù)沒有半徑的設(shè)置 針對后面才加的函數(shù) 。所以需要在里面改動畫的位置*/void initgr() /* BGI初始化 函數(shù)說明;初始化圖形模式*/void getmouse(int *x,int *y,int *key) /*函數(shù)說明;中斷調(diào)用獲取寄存器中存的鼠標(biāo)坐標(biāo)及案件狀態(tài)*/void visbilemouse() /*函數(shù)說明;顯示鼠標(biāo)*/void mouse(int *x,int *y,int *z,int smbo) /*函數(shù)說明;畫鼠標(biāo)是利用將一個空矩形存入內(nèi)存中,然后再在該空矩形中畫鼠標(biāo)形狀*/void hanzi16(int x,int y,char *s,int colour) /*函數(shù)說明;中文輸入輸出函數(shù),該函數(shù)需要漢字字庫文件 HZK16 的支持*/void myouttext(int x, int y,int num) /*函數(shù)說明;控制單個數(shù)字的輸出顯示 */void Drowxy(int x,int y,int w,int h) /*函數(shù)說明;畫示波器顯示波的坐標(biāo), x,y 為坐標(biāo)原點位置*/void Sine_date(int zf,int zq,int Chang_zf,int Chang_zq) /*函數(shù)說明;用于實現(xiàn)正弦波的相關(guān)數(shù)據(jù)的顯示,zf當(dāng)前現(xiàn)在波的振幅zq當(dāng)前現(xiàn)在波的周期Chang_zf上次波的振幅Chang_zq上次波的周期*/void Podu(int zq,int py,int Chang_zq,int Chang_py) /*函數(shù)說明;用于實現(xiàn)正弦波的坡度的顯示,該函數(shù)因為前期是實現(xiàn)鼠標(biāo)點擊處的坡度。但是在后期程序的改動所以沒多用這個。已因為時間原因程序沒多大改動。*/void Sinew(int zf,int zq,int py,int Chang_zf,int Chang_zq,int Chang_py) /*函數(shù)說明:畫正弦波函數(shù) */void NoRuleWave(int zf,int zq) /*函數(shù)說明;該函數(shù)原本已實現(xiàn)一些無規(guī)律波,或者方便擴(kuò)展好改動為其他波,但是由于時間問題 這個函數(shù)就只是隨便加了個隨機(jī)函數(shù)*/void MOliWave(int MoliNum) /*函數(shù)說明;該函數(shù)用于隨機(jī)生成一個數(shù) ,然后用sound()PC 函數(shù)播放出這個數(shù)值的聲音,已是在程序的基礎(chǔ)上現(xiàn)在加的東東,方便以后更改和擴(kuò)展*/void Graph_face() /*函數(shù)說明;該函數(shù)是 主要函數(shù),其功能是實現(xiàn)本程序的 基本不動畫面的繪制,比如按鈕和背景 還其他的按鈕邊框之類。本函數(shù)只程序運行的開始時使用*/int Return_button(int x,int y,int z) /*函數(shù)說明;該函數(shù)是已是該程序的主要函數(shù)之一,用于判斷用戶當(dāng)前鼠標(biāo)的動作,比如一個按鈕的按下,相應(yīng)程序的操作。 */void Huifu()/*函數(shù)說明;該函數(shù)是已是該程序的主要函數(shù)之一,用于判斷實現(xiàn)程序動態(tài)的效果的恢復(fù)工作,比如一個按鈕按下以后鼠標(biāo)離開按鈕后 那么這個按鈕就需要恢復(fù)到正常狀態(tài)*/mousedata(int x,int y) /*函數(shù)說明;用于顯示鼠標(biāo)處的坐標(biāo)*/void Huifu_1() /*函數(shù)說明;程序說明段的文字顏色恢復(fù),是程序后面加上的效果。*/int DrRtinP(int x,int y,int m_x,int m_y,int Old_x,int Old_y,int r,int back) /*函數(shù)說明;x,Y為圓心坐標(biāo)m_x,m_y為鼠標(biāo)點擊處坐標(biāo)*/void DengLu() /*函數(shù)說明:做登陸效果*/void DrawSoftAny() /*函數(shù)說明:程序說明函數(shù)*/3.2:程序模塊函數(shù)詳解.3.2.1:按鈕的設(shè)計; 分析:計算機(jī)中的按鈕都是通過改變局部的顏色而達(dá)到動態(tài)的按鈕效果。如圖;1, 設(shè)置按鈕彈起的效果函數(shù);void DrawButtonUp(int left,int top,int width,int height,int color)/* Draw button*/ setfillstyle(1,color); bar(left,top,left+width,top+height); setcolor(15); line(left-2,top,left+width,top);line(left-1,top+1,left+width,top+1); line(left-1,top+2,left-1,top-1+height); line(left-2,top+2,left-2,top-1+height); setcolor(7); line(left,top+height,left+width,top+height); line(left-1,top+height-1,left+width+1,top+height-1); line(left-1+width,top+2,left-1+width,top+height); line(left+width,top+2,left+width,top+height); 2,為了按鈕 的恢復(fù) 一下函數(shù)是恢復(fù)按鈕周圍變寬效果 已減少Bar();重畫函數(shù)使用的時間 void DrawButtonUp1(int left,int top,int width,int height) /*Draw button */ setcolor(15); line(left-2,top,left+width,top); line(left-1,top+1,left+width,top+1); line(left-1,top+2,left-1,top-1+height); line(left-2,top+2,left-2,top-1+height); setcolor(7); line(left,top+height,left+width,top+height); line(left-1,top+height-1,left+width+1,top+height-1); line(left-1+width,top+2,left-1+width,top+height); line(left+width,top+2,left+width,top+height);函數(shù)效果如圖; 3.2.2,設(shè)置按鈕按下的效果函數(shù);void DrawButtonDown(int left,int top,int width,int height,int color) /*Draw button */ setfillstyle(1,color); bar(left,top,left+width,top+height); setcolor(8); line(left-2,top,left+width,top); line(left-1,top+1,left+width,top+1); line(left-1,top+2,left-1,top-1+height); line(left-2,top+2,left-2,top-1+height); setcolor(15); line(left,top+height,left+width,top+height); line(left-1,top+height-1,left+width,top+height-1); line(left-1+width,top+2,left-1+width,top+height); line(left+width,top+2,left+width,top+height);為了按鈕 的恢復(fù) 一下函數(shù)是恢復(fù)按鈕周圍變寬效果 已減少Bar();重畫函數(shù)使用的時間 void DrawButtonDown1(int left,int top,int width,int height) /*Draw button */ setcolor(8); line(left-2,top,left+width,top); line(left-1,top+1,left+width,top+1); line(left-1,top+2,left-1,top-1+height); line(left-2,top+2,left-2,top-1+height); setcolor(15); line(left,top+height,left+width,top+height); line(left-1,top+height-1,left+width,top+height-1); line(left-1+width,top+2,left-1+width,top+height); line(left+width,top+2,left+width,top+height); 函數(shù)效果如圖;3.2.3,制作旋轉(zhuǎn)圓形按鈕;void DrRotationBtn(int x,int y,int r) int i=0;float a; setcolor(15); for(i=0;i=360;i+=6) a=i*PI/180; line(x+(r-5)*cos(a),y+(r-5)*sin(a),x+r*cos(a),y+r*sin(a) ; setcolor(8); circle(x,y,r); circle(x,y,r-1); circle(x,y,r+1); setfillstyle(1,7); pieslice(x,y,0,360,r-5); setfillstyle(1,15); pieslice(x,y,0,360,r-10); for(i=0;i=360;i+=6) a=i*PI/180; line(x+(r-15)*cos(a),y+(r-15)*sin(a),x+(r-10)*cos(a),y+(r-10)*sin(a) ; 3.2.4,制作旋轉(zhuǎn)按鈕刻度void DrRotationBtn(int x,int y,int r,int label) /*畫旋轉(zhuǎn)的按鈕*/ int i=0,j,k=10,last=0;float a; if(label!=0) /*如果不在調(diào)位移旋轉(zhuǎn)按鈕上*/ setcolor(15); for(i=0;i=360;i+=6) a=i*PI/180; line(x+(r-5)*cos(a),y+(r-5)*sin(a),x+r*cos(a),y+r*sin(a) ; setcolor(8); circle(x,y,r); circle(x,y,r-1); circle(x,y,r+1); setfillstyle(1,7); pieslice(x,y,0,360,r-5); setfillstyle(1,15); pieslice(x,y,0,360,r-10); for(i=0;i=360;i+=6) a=i*PI/180; line(x+(r-15)*cos(a),y+(r-15)*sin(a),x+(r-10)*cos(a),y+(r-10)*sin(a) ; /*畫調(diào)節(jié)大小*/ for(j=4;j=20;j+) for(i=(j-4)*18;i=150;i+) a=i*PI/180; putpixel(x+(r+j)*cos(a),y+(r+j)*sin(a),0); for(j=4;j210;i-) a=i*PI/180; putpixel(x+(r+j)*cos(a),y+(r+j)*sin(a),0); else setcolor(0); /*畫調(diào)節(jié)大小*/ setlinestyle(0,1,3); line(x-r,y,x+r,y); setlinestyle(0,1,1); line(x-r,y,x-r+5,y-5); line(x-r,y,x-r+5,y+5);/*標(biāo)箭頭*/ line(x+r,y,x+r-5,y-5); line(x+r,y,x+r-5,y+5); setcolor(15); int DrRtinP(int x,int y,int m_x,int m_y,int Old_x,int Old_y,int r,int back,int label) /*x,Y為圓心坐標(biāo)m_x,m_y為鼠標(biāo)點擊處坐標(biāo)*/ float Cosa,Sina,rr; setcolor(15); if(label!=0) /*如果不在調(diào)位移旋轉(zhuǎn)按鈕上*/ if(Old_x!=0 & Old_y!=0) rr=sqrt(x-Old_x)*(x-Old_x)+(y-Old_y)*(y-Old_y); Cosa=(Old_x-x)/rr; Sina=(Old_y-y)/rr; line(x+(r-15)*Cosa,y+(r-15)*Sina,x+r*Cosa,y+r*Sina); else line(x,y-5,x,y-20); rr=sqrt(x-m_x)*(x-m_x)+(y-m_y)*(y-m_y); Cosa=(m_x-x)/rr; Sina=(m_y-y)/rr; setcolor(4); line(x+(r-15)*Cosa,y+(r-15)*Sina,x+r*Cosa,y+r*Sina); return (acos(Cosa)*180)/PI/30*back; /*旋轉(zhuǎn)按扭的返回值*/ else setcolor(7); setlinestyle(0,1,3); line(Old_x,y-5,Old_x,y+5); setcolor(0); line(x-r-r+5,y,x+r+r-5,y); line(x,y-10,x,y+10); return (m_x-x); /*旋轉(zhuǎn)按扭的返回值*/ 函數(shù)效果如圖;3.2.5:圖形模式下的漢字輸出。void hanzi16(int x,int y,char *s,int colour) /*中文輸入輸出函數(shù)*/ FILE *fp; char buffer32; /* 32字節(jié)的字模緩沖區(qū) */ register i,j,k; unsigned char qh,wh; unsigned long location; if(fp=fopen(hzk16,rb)=NULL) printf(Cant open hzk16!); getch(); exit(0); while(*s) qh=*s-0xa0; wh=*(s+1)-0xa0; location=(94*(qh-1)+(wh-1)*32L;/* 計算漢字字模在文件中的位置 */ fseek(fp,location,SEEK_SET); fread(buffer,32,1,fp); for(i=0;i16;i+) for(j=0;j2;j+) for(k=0;k(7-k)&0x1)!=NULL) putpixel(x+8*j+k,y+i,colour); s+=2; x+=16; /* 漢字間距 */ fclose(fp);3.3:程序界面的繪制。 說明:經(jīng)分析,程序中有兩部份:一部分界面是一次畫好就固定不變的,而另一部分是因用戶的操作而動態(tài)變化的,比如當(dāng)鼠標(biāo)在正弦波按鈕上點擊鼠標(biāo)左鍵的時候,那么在波形繪制區(qū)就會繪制一個正弦波的圖形。在這過程中又可以分解為兩個部分 ,鼠標(biāo)按下和鼠標(biāo)松開以后程序相應(yīng)的反饋動作,而這部分界面就是動態(tài)界面。 在這里就先把固定不變的部分通過一個函數(shù)完成; 數(shù)字的圖形顯示。void myouttext(int x, int y,int num) /*控制輸入數(shù)字 */ switch (num) case 1 :outtextxy(x,y,1);break; case 0 :outtextxy(x,y,0);break; case 2 :outtextxy(x,y,2);break; case 3 :outtextxy(x,y,3);break; case 4 :outtextxy(x,y,4);break; case 5 :outtextxy(x,y,5);break; case 6 :outtextxy(x,y,6);break; case 7 :outtextxy(x,y,7);break; case 8 :outtextxy(x,y,8);break; case 9 :outtextxy(x,y,9);break; default :; 3.3.1;繪波區(qū)的刻度函數(shù),void Drowxy(int x,int y,int w,int h) /*畫坐標(biāo) xy 為圓心坐標(biāo),w為一半的寬度h一半的高度*/ int i; setcolor(1); setlinestyle(0,0,3); line(x-w,y-1,x+w,y-1); line(x-1,y-h,x-1,y+h); setlinestyle(0,0,1); for(i=30;i=h;i=i+10)line(x-w,y+i,x+w,y+i);line(x-w,y-i,x+w,y-i); for(i=30;i=w;i=i+10)line(x-i,y-h,x-i,y+h);line(x+i,y-h,x+i,y+h);3.3.2;繪制程序固定不變的界面。void Graph_face() /*畫固定不變的框架 */ int i; setfillstyle(1,7); bar(0,0,639,479); /*背景 */ setfillstyle(10,7); bar(10,10,629,469); /*背景網(wǎng)格 */ setfillstyle(1,7); bar(122,20,490,265); /*畫波圖背景邊框 */ setfillstyle(1,0); bar(150,23,485,250); /*畫波圖背景*/ setcolor(7); line(130,20,135,25); setfillstyle(1, 8); /*畫波圖背景邊框 */ setcolor(8); line(488,22,488,260); line(0,0,10,10); line(0,479,10,469); line(639,0,629,10); line(629,469,639,479); setcolor(15);line(0,0,10,10);line(0,478,10,468);line(638,1,629,9); DrawButtonUp(20,20,95,240,7); /*left rotation button*/ setfillstyle(0,15); /*DrRotationBtn(65,95,40);bar(65,93,85,97);line(65,95,65,75); */ DrRotationBtn(65,210,40); bar(65,208,85,212); line(65,210,65,190); DrawButtonUp(500,20,120,240,7); /*right rotation button*/ DrRotationBtn(565,95,40);bar(565,93,585,97);line(565,95,565,75); DrRotationBtn(565,210,40);bar(565,208,585,212);line(565,210,565,190); setfillstyle(0,4); bar(63,208,67,212); bar(563,93,567,97); bar(563,208,567,212); setfillstyle(10,7); bar(10,270,629,469); /*-*/ setcolor(15); line(10,270,629,270); setcolor(15); line(10,270,10,469); /*畫下面黑色的*/ line(10,469,629,469); line(629,270,629,469); line(11,360,628,360); for(i=0;i6;i+) setfillstyle(1,0); bar(15+i*100,280,115+i*100,350); /*-*/ for(i=0;i7;i+) /*-*/ DrawButtonUp(25+i*85,370,70,35,6); /*畫按鈕*/ /*-*/ for(i=0;i4;i+) /*-*/ DrawButtonUp(25+i*85,420,70,35,6); /*畫按鈕*/ /*-*/ DrawButtonUp1(535,420,70,35); setfillstyle(1,7); bar(11,271,628,359); setcolor(14); hanzi16(25,30,模擬示波器,4); hanzi16(35,55,程序說明,0); line(35,75,95,75); hanzi16(45,80,聯(lián)系我,0); line(45,100,90,100); hanzi16(55,110,退出,14); line(55,125,85,125); hanzi16(45,150,調(diào)位移,0); DrawKedu(65,210); hanzi16(545,30,調(diào)振幅,0); DrawKedu(565,95); hanzi16(545,150,調(diào)周期,0); DrawKedu(565,210); hanzi16(30,380,正弦波,11); hanzi16(115,380,方波,11); hanzi16(200,380,三角波,11); hanzi16(285,380,鋸齒波,11); hanzi16(370,380,獲取周期,11); hanzi16(4

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論