電氣工程及其自動化畢業(yè)論文-基于單片機的太陽光追蹤系統(tǒng)設(shè)計_第1頁
電氣工程及其自動化畢業(yè)論文-基于單片機的太陽光追蹤系統(tǒng)設(shè)計_第2頁
電氣工程及其自動化畢業(yè)論文-基于單片機的太陽光追蹤系統(tǒng)設(shè)計_第3頁
電氣工程及其自動化畢業(yè)論文-基于單片機的太陽光追蹤系統(tǒng)設(shè)計_第4頁
電氣工程及其自動化畢業(yè)論文-基于單片機的太陽光追蹤系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

基于單片機的太陽光追蹤系統(tǒng)設(shè)計摘要由于我國經(jīng)濟的飛速發(fā)展,導(dǎo)致各種能源的使用入不敷出,特別是煤炭石油資源的不斷消耗與短缺,使人類加快了尋找其他替代能源的腳步。雖然太陽能具有無污染﹑可再生﹑儲量大等優(yōu)點,且分布范圍廣,擁有非常廣闊的發(fā)展前景,但是太陽能利用效率較低,這個問題一直影響和妨礙著太陽能技術(shù)的推廣和發(fā)展。在太陽能發(fā)電中,太陽板受光面與太陽光線的角度是決定太陽能發(fā)電效率的關(guān)鍵因素。本設(shè)計的原理是利用傳感器(光敏電阻)把接收到的光信號轉(zhuǎn)換成電信號,然后經(jīng)過信號處理及單片機控制后,由控制電路輸出相應(yīng)的控制數(shù)字信號驅(qū)動方位角調(diào)整機構(gòu)和高度角調(diào)整機構(gòu)實現(xiàn)相應(yīng)的位置調(diào)整。本課題選用ATC89C52單片機作為智能單元,根據(jù)單片機的特點和所需實現(xiàn)的功能,著重完成了單片機外圍硬件電路設(shè)計和對應(yīng)的軟件設(shè)計。關(guān)鍵詞太陽跟蹤;單片機;光敏電阻;步進電機目錄摘要 11.緒論 31.1研究的背景和意義 31.2國內(nèi)外的研究情況 41.3論文的主要研究內(nèi)容 42.系統(tǒng)的總體設(shè)計 52.1系統(tǒng)總體設(shè)計及工作原理 52.2系統(tǒng)總體設(shè)計要求及分析 62.3本章小結(jié) 63.系統(tǒng)的硬件設(shè)計 73.1主控電路的設(shè)計 73.1.1AT89C52單片機簡介 73.1.2單片機最小系統(tǒng)設(shè)計 83.2光電轉(zhuǎn)換電路設(shè)計 93.2.1光電傳感器的簡介 93.2.2光電轉(zhuǎn)換電路工作原理及電路設(shè)計 103.3AD轉(zhuǎn)換模塊電路設(shè)計 113.3.1AD轉(zhuǎn)換模塊簡介 113.3.2AD轉(zhuǎn)換原理及電路設(shè)計 113.4步進電機驅(qū)動電路設(shè)計 113.4.1步進電機簡介 113.4.2步進電機及其控制方式 123.4.3步進電機驅(qū)動電路設(shè)計 123.5單片機外圍電路設(shè)計 133.5.1、按鍵電路 133.5.2、指示燈電路 133.6本章小結(jié) 144.系統(tǒng)軟件設(shè)計 154.1主程序設(shè)計 154.2子程序設(shè)計 154.2.1光電檢測模塊程序設(shè)計 154.2.2AD轉(zhuǎn)換模塊程序設(shè)計 164.2.3按鍵模塊程序設(shè)計 174.3本章小結(jié) 195.系統(tǒng)的仿真與調(diào)試 205.1Proteus簡介 205.2PROTEUS仿真工程 215.3系統(tǒng)仿真結(jié)果 225.4軟件調(diào)試 235.5本章總結(jié) 236.總結(jié)與展望 246.1總結(jié) 246.2展望 24參考文獻 25附錄1 27附錄2 29謝辭 401.緒論1.1研究的背景和意義隨著社會的飛速發(fā)展,人們保護環(huán)境的意識也隨之提高,致力開發(fā)一些環(huán)保能源,比如,在風(fēng)能,水力發(fā)電,太陽能等各種新型能源中,有很多專家學(xué)者都傾向于開發(fā)太陽能。風(fēng)能、水能、潮汐能、生物質(zhì)能等它們都屬于可再生能源,而且都來自于太陽能,所以,太陽能是那些可再生能源中最主要的基本能源[1]。太陽能是一種新型節(jié)能能源,它與普通的能源比較有四個特點:第一、太陽能的總量十分巨大:每年輻射到地球表面上的太陽能大約相當于130萬億噸煤碳燃燒的熱量,太陽能的總量是現(xiàn)今世界上可以開發(fā)的最大的能源。第二、太陽能具有無害性,太陽能是一種清潔無污染的能源,開發(fā)和利用太陽能不會污染環(huán)境。第三、太陽能具有普遍性:它是我們可以利用的最豐富的能源,也沒地域限制無論陸地或海洋,到處都有,都可以直接開發(fā)利用,而且不需要開采運輸。第四、太陽能還有長久性:科學(xué)家根據(jù)日前太陽產(chǎn)生的核能速率進行估算,得出結(jié)果,氫的儲存量可以維持上百億年,而且地球的壽命約為幾十億年,單從這一點上,就能夠說明太陽能量是用之不竭的。所以,它是世界上公認的理想新興清潔替代能源[2]。根據(jù)現(xiàn)況,開發(fā)利用太陽能受到科學(xué)家們越來越普遍的重視,因此,它是各國都在研究的重大課題。它對人類來說是一種取之不竭而且能自由免費利用的綠色能源。我國的太陽能資源非常豐富,它作為一種清潔無污染的能源,發(fā)展前景也是非常廣闊,太陽能發(fā)電已成為全球最受歡迎的利用新型能源的方法[3]。但是也存在一些瑕疵,太陽能也有間歇性、光照方向和光照強度隨時間不斷變化等等問題,這樣我們就對太陽能的采集和利用提出了更高的要求。目前,我們都不能充分利用太陽能資源,因為很多太陽能電池板的排列規(guī)律基本上是固定的,所以發(fā)電的效率特別低。根據(jù)實驗,在太陽能光生電中,相同條件下,采用太陽跟蹤發(fā)電的裝置要比固定發(fā)電的裝置的發(fā)電量高出35%,因此在太陽能利用中,進行追蹤是十分重要的!智能型自動跟蹤太陽的裝置設(shè)計是為了解決太陽能轉(zhuǎn)換效率低的問題,并且為了更大限度的利用太陽能。太陽光照射的角度不能固定,要想達到最大的集熱效果,太陽能電池板應(yīng)和太陽光線保持垂直。本設(shè)計要求設(shè)計一種可以自動跟蹤太陽的控制系統(tǒng),使太陽能電池板可以隨著太陽光線的移動而轉(zhuǎn)動方向,保持太陽板與太陽光線基本垂直,以達到最大的發(fā)電效率,成本低,有較好的推廣利用價值[4]。太陽能這個清潔可再生能源已經(jīng)受到許多國家的重視和利用,充分利用太陽能資源,有著深遠的能源戰(zhàn)略意義。1.2國內(nèi)外的研究情況我國很多科學(xué)家也都陸續(xù)展開了這方面的研究。1994年《太陽能》雜志簡述了單軸液壓的自動跟蹤器,完成了單向跟蹤,國家氣象局計量站在1990年研制出了FST型全自動太陽跟蹤器,成功用于太陽輻射觀測。2005年與以色列合作,在江蘇省南京市建立成了第一座功率為75kw的太陽能塔式熱發(fā)電示范電站,并成功運行發(fā)電。此外,國外對太陽跟蹤研究也有了突破性進展。二十世紀50年代,太陽能利用的領(lǐng)域出現(xiàn)了兩項重大的技術(shù)突破:一是1954年在美國貝爾的實驗室研制出6%實用型單晶硅電池,二是1955年以色列Tabor提出選擇性吸收表面概念和理論并研制成功選擇性太陽吸收涂層。這兩項技術(shù)的突破為使太陽能的利用進入現(xiàn)代發(fā)展時期奠定了技術(shù)基礎(chǔ)。此外,1997年美國的Blackace研制出了單軸的跟蹤器,這種裝置根據(jù)赤道坐標系下的太陽運行原理完成東西方向的自動跟蹤,但南北方向通過手動的調(diào)節(jié),接收器的接收效率提高了15%。1998年美國,加州成功的研制出了ATM兩軸的跟蹤器,使熱接收率得到進一步提高。據(jù)現(xiàn)階段國內(nèi)外科學(xué)家對太陽跟蹤的研究情況來看,普遍采用單軸的跟蹤方式。隨著科學(xué)技術(shù)的發(fā)展,太陽跟蹤裝置會朝著雙軸的跟蹤方向發(fā)展,做到同步跟蹤太陽,太陽能的接收率有了很大提高。1.3論文的主要研究內(nèi)容本設(shè)計要求設(shè)計一種自動的跟蹤太陽的智能控制系統(tǒng),從而更有效的利用太陽能。所以采用雙軸跟蹤的方法對太陽進行跟蹤,使太陽能接受裝置能夠始終垂直于太陽[5]。研究內(nèi)容主要包括:第一章介紹了太陽光追蹤系統(tǒng)的發(fā)展概況和研究課題的目的及意義。第二章分析了太陽位置的變化對追蹤系統(tǒng)的影響,提出了系統(tǒng)的總體設(shè)計方案。第三章對系統(tǒng)的硬件部分進行了研究與設(shè)計,包括硬件選型及各主要核心電路的設(shè)計,為系統(tǒng)軟件設(shè)計奠定了基礎(chǔ)。第四章對系統(tǒng)的軟件部分進行研究與設(shè)計,確定控制系統(tǒng)流程圖。第五章對系統(tǒng)的軟件部分進行調(diào)試,優(yōu)化程序代碼,完善所設(shè)計的功能。第六章對整個設(shè)計進行了總結(jié),并指出了論文的不足之處以及對今后的展望。2.系統(tǒng)的總體設(shè)計2.1系統(tǒng)總體設(shè)計及工作原理本設(shè)計主要模塊包括:單片機控制電路,光電轉(zhuǎn)換電路,AD轉(zhuǎn)換電路,電機驅(qū)動電路。本部分首先主要介紹各個模塊的硬件電路,以及整體實物平臺搭建部分的原理分析,還有軟件設(shè)計方面的研究。硬件方面:采用雙軸跟蹤系統(tǒng),能夠同時在方位角和高度角兩個方向進行跟蹤,由光電傳感器,信號處理及控制電路,方位角及高度角調(diào)整機構(gòu)組成。傳感器把接收到的光信號轉(zhuǎn)換成電信號,然后經(jīng)過信號處理及控制電路后,由控制電路輸出相應(yīng)的控制信號驅(qū)動方位角調(diào)整機構(gòu)和高度角調(diào)整機構(gòu)實現(xiàn)相應(yīng)的位置調(diào)整[6]。軟件方面:以單片機芯片為控制核心部分,經(jīng)過數(shù)模轉(zhuǎn)換模塊,最后通過AD電壓采樣控制步進電機的正反轉(zhuǎn)。本設(shè)計的工作原理是當陽光照在光敏電阻上,通過光電轉(zhuǎn)換變成電壓值,輸入AD轉(zhuǎn)換電路,進行DA轉(zhuǎn)換,然后進行AD電壓采樣,輸入控制核心單片機,經(jīng)處理后最后經(jīng)過驅(qū)動芯片從而控制步進電機的正反轉(zhuǎn),使太陽板始終與太陽光線垂直。下圖為系統(tǒng)的總體設(shè)計方案單片機驅(qū)動電路AD轉(zhuǎn)換光電轉(zhuǎn)換太陽光線 照射 單片機驅(qū)動電路AD轉(zhuǎn)換光電轉(zhuǎn)換太陽光線圖2-1系統(tǒng)總體設(shè)計方案2.2系統(tǒng)總體設(shè)計要求及分析對于本設(shè)計課題的整體要求是造價低廉、結(jié)構(gòu)簡單、性能可靠、充分考慮其經(jīng)濟性。在結(jié)構(gòu)設(shè)計過程中,避免復(fù)雜和浪費,力圖簡單整潔,并且要便于安裝和維護。另一方面,在控制單元設(shè)計中,要充分考慮到系統(tǒng)的全天候要求,要選用耐用和抗干擾性強的執(zhí)行單元,避免發(fā)生故障。本設(shè)計所要達到的目的是提高太陽能的利用率,確定使用太陽板將太陽能轉(zhuǎn)化為電能。通常對太陽能進行轉(zhuǎn)換的時候,因為太陽是不停運動的,所以如果接收裝置是固定的,則無法時刻做到與太陽光線垂直,只能在固定時間吸收某一部分太陽能,而在其他時間的吸收效率不高甚至根本無法吸收到太陽能,因此,如果使太陽的吸收效率提高,必須要使太陽能吸收裝置與太陽運行軌跡一致,從而可以持續(xù)吸收太陽能。在本設(shè)計中采用的是雙軸跟蹤法對太陽進行實時跟蹤,使太陽能板能夠始終正對太陽,從而提高吸收效率[7]。設(shè)計要求如下:此裝置能根據(jù)天氣條件進行工作,晴天自動跟蹤,陰天或黑夜停止跟蹤。在進行跟蹤時,能確保太陽板始終與太陽光線垂直,更充分吸收太陽能。在本設(shè)計中,要求硬件部分和軟件部分能準確合理的配合和工作。2.3本章小結(jié)本章介紹了系統(tǒng)的總體設(shè)計方案、工作原理和設(shè)計要求,根據(jù)設(shè)計方案提出設(shè)計要求,比如此設(shè)計要能夠充分考慮到天氣影響的因素,要選用耐用和抗干擾性強的執(zhí)行單元,避免發(fā)生故障。3.系統(tǒng)的硬件設(shè)計3.1主控電路的設(shè)計3.1.1AT89C52單片機簡介為了使用方便,系統(tǒng)要求可以進行在線改寫,并能在斷電情況下保存數(shù)據(jù)而不需要保護電源,同時使系統(tǒng)使用盡可能少的外圍擴展芯片,提高系統(tǒng)運行的可靠性,要求使用的單片機具有片內(nèi)電擦除可編程只讀存儲器,基于以上原因,選用ATC89C52單片機[8]。AT89C52為8位通用微處理器,采用工業(yè)標準的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52相同,其主要用于會聚調(diào)整時的功能控制。功能包括對會聚主IC內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會聚調(diào)整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19腳)和XTAL2(18腳)為振蕩器輸入輸出端口,外接12MHz晶振。RST/Vpd(9腳)為復(fù)位輸入端口,外接電阻電容組成的復(fù)位電路。VCC(40腳)和VSS(20腳)為供電端口,分別接+5V電源的正負端。P0~P3為可編程通用I/O腳,其功能用途由軟件定義,在本設(shè)計中,P0端口(32~39腳)被定義為N1功能控制端口,分別與N1的相應(yīng)功能管腳相連接,13腳定義為IR輸入端,10腳和11腳定義為I2C總線控制端口,分別連接N1的SDAS(18腳)和SCLS(19腳)端口,12腳、27腳及28腳定義為握手信號功能端口,連接主板CPU的相應(yīng)功能端,用于當前制式的檢測及會聚調(diào)整狀態(tài)進入的控制功能。它還具有如下功能:1、兼容MCS51指令系統(tǒng)2、8kB可反復(fù)擦寫(大于1000次)FlashROM;3、32個雙向I/O口;4、256x8bit內(nèi)部RAM;5、3個16位可編程定時/計數(shù)器中斷;6、時鐘頻率0-24MHz;7、2個串行中斷,可編程UART串行通道;8、2個外部中斷源,共8個中斷源;9、2個讀寫中斷口線,3級加密位;10、低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能;11、有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應(yīng)不同產(chǎn)品的需求。圖3-1單片機最小系統(tǒng)3.1.2單片機最小系統(tǒng)設(shè)計(1)復(fù)位電路單片機的置位和復(fù)位,都是為了把電路初始化到一個確定的狀態(tài),一般來說,單片機復(fù)位電路作用是把一個例如狀態(tài)機初始化到空狀態(tài),而在單片機內(nèi)部,復(fù)位的時候單片機是把一些寄存器以及存儲設(shè)備裝入廠商預(yù)設(shè)的一個值。單片機復(fù)位電路原理是在單片機的復(fù)位引腳RST上外接電阻和電容,實現(xiàn)上電復(fù)位。當復(fù)位電平持續(xù)兩個機器周期以上時復(fù)位有效。復(fù)位電平的持續(xù)時間必須大于單片機的兩個機器周期。具體數(shù)值可以由RC電路計算出時間常數(shù)。圖3-2復(fù)位電路(2)晶振電路單片機系統(tǒng)里都有晶振,在單片機系統(tǒng)里晶振作用非常大,全程叫晶體振蕩器,他結(jié)合單片機內(nèi)部電路產(chǎn)生單片機所需的時鐘頻率,單片機晶振提供的時鐘頻率越高,那么單片機運行速度就越快,單片接的一切指令的執(zhí)行都是建立在單片機晶振提供的時鐘頻率。在通常工作條件下,普通的晶振頻率絕對精度可達百萬分之五十。高級的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率,稱為壓控振蕩器(VCO)。晶振用一種能把電能和機械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。單片機晶振的作用是為系統(tǒng)提供基本的時鐘信號。通常一個系統(tǒng)共用一個晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。晶振通常與鎖相環(huán)電路配合使用,以提供系統(tǒng)所需的時鐘頻率。如果不同子系統(tǒng)需要不同頻率的時鐘信號,可以用與同一個晶振相連的不同鎖相環(huán)來提供。STC89C51使用11.0592MHz的晶體振蕩器作為振蕩源,由于單片機內(nèi)部帶有振蕩電路,所以外部只要連接一個晶振和兩個電容即可,電容容量一般在15pF至50pF之間。圖3-3晶振電路3.2光電轉(zhuǎn)換電路設(shè)計3.2.1光電傳感器的簡介光敏電阻器是利用半導(dǎo)體的光電導(dǎo)效應(yīng)制成的一種電阻值隨入射光的強弱而改變的電阻器,當它受到光的照射時,半導(dǎo)體片(光敏層)內(nèi)就激發(fā)出電子—空穴對,參與導(dǎo)電,使電路中電流增強[9]。光敏電阻的工作原理是基于內(nèi)光電效應(yīng)。在半導(dǎo)體光敏材料兩端裝上電極引線,將其封裝在帶有透明窗的管殼里就構(gòu)成光敏電阻,為了增加靈敏度,兩電極常做成梳狀。入射光消失后,由光子激發(fā)產(chǎn)生的電子—空穴對將復(fù)合,光敏電阻的阻值也就恢復(fù)原值。在光敏電阻兩端的金屬電極加上電壓,其中便有電流通過,受到一定波長的光線照射時,電流就會隨光強的增大而變大,從而實現(xiàn)光電轉(zhuǎn)換。光敏電阻沒有極性,純粹是一個電阻器件,使用時既可加直流電壓,也加交流電壓。半導(dǎo)體的導(dǎo)電能力取決于半導(dǎo)體導(dǎo)帶內(nèi)載流子數(shù)目的多少[10]。3.2.2光電轉(zhuǎn)換電路工作原理及電路設(shè)計光電轉(zhuǎn)換裝置接收太陽光,將光信號轉(zhuǎn)換成電信號,根據(jù)所采集到的信號,由單片機分析得最終控制的步進電動旋轉(zhuǎn)與轉(zhuǎn)向來達到太陽能板,結(jié)果始終是垂直于入射光線,從而達到利用太陽能的最高效率。其中光電檢測A對左遠離光線進行檢測,當光線遠離電池板時A檢測會給單片機信號,單片機控制驅(qū)動芯片驅(qū)動電機M1正轉(zhuǎn)使電池板跟隨光線左轉(zhuǎn)。光電檢測B對右遠離光線進行檢測,當光線遠離電池板時B檢測到并實時傳輸給單片機信號,單片機控制驅(qū)動芯片驅(qū)動電機M1反轉(zhuǎn)使電池板跟隨光線右轉(zhuǎn)。光電檢測C與D對太陽垂直角度的變化進行檢測,并將檢測到的光線變化信號傳輸給單片機,單片機進行進一步處理后控制驅(qū)動芯片驅(qū)動電機M2的正反轉(zhuǎn),從而實現(xiàn)電池板垂直角度的調(diào)整[11]。光敏電阻的分布如圖所示.。圖3-2光敏電阻模型圖3-3光電轉(zhuǎn)換電路3.3AD轉(zhuǎn)換模塊電路設(shè)計3.3.1AD轉(zhuǎn)換模塊簡介AD轉(zhuǎn)換電路包括電壓信號輸入部分,AD轉(zhuǎn)換部分和AD電壓采樣,信號輸出部分。3.3.2AD轉(zhuǎn)換原理及電路設(shè)計由光電轉(zhuǎn)換電路所得到的信號為模擬信號,所以采用AD轉(zhuǎn)換器,將模擬信號轉(zhuǎn)換為數(shù)字信號,然后通過單片機進行處理。模擬量可以是電壓、電流等信號,但在AD轉(zhuǎn)換前,輸入到AD轉(zhuǎn)換器的輸入信號必須是電壓信號。AD轉(zhuǎn)換后,輸出的數(shù)字信號可以有8位、10位、12位和16位等。在本設(shè)計中采用的是PCF8591芯片,PCF8591是一種具有I2C總線接口[12]的8位A/DD/A轉(zhuǎn)換芯片,在與CPU的信息傳輸過程中僅靠時鐘線SCL和數(shù)據(jù)線SDA就可以實現(xiàn)。PCF8591為單一電源供電(2.56V)典型值為5V。PCF8591具有4個模擬輸入、1個模擬輸出和1個串行I2C總線接口。PCF8591的3個地址引腳A0,A1和A2可用于硬件地址編程,允許在同個I2C總線上接入8個PCF8591器件,而無需額外的硬件。在PCF8591器件上輸入輸出的地址、控制和數(shù)據(jù)信號都是通過雙線雙向I2C總線以串行的方式進行傳輸。圖3-4AD轉(zhuǎn)換模塊3.4步進電機驅(qū)動電路設(shè)計3.4.1步進電機簡介前面介紹了光電轉(zhuǎn)換電路,AD轉(zhuǎn)換電路,和單片機電路部分的設(shè)計,其最終的目的也就是要控制步進電機的正反轉(zhuǎn)。步進電機是將電脈沖轉(zhuǎn)化為角位移的開環(huán)控制執(zhí)行機構(gòu)。步進電機又稱為脈沖電動機,當步進驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進電機按設(shè)定的方向轉(zhuǎn)動一個固定的角度,稱為“步距角[13],它的旋轉(zhuǎn)是以固定的角度一步一步運行的。可以通過控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過控制脈沖頻率來控制電機轉(zhuǎn)動的速度和加速度,從而達到調(diào)速的目的。其中步距角是對應(yīng)一個脈沖信號,電機轉(zhuǎn)子轉(zhuǎn)過的角位移用θ表示。θ=360度(轉(zhuǎn)子齒數(shù)J*運行拍數(shù)),以常規(guī)二、四相,轉(zhuǎn)子齒為50齒電機為例。四拍運行時步距角為θ=360度/(50*4)=1.8度,八拍運行時步距角為θ=360度/(50*8)=0.9度。在負載能力范圍內(nèi)這些關(guān)系不因電源電壓、負載大小、環(huán)境條件的波動而變化。因而可適用于開環(huán)系統(tǒng)中作為執(zhí)行元件,使控制系統(tǒng)大為簡化。步進電動機可以在很寬的范圍內(nèi)通過改變脈沖頻率來調(diào)速;能夠快速反轉(zhuǎn)和制動。它不需要變換可直接將數(shù)字脈沖信號轉(zhuǎn)換為角位移,很適合采用微型計算機控制。步進電動機是純粹的數(shù)字控制電動機。它將電脈沖信號轉(zhuǎn)變成角位移,即給一個脈沖信號,步動機就轉(zhuǎn)動一個角度,因此作常適合于單片機控制,推動了步進電動機的發(fā)展,為步進電動機的應(yīng)用開辟了廣闊的前景。3.4.2步進電機及其控制方式本系統(tǒng)用到的是四相步進電動機,四相步進電動機是將電信號轉(zhuǎn)變成角位移或線位移的開關(guān)控制元件,其轉(zhuǎn)速、停止位置只與脈沖信號的頻率和脈沖數(shù)有關(guān),具有誤差小,易控制等特點,廣泛用于儀器設(shè)計。選用28BYJ48型四相八拍電機,電壓為DC5V—DC12V。當對步進電機施加一系列連續(xù)不斷的控制脈沖時,它可以連續(xù)不斷地轉(zhuǎn)動。四相步進電機可以在不同的通電方式下運行,常見的通電方式有單(單相繞組通電)四拍(A-B-C-D-A),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB-),八拍(A-AB-B-BC-C-CD-D-DA-A)。3.4.3步進電機驅(qū)動電路設(shè)計步進電機單靠交流供電或直流電源無法運動,必須與驅(qū)動電路同時使用時才能發(fā)揮其功能,步進電機驅(qū)動器(驅(qū)動電路)由決定換向順序的控制電路(或稱為邏輯電路)與控制電機輸出功率的換相電路[14](或稱為功率電路(powerstage))組成。本圖是步進電機驅(qū)動電路原理圖。驅(qū)動電路通過ULN2803構(gòu)成比較多的驅(qū)動電路,8個NPN達林頓晶體管,連接在陣列非常適合邏輯接口電平數(shù)字電路(例如TTL,CMOS或PMOS上/NMOS)和較高的電流/電壓,如電燈,電磁閥,繼電器,打印錘或其他類似的負載,廣泛的使用范圍:計算機,工業(yè)和消費應(yīng)用。所有設(shè)備功能由集電極輸出和鉗位二極管瞬態(tài)抑制。該ULN2803是專為符合標準TTL。該電路為反向輸出型,即輸入低電平電壓,輸出端才能導(dǎo)通工作?;竟ぷ髟恚喝绻?腳輸入高電平1,則16腳輸出低電平0,反之一樣!一般來說,步進電動機的工作電壓是5V,對應(yīng)芯片的9腳接步進電動機的工作電壓5V。輸入接上拉電阻即接單片機引腳。引腳輸入低電平,ULN2003就輸出高電平,正反轉(zhuǎn)跟輸入電平有關(guān)。電路圖如圖所示。圖3-5驅(qū)動芯片3.5單片機外圍電路設(shè)計3.5.1、按鍵電路其中S1是手動和自動模式之間的切換,默認為自動模式,S2,S3,S4,S5是手動模式下,利用手動按鍵來控制步進電機的正反轉(zhuǎn)。圖3-6按鍵電路3.5.2、指示燈電路系統(tǒng)默認為自動模式,接通電源后LED1亮,當按下S1按鍵時,切換成手動模式,LED2亮。圖3-7指示燈電路3.6本章小結(jié)本章介紹了本系統(tǒng)各部分硬件模塊的簡介和工作原理,主要模塊有光電轉(zhuǎn)換電路,AD轉(zhuǎn)換模塊,步進電機控制電路,其中還有一些小部件,比如,按鍵模塊,LED顯示模塊,復(fù)位電路,晶振電路。寧夏大學(xué)新華學(xué)院本科畢業(yè)論文4.系統(tǒng)軟件設(shè)計4.1主程序設(shè)計本設(shè)計采用的是51單片機,它是控制這個系統(tǒng)的核心部分,軟件部分也由單片機來操作,其最終目的就是正確控制電機的正反轉(zhuǎn)。本部分以單片機為核心部件將各個電路模塊都連接起來,使我們更清楚設(shè)計本意,此次跟蹤系統(tǒng)的主程序流程圖如圖所示。開始開始初始化光電轉(zhuǎn)換裝置接收太陽光通過A/D轉(zhuǎn)換驅(qū)動電機轉(zhuǎn)動比較大小找光照最強位置轉(zhuǎn)到光照最強位置檢測結(jié)束結(jié)束圖4-1主程序流程圖4.2子程序設(shè)計4.2.1光電檢測模塊程序設(shè)計光電檢測模塊用于檢測光電轉(zhuǎn)換裝置接收的太陽光,將光信號轉(zhuǎn)換成電信號,根據(jù)所采集到的信號,由單片機分析得最終控制的步進電動旋轉(zhuǎn)與轉(zhuǎn)向來達到太陽能板,結(jié)果始終是垂直于入射光線,從而達到利用太陽能的最高效率。開始開始初始化光電傳感器信號掃描是否有效調(diào)用相關(guān)程序結(jié)束否是4-2光電檢測模塊流程圖4.2.2AD轉(zhuǎn)換模塊程序設(shè)計將光電轉(zhuǎn)換電路中測得的電壓值通過AD轉(zhuǎn)換模塊轉(zhuǎn)換為數(shù)值采樣再存到單片機內(nèi)存里,進行比較,AD電壓采樣可以決定采樣的精度,下面介紹芯片內(nèi)部原理。a.I2C總線數(shù)據(jù)位的傳輸它是由串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL)組成。連接到總線上的每一個器件都有一個唯一的地址,而且都可以作為一個發(fā)生器或接收器,SDA和SCL都是雙向線路,分別通過一個電阻連接到電源端。I2C總線上每傳輸一個數(shù)據(jù)位必須產(chǎn)生一個時鐘脈沖,I2C總線上數(shù)據(jù)傳輸?shù)挠行砸骃DA線上的數(shù)據(jù)必須在時鐘線SCL的高電平期間保存穩(wěn)定,數(shù)據(jù)線的改變只能在時鐘線為低電平期間。在標準模式下,高低電平寬度必須大于4.7us(即每次時鐘線需延時4.7us后才能改變)。b.I2C總線數(shù)據(jù)的傳輸數(shù)據(jù)傳輸?shù)淖止?jié)格式要求:發(fā)送到SDA線上的每一個字節(jié)必須為8位,每次發(fā)送的字節(jié)數(shù)量不受限制,從機在接收完一個字節(jié)后向主機發(fā)送一個應(yīng)答位,主機在收到從機應(yīng)答后才會發(fā)送第二字節(jié)數(shù)據(jù),發(fā)送數(shù)據(jù)時先發(fā)數(shù)據(jù)的最高位。數(shù)模轉(zhuǎn)換是本設(shè)計的關(guān)鍵部分,光電轉(zhuǎn)換的電壓值輸入到AD模塊后,經(jīng)過PCF8951芯片里的電壓采樣,最后輸出數(shù)字信號,再把信息傳送給單片機,從而控制步進電機正反轉(zhuǎn)。模塊流程圖如下DAC逐次比較寄存器比較器采樣保持模擬多路輸入輸入 DAC逐次比較寄存器比較器采樣保持模擬多路輸入輸入輸出驅(qū)動采樣保持輸出驅(qū)動采樣保持 圖4-3模塊流程圖本設(shè)計AD轉(zhuǎn)換模塊用到的芯片是PCF8951,它有4路8位A/D輸入,屬于逐次比較型,內(nèi)含采樣保持電路,1路8位輸出,內(nèi)含有ADC數(shù)據(jù)寄存器。 開始開始初始化模擬信號數(shù)字信號讀取數(shù)字量結(jié)束圖4-4A/D轉(zhuǎn)換流程圖4.2.3按鍵模塊程序設(shè)計按鍵電路主要用來進行自動模式和手動模式之間切換,默認系統(tǒng)為自動模式。在手動模式下,可以利用按鍵來控制電機的正反轉(zhuǎn)。圖4-5按鍵模塊流程圖4.2.4驅(qū)動模塊程序設(shè)計設(shè)定2為精度值,本設(shè)計中一共有上下左右四個光敏電阻[16],在光照下就會產(chǎn)生電壓,上邊電壓大于下邊電壓或者兩邊電壓值差大于2,或者手動模式下按下向下的按鍵,水平電機反轉(zhuǎn),若下邊電壓大于上邊電壓或者兩邊電壓值差大于2,或者手動模式下按下向上的按鍵,水平電機正轉(zhuǎn)。同理,左邊電壓大于右邊電壓或者兩者差值大于2,或者手動模式下按下向右的按鍵,方位電機右轉(zhuǎn),若右邊電壓大于左邊或者兩者差值大于2,或者手動模式下按下向左的按鍵,方位電機左轉(zhuǎn)。具體程序如下:開始開始初始化初始化讀U1U2U3U4讀U1U2U3U4讀U1>U2或U1-U2>2讀U2>U1或U2-U1>2讀U3>U4或U3-U4>2讀U4>U3或U4-U3>2讀U1>U2或U1-U2>2讀U2>U1或U2-U1>2讀U3>U4或U3-U4>2讀U4>U3或U4-U3>2水平電機反轉(zhuǎn)水平電機正轉(zhuǎn)方位電機右轉(zhuǎn)方位電機左轉(zhuǎn)水平電機反轉(zhuǎn)水平電機正轉(zhuǎn)方位電機右轉(zhuǎn)方位電機左轉(zhuǎn)圖4-6驅(qū)動模塊流程圖 4.3本章小結(jié)本章主要介紹了整個系統(tǒng)中各個模塊的軟件設(shè)計及原理,還有編寫的程序,主要模塊的軟件編程,比如,按鍵模塊,LED燈顯示模塊,步進電機驅(qū)動模塊,AD轉(zhuǎn)換還有AD電壓采樣模塊。具體解釋如上。5.系統(tǒng)的仿真與調(diào)試本次仿真采用Keil和Proteus相結(jié)合的方式,Keil環(huán)境下C語言編程簡單,且調(diào)試方便。而在Proteus下進行仿真形象、直觀,兩者結(jié)合,相得益彰。仿真大致經(jīng)過以下步驟:1.在Keil下編寫程序,并進行調(diào)試,并生成十六進制文件(HEX文件)。在Proteus下新建文件,并在元件庫中找到相應(yīng)的元件如單片機、DS18B20等添加到文件中,并按照原理圖連接好電路。2.將Keil生成的十六進制文件加載到Proteus單片機中,具體過程:source——Add/Removesourcefiles…——打開Add/RemoveSourceCodeFiles對話框——添加Hex文件——點擊“OK”。3.按下Proteus左下角的按鈕進行仿真,并根據(jù)仿真結(jié)果去修正程序和電路圖。5.1Proteus簡介Proteus是英國Labcenter公司開發(fā)的電路分析與實物仿真軟件。它運行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,該軟件的特點是:1、實現(xiàn)了單片機仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真、RS232動態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。2、支持主流單片機系統(tǒng)的仿真。目前支持的單片機類型有:ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。3、提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點等調(diào)試功能,同時可以觀察各個變量、寄存器等的當前狀態(tài),因此在該軟件仿真系統(tǒng)中,也必須具有這些功能;同時支持第三方的軟件編譯和調(diào)試環(huán)境,如KeilC51uVision4、MPLAB等軟件。4、具有強大的原理圖繪制功能??傊?,該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大。5.2PROTEUS仿真工程點擊PROTEUS圖標,進入PROTEUS界面。打開界面后,我們下面需要添加系統(tǒng)所需要的器件,完成各個模塊的仿真,驗證程序是否合理,進而進行優(yōu)化改進。界面如REF_Ref23809\h圖5-1PROTEUS仿真界面所示。ProteusISIS接口是一個標準的Windows界面。圖5-1PROTEUS仿真界面對象添加點擊的按鈕元件的工具盒,以選中它,然后單擊“ISISP按鈕對象選擇器的左中心,“設(shè)備選擇”對話框。在這個對話框中,您可以選擇組件和一些虛擬儀器。下面加一個單片機AT89C51為例來說明如何在編輯窗口中添加組件。在“gategory(設(shè)備類型)”下,找到“微處理器”這個選項,鼠標左鍵點擊該對話框的右側(cè),將顯示大量的普通單片機對模型的各種模式的類型。發(fā)現(xiàn)單片機AT89C51,雙擊“單片機”,情況如REF_Ref26654\h圖5-2選擇元器件窗口中顯示在組件列表顯示通過之前的操作步驟,在器件選擇器就出現(xiàn)了我們想要的器件,單片機器件就選擇了出來。選擇之后,點擊確定,然后移動鼠標指針的右邊的原理圖編輯適當?shù)奈恢?,單擊鼠標左鍵,在圖中合適的地方放下單片機即可。圖5-2選擇元器件窗口將電源和工具箱的終端按鈕地面標志,對象選擇器可以出現(xiàn)在多個終端,如REF_Ref27278\h圖0-3放置電源和接地符號所示。在設(shè)備選擇分別單擊REF_Ref27278\h圖5-3放置電源和接地符號,然后移動鼠標到原理圖編輯區(qū),鼠標左鍵點擊可以把權(quán)力的象征;同樣也可以把連接符號在原理圖編輯器。圖5-3放置電源和接地符號5.3系統(tǒng)仿真結(jié)果在proteus中按照整體設(shè)計電路放置器件。仿真系統(tǒng)所有功能,仿真結(jié)果如圖5-4所示。最終實現(xiàn)系統(tǒng)功能。圖5-4仿真結(jié)果5.4軟件調(diào)試在Keil編寫好的代碼,通過編譯后,下載到單片機。我們只能看到兩種結(jié)果,第一實驗成功,展現(xiàn)出我們想要的效果;第二實驗不成功,什么效果都沒有看到。失敗的原因是什么,通過硬件測試,我們無法看到代碼在單片機內(nèi)部里面如何運行、變量是如何傳遞、變量的變化情況等等。Keil軟件里面是提供了軟件仿真調(diào)試功能。5.5本章總結(jié)本章主要對了PROTEUS的特點及其使用方法進行了詳細的介紹,主要包括建立新的仿真工程及各個模塊的添加,對仿真進行運行調(diào)試。,最后對KEIL軟件加以介紹,具體解釋如上。6.總結(jié)與展望6.1總結(jié)本設(shè)計采取了傳統(tǒng)的硬件和軟件相結(jié)合的開發(fā)方法,使用了AT89C52單片機作為整個系統(tǒng)的控制處理中心,它具有硬件設(shè)計方便,資源豐富,軟件部分程序指令快速簡單,驅(qū)動能力強等優(yōu)點,保證了該系統(tǒng)反應(yīng)的快速性和靈敏性。從資料的查找到電路的設(shè)計,從程序的編寫到功能的基本實現(xiàn),一路坎坷。在設(shè)計過程中不斷的發(fā)現(xiàn)問題,同時也不斷的解決問題,越發(fā)覺得只要通過不斷的努力總會解決面對的困難。6.2展望當然,本設(shè)計也存在很多不足之處比如程序算法的設(shè)計不盡完美,各樣器件的參數(shù)不太準確等等,還有一些未發(fā)現(xiàn)的瑕疵之處,都需要在調(diào)試和實踐之后進行許多的改進。而且不能粗心大意,一開始就因單片機一腳沒連接導(dǎo)致單片機不起作用,浪費時間又浪費精力,因此,做任何事都要細心,要考慮的周全,不能因為一時的失敗而喪失信心,從哪里跌倒了要從哪里爬起來,只有有了這樣的精神,才會從問題中學(xué)到更多的知識,為我們以后更好的發(fā)展奠定了基礎(chǔ)。最后,本太陽能自動跟蹤系統(tǒng)基本能滿足設(shè)計的要求,能實現(xiàn)按照所預(yù)先設(shè)計的思想運轉(zhuǎn),各個模塊電路也都運行正常,但是由于本人的知識和水平的有限,在機械設(shè)計部分知識的欠缺,使得本系統(tǒng)在這方面有很大的不足。如果此系統(tǒng)能夠在機械設(shè)計上有較多改進,能夠加上液晶顯示模塊的話,相信本系統(tǒng)將會有很大的改進,在性能上會有很大的提高。參考文獻[1]李申生.太陽能[M].北京:北京人民教育出版社,1988:12-14.[2]王炳忠.太陽能—未來能源之星[M].北京:高教出版社,1990:20-21.[3]abPhilibert,Cedric(2005).”ThePresentandFutureuseofSolarThermalEnergyasaPrimarySourceofEnergy”.IEA.Archivedfromtheoriginalon[M]2011-12-12.[4]言惠.太陽能21世紀的能源[J].上海大中型電機,2004,(04):16-18.[5]陳維,李戩洪.太陽能利用中的跟蹤控制方式的研究[J].能源工程,2003,(03):18-21.[6]孫茵茵,鮑劍斌,王凡.太陽自動跟蹤器的研究[J].機械設(shè)計與制造,2005(7):157-159[7]陳維,李戩洪.太陽能利用中的跟蹤控制方式的研究[J].能源工程,2003,(03):18-21.[8]歐陽名三,余世杰,沈玉樑.采用單片機的太陽能電池最大功率點跟蹤控制器[J].電子技術(shù),2002(12):49-51[9]王雪文.太陽能電池板自動跟蹤控制系統(tǒng)設(shè)計[J].西北大學(xué)學(xué)報(自然科學(xué)版).2004,34(2):163-164.[10]薛建國.基于單片機的太陽能電池自動追蹤系統(tǒng)的設(shè)計[J].長春師范學(xué)院學(xué)報,2005,24(3):26-30.[11]JamesF.Cox.Fundamentalsoflinearelectronics:integratedanddiscrete.CengageLearning.[M],91-.26June2001[20August2011].[12]朱定華.單片機原理及接口技術(shù)[M].北京:電子工業(yè)出版社,2001:25-27.[13]周興華.光敏器件[J].電子世界,1999,(12):53-54.[14]范志剛.光電測試技術(shù)[M].北京:電子工業(yè)出版社,2004:24-26.[15]余澤通,宋長源.硅光電池板自動跟蹤太陽機械裝置的設(shè)計[J].新鄉(xiāng)學(xué)院學(xué)報,2008(3):70-71[16]李建庚.一種智能型全自動太陽跟蹤裝置的機械設(shè)計[J].太陽能學(xué)報,2003,24(03):330-333. 附錄1仿真圖:附錄2源程序#include<reg52.h>#include<stdio.h>#include"PCF8591.H"#defineucharunsignedchar#defineuintunsignedint#definePCF85910x90//PCF8591地址sbitENTER=P3^6;sbitUP=P3^4;sbitDOWN=P3^5;sbitLEFT=P3^3;sbitRIGHT=P3^7;sbitLED1=P1^0;sbitLED2=P1^1;ucharMotor_Down[4]={0x08,0x04,0x02,0x01};ucharMotor_Up[4]={0x01,0x02,0x04,0x08};ucharMotor_Right[4]={0x10,0x20,0x40,0x80};ucharMotor_Left[4]={0x80,0x40,0x20,0x10};unsignedcharAD_CHANNEL;//延時函數(shù)voidDelay_ms(uintjj){ uintii; while(jj--) for(ii=0;ii<125;ii++);}voidUART_Init(void){TMOD=0x20;//定時器模式選擇PCON=0x00;SCON=0x50; TH1=0xFd;//設(shè)置波特率9600TL1=0xFd;TR1=1; //啟動定時器1 ES=1; //開串口中斷 EA=1; //開總中斷 }/*********************************************************************名稱:PSend_Hex()*功能:發(fā)送字符串函數(shù),可控制發(fā)送長度*變量:無*返回值:無********************************************************************/voidSend_Hex(unsignedchar*p,unsignedcharnum){ while(num--)//剩余發(fā)送的字符數(shù) {SBUF=*p;//將要發(fā)送的數(shù)據(jù)賦給串口緩沖寄存器 while(!TI);//等待發(fā)送結(jié)束 TI=0;//軟件清零 p++;//指針加一 } }voidmain() //函數(shù)功能:主函數(shù){ ucharAD_Up,AD_Down,AD_Left,AD_Right; uchari,j,k; ucharTable[4]; UART_Init(); while(1) {if(!ENTER) { Delay_ms(20); while(!ENTER); k++; } if(k%2==0) { LED1=1; LED2=0; for(i=0;i<8;i++) { switch(AD_CHANNEL) { case0:PCF8591_ISendByte(PCF8591,0x41); AD_Up=PCF8591_IRcvByte(PCF8591)*2;//ADC0模數(shù)轉(zhuǎn)換1 break; case1:PCF8591_ISendByte(PCF8591,0x42); AD_Down=PCF8591_IRcvByte(PCF8591)*2;//ADC1模數(shù)轉(zhuǎn)換2 break; case2:PCF8591_ISendByte(PCF8591,0x43); AD_Left=PCF8591_IRcvByte(PCF8591)*2;//ADC2模數(shù)轉(zhuǎn)換3 break; case3:PCF8591_ISendByte(PCF8591,0x40); AD_Right=PCF8591_IRcvByte(PCF8591)*2;//ADC3模數(shù)轉(zhuǎn)換4 break; } Send_Hex(Table,4); if(++AD_CHANNEL>3) { AD_CHANNEL=0; Table[0]=AD_Up; Table[1]=AD_Down; Table[2]=AD_Left; Table[3]=AD_Right; } } } if(k%2==1) { LED1=0; LED2=1; AD_Up=0; //上 AD_Down=0;//下 AD_Left=0;//左 AD_Right=0;//右 } /////////////////////////// if(((AD_Up<AD_Down)&&(AD_Down-AD_Up>10))||(!UP))//上轉(zhuǎn) { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Up[j]; Delay_ms(10); } } } ////////////////////////////////////// if(((AD_Up>AD_Down)&&(AD_Up-AD_Down>10))||(!DOWN))//下轉(zhuǎn) { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Down[j]; Delay_ms(10); } } } ///////////////////////////// if(((AD_Left<AD_Right)&&(AD_Right-AD_Left>10))||(!LEFT))//左轉(zhuǎn) { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Left[j]; Delay_ms(10); } } } ////////////////////////////////////// if(((AD_Left>AD_Right)&&(AD_Left-AD_Right>10))||(!RIGHT))//右轉(zhuǎn) { for(i=0;i<10;i++) { for(j=0;j<4;j++) { P0=Motor_Right[j]; Delay_ms(10); } } } //////////////////////////////////// Delay_ms(100);//延時,可適當修改 }}#include<PCF8591.H>bitPCF859_ack;/*應(yīng)答標志位*//*******************************************************************起動總線函數(shù)函數(shù)原型:voidStart_I2c();功能:啟動I2C總線,即發(fā)送I2C起始條件.********************************************************************/voidPCF8591_Start(){ PCF8591_SDA=1;/*發(fā)送起始條件的數(shù)據(jù)信號*/ _Nop(); PCF8591_SCL=1; _Nop();/*起始條件建立時間大于4.7us,延時*/ _Nop();_Nop();_Nop();_Nop(); PCF8591_SDA=0;/*發(fā)送起始信號*/ _Nop();/*起始條件鎖定時間大于4μs*/ _Nop();_Nop();_Nop();_Nop(); PCF8591_SCL=0;/*鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù)*/ _Nop();_Nop();}/*******************************************************************結(jié)束總線函數(shù)函數(shù)原型:voidStop_I2c();功能:結(jié)束I2C總線,即發(fā)送I2C結(jié)束條件.********************************************************************/voidPCF8591_Stop(){PCF8591_SDA=0;/*發(fā)送結(jié)束條件的數(shù)據(jù)信號*/_Nop();/*發(fā)送結(jié)束條件的時鐘信號*/PCF8591_SCL=1;/*結(jié)束條件建立時間大于4μs*/_Nop();_Nop();_Nop();_Nop();_Nop();PCF8591_SDA=1;/*發(fā)送I2C總線結(jié)束信號*/_Nop();_Nop();_Nop();_Nop();}/*******************************************************************字節(jié)數(shù)據(jù)發(fā)送函數(shù)函數(shù)原型:voidSendByte(UCHARc);功能:將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對此狀態(tài)位進行操作.(不應(yīng)答或非應(yīng)答都使ack=0)發(fā)送數(shù)據(jù)正常,ack=1;ack=0表示被控器無應(yīng)答或損壞。********************************************************************/voidPCF8591_SendByte(unsignedcharc){unsignedcharBitCnt;for(BitCnt=0;BitCnt<8;BitCnt++)/*要傳送的數(shù)據(jù)長度為8位*/{if((c<<BitCnt)&0x80)PCF8591_SDA=1;/*判斷發(fā)送位*/elsePCF8591_SDA=0;_Nop();PCF8591_SCL=1;/*置時鐘線為高,通知被控器開始接收數(shù)據(jù)位*/_Nop();_Nop();/*保證時鐘高電平周期大于4μs*/_Nop();_Nop();_Nop();PCF8591_SCL=0;}_Nop();_Nop();PCF8591_SDA=1;/*8位發(fā)送完后釋放數(shù)據(jù)線,準備接收應(yīng)答位*/_Nop();_Nop();PCF8591_SCL=1;_Nop();_Nop();_Nop();if(PCF8591_SDA==1)PCF859_ack=0;elsePCF859_ack=1;/*判斷是否接收到應(yīng)答信號*/PCF8591_SCL=0;_Nop();_Nop();}/*******************************************************************字節(jié)數(shù)據(jù)接收函數(shù)函數(shù)原型:UCHARRcvByte();功能:用來接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應(yīng)答信號),發(fā)完后請用應(yīng)答函數(shù)應(yīng)答從機。********************************************************************/unsignedcharPCF8591_RcvByte(){unsignedcharretc;unsignedcharBitCnt;retc=0;PCF8591_SDA=1;/*置數(shù)據(jù)線為輸入方式*/for(BitCnt=0;BitCnt<8;BitCnt++){_Nop();PCF8591_SCL=0;/*置時鐘線為低,準備接收數(shù)據(jù)位*/_Nop();_Nop();/*時鐘低電平周期大于4.7μs*/_Nop();_Nop();_Nop();PCF8591_SCL=1;/*置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/_Nop();_Nop();retc=retc<<1;if(PCF8591_SDA==1)retc=retc+1;/*讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中*/_Nop();_Nop();}PCF8591_SCL=0;_Nop();_Nop();return(retc);}/********************************************************************應(yīng)答子函數(shù)函數(shù)原型:voidAck_I2c(bita);功能:主控器進行應(yīng)答信號(可以是應(yīng)答或非應(yīng)答信號,由位參數(shù)a決定)**************************************************************

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論