基于單片機的紅外防盜報警器的設(shè)計論文_第1頁
基于單片機的紅外防盜報警器的設(shè)計論文_第2頁
基于單片機的紅外防盜報警器的設(shè)計論文_第3頁
基于單片機的紅外防盜報警器的設(shè)計論文_第4頁
基于單片機的紅外防盜報警器的設(shè)計論文_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE PAGE 28理學(xué)院School of Sciences單片機原理與應(yīng)用課程設(shè)計報告學(xué)生姓名:學(xué)生學(xué)號:所在班級: 所在專業(yè):實習(xí)成績總評第一項第二項基于單片機的紅外防盜報警器的設(shè)計摘 要 隨著我國社會與經(jīng)濟的發(fā)展,人民生活水平不斷提高,人們對區(qū)域治安環(huán)境以及安全防范的要求也越來越高,同現(xiàn)代化技術(shù)高度發(fā)展的今天,犯罪更趨智能化,手段更隱蔽,所以保證區(qū)域安全必須從運用現(xiàn)代化的防盜報警技術(shù)。本文將系統(tǒng)介紹一種采用新的先進的紅外線對射感應(yīng)模塊和人體紅外探測裝置制作而成的紅外監(jiān)控系統(tǒng),由于它是利用人眼不可見的紅外光束,組成無線監(jiān)控區(qū)域,所以具有極強的保密性和可靠性。本系統(tǒng)除用于倉庫、門窗、圍

2、墻、柵欄防盜報警外,也可用于其他需要監(jiān)控的場合。 本系統(tǒng)采用了熱釋電紅外傳感器,它的制作簡單、成本低、安裝比較方便,而且防盜性能比較穩(wěn)定,抗干擾能力強、靈敏度高、安全可靠。這種防盜器安裝隱蔽,不易被盜賊發(fā)現(xiàn),同時它的信號經(jīng)過單片機系統(tǒng)處理后方便和PC機通信,便于多用戶統(tǒng)一管理。本設(shè)計包括硬件和軟件設(shè)計兩個部分。硬件部分包括單片機控制電路、紅外探頭電路、驅(qū)動執(zhí)行報警電路、LED控制電路等部分組成。處理器采用51系列單片機AT89C51,整個系統(tǒng)是在系統(tǒng)軟件控制下工作的。關(guān)鍵詞:單片機;紅外傳感器;數(shù)據(jù)采集;報警電路1引言就目前市面上裝備主要有壓力觸發(fā)式防盜報警器、開關(guān)電子防盜報警器和壓力遮光觸發(fā)

3、式防盜報警器等各種報警器,但這幾種比較常見的報警器都存在一些缺點。而本設(shè)計中所使用的紅外線是不可見光,有很強的隱蔽性和保密性,因此在防盜、警戒等安保裝置中得到了廣泛的應(yīng)用。這種熱釋電紅外傳感器能以非接觸形式檢測出人體輻射的紅外線,并將其轉(zhuǎn)變?yōu)殡妷盒盘?,同時,熱釋電紅外傳感器既可用于防盜報警裝置,也可用于制動控制、接近開關(guān)、遙測等領(lǐng)域。1.1 設(shè)計任務(wù)與要求 (1)該設(shè)計包括硬件和軟件設(shè)計兩個部分。模塊劃分為數(shù)據(jù)采集、鍵盤控制、報警等模塊子函數(shù)。(2)本紅外線防盜報警系統(tǒng)由熱釋電紅外傳感器、報警器、單片機控制電路、LED控制電路及相關(guān)的控制管理軟件組成。用戶終端完成信息采集、處理、數(shù)據(jù)傳送、功能

4、設(shè)定、本地報警等功能。終端由中央處理器、輸入模塊、輸出模塊、通信模塊、功能設(shè)定模塊等部分組成。(3)系統(tǒng)可實現(xiàn)功能。當(dāng)人員外出時,可把報警系統(tǒng)設(shè)置在外出布防狀態(tài),探測器工作起來,當(dāng)有人闖入時,熱釋電紅外傳感器將探測到動作,設(shè)置在監(jiān)測點上的紅外探頭將人體輻射的紅外光譜變換成電信號,經(jīng)放大電路、比較電路送至門限開關(guān),打開門限閥門送出TTL 電平至AT89C51單片機,經(jīng)單片機處理運算后驅(qū)動執(zhí)行報警電路使警號發(fā)聲1。(4)紅外線具有隱蔽性,在露天防護的地方設(shè)計一束紅外線可以方便地檢測到是否有人出入。此類裝置設(shè)計的要點:其一是能有效判斷是否有人員進入;其二是盡可能大地增加防護范圍。當(dāng)然,系統(tǒng)工作的穩(wěn)定

5、性和可靠性也是追求的重要指標(biāo)。至于報警可采用聲光信號。2 基礎(chǔ)知識介紹 2.1被動紅外防盜報警探測器 物理學(xué)告訴我們,凡是溫度高于絕對0的物體都能產(chǎn)生熱輻射,其光譜集中在紅外光區(qū)域。當(dāng)被探測的目標(biāo)入侵,并在所防范的區(qū)域里移動時,將引起該區(qū)域紅外輻射的變化,而能夠探測出這種紅外輻射變化并進入報警狀態(tài)的電子裝置稱為被動紅外探測器被動紅外探測器主要用來探測人體和其它一些入侵移動的物體。但其弱點是:當(dāng)環(huán)境溫度接近人、體溫度時,靈敏度下降,因而在夏天或熱帶地區(qū)的應(yīng)用受到影響。2.2主動紅外入侵探測器主動紅外入侵探測器主動紅外入侵探測器將發(fā)射機和接收機分別安裝于警戒線的兩端,發(fā)射機發(fā)射出一串紅外光由接收器

6、接收,如中間任意處被遮斷,報報警信號。采用雙光路的主動紅外報警器可大大提高抗噪誤報的能力。目前直線探測距離可做到室內(nèi)25m室外75m其優(yōu)點是靈敏度高,具有較高的光學(xué)特性。2特別在雨、霧、霜等遮擋射束光強度時(甚至遮擋射束強度99%),探測器仍能正常工作。 具備防防水、防塵、防震、拆卸、防破壞功能。(犯罪分子為了達到其目的必然要千方百計對安全防范系統(tǒng)進行破壞。因此技防系統(tǒng)的防破壞功能就顯得尤為重要。一個連自身安全都不能保障的系統(tǒng)是不可能很好地發(fā)揮防范作用的2.3熱釋電紅外傳感器簡單介紹熱釋電紅外線(PIR)傳感器是80年代發(fā)展起來的一種新型高靈敏度探測元件。是一種能檢測人體發(fā)射的紅外線而輸出電信

7、號的傳感器,它能組成防入侵報警器或各種自動化節(jié)能裝置。它能以非接觸形式檢測出人體輻射的紅外線能量的變化,并將其轉(zhuǎn)換成電壓信號輸出。將這個電壓信號加以放大,便可驅(qū)動各種控制電路2。如圖1示為熱釋電紅外傳感器的內(nèi)部電路框圖。圖1 熱釋電紅外傳感器的內(nèi)部電路框圖2.4 AT89C51單片機簡單概述 AT89C51管腳說明ATMEL公司的AT89C51是一種高效微控制器。采用40引腳雙列直插封裝形式。AT89C51單片機是高性能單片機,因為受引腳數(shù)目的限制,所以有不少引腳具有第二功能。VCC:供電電壓。 GND:接地。P0口:P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管

8、腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。P1口:P1口是一個內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。 P2口:P2口為一個內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當(dāng)P2口被寫1時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。P2口在FLASH編程和校驗時接收高

9、八位地址信號和控制信號。P3口:P3口管腳是8個帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當(dāng)P3口寫入1后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流。RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。ALE/:當(dāng)訪問外部存儲器時,地址鎖存允許端的輸出電平用于鎖存地址的地址字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。PSEN:外部程序存儲器的選通信號端。在由外部程序存儲器取指期間,每個機器周期兩次PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。/VP:當(dāng)保持低電平時,則在此

10、期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,將內(nèi)部鎖定為RESET;當(dāng)端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源。XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:反向振蕩器的輸出,如采用外部時鐘源驅(qū)動器件,應(yīng)不接。3 方案設(shè)計3.1 總體設(shè)計思路本設(shè)計包括硬件和軟件設(shè)計兩個部分。模塊劃分為數(shù)據(jù)采集、鍵盤控制、報警等子模塊。電路結(jié)構(gòu)可劃分為:熱釋電紅外傳感器、報警器、單片機控制電路、LED控制電路及相關(guān)的控制管理軟件組成。用戶終端完成信息采集、處理、數(shù)據(jù)傳送、功能設(shè)定、本地報警等功能

11、。從設(shè)計的要求來分析該設(shè)計須包含如下結(jié)構(gòu):熱釋電紅外傳感探頭電路、報警電路、單片機、復(fù)位電路及相關(guān)的控制管理軟件組成;它們之間的構(gòu)成框圖如圖3總體設(shè)計框圖所示: AT89C51復(fù)位電路信號檢測電路報警執(zhí)行電路LED發(fā)光顯示放大驅(qū)動驅(qū)動圖3 總體設(shè)計框圖3.2 硬件設(shè)計3.2.1 熱釋電紅外傳感器原理本設(shè)計所用的熱釋感器就采用這種雙探測元的結(jié)構(gòu)。其工作電路原理及設(shè)計電路如圖4所示, 在VCC電源端利用C1和R2來穩(wěn)定工作電壓,同樣輸出端也多加了穩(wěn)壓元件穩(wěn)定信號。當(dāng)檢測到人體移動信號時,電荷信號經(jīng)過FET放大后,經(jīng)過C2,R1的穩(wěn)壓后使輸出變?yōu)楦唠娢?,再?jīng)過NPN的轉(zhuǎn)化,輸出OUT為低電平。圖4

12、熱釋電紅外傳感器原理圖3.2.2 放大電路的設(shè)計如圖5所示為最基本的放大電路,Vi是輸入電壓信號,Vo是輸出放大的電壓信號。 圖5 放大電路圖3.2.3 時鐘電路的設(shè)計XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅(qū)動器件,XTAL2應(yīng)不接。因為一個機器周期含有6個狀態(tài)周期,而每個狀態(tài)周期為2個振蕩周期,所以一個機器周期共有12個振蕩周期,如果外接石英晶體振蕩器的振蕩頻率為12MHZ,一個振蕩周期為1/12us,故而一個機器周期為1us5。如圖6所示為時鐘電路。圖6 時鐘電路圖3.2.4 復(fù)位電路的設(shè)計復(fù)位方法

13、一般有上電自動復(fù)位和外部按鍵手動復(fù)位,單片機在時鐘電路工作以后, 在RESET端持續(xù)給出2個機器周期的高電平時就可以完成復(fù)位操作6。例如使用晶振頻率為12MHz時,則復(fù)位信號持續(xù)時間應(yīng)不小于2us7。本設(shè)計采用的是外部手動按鍵復(fù)位電路。如圖7示為復(fù)位電路。圖7 復(fù)位電路圖3.2.5 發(fā)光二極管報警電路的設(shè)計由4個發(fā)光二極管接上電阻后連上單片的RXD的引腳,外接VCC,當(dāng)單片機的RXD引腳被置低電平后,發(fā)光二極管被點亮,起到報警作用8。圖8所示為發(fā)光二極管報警電路。圖8 發(fā)光二極管報警電路圖3.2.6 聲音報警電路的設(shè)計如下圖所示,用一個Speaker和三極管、電阻接到單片機的TXD引腳上,構(gòu)成

14、聲音報警電路,如圖9示為聲音報警電路。圖9 聲音報警電路圖3.3 軟件設(shè)計3.3.1 主程序工作流程圖按上述工作原理和硬件結(jié)構(gòu)分析可知系統(tǒng)主程序工作流程圖如下圖10所示;系統(tǒng)初始化聲光報警結(jié)束檢測外部有無信號輸入聲光報警是否持續(xù)10秒開始啟動聲光報警電路開始報警是否還有檢測信號等待下次報警結(jié)束YNNYYN圖10 主程序工作流程圖3.3.2 中斷服務(wù)程序工作流程圖本主程序?qū)崿F(xiàn)的功能是:當(dāng)單片機檢測到外部熱釋電傳感器送來的脈沖信號后,表示有人闖入監(jiān)控區(qū),從而經(jīng)過單片機內(nèi)部程序處理后,驅(qū)動聲光報警電路開始報警,報警持續(xù)10秒鐘后自動停止報警,然后程序開始循環(huán)工作,檢測是否還有下次觸發(fā)信號,等待報警從

15、而使報警器進入連續(xù)工作狀態(tài)。同時,利用中斷方式可以實現(xiàn)報警持續(xù)時間未到10秒時,用手工按鍵停止的聲光報警的作用。手工按鍵停止報警中斷服務(wù)程序工作流程圖如下圖11所示;中斷源發(fā)出中斷申請關(guān)中斷、保護現(xiàn)場INTO端有輸入信號關(guān)閉報警恢復(fù)現(xiàn)場、開中斷中斷返回圖11 中斷服務(wù)程序工作流程圖 4.總結(jié)本設(shè)計研究了一種基于單片機技術(shù)的無線智能防盜報警器。該防盜報警器通過以AT89C51單片機為工作處理器核心,外接熱釋電紅傳感器,能夠以非接觸方式探測出人體發(fā)出的紅外輻射,并將其轉(zhuǎn)化為相應(yīng)的電信號輸出,同時能有效的抑制人體輻射波長以外的紅外光線與可見光的干擾。平時傳感器輸出低電平,當(dāng)有人在探測區(qū)范圍內(nèi)移動時輸

16、出低電平變?yōu)楦唠娖?,此高電平輸入單片機,作為單片機的外部觸發(fā)信號處理,經(jīng)單片機內(nèi)部軟件編程處理后,單片機輸出控制信號,驅(qū)動聲光報警電路開始報警。該報警器的最大特點就是使用戶能夠操作簡單、易懂、靈活;且安裝方便、智能性高、誤報率低。隨著現(xiàn)代人們安全意識的增強以及科學(xué)技術(shù)的快速發(fā)展,相信報警器必將在更廣闊的領(lǐng)域得到更深層次的應(yīng)用。 參考文獻 1 吳政江. 單片機控制紅外線防盜報警器J. 錦州師范學(xué)院學(xué)報, 2001.2 宋文緒. 傳感器與檢測技術(shù)M. 北京: 高等教育出版社, 2004.3 余錫存. 單片機原理及接口技術(shù)M. 西安: 西安電子科技大學(xué)出版社, 2000.4 唐桃波, 陳玉林. 基于

17、AT89C51的智能無線安防報警器 J. 電子設(shè)計應(yīng)用, 2003, 5(6): 4951.5 李全利. 單片機原理及接口技術(shù)M. 北京: 北京航空航天大學(xué)出版社, 2004.6 徐愛鈞, 彭秀華. 單片機高級語言C51應(yīng)用程序設(shè)計M. 北京: 北京航空航天大學(xué)出版社, 2006.7 康華光. 電子技術(shù)基礎(chǔ)(模擬部分)M. 北京: 高等教育出版社, 2004.附錄資料:不需要的可以自行刪除測量平差程序設(shè)計角度(度分秒)到弧度AngleToRadian#define PI 3.14159265double AngleToRadian(double angle)int D,M;double S,r

18、adian,degree, angle,MS;D=int(angle+0.3);MS=angle-D;M=int(MS)*100+0.3);S=(MS*100-M)*100;degree=D+M/60.0+S/3600.0;radian=degree*PI/180.0;return radian;注意:防止數(shù)據(jù)溢出,要加個微小量,例如0.3.弧度換角度(度分秒) RadianToAngle#define PI 3.14159265double RadianToAngle(double radian)int D,M;double S,radian,degree,MS,angle;degree=r

19、adian*180/PI;D=int(degree);MS=degree-D;M=int(MS*60);S=(MS*60-M)*60;angle=D+M/100.0+S/10000.0;return angle;已知兩點求坐標(biāo)方位角Azimuth#include double Azimuth(double xi,double yi,double xj,double yj)double Dx,Dy,S,T;Dx=xj-xi;Dy=yj-yi;S=sqrt(Dx*Dx+Dy*Dy);if(S1e-10) return 0;T=asin(Dy/S);if(Dx0&(Dy0)|T0) T=2*PI+T

20、;return T;4.開辟二維數(shù)組的動態(tài)空間的宏#include #define NewArray2D(type,A,i,n,m)A=(type*)malloc(n*sizeof(type*); for(i=0;im;i+) Ai=(type*)malloc(m*sizeof(type); 5.釋放開辟的二維數(shù)組的空間#define FreeSpace(A,i,m)for(i=0;im;i+) free(Ai); free(A); 注意:釋放空間與開辟空間相反,釋放空間是先釋放列,后釋放行.6.矩陣求轉(zhuǎn)置transformmatrixvoid transformmatrix(double *

21、A,double *B,int i,int j)int m,n;for(m=0;m=i;m+)for(n=0;n=j;n+)Bnm=Amn:7.矩陣相乘(mulmatrix)void mulmatrix(double *A,double *B,double *C,int i,int j,int k)int m,n,p;for(m=0;mi;m+)for(n=0;nj;n+)Cmn=0;for(p=0;pk;p+)Cmn+=Amp*Bpn:8.矩陣求逆(countermatrix)#include void countermatrix(double *T, double *s, double *

22、r, double *Q,double *N, double *rt,int n)for(i=0;in;i+)s=Nii;for(k=0;ki;k+)s-=Tki*Tki;Tii=sqrt(s)for(j=i+1;jn;j+)s=Nij;for(k=0;ki;k+)s-=Tki*Tkj;Tij=s/Tii;for(i=0;in;i+)for(j=0;j=0;i+)rii=1/Tii;for(j=i+1;jn;j+)s=0;for(k=i;kj-1;k+)s-=rik*Tkj;rij=s/Tii;for(i=0;in;i+)for(j=0;jn;j+)rij=0;transformmatrix(

23、r,rt,n,n)mulmatrix(r,rt,Q,n,n)9.平差主程序之讀入數(shù)據(jù)typedef struct POINTchar name8;double x,y;int type;POINT;typedef struct READVALUEPOINT *begin;POINT *end;double value;READVALUE;POINT *GETPOINT(char *name,POINT *pPoint,int nPoint)int i;for(i=0;inPoint;i+)if (strcmp(pP,name)=0)return (pPoint+i) for

24、(i=0;i0)pPoint=(POINT*)malloc(nDirect*sizeof(POINT);if(nDirect0)pDirect=(READVALUE*)malloc(nDirect*sizeof(READVALUE);if(nDistance0)pDistance=(READVALUE*)malloc(nDistance*sizeof(RAADVALUE);fscanf(fp,”%lf,%lf,%lfn”,&mo,&mf,&ms);for(i=0;inKnownPoint;i+)fscanf(fp,”%s,%lf,%lfn”,pP,&pPointi.x,&p

25、Pointi.y);type=1;for( ;inPoint;i+)pP=NULL; pPointi.x=0;pPointi.y=0;pPointi.type=0; for(i=0;inDirect;i+)fscanf(fp,”%s,%s,%lfn”,begin,end,&pDirecti.value);pDirecti.begin=GetPoint(begin,pPoint,nPoint);pDirecti.end=GetPoint(end,pPoint,nPoint);for(i=0;inDistance;i+)fscanf(fp,”%s,%s,%lfn”,begin,

26、end,&pDistancei.value);pDistancei.begin=GetPoint(begin,pPoint,nPoint);pDistancei.end=GetPoint(end,pPoint,nPoint);fclose(fp);10.角度檢驗(checkangle)#include int checkangle(double angle)int M,S;double MS;if(angle=0&angle360)MS=angle-(int)(angle);if(M6)S=(int)(MS*1000);if(S%106)return 1;return 0;11.前方交會#de

27、fine PI=3014159265/*此處調(diào)用程序角度換弧度AngleToRadian*/Qianfang(double XE, double YE, double XF, double YF, doubleDEG, double DEF, double DFG, double DFE, double *DFE, double *DFG)double C,A,B;C=DGE-DGF;A=DEF-DEG;B=DFG-DFE;if(C-2*PI)|(C0&C-PI&CPI&C2*PI)XG=(XE/tan(B)+XF/tan(A)+YE-YF)/(1/tan(A)+ 1/tan(B);YG=(Y

28、E/tan(B)+YF/tan(A)-XE+XF)/ (1/tan(A)+ 1/tan(B);12.坐標(biāo)概算全方向法子函數(shù)取出觀測方向GetAllDirectint GetAllDirect(char *name,int nDirect,READVALUE *pDirect, READVALUE *pStation)int i,nCount=0;for(i=0;iname,name)=0)pStationnCount.begin=p(pDirectnCount.begin;pStationnCount.end=p(pDirectnCount.end;pStationnCount.value=p

29、(pDirectnCount.value; nCount+;return nCount;坐標(biāo)概算全方向法子程序?qū)崿F(xiàn)流程(coordinate)coordinate (入口參數(shù)設(shè)置)READVALUE pStation50,pObject50;int nCount,i,j,k,m,n,p,nobject;for(i=0;i1)|( nCount=1)for(j=0;jtype=1)for(k=0;ktype=0) nobject=GetAllDirect(pStationj.end-name,nDirect,pDirect,pobject)m=-1;n=-1;for(p=0;pname,pPoi

30、)=0)m=p; if(strcmp(pobjectp.end-name,pStationk.end-name)=0)n=p;if(m=0&n=0)pPointi=pStationk.end-pStationj.end;pStationj.end=pObjectm.value-pObjectn.value; Xe=pPointi.x; Ye=pPointi.y; Xf=pStationj.end-x; Yf=pStationj.end-y; Lef=pStationj.value; Leg=pStationk.value; Lfe=pObjectm.value; Lfg=pOb

31、jectn.value; Qianfang(Xe,Xf,Ye,Yf,Lef,Leg,Lfe,Lfg,*Xg,*Yg;) pStationk.end-x=*xg; pStationk.end-y=*yg; pStationk.end.type=2; 13.坐標(biāo)增量法(calcoordinate)子函數(shù)由端點名稱得邊長值的函數(shù)GetDistancedouble GetDistance(char *begin,char *end,int nDistance,READVALUE *pDistance)int i;for(i=0;iname,begin)=0&strcmp(pDistancei.end-

32、name,end=0)|(strcmp(pDistancei.begin-name,end)=0&strcmp(pDistancei.end,begin)=0)return pDistancei.value;return -1;/*函數(shù)取出觀測方向GetAllDirect*/void calcoordinate(int nDirect,READVALUE *pDirect,int nDistace,READVALUE *pDistance,int nPoint,POINT *pPoint) int nPoint,nCount,nDirect,nDistance; int m=-1,i,j,k;

33、 double x1,y1,x2,y2,A0,A,S,dx,dy; READVALUE*pDirect=NULL; READVALUE pStation50; for(i=0;i0) nCount=GetAllDirect(pP,nDirect,pDirect,pStation50); for(j=0;jtype0)m=j; if(m!=-1) for(k=0;ktype=0) x1=pPointi.x; y1=pPointi.y; x2=pStationj.end-x; y2=pStationj.end-y; A0=Bearing(x1,y1,x2,y2); A=A0-(

34、DMSToRAD(pStationm.value)-DMSToRAD(pStationk.value); if(A2*PI)A=A-2*PI; S=GetDistance(pPointi,pStationk.end,nDistance,pDistance); if(Sx=pPointi.x+dx; pStationk.end-y=pPointi.y+dy; pStationk.end-type=2; 14.高斯正反算高斯正算:#include #include #define PI 3.14159265double DMSToRAD(double dDMS)int L1,L2;double T

35、,L3;L1=(int)(dDMS+0.3);L2=(int)(dDMS-L1)*100+0.3);L3=(dDMS-L1)*100-L2)*100;T=(L1+L2/60.0+L3/3600.0)*PI/180.0;return T;void PreGausePositive(double B,double L,double L0, double a, double b, double *N, double *l, double *c, double *t, double *X,double *B1) double a0,a2,a4,a6,a8,m0,m2,m4,m6,m8; double e,e1; e=(sqrt(a*a-b*b)/a; e1=(sqrt(a*a-b*b)/b; B1=DMSToRAD(B); t

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論