日光跟蹤系統_第1頁
日光跟蹤系統_第2頁
日光跟蹤系統_第3頁
日光跟蹤系統_第4頁
日光跟蹤系統_第5頁
已閱讀5頁,還剩59頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

日光跟蹤系統摘要本文詳細介紹了日光跟蹤系統的軟件設計方案及硬件整體結構,本系統是以單片機為核心,應用太陽輻射與環境亮度比較的方法,由光敏二極管及放大電路組成了光電檢測和比較裝置(跟蹤暗桶),以兩臺直流電機用電樞串電阻調速的方法來拖動跟蹤暗桶,構建了方位角和高度角雙軸機械跟蹤定位系統,使跟蹤暗桶中心線與日光夾角保持在一定的精度,由此組成自動跟蹤裝置,實現了追蹤日光的效果,達到提高太陽能利用效率的目的。詳細解讀軟件程序應該具備的功能,根據軟件功能完成了C程序的設計,并應用KeilC軟件將C語言程序用匯編語言做簡單解釋。該系統能自動根據日光,跟蹤精度高,結構簡單,成本低,不必人工干預,特別適合無人值守的情況,有較好的推廣應用價值。關鍵詞:光電檢測;日光自動跟蹤;跟蹤暗桶AbstractThispaperintroducesthedesignofthesoftwaresuntrackingsystemandhardwarestructureofthesystembasedonSCM,asthecore,andapplicationofsolarradiationandenvironment,photosensitivediodesandbyamplifyingcircuitofphotoelectricdetectionisformedandtrackingdevice,darkwithtwodcmotorarmatureresistancewiththemethodofspeedtodragtrackingdarkbarrels,constructstheazimuthandhighAngletrackingsystem,mechanicalsix-fatiguecenterlineanddarkbarrelstotrackthesunAngle,theprecisionofautomatictrackingdeviceconsistingofsunlight,tracking,andtoenhancetheeffectofsolarenergyutilizationefficiency.Detailedanalysissoftwareprogramshouldpossessthefunction,AccordingtothesoftwarefunctioncompleteCprogramdesign,andtheapplicationofsoftwarewillKeilCClanguageprogramwritteninassemblylanguagedosimpleexplanation.Thesystemcanautomaticallyaccordingtothesun,andhighprecision,simplestructure,lowcost,nomanualintervention,especiallysuitableforthesituationisunattended,effectivelyimprovetheutilizationofsolarenergy,andhasgoodapplicationvalue.keywords:Photoelectricdetection;Automatictrackingthesun;Trackingdarkbarrels目錄TOC\o"1-5"\h\z1緒論 1\o"CurrentDocument"課題意義 1\o"CurrentDocument"2方案論證 2\o"CurrentDocument"2.1基本設計思路 2\o"CurrentDocument"2.2數據采集部分設計思路 4\o"CurrentDocument"2.3單片機部分設計思路 6\o"CurrentDocument"3電機拖動及調速方法分析 11\o"CurrentDocument"3.1電動機的機械特性 11\o"CurrentDocument"3.1.1機械特性方程 11\o"CurrentDocument"3.1.2固有機械特性 12\o"CurrentDocument"3.2他勵直流電動機的制動 15\o"CurrentDocument"3.2.1能耗制動 16\o"CurrentDocument"3.2.2反接制動 17\o"CurrentDocument"3.3他勵直流電動機的調速 19\o"CurrentDocument"3.3.1電樞串電阻 19\o"CurrentDocument"3.3.2降低電源電壓 22\o"CurrentDocument"4日光跟蹤系統軟件設計 244.1主程序設計 24\o"CurrentDocument"4.2中斷服務程序設計 28\o"CurrentDocument"4.2.1AT89S52的中斷源 28\o"CurrentDocument"4.2.2AT89S52的中斷控制寄存器IE 28\o"CurrentDocument"4.2.3定時器/計數器方式寄存器TMOD 29\o"CurrentDocument"4.2.4中斷優先控制寄存器IP 30\o"CurrentDocument"4.2.5AT89S52中斷系統結構 31\o"CurrentDocument"4.2.6中斷服務程序分析 31\o"CurrentDocument"4.3數據采集及日光跟蹤程序設計 33\o"CurrentDocument"4.4過熱、過壓、越線、堵轉停車程序設計 35\o"CurrentDocument"4.5C語言程序用匯編語言簡單解釋 36\o"CurrentDocument"5總結 38\o"CurrentDocument"參考文獻 39致謝 錯誤!未定義書簽。\o"CurrentDocument"附錄IC語言程序 40\o"CurrentDocument"附錄IIC語言程序用匯編語言簡單解釋 46課題意義太陽能是一種環保可再生新型能源,太陽能能解決能源短缺和環境保護等方面的問題,而且太陽能清潔無污染、取之不盡、用之不竭,我國每年接收到335?873KJ/cm2,地球每天收到的太陽能約4X1015千瓦時,相當于2.5X108萬桶石油,然而現如今太陽能利用率并不高其原因主要是太陽能的,分散性,方向性不穩定性。現如今提高太陽能的利用率組要有以下兩種方法:使太陽光永遠垂直照射在接收面上(能量積分);提高太陽能的吸收率和轉化率。伴隨著環境能源等一系列問題的出現,世界上越來越多的國家認識到一個能夠持續發展的社會應該是一個既能滿足社會需要,而又不危及后代人前途的社會。因此,盡可能多地用潔凈能源代替高含碳量的礦物能源,是能源建設應該遵循的原則。隨著能源形式的變化,常規能源的貯量日益下降,其價格必然上漲,而控制環境污染也必須增大投資。我國是世界上最大的煤炭生產國和消費國,煤炭約占商品能源消費結構的76%,已成為我國大氣污染的主要來源。大力開發新能源和可再生能源的利用技術將成為減少環境污染的重要措施。能源問題是世界性的,向新能源過渡的時期遲早要到來。太陽能利用技術和裝置的大量應用,也必然可以制約礦物能源價格的上漲,從長遠看來太陽能利用技術太符合“低碳”要求,而“低碳”又是時代賦予的使命,因此太陽能利用技術,也不失為是解決能源問題和可持續發展問題的一種良好途徑。就目前來說,人類直接利用太陽能還處于初級階段,主要有太陽能集熱、太陽能熱水系統、太陽能暖房、太陽能發電等方式。日光跟蹤系統的研究,為充分利用太陽能而立,通過對日光的跟蹤提高太陽能的吸收率,從而更充分的利用太陽能,如應用用日光跟蹤系統完善太陽能發電,太陽集熱等。本課題“日光自動跟蹤器系統”正是基于以上所陳訴的意義的基礎之上充分的利用太陽這種可再生的高級能源,來滿足人們的工作學習等多方面的要求,所以其意義深遠性無可否認,其發展程度無可或缺。方案論證基本設計思路本課題采用比較控制實現對日光的自動跟蹤。利用光敏二極管在光照時輸出電壓發生變化的原理,將四個完全相同的光敏二極管管分別放置于跟蹤器的東南西北方向邊沿處(跟蹤器平面結構圖如圖2.1)如果太陽光垂直照射跟蹤桶時,東西(南北)兩個光敏二極管接收到的光照強度相同,所以它們的輸出完全相等,此時電動機不轉動。當太陽光方向與接送板的法線有夾角時,接收光強多的光敏二極管輸出電壓減小,信號采集電路可以采集到光敏二極管的信號差值,控制電路將此差值轉換成控制信號,驅電動機轉動,直至兩個光敏二極管上的光照強度相同。其優點在于控制較精確,且電路也比較容易實現。

如圖2.2所示,檢測裝置不僅能接收到平行于跟蹤暗桶的日光,還能接收到與跟蹤暗桶夾角在誤差角度(±0.5°)的日光,再由跟蹤桶半徑為1cm可計算出跟蹤暗桶的長度L= 1cm沁114.6cm,tan0.5太陽光太陽光圖2.2跟蹤暗桶側面結構圖數據采集部分設計思路數據采集主要用到由光敏二極管組成的光電傳感器和A/D轉換器,其主要是將采集來的信號經過濾波及放大處理再通過A/D轉換器,傳送給計算機來控制電機動和正反轉和停轉。從而實現最大效率的利用太陽能。如圖2.3所示為光敏二極管組成的最簡單的光檢測電路,圖2.3(a)是二極管輸出端為開路方式,其輸出電壓隨入射光量的對數呈線性變化,但容易受溫度變化的影響。圖2.3(b)是二極管輸出端為短路方式.輸出電流隨入射光量的對數呈線性變化.一般采用輸出端短路的工作方式。(a)(b)圖2.3簡單的光電檢測電路光敏二極管加反向偏置,則響應速度可提高幾倍以上,響應特性比無偏置電路好,但暗電流比無偏置電路大,由于在日光跟蹤測量中,被測信號都比較微弱,暗電流的影響一般都非常明顯。本設計待檢測信號也是十分微弱的信號,盡量避免干擾是首要任務,所以設計時光敏二級管工作采用無偏置工作模式圖2.4是光敏二極管工作在無偏置電路實例,其中圖2.4(a)接高阻抗負載.圖2.4(b)接低阻抗負載。負載阻抗越高其特性越接近輸出端開路方式,負載阻抗越低則越接近輸出端短路方式。然而因二極管都是單個使用,所以輸出信號極小.一般需要接放大電路。

圖2.4光敏二級管無偏置電路由于光敏二極管觸發電路產生的信號,需要經過A/D轉換電路傳輸給控制芯片,而A/D轉換電路所需電壓幅值一般為2V。,輸出的電壓信號一般還需要繼續放大幾百倍,因此還需應用主放大電路。其典型放大電路如圖2.5所示R1R2++圖2.5典型放大電路該主放大器的放大倍數為A=l+R2/R3,其中R2為反饋電阻。為了后續電路的正常工作,設計時需要設定合理的R2和R1值,以便得到所需幅值的輸出電R2壓。即有U=AUi=(1+ )Ui

單片機部分設計思路單片機的軟件設計采用模塊化設計的方法,主要分為如下幾個軟件模塊:電機控制模塊、A/D轉換模塊。計算機系統框圖如圖2.6計算機系統亠V亠V或門輸岀鎖存器輸入鎖存器輸岀驅動器輸岀驅動器可靠性隔離可靠性隔離可靠性隔離故障源圖2.6計算機系統框圖輸岀鎖

存器ZJ1ZJ85ZJ9輸入鎖

存器可靠性

隔離模數轉換器功率放大器

計算機系統亠V亠V或門輸岀鎖存器輸入鎖存器輸岀驅動器輸岀驅動器可靠性隔離可靠性隔離可靠性隔離故障源圖2.6計算機系統框圖輸岀鎖

存器ZJ1ZJ85ZJ9輸入鎖

存器可靠性

隔離模數轉換器功率放大器電機控制模塊主要用AT98S52單片機來實現,AT98S52單片機特點是,8位字長的CPU;可在線ISP編程的8KB片內Flash存儲器;256B的片內數據存儲器;可編程的32根I/O口線(P0-P3);可編程16位定時計數器;雙數據指針DPTR0和DPTR1;具有8個中斷源,6個中斷矢量,2級優先權的中斷系統;可在空閑和掉電兩種低功耗方式運行,3級程序鎖定位;全雙的UART串行通訊口;1個看門狗定時器WDT;具有掉電標志位POF;與MCS-51單片機產品完全兼容。AT89S52引腳圖如圖2.7T2/P1.0T2EX/P1.1P1.2P1.3P1.4MOSI/P1.5M0SI/P1.6SCK/P1.7RSTRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3一一T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GNDAT89S521T2/P1.0T2EX/P1.1P1.2P1.3P1.4MOSI/P1.5M0SI/P1.6SCK/P1.7RSTRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3一一T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GNDAT89S5214023933843753663573483393210311130122913281427152616251724182319222021VccP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7AD7EA/VppALEPSENP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A8圖2.7AT89S52引腳圖A/D轉換模塊用ADC0809芯片,ADC0809是CMOS單片型逐次逼近式A/D轉換器,它由8路模擬開關、地址鎖存與譯碼器、比較器、8位開關樹型D/A轉換器、逐次逼近。ADC0809芯片有28條引腳,采用雙列直插式封裝,如圖2.8所示。引腳功能如下IN0?IN7:8路模擬量輸入端。2-1?2-8:8位數字量輸出端。ADDA、ADDB、ADDC:3位地址輸入線,用于選通8路模擬輸入中的一路ALE:地址鎖存允許信號,輸入,高電平有效。START:A/D轉換啟動脈沖輸入端,輸入一個正脈沖(至少100ns寬)使其啟動(脈沖上升沿使0809復位,下降沿啟動A/D轉換)。EOC:A/D轉換結束信號,輸出,當A/D轉換結束時,此端輸出一個高電平(轉換期間一直為低電平)。OE:數據輸出允許信號,輸入,高電平有效。當A/D轉換結束時,此端輸入一個高電平,才能打開輸出三態門,輸出數字量。CLK:時鐘脈沖輸入端。要求時鐘頻率不高于640KHZ。REF(+)、REF(-):基準電壓。Vcc:電源,單一+5V。GND:地。——ADDA—ADEJ11A/D轉換器大致可以分為三類:一是雙積分A/D轉換器,優點是精度高,抗干擾性好,價格便宜,但速度慢;二是逐次逼近法A/D轉換器,精度、速度、價格適中;三是并行A/D轉換器,速度快,但價格昂貴。日光跟蹤系統用到的A/D轉換芯片是ADC0809,它是一個8位8通道逐次逼近的A/D轉換器,每采集一次數據一般需要lOOys。轉換過程是由“START”引腳上接收到啟動信號開始,轉換完成后,ADC0809自動產生轉換完成信號“EOC”,此信號可以用來通知單片機取走轉換好的數字量。單片機可以采用中斷方式、查詢方式或軟件延時等方法采集數據。中斷方式是將“EOC”信號接在單片機外部中斷請求引腳上,當A/D轉換完成后自動申請中斷,單片機利用外部中斷處理輸入轉換好的數據。查詢方式是將“EOC”信號接在單片機的I/O引腳上,通過軟件查詢該I/O引腳來確定轉換是否完成。軟件延時的方法不連接“EOC”信號,由于大概知道A/D轉換時間的數量級,通過軟件設置一段較長的等待時間,這段時間足夠A/D轉換完成,然后輸入轉換后的數據。比較起來,中斷和查詢方式的實時性較好,中斷方式對CPU的利用率最高。圖2.9為ADC0809模數轉換電路由于ADC0809具有輸出三態鎖存器,數據輸出引腳D7-D0可直接與數據總線相連,地址譯碼引腳A,B,C分別與總線AO,A1,A2相連,以選通IN0-IN7中的一個通道。

圖2.9ADC0809與AT89S52接口ADC0809與AT89S52的中斷方式接只需將ADC0809的EOC腳經過一個非門接到AT89S52的INT1上,當轉換結束時EOC發出一個正脈沖,經過非門后向單片機申請中斷,單片機響應中斷請求,由外部中斷1的中斷服務程序讀A/D轉換的結果,并啟動ADC0809下一次轉換。

電機拖動及調速方法分析電動機的機械特性電動機的機械特性值指電動機的轉速n與轉矩T的關系n=J(T)。機械特性是電動機力學性能的主要表現,它與運動方程相聯系,將決定拖動系統穩定運行及過渡過程的工作情況。機械特性中轉矩T是電磁轉矩,它與電動機軸上的輸出轉矩T差一個空載d轉矩T,當電動機工作在電動狀態時T—T+T。在運動方程中,將T作為負0d0z載轉矩則T應為軸上拖動轉矩即T,它與機械特性上的電磁轉矩不同,比后者d小T,在將T視作電磁轉矩,則T為負載轉矩與空載轉矩T之和,由于一般情0z0況下空載轉矩T占轉矩TA或T之比較小,在一般工程計算中可以略去T二粗略0d地認為電磁轉矩T等于輸出轉矩T。d機械特性方程直流電機基本方程:電磁轉矩T—電磁轉矩T—C?ITa(C二pZ.60a)感應電動勢n0E=感應電動勢n0E=C?nae電樞電路電動勢平衡方程U-1Rn—a

C?e由基本方程得:直流電機機械特性方程URn直流電機機械特性方程URn—一一C?CC?2eetC—9.55C)Ten—CTChT中當T=0時n—右稱為理想空載轉速即(如圖eet e

圖3.1直流電機機械特性固有機械特性當電動機電壓U及磁通o均為額定值U及o,電樞沒有串聯電阻時的機械特nN性稱為固有機械特性,其方程為n=鼻- RT,固有機械特性如圖3.2所c0cc02eN eTN示,由于R較小,直流電機的固有特性較硬。人為機械特性可以改變電動機參a數的獲得方法。1電樞串電阻時的人為機械特性電樞串電阻R時U=U,?=?,R=R+R,人為機械特性方程為:Q N N aQUR+Rn= ———a 4TC?CC?2eN eTN如圖3.3中線1為固有機械特性,線2和線3為電樞串電阻為R,RQ1 Q2(R>R)時的人為機械特性。Q1Q2根據圖3.3和電樞串電阻時的人為機械特性方程可見,在一定的負載轉矩(例如在額定轉矩T)下,轉速降An隨串聯電阻的加大而增加。N2改變電壓時的人為機械特性改變電壓時電樞不串聯電阻R=0,?=?,人為機械特性方程為:QN a—CC?TN如圖3-4中線1為額定電壓時的機械特性線2和線3電壓為U和U時的改變電12壓的人為機械特性。(U>U>U)N12

圖3.4圖3.4直流電機電壓不同時的人為機械特性由改變電壓時的特性方程與固有特性方程比較和圖3.4不難看出,改變電壓時,n隨電壓的降低而降低,特性的斜率則保持不變。一般電動機的電壓向低0于額定電壓方向改變,因此人為機械特性是幾根平行線,它們低于固有特性曲線,又與機械特性平行。3.減弱電動機磁通時的人為機械特性一般直流電動機在額定磁通下運行時,電機已接近飽和。改變磁通實際上是減弱勵磁。在勵磁回路內串聯電阻rQ,并變化其阻值,即使磁通?減弱,并在低于額定磁通0時調節?的大小(如圖3.5)。N圖3.5直流他勵電動機電路原理

圖3.5直流他勵電動機電路原理U=U電樞不串電阻,減弱磁通時人為機械特性方程為:NURn= —- a-—c?cce2eNeTNn=n=J(I)特性方程為:aURn= —— a-—cecc?eNeTN由上述兩式可見當e減弱時,理想空載轉速n=UCe加大,短路(堵轉)0 Ne電流I=UR=常值,而短路轉矩T將隨著e減弱而降低(T=CeI)k N'a k k Tke為不同數值時的人為機械特性n=J(T)如圖3.6。(eN>e2>eN)如圖3.6e不同時的n如圖3.6e不同時的n=J(T)曲線他勵直流電動機的制動他勵直流電動機制動運轉狀態,其拖動時轉矩T與轉速n的方向相反,此時電動機變成發電機吸收機械能并轉化為電能。制動的目的是使電力拖動系統停車,對于位能負載的工作機構,用制動可獲得穩定的下降速度。使電力拖動系統停車最簡單的方法是斷開電樞電源,系統會慢下來最后停車,這種方法一般較慢,特別是空載停車更需要較長的時間。通常可以使用電器制動(能耗制動,反接制動,回饋制動)的方法實現停下。能耗制動由能耗制動的特點U=0,R二R+R,得能耗制動機械特性方程為:azR+Rn二一一azTCC02eT由特性方程可見,n為正時,T為負;n=0時,T=0,所有機械特性位于第二象限,并通過坐標原點(如圖3.7)。特性斜率為B二R+R/'(CC02),與電樞a Z eT

如果制動運行時轉速為n,開始制動時,n不變,工作點平移到能耗制動特11性上,因而制動轉矩T為負,在(-T,-T)的作用下,電動機減速,工作點11z愈小,沿特性下降,制動轉矩逐漸減小,直到0為止,電動機停車。(制動電阻R則機械特性愈平T絕對值愈大,制動愈快)z1制動電阻R愈小,則機械特性愈平,T的絕對值愈大,制動愈快。但R又Z1Z不能太小否則I及T將超過允許值,如按最大電流不超過21來選擇R則可近11NZ—R—R> 4一RQ21 aN似認為R+R> 沁—na。 21 21NN反接制動反接制動可以用兩種方法實現,即轉速反向(用于位能負載)與電樞反接(一般用于反作用負載)。1.轉速反向的反接制動如圖3.8表示電動機串較大電阻R時的人為機械特性,特性在第4象限內Q的一段(圖中實線表示)即為轉速反向的反接制動特性,此時T為正,n為負。由特性可見隨著轉速(在反向),轉矩的增加T也加大,直到T與T相等時,轉z速穩定,獲得穩定的下放速度。圖3.8圖3.8轉速反向的反接制動機械特性在轉速反向的反接制動狀態下,由于n為負,感應電動勢E的方向與電動a狀態時相反。電樞電路的電壓平衡方程式為I(R+R)二U-(-E)二U+E,aa Q a a由此可見,在額定轉速n時,U+E可達到近于2U的數值,此時R必須較大,N a N Q以限制電樞電流。1.電樞反接的反接制動如圖3.9所示,如電動機在制動前工作在電動狀態,在固有特性的A點運轉,電樞反接,轉矩瞬時變為-T(T的大小決定R的數值),由于,轉速不能突變,BB Qn=n電動機工作的轉移到人為機械特性BCDE的B點,B點的T為負,n為正,BA在第二象限。直線在第二象限的一段BC即為反接制動特性。如果反接制動時最大電流不超過2I,則應使NR+R>^—N N?N= N 即R> 4—R,與能耗制動R > 4一RaQ 2I 2I I Q2I a z2I aN N N N N比較可見,R比能耗制動時的R差不多大一倍,特性比能耗制動陡的多,圖3.9Qz中BC段的制動轉矩都比較大,因此比能耗制動時制動作用更強烈,制動更快。他勵直流電動機的調速為了使跟蹤系統已最合理的速度進行跟蹤日光,要求在不同的情況下以不同的速度工作,就要對電動機進行調速。電樞串電阻電樞串電阻后,在電阻上流過電樞電流產生壓降,電樞端電壓因之減低。電樞端電壓的數值受負載影響很大,由圖3.10可見轉速受負載的影響也很大,在空載時幾乎沒有調速作用。負載轉矩T下電樞串聯不同的電阻可得不同轉速。由Z圖3.10可知n>n>n>n)12 3 4RR—3圖3.10電樞串聯電阻調速當電樞電阻由R突增至R」寸,n及E一開始不能突變,I及T減小,圖3.101aa中,運行點即在相同的轉速下由a點過渡到b,轉矩由T下降到T',T=T'<T,dn/dt為負,系統減速。隨著n及E的下降,I及T不斷增高I二(U-E)R,a a a a 1T-T仍為負,系統繼續減速,但減速的速度在不斷減小,(因T-T|在減小),

直到n降到n時,T增至T,轉矩新的平衡又建立,系統以較低的轉速n穩定2z2運行,調速過程終了。分析電樞串電阻調速的效率如下:電動機由電網吸收的功率P為P=UI11損耗AP為損耗AP為AP=12R=UI-EI=UIa a aaE——aUE C恤(1-―)=P(1-一-U1C恤e0n-n)=p(-° )。1n0P—AP n—nn效率耳為耳=—i =1——電動機帶動額定恒轉矩負載,Pn10電動機帶動額定恒轉矩負載,=I,P=P=UI為定值,隨著n的N11NNN降低,損耗增大效率降低。當n降低,損耗增大效率降低。當nPn時,AP=寧“皿'即轉速調到弓時,由電網吸收功率的一半消耗在電樞回路總電阻上,效率僅為50%。可見電樞串電阻調速方法很不經濟,但其方法非常簡單,控制設備部復雜,非常適合與日光跟蹤器這種小型系統。由于日光跟蹤系統電機多數時間為低速運轉,機械特性較軟,就需提高機械特性的硬度,在串電阻R的同時,再在電樞兩端并聯電阻R,如圖3.11a,等Q B效電源法得出等效電路如圖3.11b。

RRRBUR+BG從等效電路可得出機械特性方程為n=Rg+Rb - Rb[RT=n-卩TC? CC?2 0e eT通過機械特性方程可繪出機械特性曲線如圖3.12如圖3.12虛線畫出固有特性及電樞不并聯電阻R僅有串聯電阻R時的人B Q為機械特性,與只串聯J的特性比較:理想空載轉速由n二U/(C0)變為n/<n,而斜率由B二(R+R)/(CC02)變為曠<0,由此可見串并聯電阻使特性的理想aQeT空載轉速降低,而硬度則提高了,但此時仍不能平滑調速,低速的電能損耗仍然較大。降低電源電壓U RIR降低電源電壓的調速系統特性方程為n二冬-^o-RaT式中U就是發電c0cc02oe eT機的感應電動勢E,及U=E,R為整流裝置內阻。改變U可得一組平行的G0G00特性(如圖3.13),其n與U成正比,并具有相同的斜率0二(R+R)/(CC02),0 0 0aeT如采用反饋控制,特性的硬度可再提高,從而獲得調速范圍廣,平滑性能高的性能優良的調速系統。這樣的缺點是設備投資過大。因為日光跟蹤系統是一個小型系統調速方法應以方便簡單切經濟考慮對象,所以調速選擇電樞串電阻的方法。圖3.13降低電源電壓調速時的機械特性23日光跟蹤系統軟件設計軟件設計一般按下列步驟進行:先分析系統對軟件的要求;然后在此基礎上進行軟件總體設計,包括程序整體結構設計和對程序進行模塊化設計,接著畫出每一個專用模塊的詳細流程圖,并選擇合適的語言編寫程序。4.1主程序設計日光跟蹤控制主程序的設計應考慮以下問題:(1)光電檢測和A/D轉換;(2)電機正反轉控制程序(3)越限報警和處理;(4)實現過壓停車、過熱停車、堵轉停車。主程序流程圖如圖4.1所示圖4.1主程序流程圖通過上述流程圖分析編寫程序主函數如下:voidmain(void)//主函數{TMOD=0x01;//T0工作于方式1TH0=0xfc;TL0=0x17;//0.001秒觸發一次中斷ETO=1;〃允許TO中斷EA=1;〃允許全局中斷TR0=1;//啟動TOSENSOR4=1;SENSOR5=1;while(1){while(AdjustFlag)//1O分鐘調整一次姿態{// 調整X軸 while(AdjustXFlag){XMotorDIRFlag=Oxff;while(AdjustXFlag){if(GetSensor1Flag){

GetSensor1Flag=O;//--LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){XMotorOKFlag=Oxff;}if(DataSensor1<LastDataSensor1){if(XMotorOKFlag){XMotorOKFlag=OxOO;//--AdjustXFlag=OxOO;}else{XMotorDIRFlag=~XMotorDIRFlagif(XMotorDIRFlag)XMotorForward();elseXMotorBackward();//--XMotorStop();AdjustYFlag=0xff;// 調整X軸結束 // 調整Y軸 while(AdjustYFlag)YMotorDIRFlag=0xff;while(AdjustYFlag)if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){YMotorOKFlag=0xff;}if(DataSensor1<LastDataSensor1){if(YMotorOKFlag){YMotorOKFlag=0x00;//--AdjustYFlag=0x00;}else{YMotorDIRFlag=~YMotorDIRFlag}}if(XMotorDIRFlag){YMotorForward();}else{YMotorBackward();}}}

//--YMotorStop();AdjustFlag=0x00;}//----調整Y軸結束----}if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();}XMotorStop();YMotorStop();}}中斷服務程序設計AT89S52的中斷系統共有8個中斷源,6個中斷矢量,兩級中斷優先級,可實現兩級嵌套,可通過軟件來屏蔽或允許相應的中斷請求。AT89S52的中斷源AT89S52有兩個外部中斷源,INTO和INT1分別對應兩個矢量。INTO:外部中0請求中斷輸入引腳(P3.2引腳),低電平或下降沿有效。INTO中斷有效,則置位中斷請求標志位IEO(TCON.1).CPU在每個機械周期的S5P2狀態采樣IE0標志位,當條件滿足,則響應中斷請求。中斷響應后,轉向對應的中斷矢量,執行中斷服務程序,并由硬件自動復位IE0標志位。INT1:外部中斷1請求輸入中斷引腳(P3.3引腳),低電平下降沿有效。其功能與操作同INTO.AT89S52的中斷控制寄存器IEAT89S52的中斷均屬可屏蔽中斷,即通過軟件對特殊功能寄存器IE的設置,實現對各中斷源的中斷請求允許或屏蔽的控制。中斷控制寄存器IE各位含義如下。表1中斷控制寄存器IE各位含義表IE.7IE.6IE.5IE.4IE.3IE.2IE.1IE.OIEEAET2ESET1EX1ETOEXO位地址AFH9EHADHACHABHAAHA9HA8HEA是CPU中斷總允許位。EA=1,CPU開放中斷;EA=O,CPU屏蔽所有的中斷請求。ES是串行中斷允許位。ES=1,允許串行口中斷;ES=O,禁止串行口中斷。ET1是定時器T1的溢出中斷允許位。ET1=1時允許T1溢出中斷;反之依然。EX1是外部中斷INT1中斷允許位。EX1=1時,允許外部中斷1中斷反之依然。ET0是定時計數器T0的溢出中斷允許位。EX0是外部中斷INTO允許位。4.2.3定時器/計數器方式寄存器TMOD方式寄存器TMOD是一個逐位定義的8位寄存器,但只能使用字節尋址的寄存器,字節地址為89H。其格式為:表2定時器/計數器方式寄存器TMOD格式D7D6D5D4D3D2D1DOGATEC/TM1M0GATEC/TM1M定時器1定數器0其中低四位定義定時器/計數器TO,高四位定義定時器/計數器T1各位的說明:GATE——門控制。GATE=1時,由外部中斷引腳INTO、INT1和控制寄存器的TRO,TR1來啟動定時器。當INTO引腳為高電平時TRO置位,啟動定時器TO;當INT1引腳為高電平時TR1置位,啟動定時器T1。GATE=O時,僅由TRO,TR1置位分別啟動定時器TO、T1。C/T——功能選擇位置位時選擇計數功能,清零時選擇定時功能。MO、M1——方式選擇功能由于有2位,因此有4種工作方式M1MO工作方式計數器模式TMOD(設置定時器模式)00方式013位計數器TMOD=0x0001方式116位計數器TMOD=0x0110方式2自動重裝8位計數器TMOD=0x0211方式3T0分為2個8位獨立計數器,T1為無中斷重裝8位計數器TMOD=0x03中斷優先控制寄存器IPAT89S52的中斷設有兩個優先級,每個中斷源均可通過軟件對中斷優先寄存器IP中的對應位進行設置,編程為高優先級或低優先級,置1為高優先級,清0為低優先級。正在執行的低優先級服務程序可以被高優先級中斷源的中斷請求所中斷,但不能被同級或低優先級的中斷源中斷請求所中斷;正在執行的高優先級中斷服務程序不能被任何中斷源的中斷請求所中斷。兩個或兩個以上的中斷源同時請求中斷時,CPU只響應優先級高的中斷請求。中斷源優先級設定寄存器IP的地址為0B8H,單片機具有兩個中斷優先級,每個中斷源可編程為高優先級中斷或低優先級中斷,并可實現二級中斷嵌套。其功能如下表:表3IP控制器的格式D7D6D5D4D3D2D1DOIP一一PT2PSPT1PX1PT0PX0位地址BFHBEHBDHBCHBBHBAHB9HB8HPT2是定時器/計數器T2中斷優先控制位。PT2=1,設定定時器T2為高優先級中斷;PT2=0,為低優先級。PS是串行中斷優先控制位。PS=1,設定串行口為高優先級中斷;反之依然。PT1是定時器/計數器T1中斷優先控制位。PT1=1,設定定時器T1為高優先級中斷;反之依然。PX1是外部中斷INT1中斷優先控制位。PX1=1,設定外部中斷INT1為高優先級中斷;反之依然。

PT0是定時器/計數器TO中斷優先控制位。PX0是外部中斷INTO中斷優先控制位。AT89S52復位后,IP低5位全部清0,將所有中斷源設置為低優先級中斷。AT89S52中斷系統結構如圖4.2為AT89S52單片機的中斷功能示意圖。外部中斷源INT0、INT1對應兩個中斷矢量;串行通信接收中斷源和發送中斷源,經過一個活門,共用同一個中斷矢量;定時計數器0和定時計數器1的溢出中斷源對應兩個中斷矢量;定時/計數器2有計數溢出和捕獲兩種中斷源,經過一個或門共用一個中斷矢量。硬件間旬碳杵倉詢圖4.2AT89S52單片機的中斷功能示意圖硬件間旬碳杵倉詢圖4.2AT89S52單片機的中斷功能示意圖1—1/7D=l|_1SCON

中斷標志中斷服務程序分析如下面程序TMOD=0x01;//T0工作于方式1TH0=0xfc;/〃寫入初始值,初始值可以決定定時多久TL0=0x17;//0.001秒觸發一次中斷ETO=1;〃允許T0中斷(如表1ET0是定時計數器T0的溢出中斷允許位。)EA=1;〃允許全局中斷TRO=1;〃啟動TOT0中斷服務程序如下voidTimeO(void)interrupt1using1//TO中斷入,1mS發生一次中斷{THO=Oxfc;TLO=Ox17; //--Count++;if(Count>1OOO){Count=O;//Cout>1OOOCout清零//--AdjustCount++;if(AdjustCount>6OO){AdjustCount=0;〃AdjustCout>1000Cout清零//--AdjustFlag=Oxff;AdjustXFlag=Oxff;XMotorOKFlag=OxOO;AdjustXFlag=OxOO;XMotorOKFlag=OxOO;}}GetSensor1Count++;if(GetSensor1Count>1OOO){GetSensor1Count=O;//--GetSensor1Flag=0xff;}數據采集及日光跟蹤程序設計如圖4.3所示,在跟蹤日光時先對X進行跟蹤當X軸輸入達到最大時,證明跟蹤暗桶X軸平面以平行于日光(誤差0.5°),則開始對Y軸進行跟蹤,同理當Y軸輸入達到最大值時,跟蹤暗桶Y軸平面也平行于日光。由此跟蹤暗桶X,Y平面全平行于日光,所以得出跟蹤暗桶平行于日光,即跟蹤到日光。

圖4.3跟蹤日光程序流程圖采集攝入日光強度程序:voidGetSensorl(void)//采集攝入的日光強度{ALE=l;DelayMS(l0);//延時l0個周期ALE=0;STR=1;//起動A/D轉換EOC=1DelayMS(5);STR=0;while(EOC==0){}OE=1;//打開三態數據輸出鎖存器DelayMS(1);ADDataBus=0xff;DelayMS(10);DataSensorl=ADDataBus;〃采樣EOC=0;OE=0;}過熱、過壓、越線、堵轉停車程序設計如圖4.4所示為實現過熱、過壓、越線、堵轉等故障時的緊急停車過程圖4.4過壓、過熱、堵轉、越線停車流程圖4.5C語言程序用匯編語言簡單解釋KeilC軟件介紹KeilC是美國KeilSoftware公司出品的51系列兼容單片機C語言軟件開發系統,與匯編相比,C語言在功能上、結構性、可讀性、可維護性上有明顯的優勢,因而易學易用。用過匯編語言后再使用C來開發,體會更加深刻。KeilC軟件提供豐富的庫函數和功能強大的集成開發調試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到KeilC生成的目標代碼效率非常之高,多數語句生成的匯編代碼很緊湊,容易理解。在開發大型軟件時更能體現高級語言的優勢。Keil工具包的整體結構,如圖4.5所示,其中uVision與Ishell分別是C51forWindows和forDos的集成開發環境(IDE),可以完成編輯、編譯、連接、調試、仿真等整個開發流程。開發人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標文件(.OBJ)。目標文件可由LIB51創建生成庫文件,也可以與庫文件一起經L51連接定位生成絕對目標文件(.ABS)。ABS文件由OH51轉換成標準的Hex文件,以供調試器dScope51或tScope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如EPROM中。圖4.5工具包整體結構圖C語言程序用匯編語言簡單解釋見附錄II5總結本文研究與設計了日光跟蹤系統,并對日光跟蹤系統的必要性與可行性進行了分析,本系統由光敏二極管及放大電路組成了光電檢測和比較裝置(跟蹤暗桶),以兩臺直流電機用電樞串電阻調速的方法來拖動跟蹤暗桶,構建了方位角和高度角雙軸機械跟蹤定位系統,使跟蹤暗桶中心線與日光夾角保持(+0.5°至-0.5°),由此組成自動跟蹤裝置,實現了追蹤太陽光的效果,利用VT89S52單片機和A/DC0809芯片,將軟、硬件有機地結合起來。本日光自動跟蹤系統能對日光進行自動跟蹤,應用了太陽輻射與環境亮度的比較,使得該自動跟蹤系統的準確性高、可靠性強,能有效的提高太陽能的利用效率。參考文獻[1]顧繩谷電機與拖動基礎北京機械工業出版社19965[2]齊占慶.機床電氣自動控制.北京:機械工業出版社,1987.8[3]張剛毅,彭喜源等.新編MSC-51單片機應用設計.哈爾濱:工業大學出版社,2003:53-80[4]賈伯年.傳感器技術.南京:東南大學出版社,2000:239-240[5]趙茂泰.智能儀器原理及應用.電子工業出版社,2004:11-12[6]何立民.單片機應用文集.北京:航空航天大學出版社,2000:45-68高偉.AT89單片機原理及應用[M].北京:國防工業出版社,2008年.蔡朝陽.單片機控制實習與專題制作[M].北京:北京航空航天大學出版社,2006年.楊凌霄.微型計算機原理及應用[M].江蘇:中國礦業大學出版社,2004年丁建偉.搶答器電路設計[J].蘭州工業高等專科學校學報,2008,(04).胡學海.單片機原理及應用系統設計[M].北京:北京電子工業出版社,2005年.孫育才.《單片微型計算機及其應用》.東南大學出版社.2004[2]沈德金陳粵初.《單片機接口電路與應用程序實例》.北京航天航空大學出版社.1990.潘新民王燕芳.《微型計算機控制技術》.電子工業出版社2003李朝青.單片機原理及接口技術(簡明修訂版).杭州:北京航空航天大學出版社,1998李廣弟.單片機基礎[M].北京:北京航空航天大學出版社,1994閻石.數字電子技術基礎(第三版).北京:高等教育出版社,1989廖常初.現場總線概述[J].電工技術,1999.附錄IC語言程序#include"Reg51.h"#include"intrins.h"#defineADDataBusP1//定義AD數據線sbitALE=P3人0;//定義ADC0809控制口sbitOE=P3A1;sbitEOC=P3A2;sbitSTR=P3A3;// sbitINPUTl=P2A0;〃定義電機控制線sbitEN_A=P2Al;sbitINPUT2=P2A2;sbitINPUT3=P2A3;sbitEN_B=P2A4;sbitINPUT4=P2A5;// sbitSENSOR2=P0A0;〃定義X軸電機正傳限位開關輸入口sbitSENSOR3=P0A1;〃定義X軸電機反傳限位開關輸入口機正傳限位開關輸入口sbitSENSOR5=P0A3;〃定義Y軸電機反傳限位開關輸入口// 4unsigned charDataSensor1,LastDataSensor1;unsignedcharGetSensor1Flag;unsignedintGetSensor1Count;unsignedcharXMotorDIRFlag;unsignedcharYMotorDIRFlag;unsignedcharSunStrongFlag;unsignedcharXMotorOKFlag;unsignedcharYMotorOKFlag;unsigned charAdjustFlag,AdjustXFlag,AdjustYFlag;unsignedintAdjustCount;unsignedintCount;voidTime0(void)interrupt1using1 //T0中斷入,1mS發生一次中斷sbitSENSOR4=P0A2;〃定義Y軸電 {TH0=0xfc;voidDelayMS(unsignedintnumber)voidDelayMS(unsignedintnumber)//延時函數{unsignedintcount;for(count=0;count<=number;count++){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}}voidGetSensor1(void)//采集攝入的日光強度{ALE=1;DelayMS(10);ALE=0;STR=1;EOC=1;DelayMS(5);STR=0;TL0=0x17;//--Count++;if(Count>1000){Count=0;//--AdjustCount++;if(AdjustCount>600){AdjustCount=0;//--AdjustFlag=0xff;AdjustXFlag=0xff;XMotorOKFlag=0x00;AdjustXFlag=0x00;XMotorOKFlag=0x00;}}//--GetSensor1Count++;if(GetSensor1Count>1000){GetSensor1Count=0;//--GetSensor1Flag=0xff;}}while(EOC==0){}OE=1;DelayMS(1);ADDataBus=0xff;DelayMS(10);DataSensor1=ADDataBus;//采樣EOC=0;OE=0;}voidXMotorForward(void)//控制X軸電機正傳{INPUT1=1;EN_A=SENSOR2;INPUT2=0;}voidXMotorBackward(void)//控制X軸電機反傳{INPUT1=0;EN_A=SENSOR3;INPUT2=1;}voidXMotorStop(void)//控制X軸電機停止{INPUT1=1;EN_A=0;INPUT2=1;}voidYMotorForward(void)//控制軸電機正傳{INPUT3=1;EN_B=SENSOR4;INPUT4=0;}voidYMotorBackward(void)//控制軸電機反傳{INPUT3=0;EN_B=SENSOR5;INPUT4=1;}voidYMotorStop(void)//控制Y軸電機停止{INPUT3=1;EN_B=0;INPUT4=1;

voidmain(void)//主函數{

//--GetSensor1Flag=0;//--TMOD=0x01;//T0工作于方式1TH0=0xfc;TL0=0x17;//0.001秒觸發一次中斷ETO=1;〃允許TO中斷EA=1;〃允許全局中選TR0=1;//啟動TOSENSOR4=1;SENSOR5=1;while(1){while(AdjustFlag)//1O分鐘調整一次姿態{// 調整X軸 while(AdjustXFlag){XMotorDIRFlag=Oxff;while(AdjustXFlag){if(GetSensor1Flag)

LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){XMotorOKFlag=Oxff;}if(DataSensor1<LastDataSensor1){if(XMotorOKFlag){XMotorOKFlag=OxOO;//--AdjustXFlag=OxOO;}else{XMotorDIRFlag=~XMotorDIRFlagif(XMotorDIRFlag)XMotorForward();elseXMotorBackward();//--XMotorStop();AdjustYFlag=0xff;// 調整X軸結束 // 調整Y軸 while(AdjustYFlag)YMotorDIRFlag=0xff;while(AdjustYFlag)if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();if(DataSensor1>LastDataSensor1){YMotorOKFlag=0xff;}if(DataSensor1<LastDataSensor1){if(YMotorOKFlag){YMotorOKFlag=0x00;//--AdjustYFlag=0x00;}else{YMotorDIRFlag=~YMotorDIRFlag}}if(XMotorDIRFlag){YMotorForward();}else{YMotorBackward();}}}}

//--YMotorStop();AdjustFlag=0x00;}//----調整Y軸結束----}if(GetSensor1Flag){GetSensor1Flag=0;//--LastDataSensor1=DataSensor1;GetSensor1();}XMotorStop();YMotorStop();}附錄IIC語言程序用匯編語言簡單解釋C:0x0000020180LJMPC:0180126:voidXMotorStop(void)//控制X軸電機停止127:{128:C:0x0003INPUT1=1;D2A0 SETBINPUT1(0xA0.0)129:EN_A=0;C:0x0005C2A1 CLREN_A(0xA0.1)130:INPUT2=1;C:0x0007D2A2 SETBINPUT2(0xA0.2)131:}132:133:voidYMotorForward(void)//控制Y軸電機正傳134:{135:INPUT3=1;136:EN_B=SENSOR4;137:INPUT4=0;138:}139:140:voidYMotorBackward(void)//控制Y軸電機反傳141:{142:INPUT3=0;143:EN_B=SENSOR5;144:INPUT4=1;145:}146:147:voidYMotorStop(void)//控制Y軸電機停止148:{149:INPUT3=1;150:EN_B=0;151:INPUT4=1;

152:}153:C:0x0009 22 RETC:0x000A 00 NOPC:0x000B0200C6LJMPTime0(C:00C6)154:voidmain(void)//主函數155:{156:TMOD=0x01;//T0工作于方式1C:0x000E 758901MOVTMOD(0x89),#0x01157: TH0=0xfc;C:0x0011758CFCMOVTH0(0x8C),#0xFC158:TL0=0x17;//0.001秒觸發一次中斷C:0x0014 758A17MOVTL0(0x8A),#AdjustCount(0x17)159: ET0=1;〃允許T0中斷C:0x0017D2A9SETBET0(0xA8.1)160: EA=1;〃允許全局中選C:0x0019D2AFSETBEA(0xA8.7)161: TR0=1;〃啟動T0162:C:0x001BD28CSETBTR0(0x88.4)163: SENSOR4=1;C:0x001DD2A6SETBSENSOR4(0xA0.6)164: SENSOR5=1;C:0x001FD2A7SETBSENSOR5(0xA0.7)165: while(1)166: {167:while(AdjustFlag)//10分鐘調整一次姿

態C:0x0021E516MOVA,AdjustFlag(0x16)C:0x00237003JNZC:0028C:0x00250200B6LJMPC:00B6168:{169:// 調整X軸 170:while(AdjustXFlag)C:0x0028E50FMOVA,AdjustXFlag(0x0F)C:0x002A6043JZC:006F171:{172:XMotorDIRFlag=0xff;C:0x002C7511FFMOVXMotorDIRFlag(0x11),#0xFF173:while(AdjustXFlag)C:0x002FE50FMOVA,AdjustXFlag(0x0F)C:0x00316034JZC:0067174:{175:if(GetSensor1Flag)C:0x0033E513MOVA,GetSensor1Flag(0x13)C:0x003560F8JZC:002F176:{177:GetSensor1Flag=0;178://--179:LastDataSensor1=DataSensor1;180:GetSensor1();C:0x003712012CLCALLL?0051(C:012C)181:if(DataSensor1>LastDataSensor1)C:0x003AE50CMOVA,DataSensor1(0x0C)C:0x003CD3SETBCC:0x003D950ESUBBA,LastDataSensor1(0x0E)C:0x003F4003JCC:0044{182:183:182:XMotorOKFlag=0xff;C:0x00417508FFMOVXMotorOKFlag(0x08),#0xFF185:184:185:C:0x0044E50CMOVA,DataSensor1(0x0C)C:0x0046C3CLRCC:0x0047950ESUBB}if(DataSensor1<LastDataSensor1)C:0x0049C:0059186:{187:if(XMotorOKFlag)C:0x004BA,XMotorOKFlag(0C:0x004D500EJNCE508x08)6007MOVJZA,LastDataSensor1(0x0E)C:0056{188:189:

188:XMotorOKFlag=0x00;190://--C:0x004F E4AC:0x0050 F508XMotorOKFlag(0x08),A191:AdjustXFlag=0x00;C:0x0052F50FCLRMOVMOVAdjustXFlag(0x0F),ACLRMOVMOV}193:elseC:0x00548003SJMPC:0059194:{195:XMotorDIRFlag=~XMotorDIRFlag;C:0x00566311FFXRLXMotorDIRFlag(0x11),#0xFF196:197:}198:if(XMotorDIRFlag)C:0x0059E511A,XMotorDIRFlag(0x11)C:0x005B6005C:0062199:{200:XMotorForward();C:0x005D12018CXMotorForward(C:018C)MOVJZLCALLMOVJZLCALL202:elseC:0x006080CDC:002F203:{204:XMotorBackward();C:0x0062120195XMotorBackward(C:0195)205:}206:}207:}208://--C:0x006580C8C:002F209:XMotorStop();C:0x0067120003XMotorStop(C:0003)210:AdjustYFlag=0xff;C:0x006A7510FFAdjustYFlag(0x10),#0xFF211:212:// 調整X軸結束 213:// 調整Y軸 C:0x006D80B9C:0028214:while(AdjustYFlag)C:0x006FE510SJMPLCALLSJMPSJMPLCALLSJMPLCALLMOV}SJMPMOVC:0x007160AEJZC:0021215:{216:YMotorDIRFlag=0xff;C:0x00737512FFMOVYMotorDIRFlag(0x12),#0xFF217:while(AdjustYFlag)C:0x0076E510MOVA,AdjustYFlag(0x10)C:0x00786034JZC:00AE218:{219:if(GetSensor1Flag)C:0x007AE513MOVA,GetSensor1Flag(0x13)C:0x007C60F8JZC:0076220:{221:GetSensor1Flag=0;222://--223:LastDataSensor1=DataSensor1;224:GetSensor1();C:0x007E12012CLCALLL?0051(C:012C)225:if(DataSensor1>LastDataSensor1)C:0x0081E50CMOVA,DataSensor1(0x0C)C:0x0083 D3 SETBCC:0x0084 950E SUBBA,LastDataSensor1(0x0E)C:0x00864003JCC:008B226:{227:YMotorOKFlag=0xff;C:0x00887509FFMOVYMotorOKFlag(0x09),#0xFF228:}229:if(DataSensor1<LastDataSensor1)C:0x008B E50C MOVA,DataSensor1(0x0C)C:0x008D C3 CLRCC:0x008E 950E SUBBA,LastDataSensor1(0x0E)C:0x0090 500EJNCC:00A0230:{231:if(YMotorOKFlag)C:0x0092E509MOVA,YMotorOKFlag(0x09)C:0x00946007JZC:009D232:{233:YMotorOKFlag=0x00;234://--C:0x0096 E4 CLRAC:0x0097 F509 MOVYMotorOKFlag(0x09),A235:AdjustYFlag=0x00;C:0x0099F510MOVAdjustYFlag(0x10),A236:}237:elseC:0x009B8003SJMPC:00A0238:{239:YMotorDIRFlag=~YMotorDIRFlag;C:0x009D6312FFXRLYMotorDIRFlag(0x12),#0xFF240:}241:}242:if(XMotorDIRFlag)C:0x00A0E511MOVA,XMotorDIRFlag(0x11)C:0x00A26005JZC:00A9243:{244:YMotorForward();C:0x00A412019ELCALLYMotorForward(C:019E)245:}246:elseC:0x00A780CDSJMPC:0076247:{248:YMotorBackward();C:0x00A91201A7LCALLYMotorBackward(C:01A7)249:}250:}251:}252://--C:0x00AC80C8SJMPC:0076253:YMotorStop();C:0x00AE1201B0LCALLYMotorStop(C:01B0)254:AdjustFlag=0x00;C:0x00B1 E4 CLRAC:0x00B2 F516 MOVAdjustFlag(0x16),A255:}256:// 調整Y軸結束 C:0x00B480B9SJMPC:006F257:}258:if(GetSensor1Flag)C:0x00B6E513MOVA,GetSensor1Flag(0x13)C:0x00B86003JZC:00BD259:{260:GetSensor1Flag=0;261://--262:LastDataSensor1=DataSensor1;263:GetSensor1();C:0x00BA12012CLCALLL?0051(C:012C)264:}A,#0x03265:C:0x00DF402CJCXMotorStop();C:010DC:0x00BD120003LCALL49:{XMotorStop(C:0003)50:266:Count=0;YMotorStop();51://--C:0x00C01201B0LCALLC:0x00E1750A00MOVYMotorStop(C:01B0)Count(0x0A),#0x00267:}C:0x00E4750B00MOVC:0x00C3020021LJMP0x0B,#0x00C:002152:42:voidTimeO(void)interruptAdjustCount++;1using1//TO中斷入,ImS發C:0x00E70518INC生一次中斷0x1843:{C:0x00E9E518MOVC:0x00C6COEOPUSHA,0x18ACC(0xE0)C:0x00EB7002JNZC:0x00C8CODOPUSHC:00EFPSW(0xD0)C:0x00ED0517INC44:TH0=0xfc;AdjustCount(0x17)C:0x00CA758CFCMOV53:TH0(0x8C),#0xFCif(AdjustCount>600)45:TL0=0xl7;C:0x00EFD3SETB46://--CC:0x00CD758Al7MOVC:0x00F09458SUBBTL0(0x8A),#AdjustCount(0x17)A,#0x5847:Count++;C:0x00F2E517MOVC:0x00D0O5OBINCA,AdjustCount(0x17)0x0BC:0x00F49402SUBBC:0x00D2E5OBMOVA,#0x02A,0x0BC:0x00F64015JCC:0x00D47OO2JNZC:010DC:00D854:{C:0x00D6O5OAINC55:Count(0x0A)AdjustCount=0;48:if(Count>1000)56:C:0x00D8D3SETB//--CC:0x00F8751700MOVC:0x00D994E8SUBBAdjustCount(0x17),#0x00A,#0xE8C:0x00FB751800MOVC:0x00DBE5OAMOV0x18,#0x00A,Count(0x0A)57:C:0x00DD94O3SUBBAdjustFlag=0xff;C:0x00FE7516FFMOVAdjustFlag(0x16),#0xFF58:AdjustXFlag=0xff;C:0x0101750FFFMOVAdjustXFlag(0x0F),#0xFF59:XMotorOKFlag=0x00;C:0x0104750800MOVXMotorOKFlag(0x08),#0x0060:AdjustXFlag=0x00;C:0x0107750F00MOVAdjustXFlag(0x0F),#0x0061:XMotorOKFlag=0x00;C:0x010A750800MOVXMotorOKFlag(0x08),#

溫馨提示

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

評論

0/150

提交評論