版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 畢業(yè)設(shè)計(論文)</b></p><p> 基于以太網(wǎng)的自動尋跡小車</p><p> 學(xué)院(系): </p><p> 專業(yè)班級: </p><p> 學(xué)生姓名: </p>
2、;<p> 指導(dǎo)教師: </p><p><b> 摘要</b></p><p> 為充分利用遠(yuǎn)程資源,實現(xiàn)遠(yuǎn)程控制設(shè)備,設(shè)計網(wǎng)絡(luò)小車控制系統(tǒng),通過太網(wǎng)控制小車的基本動作。本系統(tǒng)采用AT89S52單片機(jī)作為控制系統(tǒng)的核心,采用直流電機(jī)作為電動車驅(qū)動電機(jī),通過PC上位機(jī)利用以太網(wǎng)向小車單片機(jī)發(fā)送指令,控制小車實現(xiàn)前進(jìn)
3、、左轉(zhuǎn)、右轉(zhuǎn)、后退、停止以及自動尋跡功能,從而實現(xiàn)了基于以太網(wǎng)的遠(yuǎn)程控制。</p><p> 設(shè)計難點是數(shù)據(jù)的發(fā)送和接收,以及服務(wù)器端設(shè)備的控制部分。數(shù)據(jù)由PC機(jī)網(wǎng)絡(luò)端口發(fā)出,經(jīng)以太網(wǎng)傳送以后利用周立功公司的ZNE-100TL模塊對信息進(jìn)行轉(zhuǎn)換,最終處理為RS-232串口數(shù)據(jù),達(dá)到控制設(shè)備的目的。測試結(jié)果理想。</p><p> 關(guān)鍵字:以太網(wǎng);電動車;直流電機(jī);AT89S52
4、</p><p><b> ABSTRACT</b></p><p> To capitalize on the remote resources and implement the control equipment on the net, the system is controlled to achive the vehicle's basic mo
5、vements by the network based on the ethernet. Employed AT89S52 Micro Controller Unit (MCU) as the core system controller, direct current motors used as electric car's drive, data is sent by the Personal Computers (PC
6、) via ethernet as the commands to make the car achieve basic movements, such as turnning left and right, rewinding, stopping and running foll</p><p> The key technology of the design is the data's sendi
7、ng and receiving, and the controlling of the server devices. Data is sent by the PC network from the ethernet port, and then is transmitted by ZNE-100TL module of ZLG company, processed to be acceptable for the RS -232
8、serial data port. The result of the test is good.</p><p> Keywords: Ethernet; Electric Car; DC_Motor;AT89S52</p><p><b> 目錄</b></p><p><b> 第一章 前言1</b><
9、/p><p> 1.1 課題研究的背景和意義1</p><p> 1.2 小車控制以及以太網(wǎng)技術(shù)技術(shù)研究現(xiàn)狀1</p><p> 1.2.1 智能小車研究現(xiàn)狀1</p><p> 1.2.2 以太網(wǎng)研究現(xiàn)狀2</p><p> 1.3 本文的研究內(nèi)容和組織結(jié)構(gòu)2</p><p>
10、 第二章 方案設(shè)計與論證4</p><p> 2.1 系統(tǒng)組成方案4</p><p> 2.2 微控制器的選擇4</p><p> 2.3 電機(jī)及驅(qū)動芯片的選擇與設(shè)計7</p><p> 2.4 尋跡模塊的設(shè)計8</p><p> 2.5 顯示模塊的選擇與設(shè)計9</p><p
11、> 2.7 系統(tǒng)原理圖11</p><p> 第三章 硬件設(shè)計12</p><p> 3.1 單片機(jī)最小系統(tǒng)介紹12</p><p> 3.2電機(jī)驅(qū)動電路12</p><p> 3.3 車架的選擇13</p><p> 3.4 電源的選擇14</p><p> 3
12、.5 尋線傳感器電路以及顯示電路14</p><p> 3.6 ISP下載線模塊15</p><p> 3.7 以太網(wǎng)數(shù)據(jù)的傳輸17</p><p> 3.8 單片機(jī)串口設(shè)計19</p><p> 3.9 軌道的設(shè)計20</p><p> 3.10 整車圖片21</p><p&
13、gt; 第四章 軟件設(shè)計23</p><p> 4.1 軟件介紹23</p><p> 4.1.1 單片機(jī)編程軟件《KEIL》23</p><p> 4.1.2 電路仿真軟件《PROTUES》24</p><p> 4.1.3 人機(jī)對話界面編寫程序《VC++6.0》24</p><p> 4.2
14、單片機(jī)軟件部分25</p><p> 4.2.1 系統(tǒng)思維框架圖25</p><p> 4.2.2初始化程序26</p><p> 4.2.3 電機(jī)控制程序設(shè)計26</p><p> 4.2.4 尋線程序設(shè)計29</p><p> 4.2.5 顯示部分的程序31</p><p&
15、gt; 4.2.6 主程序main函數(shù)設(shè)計35</p><p> 4.3 串口傳輸軟件和網(wǎng)口發(fā)送軟件的編寫和改進(jìn)36</p><p> 第五章 系統(tǒng)的調(diào)試39</p><p> 5.1 尋跡功能測試39</p><p> 5.2 LED點陣測試39</p><p> 5.3 系統(tǒng)測試39<
16、/p><p> 第六章 總結(jié)與展望40</p><p><b> 致 謝41</b></p><p> 參 考 文 獻(xiàn)42</p><p> 附錄A 外文翻譯——AT89S52/AT89S51技術(shù)手冊43</p><p> AT89S52 /AT89S51譯文43</p&g
17、t;<p> AT89S52 /AT89S51原文51</p><p><b> 第一章 前言</b></p><p> 1.1 課題研究的背景和意義</p><p> 計算機(jī)和網(wǎng)絡(luò)技術(shù)的發(fā)展,引發(fā)了遠(yuǎn)程監(jiān)測、監(jiān)控領(lǐng)域深刻的技術(shù)變革。系統(tǒng)結(jié)構(gòu)向網(wǎng)絡(luò)化、開放性方向發(fā)展將是技術(shù)發(fā)展的主要潮流。以太網(wǎng)作為目前應(yīng)用最廣泛的局域網(wǎng)
18、技術(shù),憑借其開放性好、成本低廉、數(shù)據(jù)傳輸率高等諸多優(yōu)勢,在工業(yè)自動化和過程控制領(lǐng)域得到了越來越多的應(yīng)用[1]。依靠以太網(wǎng)技術(shù)實現(xiàn)信息共享,給辦公自動化帶來很大的變革,對系統(tǒng)設(shè)計產(chǎn)生了深遠(yuǎn)的影響。</p><p> 而智能小車,也就是輪式機(jī)器人,最適合在那些人類無法工作的環(huán)境中工作,該技術(shù)可以應(yīng)用于無人駕駛機(jī)動車,無人生產(chǎn)線,倉庫,服務(wù)機(jī)器人等領(lǐng)域。所有這些用途正逐步滲入到工業(yè)和社會的各個層面[2]。 “工欲善其
19、事,必先利其器”。人類在認(rèn)識自然、改造自然、推動社會進(jìn)步的過程中,不斷地創(chuàng)造出各種各樣為人類服務(wù)的工具,其中許多具有劃時代的意義。作為20世紀(jì)自動化領(lǐng)域的重大成就,機(jī)器人已經(jīng)和人類社會的生產(chǎn)、生活密不可分。因此為了使智能小車工作在最佳狀態(tài),進(jìn)一步研究及完善其速度和方向的控制是非常有必要的[3]。</p><p> 1.2 小車控制以及以太網(wǎng)技術(shù)技術(shù)研究現(xiàn)狀</p><p> 1.2.1
20、 智能小車研究現(xiàn)狀</p><p> 機(jī)器人的發(fā)展大致經(jīng)過三代的演變。第一代是可編程的示教再現(xiàn)型機(jī)器人。目前已經(jīng)普及化,它是依靠人們給予程序,能重復(fù)進(jìn)行多種操作的系統(tǒng)。由于其不具有傳感器的反饋信息,因此不能在作業(yè)過程中從外界不斷獲取信息,來改善其自身的行動品質(zhì),故其應(yīng)用范圍和精度受到限制。第二代是具有一定感覺功能和自適應(yīng)能力的離線編程機(jī)器人。此種機(jī)器人配備了簡單的內(nèi)、外部傳感器,能對自身的實際位置、方向等進(jìn)行測
21、量,能通過“視覺”、“觸覺”等傳感能力對外部環(huán)境進(jìn)行實際探測,從而由這些反饋信息在事先編好的算法和程序指導(dǎo)下對操作過程進(jìn)行調(diào)整。它與這幾年迅速發(fā)展起來的傳感器、微機(jī)技術(shù)和仿生學(xué)、控制理論等有密切關(guān)系。第三代機(jī)器人是能感知外界環(huán)境與對象物,并具有對復(fù)雜信息進(jìn)行準(zhǔn)確處理,對自己行為做出自主決策能力的智能機(jī)器人。這種機(jī)器人裝有多種傳感器,并能將多種傳感器探測到的信息進(jìn)行“融合”(多傳感器的信息融合)并做出相應(yīng)決策,自主完成某一項任務(wù)。它能有效
22、地適應(yīng)變化的環(huán)境,具有很強自適應(yīng)能力,是具有自學(xué)習(xí)和自治(自主決策)功能的智能機(jī)器人。目前機(jī)器人的研究正向著復(fù)雜型、智能型、自主型發(fā)展,機(jī)器人與人類生活聯(lián)系得越來越緊密。作為現(xiàn)代機(jī)器人</p><p> 1.2.2 以太網(wǎng)研究現(xiàn)狀</p><p> 目前高檔數(shù)控系統(tǒng)大多采用現(xiàn)場總線來實現(xiàn)數(shù)控系統(tǒng)網(wǎng)絡(luò)化和數(shù)字化的要求。現(xiàn)</p><p> 場總線一般采用專用硬件
23、,雖然實時性好,但標(biāo)準(zhǔn)過多互不兼容,硬件成本高,傳輸</p><p> 速度低,與管理級(如企業(yè)信息化)很難兼容,現(xiàn)場總線也已經(jīng)逐步向以太網(wǎng)靠攏。以太網(wǎng)的飛速發(fā)展,以其低成本、高穩(wěn)定和可靠性、應(yīng)用廣泛和支持技術(shù)成熟的優(yōu)點已經(jīng)成為通信領(lǐng)域的事實標(biāo)準(zhǔn)。但其在商用上的成功并不能掩蓋其在工業(yè)應(yīng)用中的缺陷。將以太網(wǎng)應(yīng)用于控制層和現(xiàn)場層的數(shù)控系統(tǒng)上,由于其MAC 層協(xié)議采用CSMA/CD,具有排隊延遲不確定的缺陷,使之無法
24、在工業(yè)控制中得到有效使用。響應(yīng)時間的“不確定性”(即實時性差)和系統(tǒng)內(nèi)各模塊的“不同步性”成為了阻礙以太網(wǎng)技術(shù)“一網(wǎng)到底”的瓶頸。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,新的數(shù)控機(jī)床大都提供了以太網(wǎng)接口,目前以太網(wǎng)主要用于把數(shù)控機(jī)床接入管理網(wǎng)絡(luò),有些實現(xiàn)現(xiàn)場總線通信,但在設(shè)備級還存在著無法實現(xiàn)信息網(wǎng)絡(luò)發(fā)布、傳輸速度慢、實時性差、可靠性差等缺點。以太網(wǎng)技術(shù)已經(jīng)被工業(yè)自動化系統(tǒng)廣泛接受,以太網(wǎng)技術(shù)從現(xiàn)場向設(shè)備滲透是一個大的趨勢。</p><
25、p> 1.3 本文的研究內(nèi)容和組織結(jié)構(gòu)</p><p> 本文以小車的控制為研究對象,以AT89S52 單片機(jī)為核心,以ZNE-100TL模塊為以太網(wǎng)接口,設(shè)計了一個基于以太網(wǎng)的遠(yuǎn)程小車控制系統(tǒng)。根據(jù)題目的要求,確定如下方案:</p><p> 通訊部分:分為以太網(wǎng)口控制和串口直接控制兩部分。以太網(wǎng)控制部分利用PC上位機(jī)定義網(wǎng)絡(luò)端口(Port80)通過以太網(wǎng)將數(shù)據(jù)傳輸?shù)絑NE-
26、100TL模塊中,利用模塊將網(wǎng)絡(luò)信號轉(zhuǎn)化為串口信號,將指令送入MCU中對小車實現(xiàn)控制。串口部分則是直接利用PC上位機(jī)串口COM1(Port4001)對小車進(jìn)行數(shù)據(jù)和命令的傳輸。</p><p> 尋跡部分:在現(xiàn)有玩具電動車的基礎(chǔ)上,加裝反射式光電黑白線傳感器,實現(xiàn)對電動車的運行位置的檢測,并將測量數(shù)據(jù)傳送至單片機(jī)進(jìn)行處理,然后由單片機(jī)根據(jù)所檢測的各種數(shù)據(jù)進(jìn)行對小車的控制并且實現(xiàn)狀態(tài)的反饋顯示[6] [7]。&l
27、t;/p><p> 顯示部分:利用8*8 LED點陣實現(xiàn)圖形的拼湊。圖形是通過行掃描,對應(yīng)直接輸入8位列信號最后形成圖形的。對應(yīng)小車不同的運行狀態(tài),形成箭頭圖形,顯示小車運行的狀態(tài)和方向。</p><p> 全文在第二章主要介紹各個部分電路以及原理,而第三章主要介紹第二章的電路原理對應(yīng)的硬件系統(tǒng),第四章介紹硬件系統(tǒng)對應(yīng)的軟件內(nèi)容,包括單片機(jī)內(nèi)核程序,上位機(jī)界面程序簡介等等。</p&g
28、t;<p> 第二章 方案設(shè)計與論證</p><p> 2.1 系統(tǒng)組成方案</p><p> 根據(jù)題目的基本要求,設(shè)計任務(wù)主要完成電動車在規(guī)定時間內(nèi)按規(guī)定路徑穩(wěn)定行駛,并能具有保持平衡功能,同時對行程中的有關(guān)數(shù)據(jù)進(jìn)行處理顯示。為完成相應(yīng)功能,系統(tǒng)可以劃分為以下幾個基本模塊:電源模塊、電動機(jī)驅(qū)動模塊、尋跡線探測模塊、平衡狀態(tài)檢測模塊、信息顯示模塊。如圖2.1所示:<
29、;/p><p><b> 圖2.1 系統(tǒng)框圖</b></p><p> 2.2 微控制器的選擇</p><p> 主控芯片是整個系統(tǒng)的核心,通過外部采樣決定整個系統(tǒng)的工作情況。因此主控芯片要能保證系統(tǒng)的穩(wěn)定及達(dá)到系統(tǒng)的要求。</p><p> 由于我們大學(xué)期間學(xué)習(xí)并使用的主要是51系列的單片機(jī)控制芯片,相對比較熟悉。
30、故我們決定采用AT89S52單片機(jī)作為我們的主控制器。優(yōu)點是:價格低廉,程序資源豐富,技術(shù)比較成熟。缺點:運算速度慢,數(shù)字外設(shè)少,片內(nèi)沒有AD轉(zhuǎn)換器,不能直接進(jìn)行數(shù)據(jù)采集,接口電路比較復(fù)雜。下面對AT89S52作簡要介紹。</p><p><b> AT89S52:</b></p><p> 主要性能:與MCS-51單片機(jī)產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash
31、存儲器、1000次擦寫周期、全靜態(tài)操作:0Hz~33Hz 、三級加密程序存儲器、32個可編程I/O口線 、三個16位定時器/計數(shù)器八個中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時器、雙數(shù)據(jù)指針、掉電標(biāo)識符。</p><p><b> 功能特性描述:</b></p><p> AT89S52是一種低功耗、高性能CMOS 8位微控
32、制器,具有8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看門狗定時器,2個數(shù)據(jù)指針
33、,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52可降至0 HZ靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。</p><p><b> 引腳介紹</b></
34、p><p> P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,能驅(qū)動8個TTL邏輯電平。當(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輸出
35、緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(TTL)。此外,P1.0和P1.2分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和定時器/計數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表1.0所示。</p><p> 表2.0 P1口引腳的第二功能</p><
36、p> P2口:P2口是一個具有內(nèi)部上拉電阻的8位雙向I/O 口,P2輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P2端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(TTL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器。在使用 8位地址訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在Flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信
37、號。P3口:P3口是一個具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動4個TTL邏輯電平。對P3端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。P3口亦作為AT89S52特殊功能(第二功能)使用,如表1.0所示。 </p><p> 在Flash編程和校驗時,P3口也接收一些控制信號。 </p><p&
38、gt; 表2.1 P3口引腳的第二功能</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é)
39、。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。</p><p> 對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。</p><p> 如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MO
40、VC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機(jī)執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。</p><p> PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機(jī)器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。</p><p> EA/VPP——外部訪問允
41、許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。</p><p> 如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。</p><p> FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp[8]。&l
42、t;/p><p> 2.3 電機(jī)及驅(qū)動芯片的選擇與設(shè)計</p><p> 方案1:選用步進(jìn)電機(jī)。步進(jìn)電機(jī)是一種將電脈沖轉(zhuǎn)化為角位移的執(zhí)行機(jī)構(gòu)。通俗一點講:當(dāng)步進(jìn)驅(qū)動器接收到一個脈沖信號,它就驅(qū)動步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動一個固定的角度(及步進(jìn)角)??梢酝ㄟ^控制脈沖個數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時可以通過控制脈沖頻率來控制電機(jī)轉(zhuǎn)動的速度和加速度,從而達(dá)到調(diào)速的目的。步進(jìn)電機(jī)分三
43、種:永磁式(PM)、反應(yīng)式(VR)和混合式(HB)。利用步進(jìn)電機(jī)的準(zhǔn)確定長步進(jìn)性能方便地實現(xiàn)調(diào)速和轉(zhuǎn)向,可以準(zhǔn)確的測量速度、路程、及時間,簡化編程和硬件連接的工作量。但步進(jìn)電機(jī)的轉(zhuǎn)矩較小,不能滿足小車爬坡的要求。且成本高,過于高的精度對本實驗來說十分浪費。</p><p> 方案2:選用直流電機(jī)。定義輸出或輸入為直流電能的旋轉(zhuǎn)電機(jī),稱為直流電機(jī),它是能實現(xiàn)直流電能和機(jī)械能互相轉(zhuǎn)換的電機(jī)。當(dāng)它作電動機(jī)運行時是直流
44、電動機(jī),將電能轉(zhuǎn)換為機(jī)械能;作發(fā)電機(jī)運行時是直流發(fā)電機(jī),將機(jī)械能轉(zhuǎn)換為電能。直流電機(jī)的優(yōu)點是輕便小巧,轉(zhuǎn)矩大,控制簡單。利用脈寬調(diào)制(PWM)可以很容易地改變直流電機(jī)的速度,甚至可以達(dá)到步進(jìn)的效果。而且造價比較低,造合一般的小型系統(tǒng)使用。</p><p> 經(jīng)比較驗證,顯然方案1的步進(jìn)電機(jī)的機(jī)械結(jié)構(gòu)復(fù)雜,而且性價比不高,而方案2的直流電機(jī)與小車本是一體的,性能也比較好,由于本系統(tǒng)對時間的要求不高,采用減速直流電
45、機(jī)完全可以滿足要求。至于題目要求的精確平衡控制,采用一定的算法就可以解決。因此采用方案2,選用性價比相對比較高的減速直流電機(jī)。</p><p> 至于驅(qū)動芯片則采用專用的L298N電機(jī)驅(qū)動芯片,如圖2.2所示:</p><p> 圖2.2 電機(jī)驅(qū)動電路</p><p> 圖2.2中硬件包括L298N芯片、4個5V的穩(wěn)壓管、2個0.1uF的電解電容、2個100
46、uF的電解電容。工作時,單片機(jī)向L298N的ENA、ENB兩口發(fā)送PWM波來控制左右兩電機(jī)的轉(zhuǎn)速。而IN1~IN4四個接口則用來選擇電機(jī)的旋轉(zhuǎn)方向。如當(dāng)IN1為高電平,IN2為低電平時,OUT輸出穩(wěn)定的5V電壓,OUT2輸出0V電壓,使電機(jī)A正向旋轉(zhuǎn),控制小車前進(jìn)。</p><p> 2.4 尋跡模塊的設(shè)計</p><p> 這一模塊是整個系統(tǒng)的核心模塊之一,主要功能是完成小車尋著蹺蹺
47、板黑面上的白線行駛,保證小車直行,從而保證了平衡時的精確度,也可以很好地完成讓小車一直在板上行駛的要求。</p><p> 方案1:采用CCD單色攝像頭,配計算機(jī)主板及圖像采集卡來識別黑背景下的白線,目前做的比較成熟,效果相當(dāng)好。但成本高,很難找到合適的載體,且處理電路十分復(fù)雜。</p><p> 方案2:采用紅外發(fā)射接收對管傳感器。紅外發(fā)射管的紅外線照射到蹺蹺板平面后反射,若紅外接收
48、管能接收到反射回的光線則檢測出白線繼而輸出低電平,若接收不到發(fā)射管發(fā)出的光線則檢測出蹺蹺板黑面繼而輸出高電平。該傳感器雖然靈敏度高,且容易購買,但是集成度比較低,需要輔助電路才能返回TTL電平,因此造成不便。</p><p> 方案3:用光敏電阻組成光敏探測器。光敏電阻的電阻值可以跟隨周圍環(huán)境光線的變化而變化。光線照射到蹺蹺板面時反射較弱,而照射到白線上時反射強烈。因此光敏電阻在蹺蹺板白線上方時阻值會發(fā)生明顯變
49、化,而且有集成度高的封裝元件,且價格便宜。而且這種方案受光照影響不大,工作比較穩(wěn)定。</p><p> 經(jīng)過比較,我們在這一模塊采用方案3,使用TK-20黑白線檢測傳感器,將三個傳感器固定在小車前端的底盤上。根據(jù)黑線吸收光,白紙反光的原理從而輸出不同的門限。 </p><p> 圖2.3 黑白線檢測傳感器外貌及外部電路</p><p> 2.5 顯示模
50、塊的選擇與設(shè)計</p><p> 方案1:采用LCD液晶顯示。優(yōu)點是顯示信息豐富,功耗低,體積小,畫面效果好,分辨率高,人機(jī)界面友好,但液晶需要利用控制芯片創(chuàng)建字符庫,編程量大,占用資源多,可視性較差,成本也比較高。</p><p> 方案2:采用LED數(shù)碼管顯示。優(yōu)點是對外界環(huán)境要求比較低,顯示明顯,亮度較高,造價低廉,編程控制容易,如果接口不夠用,還可以使用串并轉(zhuǎn)換芯片進(jìn)行驅(qū)動。缺
51、點是顯示信息比較少,沒有LCD顯示的豐富。</p><p> 由于本系統(tǒng)只用顯示運行狀態(tài),且LED數(shù)碼管質(zhì)量比較輕,利于小車行走,可視性好,成本低,控制方便,故選擇1個 LED數(shù)碼管Ark Sz411588k作為系統(tǒng)的顯示部分。當(dāng)小車尋跡時,會顯示小車的運動動作如直行時,顯示向前的箭頭,左轉(zhuǎn)時顯示左轉(zhuǎn)的箭頭等。</p><p><b> 圖2.4 顯示電路</b>
52、</p><p> 顯示電路模塊中,包括的硬件有LED點陣燈Ark Sz411588k、74LS245(LED驅(qū)動芯片)。單片機(jī)I/O口輸出的電壓雖然在理論上能夠達(dá)到5V,但是加上負(fù)載以后往往不能達(dá)到這樣的數(shù)值,這也就是電機(jī)、LED都需要加驅(qū)動電路的原因。本系統(tǒng)要使用LED點陣燈Ark Sz411588K顯示小車運行的狀態(tài),所以必須加入驅(qū)動電路,驅(qū)動芯片為74LS245。加入驅(qū)動之后就可以正常顯示了,否則LED
53、燈不會被點亮。</p><p><b> 2.7 系統(tǒng)原理圖</b></p><p> 圖2.5 系統(tǒng)電路原理圖</p><p> 整個系統(tǒng)由顯示模塊、電機(jī)驅(qū)動模塊、串口接收模塊、尋跡傳感器接收模塊組成。系統(tǒng)通過串口接收上位PC傳送來的指令,然后由單片機(jī)對指令進(jìn)行分析,再進(jìn)一步對電機(jī)驅(qū)動模塊輸出控制電平,實現(xiàn)對小車的控制。當(dāng)單片機(jī)接收到指
54、令自動尋跡時,單片機(jī)進(jìn)入尋跡子程序,此時由傳感器對黑白線進(jìn)行檢測,并自動控制電機(jī)的轉(zhuǎn)動同時顯示模塊同步對小車運行的方向進(jìn)行顯示。而每當(dāng)單片機(jī)接收到指令時,單片機(jī)向PC機(jī)發(fā)送反饋數(shù)據(jù)。(圖2.5中左下角用開關(guān)代替?zhèn)鞲衅鳈z測的高低電平)</p><p><b> 第三章 硬件設(shè)計</b></p><p> 3.1 單片機(jī)最小系統(tǒng)介紹</p><p&
55、gt; 經(jīng)過與同類產(chǎn)品比較,考慮到系統(tǒng)的穩(wěn)定性和調(diào)試下載方便,成品單片機(jī)最小系統(tǒng)板并不是我們最好的選擇。不僅沒有減少我們的工作量,而且冗余的器件又加大了車體的質(zhì)量,使小車的機(jī)動性大大降低。因此我選擇自己在PCB焊接板上制作單片機(jī)的最小系統(tǒng)。一來自制電路板有較大的自由度,可以按照自己的想法安排硬件的位置;二來自制電板更利于在車體安裝,可以方便的打孔,撮掉棱角。三來可以根據(jù)自己的需要安裝測試硬件,而且拆卸方便[9]。</p>
56、<p> 圖3.1是自制系統(tǒng)板的硬件圖:</p><p> 圖3.1 自制系統(tǒng)板</p><p><b> 3.2電機(jī)驅(qū)動電路</b></p><p> 我們的電機(jī)使用原車自帶的直流電機(jī),加以齒輪減速,這樣的好處是可以將電機(jī)很好的固定在車架上。驅(qū)動使用L298N雙電機(jī)驅(qū)動芯片,由單片機(jī)的P1口輸出控制信號來控制電機(jī)的轉(zhuǎn)速和
57、方向。如圖3.2所示:</p><p> 圖3.2 驅(qū)動芯片L298N</p><p><b> 3.3 車架的選擇</b></p><p> 我們的車架采用的是從市場上購買的專門用來做小車的車架,不僅自帶電機(jī)、固定方便,還配有小塊的電路板,可以在上面焊接一些簡單的電路。而且更主要是這兩個電機(jī)參數(shù)都差不多,能保證兩個電機(jī)的對稱性。如圖3.
58、3所示:</p><p><b> 圖3.3 車架</b></p><p><b> 3.4 電源的選擇</b></p><p> 考慮到我們的系統(tǒng)板可以使用USB供電,故我們將系統(tǒng)板的正負(fù)電源送給電機(jī)和傳感器,這樣我們只要給系統(tǒng)板供電就可以了,而我們小車運行的路線是固定的,距離也不是很遠(yuǎn),使用USB延長線完全可以
59、勝任,所以我們整個系統(tǒng)采用USB供電。這樣即節(jié)省了我們使用電池的費用,也能保證電壓的穩(wěn)定性。</p><p> 圖3.4自制USB電源</p><p> 3.5 尋線傳感器電路以及顯示電路</p><p> 我們的尋線傳感器使用黑白線檢測傳感器,這樣可以利用黑白線反射率的不同而將黑白線區(qū)分開來,如圖3.4所示,在車頭頂部兩裝3個黑白線傳感器來尋線,3個傳感器更
60、能準(zhǔn)確的讓車識別軌跡。</p><p> 顯示模塊如第二章的2.5介紹的,實物圖如下:</p><p> 圖3.5 LED點陣實物圖</p><p> 3.6 ISP下載線模塊</p><p> 利用ISP下載模塊的原因非常簡單,ISP下載功能本身對于單片機(jī)來說就是一個提升,他是單片機(jī)可能通過USB傳輸、燒錄程序,而不需要使用昂貴的燒
61、寫器。同時,由于自制單片機(jī)系統(tǒng)板的我來說,如果燒錄程序只能通過燒寫器來完成,插拔單片機(jī)就會成為調(diào)試單片機(jī)時的一種障礙,因為多次插拔往往容易損壞引腳,造成單片機(jī)的浪費。于是我想到了焊接ISP接口引腳并且構(gòu)面ISP驅(qū)動電路模板。而且這也成為選擇AT89S系列單片機(jī)而不使用AT89C系列單片機(jī)的重要原因 [10]。</p><p> 首先是焊接引腳,根據(jù)ATS51系列對應(yīng)ISP下載引腳有如下電路圖3.6:</p
62、><p> 圖3.6 ISP引腳電路</p><p> 根據(jù)此電路我進(jìn)行了焊接如下圖3.7:</p><p> 圖3.7 ISP引腳</p><p> 焊接之后需要制作驅(qū)動電路,驅(qū)動電路的核心芯片是ATMEGA8,要注意的是,首先USB下載線本身就是一種AVR單片機(jī),在制作完成后也得通過其他并口或者串口ISP下載線給他下載程序,這樣他才能
63、工作。第二,先得了解AVR單片機(jī)M8的基本資料。這樣才能進(jìn)行調(diào)試。我一開始考慮的是自己制作電路,但是由于時間緊迫而且擔(dān)心穩(wěn)定性問題就選擇了購買成熟的模塊,一來價格便宜(遠(yuǎn)比燒寫器便宜),二來保證其工作的效率。購買模塊如下圖3.8:</p><p> 圖3.8 ISP模塊于單片機(jī)連接圖</p><p> 整個ISP驅(qū)動模塊的電路是由USB供電直接提供的,重點在于MOSI、MISO、RST
64、、SCK要一一對應(yīng)。不同的PC軟件對應(yīng)的引腳圖實際上是有差別的,而利用成品的模塊也方便了許多。ISP驅(qū)動模塊燒寫程序界面如圖3.8:</p><p> 圖3.9 ISP人機(jī)對話界面</p><p> 3.7 以太網(wǎng)數(shù)據(jù)的傳輸</p><p> 以太網(wǎng)數(shù)據(jù)傳輸模塊是本系統(tǒng)的核心模塊之一,而系統(tǒng)的以太網(wǎng)功能是通過ZNE-100TL 模塊實現(xiàn)的。ZNE-100TL
65、是周立功公司開發(fā)的一款嵌入式以太網(wǎng)轉(zhuǎn)串口模塊,它內(nèi)部集成了TCP/IP 協(xié)議,配有32位ARM7CPU、16KB RAM、128KB FLASH 和10M以太網(wǎng)接口,支持RS-232 和RS-485 接口,支持動態(tài)或靜態(tài)獲取IP 地址,有TCP Server,TCP Client,UDP,Real COM driver,Group Mode 等多種工作方式,可使用網(wǎng)頁瀏覽器進(jìn)行配置,提供通用配置函數(shù)庫,方便用戶使用VC、VB、Delph
66、i 和C++Builder 開發(fā)應(yīng)用程序。由于ZNE-100T 以太網(wǎng)模塊能夠?qū)崿F(xiàn)串口設(shè)備和以太網(wǎng)設(shè)備之間數(shù)據(jù)的透明傳輸,利用它可以輕松完成嵌入式設(shè)備的網(wǎng)絡(luò)功能。ZNE-100T 以太網(wǎng)模塊的波特率、開始位、停止位以及工作方式通過配置軟件來設(shè)計。模塊連接方式如圖3.10:</p><p> 圖3.10 以太網(wǎng)數(shù)據(jù)傳輸示意圖</p><p> 在本系統(tǒng)中,設(shè)置其波特率為9600b/s(考
67、慮到單片機(jī)于PC本身的通訊),開始位為1 位,停止位為1 位,工作方式為TCP Sever。在TCP服務(wù)器(TCP Server)模式下,ZNE-100TL模塊不會主動與其它設(shè)備連接。它始終等待客戶端(TCP Client)的連接,在與客戶端建立TCP連接后即可進(jìn)行雙向數(shù)據(jù)通信。</p><p> 通訊的核心是IP地址,通訊端口等通訊設(shè)置的有關(guān)配置。首先是IP地址,由于本模塊需要建立PC和ZNE-100TL在同
68、一網(wǎng)段,設(shè)定PC機(jī)情況如下IP地址:193.168.0.55,子網(wǎng)掩碼: 255.255.255.0,默認(rèn)網(wǎng)關(guān):192.168.0.1,DNS服務(wù)器:192.168.0.2,備用DNS服務(wù)器:192.168.0.1。ZNE-100TL的IP與PC不同為:192.168.0.178,其他與PC設(shè)置相同。另外一項重要的屬性是端口PC的通訊端口的配置,一共有1~65534端口可以設(shè)置,但是在TCP和UDP協(xié)議中有一些端口已經(jīng)被占用,如TCP端
69、口多通道服務(wù)器占用端口1,ECHO占用端口7,網(wǎng)絡(luò)狀態(tài)占用端口15,TELNET占用端口23等等。在本設(shè)計中設(shè)定網(wǎng)絡(luò)參數(shù)如下:網(wǎng)頁端口80,命令端口3003;而串口設(shè)定工作端口4001;TCP Turo啟用,TCP連接數(shù)1,TCP目標(biāo)端口6001,TCP目標(biāo)IP 192.168.0.1。</p><p> 事實上ZNE-100TL的配置十分方便,有三種方式??梢杂媚K安裝盤自帶的ZNetCom軟件直接配置;也可
70、以在WINDOWS自帶的超級終端里面使用配置;更可以在IE瀏覽器中輸入模塊的IP地址,鏈接后可以直接配置[11]。</p><p> 整個模塊和模塊的評估版如下圖3.11和3.12:</p><p> 圖3.11 ZNE-100TL模塊</p><p> 圖3.12 ZNE-100TL評估版</p><p> 3.8 單片機(jī)串口設(shè)計&
71、lt;/p><p> 由于AT89S52 單片機(jī)本身提供了一組全雙工串行傳輸口,由TXD 引腳來傳送串行數(shù)據(jù),而由RXD引腳來接收數(shù)據(jù),可是其工作邏輯電平皆為TTL 電平(0V,5V)。而ZNE-100T 模塊配置的是RS-232標(biāo)準(zhǔn)串行接口,電平為(+12V,-12V),二者的電氣規(guī)范不一致,因此要完成單片機(jī)與PC 機(jī)的數(shù)據(jù)通信,必須對單片機(jī)輸出的TTL 電平進(jìn)行電平轉(zhuǎn)換[12]。本系統(tǒng)采用MAXIM 公司生產(chǎn)的
72、MAX232 電平轉(zhuǎn)換芯片來實現(xiàn)RS-232 標(biāo)準(zhǔn)接口通信。電路原理圖如3.13(a)實物如圖3.14(b):</p><p> 圖3.13(a) RS-232串口以及MAX232原理圖</p><p> 圖3.13(b) RS-232串口以及MAX232實物圖</p><p> 通訊時,上位機(jī)向單片機(jī)發(fā)送申請使單片機(jī)的接受端為有效,這時單片機(jī)允許接收上位
73、機(jī)指令。而后上位機(jī)發(fā)送指令,單片機(jī)根據(jù)指令進(jìn)行對電機(jī)的控制,當(dāng)控制完成后向上位機(jī)進(jìn)行數(shù)據(jù)的發(fā)送,反饋運行的狀態(tài),并且關(guān)閉接收端,一直等待上位機(jī)再次打開單片機(jī)的接收端才會接收數(shù)據(jù)。</p><p><b> 3.9 軌道的設(shè)計</b></p><p> 蹺蹺板的設(shè)計我們使用質(zhì)地堅硬的木板,在板面上用黑色膠帶覆蓋,在板的中心用白膠帶做成一條中心線,供小車尋跡。軌道的整
74、體形狀也結(jié)合了直道和彎道,這樣可以全面測試小車的轉(zhuǎn)彎能力。如圖3.14所示:</p><p><b> 圖3.14 軌道</b></p><p><b> 3.10 整車圖片</b></p><p> 整個車體的設(shè)計以輕便和簡單為原則,舍棄了成品系統(tǒng)版以后,車體的設(shè)計有了比較大的自由度,一共分為三層。最下層是車板,連
75、接發(fā)動機(jī),三個傳感器;第二層是單片機(jī)系統(tǒng)部分,單片機(jī)主要器件都集中在這一層;最上面一層只有LED點陣顯示模塊,使觀察方便了許多,而ZNE-100TL模塊并不跟隨車體。從小車的后面和側(cè)面兩個角度拍攝小車的整車圖,如圖3.15、3.16所示:</p><p> 圖3.15 小車的斜面視圖</p><p> 圖3.16 小車側(cè)面視圖</p><p><b>
76、; 第四章 軟件設(shè)計</b></p><p> 軟件在一個智能系統(tǒng)中扮演著舉足輕重的角色,軟件設(shè)計的好壞直接影響著整個系統(tǒng)的性能。目前已經(jīng)有很多種嵌入式實時多任務(wù)操作系統(tǒng),如:Linux、RTX51及UC/OS等,可以更有效的利用系統(tǒng)的各種資源,簡化編程,縮短開發(fā)周期。鑒于本系統(tǒng)采用AT89S52單片機(jī)為控制器,本身的各種資源都很有限,引入一個操作系統(tǒng)代價太大,所以考慮直接來優(yōu)化系統(tǒng)的軟件結(jié)構(gòu),同
77、樣可以達(dá)到“多任務(wù)”、“實時”等要求。</p><p><b> 4.1 軟件介紹</b></p><p> 4.1.1 單片機(jī)編程軟件《KEIL》</p><p> Keil C51是美國Keil Software公司出品的51系列兼容單片機(jī)C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯的優(yōu)勢,因而易學(xué)
78、易用。用過匯編語言后再使用C來開發(fā),體會更加深刻。</p><p> Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細(xì)介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。</p>
79、<p> 2. Keil C51單片機(jī)軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu)</p><p> C51工具包中的uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成
80、庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級調(diào)試,也可由仿真器使用直接對目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器,如EPROM中。</p><p> 4.1.2 電路仿真軟件《PROTUES》</p><p> Protues軟件是英國Labcenter
81、electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將
82、電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。</p><p> 在Protues繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在Protues的原理圖中看到模擬的實
83、物運行狀態(tài)和過程。Protues 是單片機(jī)課堂教學(xué)的先進(jìn)助手。Protues不僅可將許多單片機(jī)實例功能形象化,也可將許多單片機(jī)實例運行過程形象化。前者可在相當(dāng)程度上得到實物演示實驗的效果,后者則是實物演示實驗難以達(dá)到的效果。它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實驗硬件高度對應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實驗教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運行結(jié)果等。隨著科技的發(fā)展,“計算機(jī)仿真技術(shù)”已成為許多
84、設(shè)計部門重要的前期設(shè)計手段。它具有設(shè)計靈活,結(jié)果、過程的統(tǒng)一的特點。可使設(shè)計時間大為縮短、耗資大為減少,也可降低工程制造的風(fēng)險。</p><p> 4.1.3 人機(jī)對話界面編寫程序《VC++6.0》</p><p> VC++6.0是Microsoft公司推出的一個基于Windows系統(tǒng)平臺、可視化的集成開發(fā)環(huán)境,它的源程序按C++語言的要求編寫,并加入了微軟提供的功能強大的MFC(M
85、icrosoft Foundation Class)類庫。MFC中封裝了大部分Windows API函數(shù)和Windows控件,它包含的功能涉及到整個Windows操作系統(tǒng)。MFC不僅給用戶提供了Windows圖形環(huán)境下應(yīng)用程序的框架,而且還提供了創(chuàng)建應(yīng)用程序的組件,這樣,開發(fā)人員不必從頭設(shè)計創(chuàng)建和管理一個標(biāo)準(zhǔn)Windows應(yīng)用程序所需的程序,而是從一個比較高的起點編程,故節(jié)省了大量的時間。另外,它提供了大量的代碼,指導(dǎo)用戶編程時實現(xiàn)某些
86、技術(shù)和功能。因此,使用VC++提供的高度可視化的應(yīng)用程序開發(fā)工具和MFC類庫,可使應(yīng)用程序開發(fā)變得簡單。</p><p> 4.2 單片機(jī)軟件部分</p><p> 單片機(jī)軟件主要分為三大部分,單機(jī)的控制,傳感器信號的接收和處理,LED點陣的反饋顯示。三者相互關(guān)聯(lián),密不可分。</p><p> 4.2.1 系統(tǒng)思維框架圖</p><p>
87、; 整個系統(tǒng)軟件開發(fā)的框架圖如圖4.1所示:</p><p><b> 圖4.1總框架圖</b></p><p> 雙向箭頭所表示的是指令的傳輸和反饋,而單項箭頭僅表示的指令的傳輸。</p><p> 4.2.2初始化程序</p><p> 在程序中負(fù)責(zé)初始化單片機(jī)系統(tǒng)電機(jī)和串口的定時器以及單片機(jī)的波特率等屬性
88、,詳細(xì)程序如下:</p><p> /******************************************************</p><p> *函數(shù)功能:對系統(tǒng)進(jìn)行初始化,包括定時器初始化和變量初始化*/</p><p> void init_sys(void) /*系統(tǒng)初始化函數(shù)*/</p><
89、;p><b> {</b></p><p> /*定時器初始化*/</p><p><b> en1 = 1;</b></p><p><b> en2 = 1;</b></p><p><b> }</b></p>&l
90、t;p> /*串口中斷及其附帶定時器初始化程序*/</p><p> void init_UART(void)</p><p><b> {</b></p><p> /*定時器初始化*/</p><p> SCON = 0x50;//UART in mode 1 8位,REN=1</p>
91、;<p> TMOD = TMOD|0x20; //T1工作方式2</p><p> TH1 = 0xFD;//9600 Bds at 11.059MHz</p><p> TL1 = 0xFD;//9600 Bds at 11.059MHz</p><p> TR1 = 1;//Timer 1 run</
92、p><p><b> }</b></p><p> 4.2.3 電機(jī)控制程序設(shè)計</p><p> 常規(guī)的設(shè)置方法是利用某一個定時器對電機(jī)進(jìn)行PWM的控制以達(dá)到控制電機(jī)轉(zhuǎn)速的原理,但是我的實驗要求是盡量快速的跑完軌跡,于是我直接取消了PWM控制部分,使單片機(jī)控制電機(jī)全速運行。這樣對電機(jī)的延時設(shè)定有比較高的要求。電機(jī)控制主要分成三種狀態(tài),運行(
93、RUN)、暫停(PAUSE)、停止(STOP)。其中暫停用于轉(zhuǎn)彎,停止用于到達(dá)終點時。</p><p> /**************************************************************/</p><p> //電機(jī)控制部分,以指定速度運行函數(shù)Lrun(),Rrun()函數(shù)</p><p> //左邊電機(jī)運行函數(shù)&
94、lt;/p><p> void Lrun(INT16U speed)</p><p><b> {</b></p><p> INT16U cnt;</p><p> cnt = speed_cnt /speed;</p><p><b> en1=1;</b><
95、/p><p><b> s1=1;</b></p><p><b> s2=0;</b></p><p> lDelay(cnt);</p><p><b> }</b></p><p><b> //左電機(jī)停止函數(shù)</b>&
96、lt;/p><p> void LSTOP(void)</p><p><b> {</b></p><p><b> en1=0;</b></p><p><b> }</b></p><p> //left pause</p>&
97、lt;p> void Lpause(INT16U adjust)</p><p><b> {</b></p><p> INT16U cnt;</p><p> cnt = speed_cnt /adjust;</p><p><b> en1=0;</b></p>
98、<p> LED88LEFT(cnt/400);</p><p><b> en1=1;</b></p><p><b> }</b></p><p> //left back</p><p> void Lback(INT16U speed)</p><p&
99、gt;<b> {</b></p><p> INT16U cnt;</p><p> cnt = speed_cnt /speed;</p><p><b> en1=1;</b></p><p><b> s1=0;</b></p><p>
100、;<b> s2=1;</b></p><p> lDelay(cnt);</p><p> lDelay(cnt);</p><p><b> en1=0;</b></p><p><b> }</b></p><p> //右邊電機(jī)運行函
101、數(shù)</p><p> void Rrun(INT16U speed)</p><p><b> {</b></p><p> INT16U cnt;</p><p> cnt = speed_cnt /speed;</p><p><b> en2=1;</b>&l
102、t;/p><p><b> s3=1;</b></p><p><b> s4=0;</b></p><p> lDelay(cnt);</p><p><b> }</b></p><p><b> //右電機(jī)停止函數(shù)</b>
103、;</p><p> void RSTOP(void)</p><p><b> {</b></p><p><b> en2=0;</b></p><p><b> } </b></p><p> //right pause</p>
104、;<p> void Rpause(INT16U adjust){</p><p> INT16U cnt;</p><p> cnt = speed_cnt /adjust;</p><p><b> en2=0;</b></p><p> LED88RIGHT(cnt/400);</p&
105、gt;<p><b> en2=1;</b></p><p><b> }</b></p><p> //right back</p><p> void Rback(INT16U speed)</p><p><b> {</b></p>
106、<p> INT16U cnt;</p><p> cnt = speed_cnt /speed;</p><p><b> en2=1;</b></p><p><b> s3=0;</b></p><p><b> s4=1;</b></p>
107、;<p> lDelay(cnt);</p><p><b> });</b></p><p> lDelay(cnt);</p><p><b> en2=0;</b></p><p><b> }</b></p><p>
108、4.2.4 尋線程序設(shè)計</p><p> 尋線是系統(tǒng)的主要組成部分之一,尋線程序設(shè)計的好壞直接影響到系統(tǒng)的效率和穩(wěn)定性。其中P3.5,P3.6,P3.7引腳分別接尋線傳感器輸入。檢測到三口信號之后進(jìn)行反應(yīng)選擇。</p><p> /***************************************************************/</p>&
109、lt;p> sbit follow_L = P3^5; //LEFT SENSER</p><p> sbit follow_M = P3^6; //MID SENSER</p><p> sbit follow_R = P3^7; //RIGHT SENSER</p><p> /*====================尋線===========
110、============*/</p><p> //尋跡函數(shù) follow(void)</p><p> void follow(void)</p><p><b> {</b></p><p> INT8U temp;</p><p> temp = follow_L;</p&g
111、t;<p> temp = (temp<<1)|follow_M;</p><p> temp = (temp<<1)|follow_R;</p><p> switch(temp&0x07)</p><p><b> {</b></p><p> //檢測到黑時返
112、回高電平</p><p> //沒有檢測到黑地時,狀態(tài)000,原地不動</p><p> case 0x00: LSTOP();RSTOP(); LED88STOP();break; </p><p> //左白中白右黑時,狀態(tài)001,右高速左低速</p><p> case 0x01: </p><p>
113、; Lpause(33);Rrun(38);break; </p><p> //左白中黑右白時,狀態(tài)010,狀態(tài)不存在</p><p> case 0x02: break; </p><p> //左白中黑右黑時,狀態(tài)011,右高速左低速</p><p> case 0x03:</p><p>
114、; Lpause(29);Rrun(39);break;</p><p> //左黑中白右白時,狀態(tài)100,左告訴右低速</p><p> case 0x04:</p><p> Rpause(33);Lrun(36);break;</p><p> //左黑中白右黑,狀態(tài)101,標(biāo)準(zhǔn)行使?fàn)顟B(tài),左右高速</p><
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以太網(wǎng)計入技術(shù)畢業(yè)論文
- 基于以太網(wǎng)的測控節(jié)點設(shè)計【畢業(yè)論文】
- 自動避障尋跡小車硬件設(shè)計畢業(yè)論文
- 自動尋跡小車論文
- 基于以太網(wǎng)的電梯遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計畢業(yè)論文
- 基于以太網(wǎng)的智能家居通信模塊設(shè)計【畢業(yè)論文】
- 畢業(yè)論文外文翻譯-工業(yè)以太網(wǎng)與智能建筑
- 畢業(yè)設(shè)計---基于單片機(jī)的自動尋跡小車
- 基于以太網(wǎng)的自動測試系統(tǒng)的組建.pdf
- 基于以太網(wǎng)的遠(yuǎn)程自動抄表系統(tǒng).pdf
- 自動循跡小車-畢業(yè)論文
- 基于無線以太網(wǎng)的智能軌道小車輸送系統(tǒng)電氣設(shè)計.pdf
- 以太網(wǎng)接入畢業(yè)設(shè)計
- 自動化領(lǐng)域的工業(yè)以太網(wǎng)標(biāo)準(zhǔn)
- 基于fpga的千兆以太網(wǎng)設(shè)計
- 【畢業(yè)學(xué)位論文】基于以太網(wǎng)控制的智能開關(guān)電源的設(shè)計
- 創(chuàng)新設(shè)計與實踐報告--自動尋跡小車--基于s08單片機(jī)的自動尋跡小車設(shè)計
- 自動送料小車畢業(yè)論文
- 千兆以太網(wǎng)的實現(xiàn) 畢業(yè)設(shè)計
- 基于以太網(wǎng)自動測試系統(tǒng)通訊接口的研究.pdf
評論
0/150
提交評論