電動車翹翹板畢業(yè)設計_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  前 言2</b></p><p>  第1章 任務要求3</p><p>  1.1 設計任務3</p><p>  1.2 設計要求4</p><p>  1.2.1 基本部分要求4

2、</p><p>  1.2.2 發(fā)揮部分要求4</p><p>  1.3 設計說明5</p><p>  第2章 方案論證5</p><p>  2.1 系統(tǒng)設計方案選擇與論證5</p><p>  2.1.1 電機方案的選擇與論證5</p><p>  2.1.2 尋

3、跡檢測電路方案的選擇與論證6</p><p>  2.1.3 平衡檢測電路方案的選擇與論證6</p><p>  2.1.4 平衡標志方案的選擇與論證7</p><p>  2.1.5 顯示時間電路方案的選擇與論證7</p><p>  2.1.6 電源方案的選擇與論證8</p><p>  2.2

4、 系統(tǒng)電路組成及原理8</p><p>  第3章 系統(tǒng)的軟件設計與實現(xiàn)9</p><p>  3.1 單片機介紹9</p><p>  3.2 ADC0832數(shù)據(jù)讀取程序設計流程12</p><p>  3.3 尋找平衡子程序設計流程14</p><p>  3.4 T0中斷定時子程序流程圖16

5、</p><p>  3.5 LCD顯示子程序流程17</p><p>  3.6 主程序流程18</p><p>  第4章 系統(tǒng)測試及調(diào)試20</p><p>  4.1 系統(tǒng)測試20</p><p>  4.1.1 測試儀器20</p><p>  4.1.2 數(shù)據(jù)測

6、試20</p><p>  4.1.3 測試數(shù)據(jù)與結(jié)果分析21</p><p>  4.2 軟件調(diào)試21</p><p><b>  總結(jié)22</b></p><p><b>  致謝23</b></p><p><b>  參考文獻24</b

7、></p><p>  附錄1 硬件電路圖25</p><p>  附錄2 系統(tǒng)軟件設計清單26</p><p>  附錄3 英語原文40</p><p>  附錄4 中文翻譯43</p><p><b>  前 言</b></p><p>  隨著計

8、算機技術(shù)的飛速發(fā)展, 單片機已逐漸發(fā)展成為一門關鍵的技術(shù)學科。20 多年來, 高校單片機課程成了很多專業(yè)的必修課。該課程是一門應用性很強的課程, 如何讓學生在學好基礎知識的同時, 迅速掌握設計應用技術(shù), 其中的實踐教學起著非常重要的作用。單片機實踐教學包括單片機基本理論實驗、典型功能應用實驗(課程設計) 、應用開發(fā)實驗(畢業(yè)設計) 以及新技術(shù)使用實驗等等多環(huán)節(jié)訓練。</p><p>  21 世紀是信息時代, 是

9、經(jīng)濟大發(fā)展的時期,要求培養(yǎng)更多的高素質(zhì)、高能力、有開拓進取精神的探索創(chuàng)新型人才, 因此不僅要使學生通過單片機實踐教學來掌握基本實踐手段, 更重要的是使學生具備應用這些手段從事科學研究的獨立工作能力。在實踐教學中, 僅僅傳授實踐技術(shù)是不夠的, 必須注重學生能力的培養(yǎng), 使學生在知識和能力方面得到全面的發(fā)展。古人云: “授之以魚, 只供一飯之需, 教之以漁, 則終生受用無窮?!迸囵B(yǎng)能力無異于給學生一把開啟知識之門的鑰匙, 有了這把鑰匙才能使

10、他們在知識的海洋里泛舟沖浪。所以單片機實踐教學的方法得當, 有利于創(chuàng)新人才的培養(yǎng)。</p><p>  傳統(tǒng)的單片機實驗均以單片機實驗箱或者單片機技術(shù)開發(fā)裝置為實驗器材, 開設的實驗大多數(shù)屬于驗證性實驗和訓練性實驗, 學生實驗時是在指導教師的指導下根據(jù)實驗講義一步一步完成相應的內(nèi)容。在整個學習過程中, 學生往往很被動, 而且與實際應用不接軌。學生學完整個單片機課程后不知道單片機的應用場合, 更談不上開發(fā)一些具有實

11、用價值的東西。一種型號的單片機可以學習很多年,學生訓練分散、時間短暫, 實踐教學沒有層次, 階段不明, 忽視培養(yǎng)學生的實踐能力和創(chuàng)新精神。要想從根本上解決問題, 應該根據(jù)培養(yǎng)能力的要求, 建立單片機實驗教學新體系, 打破單片機實驗教學依附于理論教學, 為理論教學服務的傳統(tǒng)觀念。而本課題就是為打破這種傳統(tǒng)觀念,而用實際物品來驗證單片機各種性能的,運用現(xiàn)代化的實踐教學手段和管理模式,課題充分利用實驗室有利的條件, 不斷地改革和完善單片機實踐

12、教學的內(nèi)容和方法, 提高學生單片機應用與開發(fā)能力, 達到培養(yǎng)具有實踐能力和創(chuàng)新精神的高素質(zhì)人才的目的。</p><p><b>  第1章 任務要求</b></p><p><b>  1.1 設計任務</b></p><p>  圖1-1 起始狀態(tài)示意圖</p><p>  設計并制作一個電

13、動車蹺蹺板,在蹺蹺板起始端A一側(cè)裝有可移動的配重。配重的位置可以在從始端開始的200mm~600mm范圍內(nèi)調(diào)整,調(diào)整步長不大于50mm;配重可拆卸。電動車從起始端A出發(fā),可以自動在蹺蹺板上行駛。電動車蹺蹺板起始狀態(tài)和平衡狀態(tài)示意圖分別如圖1-1和圖1-2所示。</p><p>  圖1-2 平衡起始狀態(tài)示意圖</p><p><b>  1.2 設計要求</b>&

14、lt;/p><p>  1.2.1 基本部分要求</p><p>  在不加配重的情況下,電動車完成以下運動:</p><p> ?。?)電動車從起始端A出發(fā),在30秒鐘內(nèi)行駛到中心點C附近;</p><p>  (2)60秒鐘之內(nèi),電動車在中心點C附近使蹺蹺板處于平衡狀態(tài),保持平衡5秒鐘,并給出明顯的平衡指示;</p><

15、p> ?。?)電動車從(2)中的平衡點出發(fā),30秒鐘內(nèi)行駛到蹺蹺板末端B處(車頭距蹺蹺板末端B不大于50mm);</p><p> ?。?)電動車在B點停止5秒后,1分鐘內(nèi)倒退回起始端A,完成整個行程;</p><p>  (5)在整個行駛過程中,電動車始終在蹺蹺板上,并分階段實時顯示電動車行駛所用的時間。</p><p>  1.2.2 發(fā)揮部分要求<

16、;/p><p>  圖1-3 自動駛上蹺蹺板示意圖</p><p>  將配重固定在可調(diào)整范圍內(nèi)任一指定位置,電動車完成以下運動:</p><p>  (1)將電動車放置在地面距離蹺蹺板起始端A點 300mm以外、90°扇形區(qū)域內(nèi)某一指定位置(車頭朝向蹺蹺板),電動車能夠自動駛上蹺蹺板,如圖1-3所示。</p><p>  (2)電動

17、車在蹺蹺板上取得平衡,給出明顯的平衡指示,保持平衡5秒鐘以上。</p><p>  (3)將另一塊質(zhì)量為電動車質(zhì)量10%~20%的塊狀配重放置在A至C間指定的位置,電動車能夠重新取得平衡,給出明顯的平衡指示,保持平衡5秒鐘以上。</p><p> ?。?)電動車在3分鐘之內(nèi)完成(1)~(3)全過程。</p><p><b> ?。?)其他。</b&g

18、t;</p><p><b>  1.3 設計說明</b></p><p>  (1)蹺蹺板長1600mm、寬300mm,為便于攜帶也可將蹺蹺板制成折疊形式。</p><p> ?。?)蹺蹺板中心固定在直徑不大于50mm的半圓軸上,軸兩端支撐在支架上,并保證與支架圓滑接觸,能靈活轉(zhuǎn)動。</p><p> ?。?)測試中

19、,使用參賽隊自制的蹺蹺板裝置。</p><p> ?。?)允許在蹺蹺板和地面上采取引導措施,但不得影響蹺蹺板面和地面平整。</p><p> ?。?)電動車(含加在車體上的其它裝置)外形尺寸規(guī)定為:長≤300mm,寬≤200mm。</p><p> ?。?)平衡的定義為A、B兩端與地面的距離差d=∣dA-dB∣不大于40mm。</p><p>

20、; ?。?)整個行程約為1600mm減去車長。</p><p> ?。?)測試過程中不允許人為控制電動車運動。</p><p><b>  第2章 方案論證</b></p><p>  2.1 系統(tǒng)設計方案選擇與論證</p><p>  2.1.1 電機方案的選擇與論證</p><p>  

21、方案一:采用步進電機。步進電動機的一個顯著的特點就是具有快速啟動和</p><p>  停止能力,能夠達到我們所要求的標準。其轉(zhuǎn)換靈敏度比較高。正轉(zhuǎn)、反轉(zhuǎn)控制靈活。但是步進電機的驅(qū)動能力較差、速度較低、對于方案要求相差較大,而且力矩小,容易步丟失[1]。</p><p>  方案二:采用減速電機,其最大的優(yōu)點是轉(zhuǎn)矩較大,驅(qū)動能力較強, 但是減速電機的速度也較低,不能很好的滿足要求</

22、p><p>  方案三:采用大功率達林頓管組成的H型方向控制的電機驅(qū)動普通的直流電機。H型電機驅(qū)動電路具有優(yōu)良的轉(zhuǎn)向控制,電子開關速度很快,穩(wěn)定性也很強,可實現(xiàn)頻繁的無極快速啟動、制動和反轉(zhuǎn),能滿足各種不同的特殊運行要求。</p><p>  由于普通直流電機價格適宜,更易于購買,并且電路相對簡單,因此采用方案三[2]。</p><p>  2.1.2 尋跡檢測電路方

23、案的選擇與論證</p><p>  本設計要求在整個行駛過程中,電動車始終在蹺蹺板上,為了防止小車在行使過程中掉下蹺蹺板,因此在蹺蹺板上畫出黑色直線軌道??紤]到軌道是在白紙上打印的一條黑線,可以利用傳感器辨認路面黑白兩種不同的狀態(tài)。對傳感器的選擇有以下方案。</p><p>  方案一:用光電傳感器。光電傳感器對黑色和白色的反射系數(shù)不同,由此判斷傳感器是否在黑線上行駛。但是,由于其他光源影

24、響,需采用聚焦式光電傳感器。</p><p>  方案二:用反射式紅外傳感器。紅外線比可見光的波長要長,散射度小,可以降低環(huán)境對光源接收管的干擾,但由于直接利用直流電源對管子供電,限于管子的平均功率要求,工作電流只能在10mA左右,仍易受到干擾。</p><p>  基于可靠性和成本的考慮,我們選擇方案一[3]。</p><p>  2.1.3 平衡檢測電路方案的

25、選擇與論證</p><p>  方案一:采用集成芯片SCA61T傾角傳感器。該角度傳感器是一個單軸傾角傳感器,測量范圍在+30度到-30度之間,符合蹺蹺板角度范圍,該傳感器可以輸出模擬量和SPI數(shù)字量,易于單片機采集數(shù)據(jù),穩(wěn)定性高,抗沖擊能力強,價格合理,與單片機接口電路簡單易懂,容易實現(xiàn)[4]。</p><p>  方案二:采用旋轉(zhuǎn)編碼器。將編碼器固定在蹺蹺板旋轉(zhuǎn)的軸上,當蹺蹺板轉(zhuǎn)動時,

26、連帶著編碼器旋轉(zhuǎn)某個角度,根據(jù)編碼器旋轉(zhuǎn)一周(即360度)編碼器輸出脈沖數(shù)目與檢測到的數(shù)目比較可以得到板面與地面之間的角度,根據(jù)轉(zhuǎn)動方向不同,編碼器輸出A與輸出B比較,當B的相位超前于A的相位90度代表蹺蹺板正向旋轉(zhuǎn),當A的相位超前于B的相位90度代表蹺蹺板反向旋轉(zhuǎn),這樣根據(jù)編碼器輸出不同就能得到蹺蹺板的角度與方向,可以根據(jù)此來控制單片機發(fā)出不同的指令控制小車狀態(tài),但此方案加大了系統(tǒng)的復雜性[5]。</p><p&g

27、t;  方案三:采用電位器。電位器可以安裝在蹺蹺板上,蹺蹺板旋轉(zhuǎn)就可以帶動電位器軸旋轉(zhuǎn),因此電位器阻值發(fā)生變化,利用一片A/D轉(zhuǎn)換芯片,將變化的模擬量經(jīng)過轉(zhuǎn)換得到不同的數(shù)字量,再根據(jù)數(shù)據(jù)運算后發(fā)出命令控制小車的運行狀態(tài)。此方案元器件較為普遍,降低了系統(tǒng)的復雜性,但是電位器阻值變化快,不易采值。</p><p>  綜合上述分析,我們采用方案一。</p><p>  2.1.4 平衡標志方

28、案的選擇與論證</p><p>  方案一:采用蜂鳴器和發(fā)光二極管相結(jié)合。當蹺蹺板平衡時,利用蜂鳴器發(fā)出聲音和發(fā)光二極管發(fā)亮示意平衡,此電路直觀簡單易懂。</p><p>  方案二:利用角度儀。當蹺蹺板平衡時,角度儀的指針剛好指向中間,但是,如在旁邊不仔細觀察,不能發(fā)現(xiàn)角度儀的作用。</p><p>  基于上述分析,我們采用方案一。</p><

29、;p>  2.1.5 顯示時間電路方案的選擇與論證</p><p>  方案一:采用LED數(shù)碼管靜態(tài)顯示的方法。此方法容易理解,驅(qū)動程序簡單,但需要多片數(shù)碼管驅(qū)動顯示,增加成本,而且占用單片機多個I/O口,浪費系統(tǒng)硬件資源。</p><p>  方案二:采用LED數(shù)碼管動態(tài)顯示的方法。此方法需要7個I/O口可以驅(qū)動8個數(shù)碼管顯示,驅(qū)動程序也很簡單而且容易理解,但是硬件電路也比較繁瑣

30、,由于小車的容納空間有限,不易采用[6]。</p><p>  方案三:采用LCD液晶顯示。采用1602A液晶顯示器,占用單片機10個I/O口,浪費系統(tǒng)硬件資源,但其美觀大方,使整個系統(tǒng)看起來更加漂亮。</p><p>  綜合各方案的特點,我們選擇方案三。</p><p>  2.1.6 電源方案的選擇與論證</p><p>  方案一:

31、采用單電源供電。在測試過程當中,我們采用的是直流穩(wěn)壓電源提供的5V電壓,可以使小車能正常完成各項功能。</p><p>  方案二:采用雙電源供電。利用雙電源供電會增加單片機工作的可靠性;但它增加小車系統(tǒng)的電路連線,可能會造成電線過多而產(chǎn)生錯誤的問題,而且也增加了電路的復雜性[7]。</p><p>  基于上述分析,我們采用了方案一。</p><p>  2.2

32、 系統(tǒng)電路組成及原理</p><p>  本系統(tǒng)電路主要由六大模塊組成,微機主控制模塊、尋跡檢測模塊、平衡檢測模塊、顯示模塊、蜂鳴器模塊和直流電機驅(qū)動控制模塊等六大模塊組成。見圖2-1。其工作原理是通過AT89C52來控制直流電機的轉(zhuǎn)動,再由電機驅(qū)動小車行駛,小車在行駛過程中通過光電傳感器檢測黑線使小車直線前進。小車到達平衡位置時蜂鳴器有5秒的鳴響,同時指示燈亮,小車到終點時只有指示燈亮。在行駛過程中,由LCD液

33、晶實時顯示小車行駛的時間。</p><p>  圖2-1 設計原理框圖</p><p>  第3章 系統(tǒng)的軟件設計與實現(xiàn)</p><p>  3.1 單片機介紹</p><p>  圖3-1 AT89C52引腳圖</p><p>  目前,CPU 的發(fā)展應用趨于多樣化,主要可分為 8 位機和 16 位機兩種,8

34、 位單片機的應用占主流,根據(jù)本系統(tǒng)的特點及功能要求,選用了一種低功耗、低價格、高性能的 CMOS8 位微處理器-AT89C52,芯片內(nèi)部具有8K 在系統(tǒng)可編程Flash 存儲器,芯片采用51系列指令集并與51系列單片機引腳完全兼容[8]。其引腳圖見圖3-1。</p><p>  AT89C52單片機的各引腳功能如下:</p><p>  (1)VCC : 電源</p><

35、;p><b>  (2)GND: 地</b></p><p>  (3)P0口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下, P0具有內(nèi)部上拉電阻。在Flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校

36、驗時,需要外部上拉電阻。</p><p>  (4)P1口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。</p><p>  (5)P2口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2

37、輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX @Ri)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容。在Flash編程和

38、校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。</p><p>  (6)P3口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流。P3口亦作為AT89C52特殊功能(第二功能)使用,見表3-1。 </p>&l

39、t;p>  (7)REST:復位輸入。晶振工作時,RST腳持續(xù)2 個機器周期高電平將使單片機復位。看門狗計時完成后,REST 腳輸出96 個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認狀態(tài)下,復位高電平有效。</p><p>  表3-1 P3口引腳替換功能表</p><p>  (8)ALE/:地址鎖存控制信號(ALE)是

40、訪問外部程序存儲器時,鎖存低8 位地址的輸出脈沖。在Flash編程時,此引腳()也用作編程輸入脈沖。時器或時鐘使用。然而,特別強調(diào),在每次訪問外部數(shù)據(jù)存儲器時,ALE脈沖將會跳過。如果需要,通過將地址為8EH的SFR的第0位置 “1”,ALE操作將無效。這一位置 “1”, ALE 僅在執(zhí)行MOVX 或MOVC指令時有效。否則,ALE 將被微弱拉高。這個ALE 使能標志位(地址為8EH的SFR的第0位)的設置對微控制器處于外部執(zhí)行模式下無

41、效。</p><p>  (9):外部程序存儲器選通信號。當AT89C52從外部程序存儲器執(zhí)行外部代碼時,在每個機器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時,將不被激活。</p><p>  (10)/Vpp:訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器讀取指令,必須接GND。為了執(zhí)行內(nèi)部程序指令,應該接VCC。在Flash編程期間,也接收12伏Vpp電壓。

42、</p><p>  (11)XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。</p><p>  (12)XTAL2:振蕩器反相放大器的輸出端[9]。</p><p>  3.2 ADC0832數(shù)據(jù)讀取程序設計流程</p><p>  ADC0832芯片接口程序的編寫:</p><p>  為了高速有效的實

43、現(xiàn)通信,我們采用匯編語言編寫接口程序。由于ADC0832的數(shù)據(jù)轉(zhuǎn)換時間僅為32uS,所以A/D轉(zhuǎn)換的數(shù)據(jù)采樣頻率可以很快,從而也保證了某些場合對A/D轉(zhuǎn)換數(shù)據(jù)實時性的要求。數(shù)據(jù)讀取程序以子程序調(diào)用的形式出現(xiàn),方便了程序的移植。</p><p>  程序占有資源有累加器A,工作寄存器R7,通用寄存器B和特殊寄存器CY。通用功能寄存器和轉(zhuǎn)換值共用寄存器B。在使用轉(zhuǎn)換子程序之前必須確定通道功能寄存器B的值,其賦值語句為

44、“MOV B,#date”(00H-03H)。運行轉(zhuǎn)換子程序后的轉(zhuǎn)換數(shù)據(jù)值被放入B中。子程序退出后即可以對B中數(shù)據(jù)處理[10]。</p><p>  常情況下ADC0832與單片機的接口應為4條數(shù)據(jù)線,分別是CS、CLK、DO、DI。但由于DO端與DI端在通信時并未同時有效并與單片機的接口是雙向的,所以電路設計時可以將DO和DI并聯(lián)在一根數(shù)據(jù)線上使用。</p><p>  當ADC083

45、2未工作時其CS輸入端應為高電平,此時芯片禁用,CLK和DO/DI的電平可任意。當要進行A/D轉(zhuǎn)換時,須先將CS使能端置于低電平并且保持低電平直到轉(zhuǎn)換完全結(jié)束。此時芯片開始轉(zhuǎn)換工作,同時由處理器向芯片時鐘輸入端CLK輸入時鐘脈沖,DO/DI端則使用DI端輸入通道功能選擇的數(shù)據(jù)信號。在第1個時鐘脈沖的下沉之前DI端必須是高電平,表示啟始信號。在第2、3個脈沖下沉之前DI端應輸入兩位數(shù)據(jù)用于選擇通道功能。當此2位數(shù)據(jù)為“1”、“0”時,只對

46、CH0進行單通道轉(zhuǎn)換。當2位數(shù)據(jù)為“1”、“1”時,只對CH1進行單通道轉(zhuǎn)換。當兩位數(shù)據(jù)為“0”、“0”時,將CH0作為正輸入端IN+,CH1作為負輸入端IN-進行輸入。當2位數(shù)據(jù)為“0”、“1”時,將CH0作為負輸入</p><p>  端IN-,CH1作為正輸入端IN+進行輸入。到第3個脈沖的下沉之后DI端的輸入電平就失去輸入作用,此后DO/DI端則開始利用數(shù)據(jù)輸出DO進行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個脈沖下沉開始

47、由DO端輸出轉(zhuǎn)換數(shù)據(jù)最高位DATA7,隨后每一個脈沖下沉DO端輸出下一位數(shù)據(jù)。直到第11個脈沖時發(fā)</p><p>  出最低位數(shù)據(jù)DATA0,一個字節(jié)的數(shù)據(jù)輸出完成。也正是從此位開始輸出下一個相反字節(jié)的數(shù)據(jù),即從第11個字節(jié)的下沉輸出DATD0。隨后輸出8位數(shù)據(jù),到第19個脈沖時數(shù)據(jù)輸出完成,也標志著一次A/D轉(zhuǎn)換的結(jié)束。最后將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進行處理就可以了[11]。</p>

48、;<p>  3.3 尋找平衡子程序設計流程</p><p>  傾角傳感器SCA61T是一個單軸傾角傳感器,其測量范圍在+30度到-30度之間,單極5V供電,比例電壓輸出,具有很高的分辨率,具有數(shù)字SPI和模擬電壓輸出,內(nèi)置溫度傳感器,長期穩(wěn)定性好,低噪聲,工作溫度范圍寬,抗沖擊能力強。 由于我們所用的AT89C52沒有SPI接口,所以我們用的是模擬數(shù)據(jù)輸出模式。</p><

49、p>  小車在蹺蹺板上行駛時,傾角傳感器SCA61T輸出的模擬電壓值由2.2伏到2.9伏。小車出發(fā)時(即蹺蹺板A點時),輸出的電壓值大約是2.2伏;當小車行駛到平衡位置時(即蹺蹺板C點時),輸出的電壓值大約是2.5伏,小車行駛到終端(即蹺蹺板B點時),輸出的電壓大約是2.9伏。圖可見圖1-1。</p><p>  我們把模擬方式輸出的數(shù)據(jù)高位存在R4寄存器里,數(shù)據(jù)低位存在R5寄存器里,再存入21H存儲單元里

50、,由于蹺蹺板從始端到終端時R4寄存器里數(shù)據(jù)都不變,所以我們只需要比較數(shù)據(jù)低位就好。</p><p>  3.4 T0中斷定時子程序流程圖</p><p>  AT89C52內(nèi)部有3個16位可編程的定時器/計數(shù)器,簡稱定時器0,定時器1,定時器2,分別用T0,T1,T2表示。本設計用T0工作在模式0下定時,賦5mS初值,用軟件控制定時起停[12]。其中TMOD為模式控制寄存器,主要用來設置

51、定時器/計數(shù)器的操作模式;TCON為控制寄存器,主要用來控制定時器的啟動與停止。</p><p>  T0工作在定時方式時,計數(shù)脈沖輸入信號是由內(nèi)部時鐘提供的,每一個機器周期使計數(shù)器的值加1。而每個機器周期等于12個振蕩周期,故計數(shù)器的計數(shù)頻率為振蕩器頻率的1/12。實質(zhì)上定時工作方式,就是對單片機的機器周期數(shù)進行計數(shù)。</p><p>  3.5 LCD顯示子程序流程</p>

52、;<p>  TC1602A可分為2行共顯示32個字符,每行顯示16個字符。內(nèi)含HD44780控制器的液晶顯示器模塊的TC1602A有兩個寄存器:一個是命令寄存器,另一個是數(shù)據(jù)寄存器。所有對TC1602A的操作必須先寫命令字,再寫數(shù)據(jù)。</p><p>  TCl602A內(nèi)部結(jié)構(gòu)由DDRAM、CGROM、IR、DR、BF、AC等大規(guī)模集成電路組成。DDRAM為數(shù)據(jù)顯示用的RAM(Data Displ

53、ay RAM,簡稱DDRAM).用以存放要LCD顯示的數(shù)據(jù),只要將標準的ASCII碼放入DDRAM,內(nèi)部控制線路就會自動將數(shù)據(jù)傳送到顯示器上,并顯示出該ASCII碼對應的字符。CGROM為字符產(chǎn)生器ROM (Character Generator RAM,簡稱CGRAM),可供使用者存儲特殊造型的造型碼,CGRAM最多可存8個造型。IR為指令寄存器(Instruction Register,簡稱IR),負責存儲MCU要寫給LCD的指令碼

54、。當RS及R/W引腳信號為0且Enable引腳信號由1變?yōu)?時,D0~D7引腳上的數(shù)據(jù)便會存入到IR寄仔器中。DR為數(shù)據(jù)寄存器(Data Register,簡稱DR),它們負責存儲微機要寫到CGRAM或DDRAM的數(shù)據(jù),或者存儲MCU要從CGRAM或DDRAM讀出的數(shù)據(jù)。因此,可將DR視為一個數(shù)據(jù)緩沖區(qū).當RS及R/W引腳信號為1且Enable引腳信號由l變?yōu)?時,讀取數(shù)據(jù):當RS引腳信號為l,R/W引腳信號為0</p>

55、<p>  3.6 主程序流程</p><p>  主程序流程分3大部分,第一部分為小車從起始位置到尋找到平衡位置,這一部分里主要包括前進,尋跡,尋找平衡且顯示時間子程序。第二部分為從平衡位置到走到終端這一段,這一部分主要包括前進,尋跡,判斷是否到黑線子程序。第三部分為從終端返回到起始位置這一段路程,這一部分主要包括后退,尋跡子程序。</p><p>  第4章 系統(tǒng)測試及調(diào)

56、試</p><p><b>  4.1 系統(tǒng)測試</b></p><p>  4.1.1 測試儀器</p><p>  4.1.2 數(shù)據(jù)測試</p><p>  4.1.2.1跑道全程測試</p><p>  4.1.2.2 平衡測試</p><p>  4.1.3

57、 測試數(shù)據(jù)與結(jié)果分析</p><p>  通過多次測試數(shù)據(jù),本電動車蹺蹺板系統(tǒng)設計的性能指標及實現(xiàn)功能如下:</p><p>  在規(guī)定的時間內(nèi)小車可完成往返全程路;</p><p>  在配重物的情況下,小車達到的平衡度有一定的誤差;</p><p>  小車可尋跡運行,并能循著黑線繼續(xù)往前行駛;</p><p> 

58、 實時顯示小車當前的時間功能; </p><p>  實現(xiàn)蜂鳴器和發(fā)光管示意的功能;</p><p><b>  4.2 軟件調(diào)試</b></p><p>  本系統(tǒng)軟件程序較長,給程序的編寫和調(diào)試帶來了一定的困難,在調(diào)試過程中出現(xiàn)了很多問題,尤其是在調(diào)試小車平衡狀態(tài)、尋跡等程序的調(diào)試,后來我們采

59、用了模塊化的調(diào)試過程,最終在多次嘗試和細心修改后最終取得了成功。</p><p>  如我們在編寫尋找平衡子程序時,由于我們不知道小車在具體位置時SC61T單軸傾角器輸出的具體電壓值,我們得先編寫一個具體的顯示SCA61T輸出的電壓值的程序,顯示出小車在蹺蹺板上不同位置時輸出的不同電壓值。從而根據(jù)這些不同的電壓值判斷小車的位置。</p><p>  而在編寫尋跡子程序時,當光電傳感器檢測到

60、黑線時,轉(zhuǎn)多大的角度也是我們一遍一遍修改程序,最后才最終選定的,從而達到比較好的效果。</p><p>  而如何讓其實現(xiàn)分階實時顯示時間,我們也想了很多方案,最終我們選定了把主程序設成3個大循環(huán),從而解決了分階實時顯示時間的功能。</p><p>  我們在編程過程中還遇到過很多問題,但經(jīng)過我們多次嘗試修改后最終完成了我們的任務要求。這讓我們認識到只要自己不放棄,努力,再努力,就一定會成

61、功。也讓我們知道了知識的重要性。</p><p><b>  總結(jié)</b></p><p>  本系統(tǒng)設計基本達到了作品要求的功能,整個系統(tǒng)運行穩(wěn)定。在調(diào)試過程中,首先對硬件進行調(diào)試,只有硬件電路沒有問題了方可進行軟件調(diào)試。</p><p>  通過本次畢業(yè)作品的設計與制作,讓我們體會最深的是團隊精神的重要性, 在整個設計與制作過程中我們秉著互

62、相信任、互相配合、分工合作的態(tài)度。最后基本完成了作品要求的功能。本次作品考驗的不僅僅是我們的理論知識和動手能力更是對我們毅力、應變能力、心理素質(zhì)的綜合考驗。另外電路板焊接技術(shù)也是很重要的,雖然電路板的焊接非常不起眼,但是它對整個設計作品的成敗起著非常關鍵的作用。焊接電路板時,要高度集中精力,不能急于求成,因為每一個細微的焊接失誤都會導致調(diào)試失敗,這也讓我們學到了細節(jié)決定成敗的道理。同時最為重要的一點就是軟件編程的問題,在這方面我還有很多

63、不足,有待我們?nèi)ヌ岣摺?lt;/p><p><b>  致謝</b></p><p>  我們所做的“電動車蹺蹺板的設計與制作”這個設計是一個結(jié)合科研的題目。它涉及到系統(tǒng)原理圖設計,主控軟件的設計,單片機匯編語言的編程還有相關軟件(Keil)的使用。由于我們能力有限,在畢業(yè)設計的制作過程中,遇到很多問題和困難,但在老師的指導的幫助和關心下,我們成功地完成了主控軟件的總體設

64、計和編程工作。在此,我們向幫助過我們的老師致以真誠的感謝!</p><p>  本論文是我在尊敬的**老師的精心指導下完成的。**老師嚴謹?shù)闹螌W作風和孜孜不倦的工作態(tài)度深深地激勵著我,使我盡最大努力克服工作中所遇到的困難,不斷進步,在理論和實踐方面的能力都獲得了很大的提高。在四年的大學學習過程中,祝老師給予我的支持和鼓勵使我倍感溫暖,一生難忘。在此謹向我的導師祝老師致以崇高的敬意和衷心的感謝。</p>

65、<p>  衷心感謝電氣信息工程學院各位領導和老師在我的四年的大學學習和畢業(yè)設計期間給予熱情的關心和幫助。同時感謝我的各位朋友,在我的大學生活中,他們豐富了我的生活,也給了我莫大的支持,在此感謝他們對我的幫助。</p><p>  最后,我要特別感謝我的父母多年來對我的關愛。在我近年的學習生涯中,我的每一點進步、每一點成績都與他們給予我的鼓勵和全力支持密不可分。在我的求學生涯暫告一段落之際,謹向他們

66、表示我深深的感謝。</p><p><b>  參考文獻</b></p><p>  [1]王俊峰 編著 《電子產(chǎn)品開發(fā)設計與制作》 人民郵電出版社 2005版</p><p>  [2]黃智偉 編著 《全國大學生電子設計競賽訓練教程》 電子工業(yè)出版社 2005版</p><p>  

67、[3] 李民剛 曹巧媛 曹琳琳 陳忠平 主編《單片機原理及使用技術(shù)》高等教育出版社出版 2005年版</p><p>  [4](美) Paul Scherz著 蔡聲鎮(zhèn) ... [等] 譯 《發(fā)明者電子設計寶典》福建科學技術(shù)出版社 2004版</p><p>  [6] 陳民熒 編著 《8051單片機課程設計實訓教材》清華大學出版社出版 2004年版</p><p&g

68、t;  [7]楊剛 周群 主編 《電子系統(tǒng)設計與實踐》 電子工業(yè)出版社 2004版</p><p>  [8]王振紅 張常年編著 《綜合電子設計與實踐》 清華大學出版社 2005版</p><p>  [9]吳金戌 沈慶陽 郭庭吉編著 《8051單片機實踐與應用》 清華大學出版社 2002版</p><p>  

69、[10] 楊欣 王玉鳳 主編《電子設計從零開始》清華大學出版社出版 2005年版</p><p>  [11] http://www.51senor.com</p><p>  [12]李玉梅 編著 《基于MCS-51系列單片機原理的應用設計》 國防工業(yè)出版社 2006版</p><p>  附錄1 硬件電路圖</p><p>  附

70、錄2 系統(tǒng)軟件設計清單</p><p>  系統(tǒng)總的軟件程序如下:</p><p>  ;===============================================================</p><p>  ;主程序:實現(xiàn)控制電動機尋跡,找平衡功能,并且完成分段記時,</p><p><b>  ;報

71、警,顯示等功能</b></p><p>  ;===============================================================</p><p>  RS EQU P3.7 ;LCD 數(shù)據(jù)/命令選擇端</p><p>  RW EQU P3.6 ;LCD 讀/寫選擇端&

72、lt;/p><p>  E EQU P3.5 ;LCD 使能信號</p><p>  AD_CS EQU P3.3 ;ADC0832 片選信號</p><p>  AD_CLK EQU P3.2 ;ADC0832 時鐘端</p><p>  AD_DAT EQU P3.1

73、 ;ADC0832 數(shù)據(jù)端</p><p>  HOUR EQU30H </p><p>  MIN EQU31H </p><p>  SEC EQU32H ;定義時,分,秒,以及數(shù)據(jù)</p><p>  DEDA EQU 33H ;存儲單元</p>

74、<p>  SEC0 EQU34H</p><p>  X EQU35H</p><p>  D0_D7 EQUP0 ;LCD數(shù)據(jù)?</p><p>  DII BITP2.5;報警標志位</p><p>  DENG BITP2.6;指示燈標志位<

75、/p><p>  STOP_CHE BITPSW.5;用戶自定義位F0,停車標志位</p><p>  STOP_AD0832 BITPSW.1 ;用戶自定義位F1,AD0832停止標志位</p><p>  ORG 0000H </p><p>  ORG000BH;T0中斷入口</p>

76、;<p>  LJMPT0_INT ;T0中斷</p><p>  LJMPSTART</p><p>  ORG 0100H </p><p>  ;-------------------------------------------------------- </p><p><b>  

77、START: </b></p><p>  MOV SP, #60H </p><p>  MOV A,#00H </p><p>  MOV 20H,A</p><p>  MOV 21H,A;清位</p><p>  MOVP2,A;清P2口</p>

78、;<p>  CLRSTOP_CHE</p><p>  CLRSTOP_AD0832;清標志位</p><p><b>  SETBDII</b></p><p>  SETBDENG</p><p>  MOV P0,#0FFH </p><p&

79、gt;  ACALLINIT;調(diào)用清存儲單元程序INIT</p><p>  ACALLINIT_TIMER;初始化T0中斷程序</p><p>  ACALL INIT_LCD;初始化LCD</p><p>  LCALLDIS1 ;調(diào)用顯示程序</p><p>  ;=============

80、======================================================</p><p>  ;LOOP1完成小車前進并尋跡,找到平衡位置</p><p>  ;并顯示這段路程所需時間</p><p>  ;==============================================================

81、=====</p><p><b>  LOOP1:</b></p><p><b>  CLRC</b></p><p>  LCALL AD_CONV ;調(diào)用AD轉(zhuǎn)換程序</p><p>  LCALL AD_CHULI;調(diào)用AD數(shù)據(jù)轉(zhuǎn)換程序</p>

82、<p>  LCALLCONV;調(diào)用電子表顯示程序</p><p>  LCALLDELAY</p><p>  LCALLDELAY</p><p>  LCALLLANGJIN;調(diào)用前進行車程序</p><p>  LCALLXUNJI3;發(fā)揮部分尋跡</p><

83、;p>  LCALLXUNJI1;調(diào)用前進尋跡程序</p><p>  MOVA,21H</p><p>  CJNEA,#70H,XUANZE;AD轉(zhuǎn)換的低位值與70H比較</p><p>  SJMPWWW1;相等則轉(zhuǎn)</p><p>  XUANZE: JC WWW;不等,A值小于70

84、H則轉(zhuǎn)</p><p><b>  CLRC</b></p><p>  LCALL AD_CONV ;調(diào)用AD轉(zhuǎn)換程序</p><p>  LCALL AD_CHULI;調(diào)用AD數(shù)據(jù)轉(zhuǎn)換程序</p><p>  LCALLCONV;調(diào)用電子表顯示程序</p><

85、;p>  LCALLDELAY</p><p>  LCALLDELAY</p><p>  MOVA,21H</p><p>  CJNEA,#70H,XUANZE0;再次確認A值</p><p>  SJMPWWW1</p><p>  XUANZE0:JCWWW

86、</p><p>  WWW1:LCALLPINGHENG;調(diào)用尋找平衡程序</p><p>  JBSTOP_AD0832,LOOP2;判斷是否停AD標志位</p><p>  WWW:SJMPLOOP1</p><p>  ;==========================================

87、=============</p><p>  ;LOOP2完成小車從平衡位置尋跡走到蹺蹺板終端功能</p><p>  ;并記錄這段時間,在終端停5秒,并報警</p><p>  ;=======================================================</p><p><b>  LOOP2

88、:</b></p><p>  LCALLCONV;調(diào)用電子表顯示程序</p><p>  LCALLLANGJIN ;調(diào)用前進行車程序</p><p>  LCALLXUNJI1;調(diào)用前進循跡程序</p><p>  LCALLHEIXIAN;調(diào)用判斷到終點并停車程序</p>

89、<p>  JBSTOP_CHE,LOOP3;判斷停車標志位</p><p>  SJMPLOOP2</p><p>  ;=======================================================</p><p>  ;LOOP3完成小車從蹺蹺板終端尋跡退回功能</p><p>&l

90、t;b>  ;并記錄這段時間</b></p><p>  ;=======================================================</p><p><b>  LOOP3:</b></p><p>  LCALLCONV;調(diào)用電子表顯示程序</p><p&g

91、t;  LCALLLANGTUI;調(diào)用后退行車程序</p><p>  LCALLXUNJI2;調(diào)用后退尋跡程序</p><p>  SJMPLOOP3</p><p>  ;========================================================</p><p>  ;時間存儲

92、區(qū)域初始化</p><p>  ;=========================================================</p><p><b>  INIT:</b></p><p>  MOVHOUR,#00H</p><p>  MOVMIN,#00H;清空</p

93、><p>  MOVSEC,#00H </p><p>  MOVDEDA,#00H</p><p><b>  RET</b></p><p>  ;==========================================================</p><p>

94、;<b>  ;T0中斷初始化</b></p><p>  ;==========================================================</p><p>  INIT_TIMER:</p><p>  MOVTMOD,#00H;設定T0工作模式</p><p>  MOV

95、IE,#82H;開中斷</p><p>  MOVTH0,#99</p><p>  MOVTL0,#24;賦5S初值</p><p>  SETBTR0;開始定時</p><p><b>  RET</b></p><p>  ;=============

96、======================================</p><p><b>  ;T0中斷子程序</b></p><p>  ;====================================================</p><p><b>  T0_INT:</b></p

97、><p>  PUSHACC</p><p>  MOVTH0,#99</p><p>  MOVTL0,#24;賦初值</p><p>  INCDEDA</p><p>  MOVA,DEDA</p><p>  CJNEA,#199,TT;

98、一秒鐘到?</p><p>  MOVDEDA,#0</p><p>  INCSEC</p><p>  MOVA,SEC</p><p>  CJNEA,#60,TT;一分鐘到?</p><p>  INCMIN</p><p>  MOV

99、SEC,#0</p><p>  MOVA,MIN</p><p>  CJNEA,#60,TT;一小時到?</p><p>  INCHOUR</p><p>  MOVMIN,#0</p><p>  MOVA,HOUR</p><p>

100、;  CJNEA,#24,TT</p><p>  MOVSEC,#0</p><p>  MOVMIN,#0;清零</p><p>  MOVHOUR,#0</p><p>  TT:POPACC</p><p><b>  RETI </b>

101、;</p><p>  ;====================================================</p><p>  ;LCD初始化子程序</p><p>  ;======================================================= </p><p><

102、;b>  INIT_LCD:</b></p><p>  MOVA,#00000001B;清屏</p><p>  ACALLWRITE_LCD_COM</p><p>  MOVA,#00111000B;8位2行5*7點陣</p><p>  ACALLWRITE_LCD_COM</p>&l

103、t;p>  MOVA,#00001100B;顯示器開,光標開,閃爍開</p><p>  ACALLWRITE_LCD_COM</p><p>  MOVA,#10000000B;寫顯示起始地址,第二行第一個位置80H--8FH</p><p>  ACALLWRITE_LCD_COM </p><p><b&

104、gt;  RET</b></p><p>  ;=======================================================</p><p><b>  ;檢查忙碌子程序</b></p><p>  ;=================================================

105、====== </p><p>  CHECKBUSY:</p><p>  PUSHACC</p><p>  LOP1: CLRRS;選擇指令寄存器</p><p>  SETBRW;選擇讀模式</p><p>  MOVD0_D7,#0FFH;P1口寫1,準備寫入</p&

106、gt;<p>  SETBE;使能LCD</p><p>  MOVA,D0_D7;將LCD的D0-D7由P1口送A,以便查第七位BF是否為0</p><p>  CLRE;禁止LCD</p><p>  JBACC.7,LOP1;判斷由LCD讀入第七位BF是否為1,若為1,表示LCD忙</p>

107、<p>  POPACC</p><p><b>  RET</b></p><p>  ;=======================================================</p><p>  ;寫入IR寄存器子程序</p><p>  ;=================

108、====================================== </p><p>  WRITE_LCD_COM:</p><p><b>  PUSHACC</b></p><p>  ACALLCHECKBUSY;調(diào)檢查忙碌子程序</p><p>  CLRE;禁止LCD<

109、;/p><p>  CLRRS;選擇指令寄存器</p><p>  CLRRW;選擇寫模式</p><p>  SETBE;使能LCD</p><p>  MOVD0_D7,A;將指令寫入LCDLCD_PORT</p><p>  SETBE;使能LCD

110、</p><p>  CLRE;使能LCD</p><p><b>  POPACC</b></p><p><b>  RET</b></p><p>  ;=======================================================</p

111、><p>  ;寫入DR寄存器子程序</p><p>  ;======================================================= </p><p>  WRITE_LCD_DATA:</p><p><b>  PUSHACC</b></p><p>  A

112、CALLCHECKBUSY;調(diào)檢查忙碌子程序</p><p>  CLRE;禁止LCD</p><p>  SETBRS;選擇數(shù)據(jù)寄存器</p><p>  CLRRW;選擇寫模式</p><p>  SETBE;使能LCD</p><p>  MO

113、VD0_D7,A;將數(shù)據(jù)寫入LCD</p><p>  SETBE;使能LCD</p><p>  CLRE;禁止LCD</p><p><b>  POPACC</b></p><p><b>  RET</b></p><p> 

114、 ;=================================================== </p><p>  ;PIGHENG:尋找平衡標志位子程序</p><p>  ;====================================================</p><p>  PINGHENG:NOP</p>&

115、lt;p><b>  WW1:</b></p><p>  CLRP2.0</p><p>  CLRP2.1</p><p>  CLRP2.2</p><p>  CLRP2.3;停車</p><p>  LCALLCONV<

116、/p><p>  LCALLDLY</p><p>  LCALLCONV</p><p>  LCALLDLY;電子表顯示并延時一段時間</p><p>  LCALLCONV</p><p><b>  LCALLDLY</b></p>&l

117、t;p>  LCALLCONV</p><p>  LCALLDLY</p><p>  SETBP2.0</p><p>  SETBP2.3;小車后退</p><p>  LCALLCONV</p><p>  LCALLDLY;延時并顯示時間&l

溫馨提示

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

評論

0/150

提交評論