版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 自動尋跡小車</b></p><p><b> 摘要</b></p><p> AT89S52單片機(jī)是一款八位單片機(jī),他的易用性和多功能性受到了廣大使用者的好評。這里介紹的是如何用AT89S52單片機(jī)來實現(xiàn)電動小車的自動尋跡。本系統(tǒng)以設(shè)計題目的要求為目的,采用AT89S52單片機(jī)為控制核心,利用電動小車前面的紅外
2、線傳感器檢測道路上的軌跡,將路面信息轉(zhuǎn)送給AT89S52,AT89S52根據(jù)信息作出反應(yīng)控制電動機(jī)轉(zhuǎn)動,從而控制電動小汽車按照路上的軌跡行駛。整個系統(tǒng)的電路結(jié)構(gòu)簡單,可靠性能高。實驗測試結(jié)果滿足要求,本文著重介紹了該系統(tǒng)的硬件設(shè)計方法及測試結(jié)果分析。</p><p> 本小車采用的技術(shù)主要有傳感器的有效應(yīng)用和AT89S52芯片的使用。有很多功能可以繼續(xù)擴(kuò)展,值得就一步學(xué)習(xí)和研究。</p><
3、p> 關(guān)鍵詞: AT89S52 紅外線傳感器 直流電機(jī) </p><p><b> Abstract</b></p><p> AT89S52 SCM is a section 8 microcontroller, his usability and multi-functional received overwhelming support fr
4、om user's praise. Here introduces AT89S52 SCM is how to use electric car to realize the automatic tracing. This system to design the topic request, the purpose for AT89S52 SCM as control core, using electric car in f
5、ront of the infrared sensor detects the trajectory path, pavement message to someone AT89S52 devices, react AT89S52 according to the information which can control the rotati</p><p> This car the technique t
6、o be used mainly sensor effective application and the use of AT89S52 chip. There are many function can continue to expand, worth just step for study and research.</p><p> Keywords: AT89S52, light electricit
7、y detector,direct-current motor</p><p><b> 目錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p><b> 目錄III</b></p><p
8、><b> 前言1</b></p><p> 1 方案設(shè)計與論證2</p><p> 1.1電動小車模塊2</p><p> 1.1.1轉(zhuǎn)向和動力2</p><p> 1.1.2 電動機(jī)模塊3</p><p> 1.1.3調(diào)速系統(tǒng)3</p><p&
9、gt; 1.1.4 電機(jī)驅(qū)動模塊4</p><p> 1.2 控制模塊5</p><p> 1.3 傳感器模塊5</p><p> 1.4 電源模塊6</p><p><b> 2 硬件設(shè)計7</b></p><p> 2.1 主要元器件的介紹7</p>&l
10、t;p> 2.1.1 電機(jī)驅(qū)動芯片L91107</p><p> 2.1.2 AT89S529</p><p> 2.1.3 紅外線傳感器17</p><p> 2.2 模塊介紹18</p><p> 2.2.1車頭傳感器模塊18</p><p> 2.2.2 電動小車模塊19</p
11、><p> 2.2.3 控制模塊19</p><p> 2.3 整體方案20</p><p><b> 3 軟件設(shè)計22</b></p><p> 3.1 程序設(shè)計22</p><p> 3.1.1 程序的模塊化設(shè)計22</p><p> 3.1.2 部分
12、程序設(shè)計23</p><p> 3.2 利用proteus 進(jìn)行軟件仿真26</p><p> 3.3 制作電路圖和PCB板圖27</p><p><b> 4總結(jié)31</b></p><p><b> 致謝33</b></p><p><b>
13、 參考文獻(xiàn)34</b></p><p> 附錄1 C語言程序35</p><p> 附錄2 電路圖和PCB板圖39</p><p> 附錄3小車實物圖42</p><p><b> 前言</b></p><p> 隨著汽車工業(yè)的迅速發(fā)展,關(guān)于汽車的研究也就越來越受人關(guān)
14、注。全國電子大賽和省內(nèi)電子大賽幾乎每次都有智能小車這方面的題目,全國各高校也都很重視該題目的研究??梢娖溲芯恳饬x很大。本設(shè)計就是在這樣的背景下提出的。設(shè)計一款智能電動小車,智能電動小車應(yīng)該具有自動尋找軌跡的功能。</p><p> 根據(jù)題目的要求,本設(shè)計以AT89S52為控制核心,在現(xiàn)有電動小車的基礎(chǔ)上,加裝傳感器,實現(xiàn)對電動車的運(yùn)動狀態(tài)進(jìn)行實時控制。本系統(tǒng)控制靈活、可靠,精度高,滿足各項要求。利用紅外線傳感器
15、檢測地上的特定軌跡,將數(shù)據(jù)傳給AT89S52,經(jīng)過AT89S52分析后做出反應(yīng)控制電動機(jī)的運(yùn)行使小車按照特定軌跡行駛。</p><p> AT89S52是一款八位單片機(jī),它的易用性和多功能性受到了廣大使用者的好評。它是第三代單片機(jī)的代表,其最主要的技術(shù)特點是向外部接口電路擴(kuò)展,以完善控制功能。外部可接其他功能單元如A/D﹑PWM﹑PCA﹑WDT﹑計數(shù)器的捕獲/比較邏輯等。在總線方面最重要的進(jìn)展是為單片機(jī)配置了芯
16、片間的串行總線,為單片機(jī)應(yīng)用系統(tǒng)設(shè)計提供了更加靈活的方式。新一代單片機(jī)為外部提供了相當(dāng)完善的總線結(jié)構(gòu),為系統(tǒng)的擴(kuò)展與配置打下了良好的基礎(chǔ)。 </p><p> 本設(shè)計采用的AT89S52采用CHOMS工藝,功耗很低,可用于很多小型設(shè)備中。該設(shè)計具有實際意義,稍作修改就可以應(yīng)用于考古、機(jī)器人、醫(yī)療器械等許多方面。尤其是在足球機(jī)器人研究方面具有很好的發(fā)展前景;在考古方面可用超聲波傳感器進(jìn)行檢測。所以本設(shè)計與實際相結(jié)
17、合,現(xiàn)實意義很強(qiáng)。</p><p><b> 1 方案設(shè)計與論證</b></p><p> 根據(jù)題目的要求,確定如下方案:在現(xiàn)有電動小車的基礎(chǔ)上加控制器,在小車前部加裝傳感器,在路面貼上特殊軌跡。由外加傳感器對路面進(jìn)行實時測量,并將測量數(shù)據(jù)傳送至控制器,再由主控制器根據(jù)所檢測的數(shù)據(jù)對電動小車行動進(jìn)行控制,使小車跟隨路面特殊軌跡行駛,以實現(xiàn)電動小車的自動尋跡。<
18、;/p><p> 自動尋跡小車原理圖1.1所示:</p><p> 圖1.1自動尋跡小車原理圖</p><p><b> 1.1電動小車模塊</b></p><p> 1.1.1轉(zhuǎn)向和動力</p><p> 方案一:轉(zhuǎn)向和動力分開的電動小車。轉(zhuǎn)向和動力分開的電動小車是將輪胎分為兩組,一組與電
19、動機(jī)相連輸出動力控制小車的行駛;另外一組控制小車的方向。(兩組輪胎的前后順序可調(diào),其換影響不大。轉(zhuǎn)向輪可使用單輪。)方案一需電動機(jī)和一個轉(zhuǎn)向器。由主控制器分別進(jìn)行控制,器件和控制程序較多。</p><p> 方案二:轉(zhuǎn)向和動力結(jié)合的電動小車。轉(zhuǎn)向和動力結(jié)合的電動小車是使用兩個獨立的電動機(jī)各自帶動一個輪胎位于兩側(cè),通過兩個輪胎速度的改變實現(xiàn)小車的轉(zhuǎn)向??刂扑贸绦蜉^少,控制器控制起來簡單(這種轉(zhuǎn)向方式類似于坦克的
20、轉(zhuǎn)向方式。)為了小車的平衡再裝上保持平衡的輪子。</p><p> 綜上分析,本設(shè)計使用方案二。</p><p> 1.1.2 電動機(jī)模塊</p><p> 為了實現(xiàn)電動小車對行走路徑的準(zhǔn)確定位和精確測量,有以下兩種方案:</p><p> 方案一:采用直流電機(jī)。直流電機(jī)轉(zhuǎn)動力矩大,響應(yīng)快速,體積小,重量輕,較大的起動轉(zhuǎn)矩使其有從零轉(zhuǎn)
21、速至額定轉(zhuǎn)速具備可提供額定轉(zhuǎn)矩的性能。可用變速齒輪改變其速度來達(dá)到本系統(tǒng)要求。價格較低。</p><p> 方案二:采用步進(jìn)電機(jī)。步進(jìn)電機(jī)是一種將電脈沖信號轉(zhuǎn)換成角位移或線位移的精密執(zhí)行原件??刂品奖悖w積小,靈活性和可靠性高,具有瞬時啟動和急速停止的優(yōu)越性,比較適合本系統(tǒng)控制精度高的特點。價格較高。</p><p> 從成本分析,本設(shè)計用方案一。(經(jīng)濟(jì)條件好時方案二最好。)</
22、p><p><b> 1.1.3調(diào)速系統(tǒng)</b></p><p> 方案一:旋轉(zhuǎn)變流系統(tǒng)。旋轉(zhuǎn)變流系統(tǒng)由交流發(fā)電機(jī)拖動直流電動機(jī)實現(xiàn)變流,由發(fā)電機(jī)給需要調(diào)速的直流電動機(jī)供電,調(diào)節(jié)發(fā)電機(jī)的勵磁電流即可改變其輸出電壓,從而調(diào)節(jié)電動機(jī)的轉(zhuǎn)速。改變勵磁電流的方向則輸出電壓的極性和電動機(jī)的轉(zhuǎn)向都隨著改變,所以旋轉(zhuǎn)變流系統(tǒng)的可逆運(yùn)行是很容易實現(xiàn)的。該系統(tǒng)需要旋轉(zhuǎn)變流機(jī)組,至少包含
23、兩臺與調(diào)速電動機(jī)容量相當(dāng)?shù)男D(zhuǎn)電機(jī),還要一臺勵磁發(fā)電機(jī),設(shè)備多、體積大、費用高、效率低、維護(hù)不方便等缺點。且技術(shù)落后,因此擱置不用。</p><p> 方案二:靜止可控整流器。簡稱V-M系統(tǒng)。V-M系統(tǒng)是當(dāng)今直流調(diào)速系統(tǒng)的主要形式。它可以是單相、三相或更多相數(shù),半波、全波、半控、全控等類型,可實現(xiàn)平滑調(diào)速。V-M系統(tǒng)的缺點是晶閘管的單向?qū)щ娦?,它不允許電流反向,給系統(tǒng)的可逆運(yùn)行造成困難。它的另一個缺點是運(yùn)行條件
24、要求高,維護(hù)運(yùn)行麻煩。最后,當(dāng)系統(tǒng)處于低速運(yùn)行時,系統(tǒng)的功率因數(shù)很低,并產(chǎn)生較大的諧波電流危害附近的用電設(shè)備。</p><p> 方案三:脈寬調(diào)速系統(tǒng)。采用晶閘管的直流斬波器基本原理與整流電路不同的是,在這里晶閘管不受相位控制,而是工作在開關(guān)狀態(tài)。當(dāng)晶閘管被觸發(fā)導(dǎo)通時,電源電壓加到電動機(jī)上,當(dāng)晶閘管關(guān)斷時,直流電源與電動機(jī)斷開,電動機(jī)經(jīng)二極管續(xù)流,兩端電壓接近于零。脈沖寬度調(diào)制(Pulse Width Modu
25、lation),簡稱PWM。脈沖周期不變,只改變晶閘管的導(dǎo)通時間,即通過改變脈沖寬度來進(jìn)行直流調(diào)速??稍谛羞M(jìn)間變速,直道高速,彎道低速。</p><p> 方案四:調(diào)速齒輪組調(diào)速。采用齒輪與齒輪的組合,利用齒輪組半徑比來調(diào)速,能達(dá)到本設(shè)計的最低要求以低速勻速前進(jìn)。價格便宜,實現(xiàn)起來簡單。</p><p> 與V-M系統(tǒng)相比,PWM調(diào)速系統(tǒng)有下列優(yōu)點:</p><p&
26、gt; (1)由于PWM調(diào)速系統(tǒng)的開關(guān)頻率較高,僅靠電樞電感的濾波作用就可以獲得脈動很小的直流電流,電樞電流容易連續(xù),系統(tǒng)的低速運(yùn)行平穩(wěn),調(diào)速范圍較寬,可達(dá)1:10000左右。由于電流波形比V-M系統(tǒng)好,在相同的平均電流下,電動機(jī)的損耗和發(fā)熱都比較小。</p><p> (2)同樣由于開關(guān)頻率高,若與快速響應(yīng)的電機(jī)相配合,系統(tǒng)可以獲得很寬的頻帶,因此快速響應(yīng)性能好,動態(tài)抗擾能力強(qiáng)。</p>&l
27、t;p> ?。?)由于電力電子器件只工作在開關(guān)狀態(tài),主電路損耗較小,裝置效率較高。</p><p> 根據(jù)以上綜合比較,以及本設(shè)計中受控電機(jī)的容量和直流電機(jī)調(diào)速的發(fā)展方向,本設(shè)計采用了H型單極型可逆PWM變換器進(jìn)行調(diào)速。</p><p> 脈寬調(diào)速系統(tǒng)的主電路采用脈寬調(diào)制式變換器,簡稱PWM變換器。脈寬調(diào)速也可通過單片機(jī)控制繼電器的閉合來實現(xiàn),但是驅(qū)動能力有限。為順利實現(xiàn)電動小汽
28、車的前行與倒車,本設(shè)計采用了可逆PWM變換器??赡鍼WM變換器主電路的結(jié)構(gòu)式有H型、T型等類型。我們在設(shè)計中采用了常用的雙極式H型變換器,它是由4個三極電力晶體管和4個續(xù)流二極管組成的橋式電路。</p><p> 綜上,考慮到本設(shè)計重在尋跡,本設(shè)計使用價格便宜,簡單的方案四。(經(jīng)濟(jì)條件好時方案三最好。)</p><p> 1.1.4 電機(jī)驅(qū)動模塊</p><p>
29、; 方案一:采用集成芯片L9110驅(qū)動直流電機(jī)。L9110是為控制和驅(qū)動電機(jī)設(shè)計的兩通道推挽式功率放大專用集成電路,將分立電路集成在單片IC之中,使外圍器件成本降低,整機(jī)可靠性提高。該芯片有兩個TTL/COMS兼容電平的輸入,具有良好的抗干擾性;兩個輸出端能直接驅(qū)動電機(jī)的正反向運(yùn)動,它具有較大的電流驅(qū)動能力,每個通道能通過750~800mA的持續(xù)電流,峰值電流能力可達(dá)1.5~2.0;同時它具有較低的輸出飽和壓降;內(nèi)置的鉗位二極管能釋放
30、感性負(fù)載的反向沖擊電流,使它在驅(qū)動繼電器、直流電機(jī)、步進(jìn)電機(jī)、開關(guān)功率管的使用上安全可靠。L9110被廣泛用于玩具汽車電機(jī)驅(qū)動、步進(jìn)電機(jī)驅(qū)動和開關(guān)功率管等電路上。</p><p> 方案二:用功率管構(gòu)成驅(qū)動電路來驅(qū)動電機(jī)。性能可靠,具有自動保護(hù)功能,但結(jié)構(gòu)較復(fù)雜多用于交流。</p><p> 綜上分析,本設(shè)計選擇方案一。</p><p><b> 1
31、.2 控制模塊</b></p><p> 方案一:采用FPGA作為系統(tǒng)的主控制器。FPGA可以實現(xiàn)各種復(fù)雜的邏輯功能,規(guī)模大集,成度高,體積小,穩(wěn)定性好,IO口資源豐富,易于進(jìn)行功能擴(kuò)展,處理速度快,但是適用于大規(guī)模實時性要求較高的系統(tǒng),價格高,編程實現(xiàn)難度大。本系統(tǒng)只需要完成信號檢測和電機(jī)驅(qū)動的控制,邏輯功能簡單,對控制器的數(shù)據(jù)處理能力要求不高,所以不選擇此方案。</p><p
32、> 方案二:采用嵌入式系統(tǒng)作為主控制器。嵌入式系統(tǒng)工作頻率較高,速度較快,控制能力很強(qiáng),也有較強(qiáng)的數(shù)據(jù)處理能力。但同樣價格較高,編程實現(xiàn)難度大。</p><p> 方案三:采用AT89S52單片機(jī)作為主控制器。AT89S52是一款低功耗,高性能的8位單片機(jī),片內(nèi)含有8KB的Flash片內(nèi)程序存儲器,256 Bytes的RAM,32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級,2層中斷嵌套中斷等。價格
33、便宜,使用方便。編程實現(xiàn)難度低,適合用來實現(xiàn)系統(tǒng)的控制功能。</p><p> 綜上分析,本設(shè)計使用方案三。</p><p><b> 1.3 傳感器模塊</b></p><p> 方案一:采用光敏電阻組成光敏傳感器。光敏電阻原理簡單,使用方便,價格低廉,但受光照強(qiáng)度影響很大,可靠性不高。</p><p> 方案
34、二:采用角度傳感器。實用角度傳感器來測量車體水平方向和豎直方向的角度,感測到的傾角信號經(jīng)編碼后傳感給單片機(jī),由單片機(jī)控制電動機(jī)的運(yùn)行。角度傳感器靈敏度合適,響應(yīng)速度好,但使用復(fù)雜,價格高昂,且不易購買。</p><p> 方案三:采用光電傳感器。光電傳感器原理簡單,實現(xiàn)方便,價格低廉,可集發(fā)射器和接收器于一體。使用這類光電傳感器電路簡單,工作性能穩(wěn)定,能完成需要的信號檢測功能。</p><p
35、> 綜上分析,本設(shè)計選擇方案三。</p><p><b> 1.4 電源模塊</b></p><p> 方案一:電腦USB串口供電。能直接為單片機(jī)提供穩(wěn)定的+5V直流電壓。USB串口線又容易得到。需要很長的線,而且要有交流電和電腦配合。</p><p> 方案二:用4節(jié)五號電池串聯(lián)6V直流電源。在不超過單片機(jī)工作電壓范圍的情況下,
36、又能驅(qū)動直流電機(jī)。且這個電源結(jié)構(gòu)簡單,價格便宜,容易得到。</p><p> 綜上所述,本設(shè)計選擇方案二。</p><p><b> 2 硬件設(shè)計</b></p><p> 本設(shè)計硬件由一下三個模塊組成:1.以驅(qū)動芯片L9110為主的電動小車模塊。2.以AT89S52為控制器的控制器模塊。3.以紅外線傳感器為主的傳感器模塊。整個設(shè)計由傳感
37、器模塊向控制模塊提供路面情況,控制模塊根據(jù)情況控制電動小車移動,三個模塊相互合達(dá)到設(shè)計要求 。</p><p> 2.1 主要元器件的介紹</p><p> 2.1.1 電機(jī)驅(qū)動芯片L9110</p><p> L9110是為控制和驅(qū)動電機(jī)設(shè)計的兩通道推挽式功率放大專用集成電路,將分立電路集成在單片IC之中,使外圍器件成本降低,整機(jī)可靠性提高。該芯片有兩個TT
38、L/COMS兼容電平的輸入,具有良好的抗干擾性;兩個輸出端能直接驅(qū)動電機(jī)的正反向運(yùn)動,它具有較大的電流驅(qū)動能力,每個通道能通過750~800mA的持續(xù)電流,峰值電流能力可達(dá)1.5~2.0;同時它具有較低的輸出飽和壓降;內(nèi)置的鉗位二極管能釋放感性負(fù)載的反向沖擊電流,使它在驅(qū)動繼電器、直流電機(jī)、步進(jìn)電機(jī)、開關(guān)功率管的使用上安全可靠。L9110被廣泛用于玩具汽車電機(jī)驅(qū)動、步進(jìn)電機(jī)驅(qū)動和開關(guān)功率管等電路上。其特點有,低靜態(tài)工作電流;寬電壓電源范
39、圍2.5V~12V;每個通道具有800mA連續(xù)輸出能力;較低的飽和壓降,TTL/COMS輸出電平兼容,可直接連CPU;輸出內(nèi)置鉗位二極管;適用于感性負(fù)載,控制驅(qū)動集成于單片IC中;具備管腳高壓保護(hù)功能;工作溫度-20℃~80L9110℃。管腳定義:</p><p><b> OA:A路輸出腳。</b></p><p><b> VCC:電源電壓。<
40、/b></p><p><b> VCC:電源電壓。</b></p><p> OB:B腳輸出管腳。</p><p><b> GND:地線。</b></p><p> IA:A路輸入管腳。</p><p> IB:B路輸入管腳。</p><
41、;p><b> GND:地線。</b></p><p> 其管腳圖如圖2.1所示。其應(yīng)用電路如圖2.2 所示。管腳波形圖如圖2.3所示。T=25℃時的參數(shù)如表2.1。電器特性標(biāo)如表2.2。</p><p> 圖2.1 L9110管腳圖</p><p> 圖2.2 L9110的應(yīng)用電路圖</p><p>
42、標(biāo)2.1 T=25℃時的參數(shù)表</p><p> 表2.2 T=25℃ Vcc=5V時電器特性標(biāo)</p><p><b> 圖2.3管腳波形圖</b></p><p> 2.1.2 AT89S52</p><p> AT89S52單片機(jī)由以下功能部件組成:微處理器、數(shù)據(jù)存儲器、程序存儲器、并行I/O口、串行口、
43、定時器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器。它們都是通過片內(nèi)單一總線連接而成,對各種功能部件的控制是采用特殊功能寄存器的集中控制方式。</p><p><b> 1、微處理器:</b></p><p> 該單片機(jī)中有一個8位的微處理器,與通用的微處理器基本相同,同樣包括了運(yùn)算器和控制器兩大部分,只是增加了面向控制的處理功能,不僅可處理數(shù)據(jù),還可以進(jìn)行位變量的處理。&
44、lt;/p><p><b> 2、數(shù)據(jù)存儲器:</b></p><p> 片內(nèi)為256 Bytes RAM,片外最多可外擴(kuò)至64K字節(jié),用來存儲程序在運(yùn)行期間的工作變量、運(yùn)算的中間結(jié)果、數(shù)據(jù)暫存和緩沖、標(biāo)志位等,所以稱為數(shù)據(jù)存儲器。</p><p><b> 3、程序存儲器:</b></p><p&g
45、t; 由于受集成度限制,片內(nèi)有8KB Flash存儲器,如果片內(nèi)的只讀存儲器的容量不夠,則需用擴(kuò)展片外的只讀存儲器,片外最多可外擴(kuò)至64K字節(jié)。</p><p><b> 4、中斷系統(tǒng):</b></p><p> 具有5個中斷源,2級中斷優(yōu)先權(quán)。</p><p> 5、定時器/計數(shù)器:</p><p> 片內(nèi)有
46、2個16位的定時器/計數(shù)器, 具有四種工作方式。</p><p><b> 6、串行口:</b></p><p> 1個全雙工的串行口,具有四種工作方式。可用來進(jìn)行串行通訊,擴(kuò)展并行I/O口,甚至與多個單片機(jī)相連構(gòu)成多機(jī)系統(tǒng),從而使單片機(jī)的功能更強(qiáng)且應(yīng)用更廣。</p><p> 7、輸入/輸出(I/O)口:</p><
47、p> P1口、P2口、P3口、P4口為4個并行8位I/O口。</p><p> 8、特殊功能寄存器:</p><p> 共有21個,用于對片內(nèi)的個功能的部件進(jìn)行管理、控制、監(jiān)視。實際上是一些控制寄存器和狀態(tài)寄存器,是一個具有特殊功能的RAM區(qū)。</p><p> 下面對它的進(jìn)行介紹:</p><p> P0 口:P0口是一個8
48、位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0不具有內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。 </p><p> P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出
49、緩沖器能驅(qū)動4 個TTL邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.1分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和定時器/計數(shù)器2 的觸發(fā)輸入(P1.1/T2EX)。在flash編程和校驗時,P1口接收低8位地址字節(jié)。 </p><p><b> 引腳號第二
50、功能 </b></p><p> P1.0 T2(定時器/計數(shù)器T2的外部計數(shù)輸入),時鐘輸出 </p><p> P1.1 T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制) </p><p> P1.5 MOSI(在系統(tǒng)編程用) </p><p> P1.6 MISO(在系統(tǒng)編程用) </p>
51、<p> P1.7 SCK(在系統(tǒng)編程用) </p><p> P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)
52、時,P2 口送出高八位地址。在這種應(yīng)用中,P2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。 </p><p> P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時
53、可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用。在flash編程和校驗時,P3口也接收一些控制信號。 </p><p> 端口引腳 第二功能 </p><p> P3.0 RXD(串行輸入口) </p><p> P3.1 TXD(串行輸出口) </p>
54、;<p> P3.2 INTO(外中斷0) </p><p> P3.3 INT1(外中斷1) </p><p> P3.4 TO(定時/計數(shù)器0) </p><p> P3.5 T1(定時/計數(shù)器1) </p><p> P3.6 WR(外部數(shù)據(jù)存儲器寫選通) </p><p> P3.7
55、RD(外部數(shù)據(jù)存儲器讀選通) </p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。</p><p> RST——復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機(jī)器周期以上高電平將是單片機(jī)復(fù)位。 </p><p> ALE/PROG——當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般
56、情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。 如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效
57、。 </p><p> PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 </p><p> EA/VPP——外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接
58、地)。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。 </p><p> XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。 </p><p> XTAL2:振蕩器反相放大器的輸出端。 &
59、lt;/p><p> 并不是所有的地址都被定義了。片上沒有定義的地址是不能用的。讀這些地址,一般將得到一個隨機(jī)數(shù)據(jù);寫入的數(shù)據(jù)將會無效。用戶不應(yīng)該給這些未定義的地址寫入數(shù)據(jù)“1”。由于這些寄存器在將來可能被賦予新的功能,復(fù)位后,這些位都為“0”。定時器 2 寄存器:寄存器T2CON 和T2MOD 包含定時器2 的控制位和狀態(tài)位(如表2和表3所示),寄存器對RCAP2H和RCAP2L是定時器2的捕捉/自動重載寄存器。
60、 </p><p> 中斷寄存器:各中斷允許位在IE寄存器中,六個中斷源的兩個優(yōu)先級也可在IE中設(shè)置。</p><p> 雙數(shù)據(jù)指針寄存器:為了更有利于訪問內(nèi)部和外部數(shù)據(jù)存儲器,系統(tǒng)提供了兩路16位數(shù)據(jù)指針寄存器:位于SFR中82H~83H的DP0和位于84H~85。特殊寄存器AUXR1中DPS=0 選擇DP0;DPS=1 選擇DP1。用戶應(yīng)該在訪問數(shù)據(jù)指針寄存器前先初始化DPS至合理
61、的值。</p><p> 輔助寄存器 AUXR 地址:8EH 復(fù)位值:XXX00XX0B不可位尋址預(yù)留擴(kuò)展用DISALE ALE使能標(biāo)志位 :</p><p> DISALE 操作方式 :</p><p> 為0時 ALE 以1/6晶振頻率輸出信號。</p><p> 為1時 ALE 只有在執(zhí)行MOVX 或MOVC指令時激活。<
62、/p><p> DISRTO 復(fù)位輸出標(biāo)志位:</p><p> 為0時看門狗(WDT)定時結(jié)束,Reset 輸出高電平。</p><p> 為1時Reset 只有輸入。</p><p> WDIDLE 空閑模式下WDT 使能標(biāo)志位 :</p><p> 為0時空閑模式下,WDT繼續(xù)計數(shù)。</p>
63、<p> 為1時空閑模式下,WDT停止計數(shù)。</p><p> 掉電標(biāo)志位:掉電標(biāo)志位(POF)位于特殊寄存器PCON的第四位(PCON.4)。上電期間POF置“1”。POF可以軟件控制使用與否,但不受復(fù)位影響。</p><p> 輔助寄存器1:AUXR1地址A2H 復(fù)位值:XXXXXXX0B不可位尋址。</p><p> 預(yù)留擴(kuò)展用DPS 數(shù)據(jù)指
64、針選擇位DPS:為0時選擇DPTR寄存器DP0L和DP0H1,為1時選擇DPTR寄存器DP1L和DP1H。</p><p><b> 存儲器結(jié)構(gòu)</b></p><p> MCS-51器件有單獨的程序存儲器和數(shù)據(jù)存儲器。外部程序存儲器和數(shù)據(jù)存儲器都可以64K尋址。 </p><p> 程序存儲器:如果EA引腳接地,程序讀取只從外部存儲器開
65、始。 </p><p> 對于 89S52,如果EA 接VCC,程序讀寫先從內(nèi)部存儲器(地址為0000H~1FFFH)開始,接著從外部尋址,尋址地址為:2000H~FFFFH。 </p><p> 數(shù)據(jù)存儲器:AT89S52 有256 字節(jié)片內(nèi)數(shù)據(jù)存儲器。高128 字節(jié)與特殊功能寄存器重疊。也就是說高128字節(jié)與特殊功能寄存器有相同的地址,而物理上是分開的。 </p>&
66、lt;p> 當(dāng)一條指令訪問高于7FH 的地址時,尋址方式?jīng)Q定CPU 訪問高128 字節(jié)RAM 還是特殊功能寄存器空間。直接尋址方式訪問特殊功能寄存器(SFR)。 </p><p> 例如,下面的直接尋址指令訪問0A0H(P2口)存儲單元MOV 0A0H , #data使用間接尋址方式訪問高128 字節(jié)RAM。例如,下面的間接尋址方式中,R0 內(nèi)容為0A0H,訪問的是地址0A0H的寄存器,而不是P2口(它
67、的地址也是0A0H)。 </p><p> MOV @R0 , #data堆棧操作也是簡介尋址方式。因此,高128字節(jié)數(shù)據(jù)RAM也可用于堆棧空間。</p><p><b> 看門狗定時器</b></p><p> WDT是一種需要軟件控制的復(fù)位方式。WDT 由13位計數(shù)器和特殊功能寄存器中的看門狗定時器復(fù)位存儲器(WDTRST)構(gòu)成。WD
68、T 在默認(rèn)情況下無法工作;為了激活WDT,用戶必須往WDTRST 寄存器(地址:0A6H)中依次寫入01EH 和0E1H。當(dāng)WDT激活后,晶振工作,WDT在每個機(jī)器周期都會增加。WDT計時周期依賴于外部時鐘頻率。除了復(fù)位(硬件復(fù)位或WDT溢出復(fù)位),沒有辦法停止WDT工作。當(dāng)WDT溢出,它將驅(qū)動RSR引腳一個高電平輸出。 </p><p> WDT的使用為了激活WDT,用戶必須向WDTRST寄存器(地址為0A6
69、H的SFR)依次寫入0E1H和0E1H。當(dāng)WDT激活后,用戶必須向WDTRST寫入01EH和0E1H喂狗來避免WDT溢出。當(dāng)計數(shù)達(dá)到8191(1FFFH)時,13 位計數(shù)器將會溢出,這將會復(fù)位器件。晶振正常工作、WDT激活后,每一個機(jī)器周期WDT 都會增加。為了復(fù)位WDT,用戶必須向WDTRST 寫入01EH 和0E1H(WDTRST 是只讀寄存器)。WDT 計數(shù)器不能讀或?qū)憽?</p><p> 當(dāng)WDT 計
70、數(shù)器溢出時,將給RST 引腳產(chǎn)生一個復(fù)位脈沖輸出,這個復(fù)位脈沖持續(xù)96個晶振周期(TOSC),其中TOSC=1/FOSC。為了很好地使用WDT,應(yīng)該在一定時間內(nèi)周期性寫入那部分代碼,以避免WDT復(fù)位。 </p><p> 掉電和空閑方式下的 WDT在掉電模式下,晶振停止工作,這意味這WDT也停止了工作。在這種方式下,用戶不必喂狗。有兩種方式可以離開掉電模式:硬件復(fù)位或通過一個激活的外部中斷。通過硬件復(fù)位退出掉電
71、模式后,用戶就應(yīng)該給WDT 喂狗,就如同通常AT89S52 復(fù)位一樣。 </p><p> 通過中斷退出掉電模式的情形有很大的不同。中斷應(yīng)持續(xù)拉低很長一段時間,使得晶振穩(wěn)定。當(dāng)中斷拉高后,執(zhí)行中斷服務(wù)程序。為了防止WDT在中斷保持低電平的時候復(fù)位器件,WDT 直到中斷拉低后才開始工作。這就意味著WDT 應(yīng)該在中斷服務(wù)程序中復(fù)位。 </p><p> 為了確保在離開掉電模式最初的幾個狀態(tài)
72、WDT不被溢出,最好在進(jìn)入掉電模式前就復(fù)位WDT。 </p><p> 在進(jìn)入待機(jī)模式前,特殊寄存器AUXR的WDIDLE位用來決定WDT是否繼續(xù)計數(shù)。 </p><p> 默認(rèn)狀態(tài)下,在待機(jī)模式下,WDIDLE=0,WDT繼續(xù)計數(shù)。為了防止WDT在待機(jī)模式下復(fù)位AT89S52,用戶應(yīng)該建立一個定時器,定時離開待機(jī)模式,喂狗,再重新進(jìn)入待機(jī)模式。 </p><p&g
73、t;<b> UART</b></p><p> 在AT89S52 中,UART 的操作與AT89C51 和AT89C52 一樣。為了獲得更深入的關(guān)于UART 的信息,選擇“Products”,然后選擇“8051-Architech Flash Microcontroller”,再選擇“ProductOverview”即可。 </p><p> 定時器 0 和定
74、時器1</p><p> 在AT89S52 中,定時器0 和定時器1 的操作與AT89C51 和AT89C52 一樣。為了獲得更深入的關(guān)于UART 的信息,選擇“Products”,然后選擇“8051-Architech Flash Microcontroller”,再選擇“ProductOverview”即可。 </p><p> 定時器2是一個16位定時/計數(shù)器,它既可以做定時器,
75、又可以做事件計數(shù)器。其工作方式由特殊寄存器T2CON中的C/T2位選擇。定時器2有三種工作模式: </p><p> 捕捉方式、自動重載(向下或向上計數(shù))和波特率發(fā)生器。如表3 所示,工作模式由T2CON中的相關(guān)位選擇。定時器2 有2 個8位寄存器:TH2和TL2。在定時工作方式中,每個機(jī)器周期,TL2 寄存器都會加1。由于一個機(jī)器周期由12 個晶振周期構(gòu)成,因此,計數(shù)頻率就是晶振頻率的1/12。</p&
76、gt;<p> 捕捉方式在捕捉模式下,通過T2CON中的EXEN2來選擇兩種方式。如果EXEN2=0,定時器2時一個16位定時/計數(shù)器,溢出時,對T2CON 的TF2標(biāo)志置位,TF2引起中斷。如果EXEN2=1,定時器2做相同的操作。除上述功能外,外部輸入T2EX引腳(P1.1)1至0的下跳變也會使得TH2和TL2中的值分別捕捉到RCAP2H和RCAP2L中。除此之外,T2EX 的跳變會引起T2CON 中的EXF2 置位
77、。像TF2 一樣,T2EX 也會引起中斷。在計數(shù)工作方式下,寄存器在相關(guān)外部輸入角T2 發(fā)生1 至0 的下降沿時增加1。在這種方式下,每個機(jī)器周期的S5P2期間采樣外部輸入。一個機(jī)器周期采樣到高電平,而下一個周期采樣到低電平,計數(shù)器將加1。在檢測到跳變的這個周期的S3P1 期間,新的計數(shù)值出現(xiàn)在寄存器中。因為識別1-0的跳變需要2個機(jī)器周期(24個晶振周期),所以,最大的計數(shù)頻率不高于晶振頻率的1/24。為了確保給定的電平在改變前采樣到
78、一次,電平應(yīng)該至少在一個完整的機(jī)器周期內(nèi)保持不變。 </p><p> 自動重載當(dāng)定時器2 工作于16 位自動重載模式,可對其編程實現(xiàn)向上計數(shù)或向下計數(shù)。這一功能可以通過特殊寄存器T2MOD中的DCEN(向下計數(shù)允許位)來實現(xiàn)。通過復(fù)位,DCEN 被置為0,因此,定時器2 默認(rèn)為向上計數(shù)。DCEN 設(shè)置后,定時器2就可以取決于T2EX向上、向下計數(shù)。 </p><p> DCEN=0
79、時,定時器2 自動計數(shù)。通過T2CON 中的EXEN2 位可以選擇兩種方式。如果EXEN2=0,定時器2計數(shù),計到0FFFFH后置位TF2溢出標(biāo)志。計數(shù)溢出也使得定時器寄存器重新從RCAP2H 和RCAP2L 中加載16 位值。定時器工作于捕捉模式,RCAP2H和RCAP2L的值可以由軟件預(yù)設(shè)。如果EXEN2=1,計數(shù)溢出或在外部T2EX(P1.1)引腳上的1到0的下跳變都會觸發(fā)16位重載。這個跳變也置位EXF2中斷標(biāo)志位。 </
80、p><p> T2EX 上的一個邏輯0 使得定時器2 向下計數(shù)。當(dāng)TH2 和TL2 分別等于RCAP2H 和RCAP2L中的值的時候,計數(shù)器下溢。計數(shù)器下溢,置位TF2,并將0FFFFH加載到定時器存儲器中。置位DCEN,允許定時器2向上或向下計數(shù)。在這種模式下,T2EX引腳控制著計數(shù)的方向。T2EX上的一個邏輯1使得定時器2向上計數(shù)。定時器計到0FFFFH溢出,并置位TF2。定時器的溢出也使得RCAP2H和RCA
81、P2L中的16位值分別加載到定時器存儲器TH2和TL2中。 </p><p> 定時器2上溢或下溢,外部中斷標(biāo)志位EXF2 被鎖死。在這種工作模式下,EXF2不能觸發(fā)中斷。</p><p> T2MOD 地址:0C9H 復(fù)位值:XXXXXX00B不可位尋址。</p><p><b> 中斷</b></p><p>
82、 AT89S52 有6個中斷源:兩個外部中斷(INT0 和INT1),三個定時中斷(定時器0、1、2)和一個串行中斷。這些中斷如圖10所示每個中斷源都可以通過置位或清除特殊寄存器IE 中的相關(guān)中斷允許控制位分別使得中斷源有效或無效。IE還包括一個中斷允許總控制位EA,它能一次禁止所有中斷。 </p><p> 如表5所示,IE.6位是不可用的。對于AT89S52,IE.5位也是不能用的。用戶軟件不應(yīng)給這些位寫
83、1。它們?yōu)锳T89系列新產(chǎn)品預(yù)留。 </p><p> 定時器2可以被寄存器T2CON中的TF2和EXF2的或邏輯觸發(fā)。程序進(jìn)入中斷服務(wù)后,這些標(biāo)志位都可以由硬件清0。實際上,中斷服務(wù)程序必須判定是否是TF2 或EXF2激活中斷,標(biāo)志位也必須由軟件清0。 </p><p> 定時器0和定時器1標(biāo)志位TF0 和TF1在計數(shù)溢出的那個周期的S5P2被置位。它們的值一直到下一個周期被電路捕捉
84、下來。然而,定時器2 的標(biāo)志位TF2 在計數(shù)溢出的那個周期的S2P2被置位,在同一個周期被電路捕捉下來。</p><p> 2.1.3 紅外線傳感器</p><p> 紅外線傳感器采用反射接收原理。一個紅外線傳感器配置了一個紅外線發(fā)接受器、一個紅外線接受器及其上拉電阻。其應(yīng)用電路如圖2.4所示。紅外線發(fā)射器通電后不斷會發(fā)射一定強(qiáng)度的紅外線照射物體。紅外線接收器在接受到一定強(qiáng)度的紅外線會
85、后導(dǎo)通。如圖通過在紅外線的正極接出一個信號來觀察紅外線接收器是否導(dǎo)通。當(dāng)紅外線接收器導(dǎo)通時,輸出信號為0;反之則為1。紅外線在不同顏色的物體上反射程度是不同的,當(dāng)紅外線傳感器在黑色物體時,黑色物體吸收大量紅外線,反射少量紅外線,紅外線接收其不足以導(dǎo)通,輸出信號為1。當(dāng)紅外線傳感器在白色物體上時,白色物體吸收的紅外線少,反射的紅外線少,紅外線接收器導(dǎo)通,輸出信號為0。因此本設(shè)計采用紅外線傳感器模塊與有黑線的路面組合使用。</p>
86、;<p> 圖2.4紅外線傳感器的應(yīng)用電路</p><p><b> 2.2 模塊介紹</b></p><p> 2.2.1車頭傳感器模塊</p><p> 圖2.5 車頭傳感器模塊</p><p> 本系統(tǒng)共設(shè)計三個紅外線傳感器固定在底盤前沿,貼近地面,分別放置在電動車車頭的正前方、左下方和右下
87、方兩。正常行駛時,發(fā)射管發(fā)射紅外光照射地面,光線經(jīng)白紙反射后被接收管接收,輸出高電平信號;電動車經(jīng)過黑線時,發(fā)射端發(fā)射的光線被黑線吸收,接收端接收不到反射光線,傳感器輸出低電平信號。正前方的傳感器用于檢測障礙物。應(yīng)用圖如圖2.5所示。</p><p> 2.2.2 電動小車模塊</p><p> 電動小車由兩個直流電機(jī)與其驅(qū)動芯片組成。一左一右位于小車前端兩邊。電機(jī)通過齒輪組帶動輪胎。
88、后端是用于平衡的輪胎。小車電動機(jī)模塊如圖2.6所示</p><p> 圖2.6 電動小車模塊</p><p> 2.2.3 控制模塊</p><p><b> 1、時鐘電路</b></p><p> AT89S52雖然有內(nèi)部振蕩電路,但要形成時鐘,必須外部附加電路。AT89S52單片機(jī)的時鐘產(chǎn)生方法有兩種。內(nèi)部時
89、鐘方式和外部時鐘方式。</p><p> 本設(shè)計采用內(nèi)部時鐘方式,利用芯片內(nèi)部的振蕩電路,在XTAL1、XTAL2引腳上外接定時元件,內(nèi)部的振蕩電路便產(chǎn)生自激振蕩。本設(shè)計采用最常用的內(nèi)部時鐘方式,即用外接晶體和電容組成的并聯(lián)諧振回</p><p> 路。振蕩晶體可在1.2MHZ到12MHZ之間選擇。電容值無嚴(yán)格要求,CX1、CX2可在20pF到100pF之間取值。所以本設(shè)計中,振蕩晶體
90、選擇11.0592MHZ,電容選擇30pF。</p><p><b> 2、復(fù)位電路</b></p><p> AT89S52的復(fù)位是由外部的復(fù)位電路來實現(xiàn)的。復(fù)位引腳RST通過在每個機(jī)器周期的對復(fù)位電路采樣一次,然后才能得到內(nèi)部復(fù)位操作所需要的信號。復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。</p><p> 最簡單的上電自動復(fù)位
91、電路中上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實現(xiàn)的。只要VCC的上升時間不超過1ms,就可以實現(xiàn)自動上電復(fù)位。時鐘頻率用11.0592MHZ時C取10uF,R取10KΩ。本設(shè)計就是用就是最簡單的上電復(fù)位??刂破髂K如圖2.7所示。</p><p> 圖2.7 控制器模塊</p><p><b> 2.3 整體方案</b></p><p>
92、; 小車的尋跡原理是當(dāng)左側(cè)傳感器在黑線上時,傳感器輸出高電平,在白色地板上時輸出低電平。電平信號進(jìn)入單片機(jī)P3.5口,同理右側(cè)傳感器將電平信號傳送到單片機(jī)P3.7口。單片機(jī)通過P0.0和P0.1口控制左電機(jī)組,通過P0.2和P0.3口控制右電機(jī)組。當(dāng)正前方傳感器檢測出小車前方有物體阻擋時,正前方傳感器輸出低電平信號到單片機(jī)的P3.6口,單片機(jī)控制小車行動。整體硬件示意圖如圖2.8所示。</p><p> 當(dāng)左
93、右傳感器都在黑線上時,單片機(jī)控制左右電機(jī)同時一同速度正向轉(zhuǎn)動,小車向前行駛。當(dāng)左側(cè)傳感器在黑線外,右側(cè)傳感器在黑線上,單片機(jī)控制右側(cè)的電機(jī)停止(或反向轉(zhuǎn)動),左側(cè)的電機(jī)正向轉(zhuǎn)動(或停止)來控制小車向右轉(zhuǎn)。當(dāng)右側(cè)傳感器在黑線外,左側(cè)傳感器在黑線上,單片機(jī)控制左側(cè)的電機(jī)停止(或反向轉(zhuǎn)動),右側(cè)的電機(jī)正向轉(zhuǎn)動(或停止)來控制小車向左轉(zhuǎn)。從而來實現(xiàn)小車的自動尋跡。當(dāng)正前方的有物體阻擋時,單片機(jī)控制小車停下來。</p><p&
94、gt; 圖2.8 小車整體示意圖</p><p><b> 3 軟件設(shè)計</b></p><p><b> 3.1 程序設(shè)計</b></p><p> 程序要的任務(wù)是,讓單片機(jī)查詢傳感器模塊發(fā)出的路面信號,根據(jù)信號作出反應(yīng),控制電動機(jī)工作實現(xiàn)自動尋跡。其程序流程圖3.1所示。</p><p>
95、; 圖3.1 程序流程圖</p><p> 3.1.1 程序的模塊化設(shè)計</p><p> 在進(jìn)行微機(jī)控制系統(tǒng)設(shè)計時,除了系統(tǒng)硬件設(shè)計外,大量的工作就是如何根據(jù)每個生產(chǎn)對象的實際需要設(shè)計應(yīng)用程序。因此,軟件設(shè)計在微機(jī)控制系統(tǒng)設(shè)計中占重要地位。</p><p> 為了完成要求設(shè)計,在進(jìn)行軟件設(shè)計時,通常把整個過程分成若干個部分,每一部分叫做一個模塊。所謂“模塊
96、”,實質(zhì)上就是所完成一定功能,相對獨立的程序段,這種程序設(shè)計方法叫模塊程序設(shè)計法。</p><p> 模塊程序設(shè)計法的主要優(yōu)點是:</p><p> 1、單個模塊比起一個完整的程序易編寫及調(diào)試;</p><p> 2、模塊可以共存,一個模塊可以被多個任務(wù)在不同條件下調(diào)用;</p><p> 3、模塊程序允許設(shè)計者分割任務(wù)和利用已有程序
97、,為設(shè)計者提供方便。</p><p> 本系統(tǒng)軟件采用模塊化結(jié)構(gòu),由主程序﹑延時子程序﹑轉(zhuǎn)向子程序構(gòu)成。具體程序見附錄1。
98、</p><p> 3.1.2 部分程序設(shè)計</p><p> 1、延時子程序。制作一個延時子程序,讓指令執(zhí)行足夠長的時間。</p><p> Void Delay()</p><p> { Unsigned Int DelayTime=50000;</p><p> while(DelayTime--);
99、</p><p><b> return;</b></p><p><b> }</b></p><p><b> 2、轉(zhuǎn)向子程序。</b></p><p> void ControlCar(unsigned char ConType) </p><
100、p><b> {</b></p><p> M1A=0; //將M1電機(jī)A端初始化為0</p><p> M1B=0; //將M1電機(jī)B端初始化為0</p><p> M2A=0; //將M2電機(jī)A端初始化為0</p><p> M2B=0
101、; //將M2電機(jī)B端初始化為0</p><p> switch(ConType) //判斷用戶設(shè)定電機(jī)形式</p><p><b> {</b></p><p> case 1: //前進(jìn)。判斷用戶是否選擇形式1</p><p> { M1A=1;
102、 //M1電機(jī)正轉(zhuǎn)</p><p> M2A=1; //M2電機(jī)正轉(zhuǎn)</p><p><b> break;</b></p><p><b> }</b></p><p> case 2: //后退。判斷用戶是否選擇形式2</p&g
103、t;<p> { M1B=1; //M1電機(jī)反轉(zhuǎn)</p><p> M2B=1; //M2電機(jī)反轉(zhuǎn)</p><p><b> break;</b></p><p><b> }</b></p><p> case 3:
104、 //左轉(zhuǎn)。判斷用戶是否選擇形式3</p><p><b> { </b></p><p> M1B=1; //M1電機(jī)反轉(zhuǎn)</p><p> M2A=1; //M2電機(jī)正轉(zhuǎn)</p><p><b> break;</b></p><p
105、><b> }</b></p><p> case 4: //右轉(zhuǎn)。判斷用戶是否選擇形式4</p><p> { M1A=1; //M1電機(jī)正轉(zhuǎn)</p><p> M2B=1; //M2電機(jī)反轉(zhuǎn)</p><p><b> break;<
106、;/b></p><p><b> }</b></p><p> case 5: //停止。判斷用戶是否選擇形式8</p><p><b> {</b></p><p> break; //退出當(dāng)前選擇</p><p>
107、<b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 3、主程序。</b></p><p> void main() //主程序
108、入口</p><p><b> {</b></p><p> bit RunFlag=0; //定義小車運(yùn)行標(biāo)志位</p><p> RunShow=0; //初始化顯示狀態(tài)</p><p> while(1)
109、 </p><p><b> {</b></p><p> Start: ControlCar(1); //初始化小車運(yùn)行狀態(tài) </p><p> LeftLed=LeftIR; //前方左側(cè)指示燈指示出前方左側(cè)紅外探頭狀態(tài)</p><p&g
110、t; RightLed=RightIR; //前方右側(cè)指示燈指示出前方右側(cè)紅外探頭狀態(tài)</p><p> FontIRState=FontIR; //定義蔽障狀態(tài)位</p><p> if(FontIR==0) //正前方傳感器接收到了信號</p><p> {ControlCar(2
111、); //小車向后倒退</p><p> SB1=!SB1; //揚(yáng)聲器電平取反 </p><p> Delay(); //延時一定時間</p><p> SB1=!SB1; </p><
112、;p> Delay(); </p><p> SB1=!SB1; </p><p> Delay(); </p><p> SB1=!SB1; </p><p> Delay
113、(); </p><p> SB1=!SB1; </p><p> Delay(); </p><p> SB1=!SB1; </p><p> Delay(); </p><p> SB1=!SB1;
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的智能尋跡小車畢業(yè)設(shè)計
- 基于單片機(jī)的智能尋跡小車設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計基于單片機(jī)的自動往返小車
- 創(chuàng)新設(shè)計與實踐報告--自動尋跡小車--基于s08單片機(jī)的自動尋跡小車設(shè)計
- 基于atmega8單片機(jī)尋跡小車設(shè)計
- 基于51單片機(jī)的智能尋跡小車
- 基于單片機(jī)的尋光、尋跡小車.rar
- 基于單片機(jī)的自動送料小車的畢業(yè)設(shè)計
- 基于單片機(jī)的尋光、尋跡小車.rar
- 基于單片機(jī)的智能小車畢業(yè)設(shè)計
- 基于單片機(jī)的智能小車設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--基于單片機(jī)的智能小車的設(shè)計
- 基于單片機(jī)的wifi智能小車設(shè)計 畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---基于單片機(jī)的電動智能小車設(shè)計
- 畢業(yè)設(shè)計--基于arduino單片機(jī)的智能小車設(shè)計
- 基于單片機(jī)的wifi智能小車設(shè)計 畢業(yè)設(shè)計
- 畢業(yè)設(shè)計基于arduino單片機(jī)的智能小車設(shè)計
- 基于單片機(jī)控制wifi只能小車畢業(yè)設(shè)計
- 基于單片機(jī)的多功能智能小車畢業(yè)設(shè)計
- 基于單片機(jī)的語音控制小車畢業(yè)設(shè)計論文
評論
0/150
提交評論