2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  分類號 編號 0380202013029 </p><p>  本科畢業(yè)論文(設(shè)計)</p><p><b>  摘 要</b></p><p>  當(dāng)代,智能機(jī)器小車視作為未來機(jī)器人的雛形,是一個科研的熱點(diǎn),具有很高的研究

2、價值。而目前,智能機(jī)器的發(fā)展已經(jīng)遍及機(jī)械、電子、冶金、交通、宇航、國防等領(lǐng)域。近年來,機(jī)器人的智能水平在不斷的提高,并且迅速地在改變著人們的生活方式。人們在不斷探討、改造、認(rèn)識自然的過程中,制造能夠替代人勞動的機(jī)器一直是人類的夢想,也就是所謂的智能化。</p><p>  本次課題設(shè)計的智能機(jī)器車以STC公司的90C516AD單片機(jī)為主要控制核心,通過遙控智能機(jī)器車使其具有前進(jìn)、后退、停止的功能,通過紅外尋跡使其

3、能夠自動根據(jù)一定軌跡行進(jìn)。同時,配合其他項目的紅外避障與超聲測距系統(tǒng),實現(xiàn)該智能機(jī)器車的自動避障與檢測距離功能。</p><p>  智能機(jī)器車主要由單片機(jī)控制模塊、無線遙控模塊、紅外尋跡模塊、紅外避障模塊、超聲測距模塊電機(jī)驅(qū)動模塊,液晶顯示模塊組成。通過單獨(dú)對各個模塊的安裝、調(diào)試,保證各個子模塊的正常工作,得到正確的信號輸出。然后把各個模塊組合起來,對90C516AD單片機(jī)寫入程序,將各模塊整合成一個完整的系統(tǒng)

4、,完成本次課題設(shè)計。</p><p>  關(guān)鍵詞: 智能化;控制;自動尋跡;紅外遙控;</p><p><b>  ABSTRACT</b></p><p>  Contemporary, intelligent machine car as the future robot prototype, is a research hot spot,

5、 has the very high research value. And at present, the intelligent machines has already developed in machinery, electronics, metallurgy, transportation, aerospace, defense and other fields. In recent years, the robot'

6、;s intelligence level continues to increase, and quickly changing people's way of life. People constantly explore, in the process of transformation, the nature, make machine can replace the hu</p><p>  T

7、his topic design of intelligent machine car is on STC company of 90 MCU as main control core, through the remote control car intelligent machines make it has the function of forward, backward, stop automatically by infra

8、red tracing according to a certain path. At the same time, cooperate with other projects infrared obstacle avoidance and the ultrasonic ranging system, the realization of the intelligent machine car automatic obstacle av

9、oidance and detection distance function.</p><p>  The intelligent car is made up of MCU module, wireless remote control module, Infrared tracing module, the infrared obstacle avoidance module, ultrasonic dis

10、tance measuring module, motor drive module and liquid crystal display module. First, we should install and test every module. And, we should make sure have a good function and can send out a right order. Second, we shoul

11、d combine every module and write a program to our car. So, we will have an integral system to complete task.</p><p>  Keyword: intelligentize; regulate; tracking; infrared remote

12、0;control ;intelligent car</p><p><b>  目錄</b></p><p><b>  1 引言1</b></p><p>  1.1 智能小車的意義和作用1</p><p>  1.2 智能小車的現(xiàn)狀1</p><p

13、>  1.3 小車智能化的實現(xiàn)方法1</p><p><b>  2 總體設(shè)計2</b></p><p>  2.1 總方案概述2</p><p>  2.2 各模塊分析總結(jié)2</p><p>  2.2.1 主控模塊方案分析、比較與選擇2</p><p>  2.2.2 尋跡模

14、塊方案分析、比較與選擇3</p><p>  2.2.3遙控模塊方案分析、比較與選擇3</p><p>  2.3 總體設(shè)計框圖方案4</p><p><b>  3 硬件設(shè)計5</b></p><p>  3.1 單片機(jī)控制模塊5</p><p>  3.1.1 晶振電路6&l

15、t;/p><p>  3.1.2 復(fù)位電路6</p><p>  3.1.3 串口接口電路7</p><p>  3.2 紅外無線遙控模塊7</p><p>  3.2.1 紅外遙控的工作原理8</p><p>  3.2.2 TC9012遙控發(fā)射器8</p><p>  3.2.3

16、LT0038遙控接收電路9</p><p>  3.3 紅外尋跡模塊10</p><p>  3.3.1 模塊系統(tǒng)分析10</p><p>  3.3 電機(jī)控制模塊12</p><p>  3.3.1 驅(qū)動芯片L293D的硬件結(jié)構(gòu)12</p><p>  3.3.2 驅(qū)動芯片L293D的編程邏輯12<

17、;/p><p>  3.4 液晶顯示模塊13</p><p>  3.4.1 液晶顯示器的硬件結(jié)構(gòu)13</p><p>  3.4.2 液晶顯示器時序控制14</p><p><b>  4 軟件設(shè)計15</b></p><p>  4.1 主程序編程思路框圖15</p>&

18、lt;p>  4.2 各模塊程序編程思路框圖16</p><p>  4.2.1 紅外遙控模塊接受中斷程序編程思路框圖16</p><p>  4.2.2尋跡模塊編程思路框圖16</p><p>  4.2.3電機(jī)模塊編程思路框圖17</p><p>  4.3各模塊源程序17</p><p>  4.

19、3.1 紅外遙控源程序17</p><p>  4.3.2 自動尋跡模塊源程序18</p><p>  4.3.3 電機(jī)模塊源程序19</p><p>  4.3.4 液晶模塊源程序19</p><p>  5 制作與調(diào)試24</p><p>  5.1 使用的儀器儀表和軟件24</p>&l

20、t;p>  5.2 軟件的調(diào)試24</p><p>  5.3 各模塊的調(diào)試24</p><p>  5.3.1 自動尋跡模塊調(diào)試24</p><p>  5.3.3 紅外遙控模塊的調(diào)試24</p><p>  5.4 聯(lián)合調(diào)試25</p><p>  6 結(jié)論與展望26</p><

21、;p><b>  致 謝27</b></p><p><b>  參考文獻(xiàn)28 </b></p><p><b>  1 引言</b></p><p>  1.1 智能小車的意義和作用</p><p>  自第一臺工業(yè)機(jī)器人誕生以來,機(jī)器人的發(fā)展已經(jīng)遍及機(jī)械、電子、

22、冶金、交通、宇航、國防等領(lǐng)域。而近年來機(jī)器人的智能水平在不斷的提高,并且迅速地在改變著人們的生活方式。人們在不斷探討、改造、認(rèn)識自然的過程中,制造能夠替代人勞動的機(jī)器一直是人類的夢想,也就是所謂的智能化。</p><p>  而智能化,在計算機(jī)控制領(lǐng)域中,簡單的可以解釋為:人為預(yù)置已經(jīng)設(shè)計好的程序,通過機(jī)器人對外部世界信息的收集和處理,計算機(jī)按程序運(yùn)行做出相應(yīng)的動作,從而使機(jī)器人能對外部世界做出有效的反應(yīng)。在這個

23、過程中,無需人為的操作,機(jī)器人便能實現(xiàn)自動化的運(yùn)行。</p><p>  1.2 智能小車的現(xiàn)狀</p><p>  現(xiàn)有的智能小車發(fā)展得很快,從機(jī)械到只能,從智能玩具到其它各行業(yè),都有較好的實質(zhì)成果。其基本功能均可實現(xiàn)尋跡、避障、檢測貼片、尋光入庫、避崖等基本功能,這幾節(jié)的電子設(shè)計大賽智能小車又在向聲控系統(tǒng)發(fā)展。而目前比較出名的飛思卡爾智能小車更是走在前列。</p><

24、;p>  1.3 小車智能化的實現(xiàn)方法</p><p>  智能化并不是一件簡單的事情,需要很多器件、模塊共同運(yùn)作,通過各種傳感器,動力傳送,控制中心相互協(xié)同。</p><p>  就傳感器而言,目前隨著科學(xué)技術(shù)的發(fā)展,由于檢測的原理、形式多樣,機(jī)器人的感覺傳感器種類越來越多。其中,在這么多種傳感器中,紅外傳感器在智能控制中一直很重要,也經(jīng)常被會使用到。對于與其他傳感器,尤其是昂貴的

25、器件,如CCD傳感器而言,它是一種既廉價又簡單的傳感器,在較長的控制距離里,能使很多復(fù)雜的動作更加簡潔化。在應(yīng)用中,它通常作為自動行走和駕駛的重要部件。</p><p>  無線遙控、自動尋跡模塊是這次實現(xiàn)小車智能化的重點(diǎn),主要是基于紅外控制原理基礎(chǔ)上開發(fā)的應(yīng)用系統(tǒng),智能化使得小車實現(xiàn)遠(yuǎn)程無線控制轉(zhuǎn)動方向、移動,自動識別路線,判斷并自動選擇正確的行進(jìn)路線。</p><p>  集大量綜合性

26、模塊于一體,該智能小車可以作為機(jī)器人的典型代表。它可以分為三大組成部分:傳感器檢測部分、執(zhí)行部分、CPU。利用多種傳感器器件模塊,除了可以實現(xiàn)無線控制、自動尋跡兩個功能,還可以擴(kuò)展自動避障、超聲測距,溫度檢測等。由于本次功能實現(xiàn)難度不大,需要的精度不高,所以本次小車的傳感器主要采用的正是上述提到的紅外傳感器,而其智能小車的執(zhí)行部分,則是由直流減速電機(jī)來充當(dāng)?shù)模饕刂菩≤嚨男羞M(jìn)方向和速度。CPU使用STC90C516AD單片機(jī),配合軟件

27、編程實現(xiàn)。</p><p><b>  2 總體設(shè)計</b></p><p><b>  2.1 總方案概述</b></p><p>  本次的課題,主要是以智能機(jī)器小車硬件為載體,通過工程討論分配,以實現(xiàn)其載體上的各種模塊的功能為手段,最終結(jié)合,能夠在小車達(dá)到以下功能:無線遙控功能、自動避障功能、自動尋跡功能,超聲測距。

28、</p><p>  在小車開發(fā)電機(jī)驅(qū)動系統(tǒng)的過程中,為了避免開發(fā)兩電機(jī)同步轉(zhuǎn)速的繁瑣算法,此次設(shè)計作品以高電壓,高電流,四通道驅(qū)動集成的芯片L293D來同時驅(qū)動兩直流減速電機(jī)。</p><p>  而位于機(jī)器車前端左右的兩只紅外發(fā)射管和中端的一只紅外接收模塊則構(gòu)成紅外傳感避障系統(tǒng),主要用于檢測前方的障礙物。當(dāng)紅外光線當(dāng)遇到淺色物體時,光線被反射,當(dāng)遇到深色物體時,光線被吸收,通過紅外接收

29、產(chǎn)生的電信號,單片機(jī)進(jìn)行判斷、控制電機(jī),實現(xiàn)轉(zhuǎn)向。</p><p>  同時,小車底座前段的5個光敏傳感器對于光線異常敏感,根據(jù)光線的強(qiáng)弱使得自身內(nèi)部電阻變化而產(chǎn)生不同的信號,探測地面的情況,則可以實現(xiàn)自動尋跡功能。具體原理是利用光色吸收及反射:通過前段發(fā)光二極管發(fā)射光線,當(dāng)遇到淺色地面時,光線被反射回,當(dāng)遇到深色地面,光線被吸收。</p><p>  另外,在實現(xiàn)超聲測距功能的過程中,使

30、用的是HY-SRF05</p><p>  而遙控系統(tǒng)由紅外發(fā)射遙控鍵盤和紅外集成接收芯片LT0038這兩部分組成。顯示系統(tǒng)由最常見的1602液晶模塊構(gòu)建。</p><p>  最后由控制單元單片機(jī)90C516AD處理數(shù)據(jù)后通過匯編程序有序合理的將各模塊信號整合在一起并完成相應(yīng)動作,實現(xiàn)了智能控制。</p><p>  2.2 各模塊分析總結(jié)</p>

31、<p>  由于本次設(shè)計涉及的模塊比較多,且在項目模塊劃分中,我主要負(fù)責(zé)的是無線遙控及自動尋跡功能,因此在本次模塊方案的分析選擇上,僅對于上述兩個功能涉及的模塊進(jìn)行詳細(xì)分析,結(jié)合課題設(shè)計的實際情況,選擇適合于本次課題設(shè)計的相應(yīng)模塊元件,進(jìn)而得出設(shè)計總方案。</p><p>  2.2.1 主控模塊方案分析、比較與選擇</p><p>  方案一:采用分立式的小單元數(shù)字控制電路組合

32、,對傳感器收集的信號進(jìn)行分流分析與處理。以外界信號(對自動尋跡電路、自動避障電路、遙控電路、超聲測距收集的)作為數(shù)字電路的輸入,由小單元數(shù)字電路組合作為控制單元,控制智能機(jī)器車的動作。</p><p>  方案二:采用STC 90C516AD作為單片機(jī)主控模塊。利用編程,能任意用各種占空比脈沖作為時序,進(jìn)行傳感器信號的采集,如:可進(jìn)行在自動尋跡電路上光敏傳感器對路況進(jìn)行連續(xù)的探測,在自動避障電路和遙控電路上紅外集

33、成探頭對紅外線信息的檢測,在超聲測距模塊對超聲反射距離的信息采集。</p><p>  通過比較以上兩種方案,決定采用方案二作為主控模塊方案。</p><p>  2.2.2 尋跡模塊方案分析、比較與選擇</p><p>  方案一:采用紅外發(fā)射管和接收管作為尋跡傳感器。紅外發(fā)射管發(fā)射紅外線,當(dāng)紅外線遇到淺色物體時被反射,紅外接收管進(jìn)行接收,經(jīng)芯片處理后輸出低電平

34、;當(dāng)紅外線遇到深色物體時大部分的光線被吸收,接收管接收不了反射的信號,芯片因而輸出高電平。但紅外線信號沒有經(jīng)過編碼,僅由高低電平?jīng)Q定,極易受到外界光線的影響,使信號的發(fā)射與接收出現(xiàn)不同程度的失真,造成信號被誤判。</p><p>  方案二:采用光敏傳感器組成尋跡電路的形式。光敏傳感器由五個相應(yīng)的光敏電阻和發(fā)光二極管組成,能夠探測地面情況,通過發(fā)光二極管發(fā)射光線,當(dāng)遇到淺色地面,光線被反射,當(dāng)遇到深色地面,光線被

35、吸收。在智能小車尋跡的過程中,采用的是黑色膠帶,當(dāng)遇到黑帶時,光線被吸收,可以檢測到輸入電平為高電平,當(dāng)遇到非黑帶時,光線被反射,輸入電平為低電平,再通過單片機(jī)采用查詢方式,程序控制機(jī)器車的輪子來實現(xiàn)轉(zhuǎn)向,達(dá)到尋跡的功能。</p><p>  通過比較以上兩種方案,決定采用方案二作為自動尋跡模塊方案。</p><p>  2.2.3遙控模塊方案分析、比較與選擇</p><

36、;p>  方案一:紅外遙控系統(tǒng),由發(fā)射和接收兩大部分組成,應(yīng)用編碼/解碼專用集成電路芯片來進(jìn)行控制操作,發(fā)射部分包括LED紅外發(fā)送器、編碼調(diào)制、鍵盤矩陣部件;接收部分包括光、電轉(zhuǎn)換放大器、解調(diào)、解碼電路等,而且使用的時候必須將遙控器前的紅外發(fā)射孔對準(zhǔn)接收管。</p><p>  方案二:超聲波遙控是利用超聲波來傳送指令的遙控,可以應(yīng)用于需要遙控、遙測的場合。</p><p>  綜合

37、比較方案一與方案二的設(shè)計,決定采用方案一作為遙控模塊方案。</p><p>  2.3 總體設(shè)計框圖方案</p><p>  本次課題設(shè)計的系統(tǒng)控制核心為90C516AD單片機(jī),通過單片機(jī)的端口脈沖時序控制,使得自動尋跡、自動避障、無線遙控和超聲測距的傳感器對外部環(huán)境的探測得到信息,經(jīng)芯片處理后以高低電平的形式送到51單片機(jī)各個端口進(jìn)行處理,最后單片機(jī)把處理結(jié)果送給兩個電機(jī)及液晶顯示屏,

38、控制智能機(jī)器車的運(yùn)行,相應(yīng)模式顯示。達(dá)到目標(biāo),實現(xiàn)上述的4種功能。如下圖1。</p><p><b>  圖1 總體設(shè)計框圖</b></p><p>  注:已劃線模塊為本人本次所負(fù)責(zé)的智能機(jī)器小車項目設(shè)計</p><p><b>  3 硬件設(shè)計</b></p><p>  本次課題由本人負(fù)責(zé)的

39、系統(tǒng)硬件模塊主要由五部分組成,分別是單片機(jī)控制模塊、自動尋跡模塊、紅外無線遙控模塊、液晶顯示模塊和電機(jī)控制模塊。以下對每個模塊作較為詳細(xì)的說明。</p><p>  3.1 單片機(jī)控制模塊</p><p>  采用STC公司生產(chǎn)的90C516AD單片機(jī)作為核心控制處理器,而整個單片機(jī)控制系統(tǒng)主要由最小單片機(jī)系統(tǒng)以及外圍信號端口I/O口組成,其中最小系統(tǒng)除單片機(jī)外,還包括接地電源,CPU時

40、序控制電路(一般由12M晶振和兩個30p電容組成),復(fù)位電路。通過以上三部分電路,單片機(jī)才能夠正常工作。</p><p>  STC90C516AD是一種低功耗、高性能COMS 8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用宏晶公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編

41、程Flash,使得STC90C516AD能夠為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、高效的解決方案。利用STC90C516AD的I/O端口對傳感器信號進(jìn)行實時判斷監(jiān)控來控制直流電機(jī)做出相應(yīng)的反應(yīng)。圖2是STC90C516AD單片機(jī)的原理圖。</p><p>  圖2 STC90C516AD最小單片機(jī)原理圖</p><p>  3.1.1 晶振電路</p><p>  S

42、TC90C516AD單片機(jī)內(nèi)部有一個用于構(gòu)成振蕩器的反相放大器,而XTAL1和XTAL2分別是放大器的輸入和輸出端。通過外接晶振以及電容C1和C2構(gòu)成并聯(lián)諧振回路,接在放大器的反饋回路中,構(gòu)成自激振蕩器。可產(chǎn)生充當(dāng)時鐘的信號。</p><p>  注:如果選擇從外部時鐘源驅(qū)動器件,XTAL2可以不接,只需要從XTAL1接入,下圖圖3和圖4可看到單片機(jī)和其他器件分別是如何結(jié)合,構(gòu)成內(nèi)部振蕩器和外部振蕩器的。<

43、/p><p>  圖3 內(nèi)部振蕩電路連接圖 圖4 外部振蕩電路連接圖</p><p>  3.1.2 復(fù)位電路</p><p>  復(fù)位電路的基本功能是:當(dāng)一旦給系統(tǒng)上電,提供復(fù)位信號。初始化給單片機(jī)參數(shù)。</p><p>  通常復(fù)位電路有上電自動復(fù)位和按鈕復(fù)位兩種方式。所謂上電復(fù)位,是指計算機(jī)加電瞬間,要在RST

44、引腳出現(xiàn)大于10MS的正脈沖,自動使單片機(jī)進(jìn)入復(fù)位狀態(tài)。而按鈕復(fù)位是指用戶按下“復(fù)位”按鈕后,才使單片機(jī)進(jìn)入復(fù)位狀態(tài)。</p><p>  如圖5,上電時,通過電阻R37提供高電平給RESET端,此時為上電復(fù)位,同時給電容E1充電。按鈕復(fù)位時,按下按鈕S3,電容E1放電,給RESET提供高電平,此為按鈕復(fù)位。圖5是復(fù)位電路的原理圖。</p><p>  圖5 復(fù)位電路的原理圖</p&

45、gt;<p>  (注:為可靠起見,在上電后,直至系統(tǒng)電源穩(wěn)定,撤銷復(fù)位信號時,電源需穩(wěn)定后還要經(jīng)過一定的延時才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分合過程中引起的抖動而影響復(fù)位。其中單片機(jī)復(fù)位電路參數(shù)的選定須在振蕩穩(wěn)定后保證復(fù)位高電平持續(xù)時間大于2個機(jī)器周期。這一步驟完全可通過器件搭建完成。)</p><p>  3.1.3 串口接口電路</p><p>  給單片機(jī)上電,

46、將RST置高電平,然后向單片機(jī)串行端口發(fā)送編程命令:</p><p>  被燒寫的單片機(jī)必須已經(jīng)接上電源、晶振,可以正常運(yùn)作,即具備了最小系統(tǒng)的單片機(jī)。</p><p>  單片機(jī)及其外部接口電路如圖6所示。</p><p><b>  圖6 串口接口電路</b></p><p>  3.2 紅外無線遙控模塊</

47、p><p>  紅外無線遙控模塊主要是通過對單片機(jī)控制時序脈沖,完成調(diào)制及解調(diào)里那個過程,利用紅外遙控發(fā)射、紅外遙控接收兩部分控制器的相互配合,實現(xiàn)對智能機(jī)器車的無線遙控功能,從而控制小車的停啟、進(jìn)退、轉(zhuǎn)向等動作。</p><p>  3.2.1 紅外遙控的工作原理</p><p>  通用紅外遙控系統(tǒng)由發(fā)射和接收兩各部分組成,此次課題設(shè)計應(yīng)用的是編碼、解碼專用集成電路

48、芯片來進(jìn)行控制操作。發(fā)射部分的構(gòu)成包括鍵盤矩陣、編碼調(diào)制、LED紅外發(fā)送器;接收部分包括光電轉(zhuǎn)換放大器、解調(diào)、解碼電路等主要的部分。整個紅外遙控原理的系統(tǒng)框圖如圖7所示。</p><p>  圖7 紅外遙控原理系統(tǒng)框圖</p><p>  3.2.2 TC9012遙控發(fā)射器</p><p>  遙控發(fā)射器專用芯片根據(jù)編碼格式的不同,大致可以分成兩類,分別是脈沖寬度

49、調(diào)制和脈沖相位調(diào)制,其中由于脈沖寬度調(diào)制解碼相對比較容易,其集成度較高,價格便宜,使得脈沖寬度調(diào)制的運(yùn)用較脈沖相位調(diào)制來得廣泛。</p><p>  而本次課題采用的紅外遙控發(fā)射器是TC9012。 TC9012是一塊用于東芝系列紅外遙控系統(tǒng)中的專用發(fā)射集成電路,采用COMS工藝制造。它可外接32按鍵,提供8種用戶編碼,另外還具有3種雙重按鍵功能。其結(jié)構(gòu)框圖、管腳圖、管腳圖說明分別如圖8、圖9、圖10所示。<

50、/p><p>  圖8 TC9012結(jié)構(gòu)框圖</p><p>  圖9 TC9012管腳圖</p><p>  圖10 TC9012管腳說明</p><p>  3.2.3 LT0038遙控接收電路</p><p>  LT0038是用于紅外遙控接收的小型一體化接收設(shè)備,集成紅外線的接收、放大、調(diào)解功能,不需要任何外接元件

51、,就能完成從紅外線接收到輸出與TTL電平信號兼容的所有工作,且其體積和普通的三極管大小差不多,適合于各種紅外遙控和紅外數(shù)據(jù)傳輸,中心頻率為38.0KHz。接收器對外只有3個引腳,分別為OUT、GND、VCC,與單片機(jī)接口非常方便。LT0038的示意圖如圖3-10所示。</p><p>  圖11 LT0038示意圖</p><p>  在紅外接收模塊電路中,OUT接單片機(jī)的P3.3接口,作

52、為紅外接收模塊的輸出,由單片機(jī)做出判斷,從而控制電機(jī)的停止或轉(zhuǎn)向。此模塊實物圖及原理圖如圖11和圖12所示。</p><p>  圖11 紅外遙控接收模塊實物圖</p><p>  圖12 紅外遙控接收模塊原理圖</p><p>  3.3 紅外尋跡模塊</p><p>  尋跡是指小車在白色地板上循黑線行走,本系統(tǒng)采取的方法是紅外探測法,即

53、利用紅外線在不同顏色的物體表面具有不同的反射性質(zhì)的特點(diǎn),在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時發(fā)生漫反射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光。由此過程來改變接收管的輸出電壓,單片機(jī)以電壓的變化為依據(jù)來執(zhí)行小車電機(jī)確定行走路線。</p><p>  3.3.1 模塊系統(tǒng)分析</p><p>  圖3-8為紅外線

54、尋跡安裝圖,圖12為尋跡模塊實現(xiàn)原理圖,分析如下:</p><p>  圖12 紅外線尋跡安裝圖</p><p>  圖13 尋跡模塊原理圖</p><p>  如圖13是整個紅外線尋跡過程實現(xiàn)的原理圖。</p><p>  而本模塊采用的光敏傳感器由五個光敏電阻和發(fā)光二極管組成,它能夠探測地面情況,發(fā)光二極管發(fā)射光線,遇到淺色地面光線被反射

55、,遇到深色地面光線被吸收。當(dāng)智能機(jī)器車的遇到黑帶時,光線被吸收,可以檢測到輸入電平為高電平,當(dāng)遇到非黑帶時,光線被反射,輸入電平為低電平。圖14為光敏電阻的實物圖。</p><p><b>  圖14 光敏電阻</b></p><p>  當(dāng)尋跡模塊獲得CON5端口的五個信號后,經(jīng)74HC245鎖存輸入到單片機(jī)中,再通過單片機(jī)采用查詢方式,程序控制機(jī)器車的輪子來實現(xiàn)轉(zhuǎn)

56、向,達(dá)到尋跡的功能。</p><p>  其中,74HC245中進(jìn)行是帶有使能功能的八位雙向總線驅(qū)動器,這種八位總線收發(fā)器是為數(shù)據(jù)總線間時行異步兩路通信而設(shè)計的。圖2中DB0-DB7接74HC573鎖存器(圖15)和單片機(jī)P0.0-P0.7口。</p><p>  圖15 74HC245原理圖</p><p>  3.3 電機(jī)控制模塊</p><

57、;p>  電機(jī)控制方式根據(jù)驅(qū)動方式的不一樣,大致可以分為兩種,分別是通過單片機(jī)直接控制和通過電機(jī)驅(qū)動芯片控制。由于本次課題需要同時控制兩部直流減速電機(jī),為了保證其速度的一致性,本次課題采用的第二種電機(jī)控制方式,其電機(jī)驅(qū)動芯片型號為L293D。 </p><p>  3.3.1 驅(qū)動芯片L293D的硬件結(jié)構(gòu)</p><p>  L293D采用的是16引腳DIP封裝,其內(nèi)部集成了雙極型H

58、-橋電路,所有的開量都做成n型。下圖圖16是該芯片引腳原理圖。</p><p>  圖16 L293D驅(qū)動引腳原理圖</p><p>  電機(jī)驅(qū)動一般采用H橋式驅(qū)動電路,L293N內(nèi)部集成了H橋式驅(qū)動電路,從而可以采用L293N電路來驅(qū)動電機(jī)。通過單片機(jī)給予L293N電路PWM信號來控制小車的速度,起停。驅(qū)動原理圖如圖17所示。</p><p>  圖17 L293

59、D驅(qū)動原理圖</p><p>  3.3.2 驅(qū)動芯片L293D的編程邏輯</p><p>  L293D通過內(nèi)部邏輯生成使能信號。H-橋電路的輸入量可以用來設(shè)置馬達(dá)轉(zhuǎn)動方向,使能信號可以用于脈寬調(diào)整(PWM)。另外,L293D將2個H-橋電路集成到1片芯片上,這就意味著用1片芯片可以同時控制2個電機(jī)。每1個電機(jī)需要3個控制信號EN12、IN1、IN2,其中EN12是使能信號,IN1、IN

60、2為電機(jī)轉(zhuǎn)動方向控制信號,IN1、IN2分別為1,0時,電機(jī)正轉(zhuǎn),反之,電機(jī)反轉(zhuǎn)。選用一路PWM連接EN12引腳,通過調(diào)整PWM的占空比可以調(diào)整電機(jī)的轉(zhuǎn)速。選擇一路I/O口,經(jīng)反向器74HC14分別接IN1和IN2引腳,控制電機(jī)的正反轉(zhuǎn)。下表表1為L293D驅(qū)動器管腳賦值表.</p><p>  表1 L293D驅(qū)動器電機(jī)管腳圖賦值表</p><p>  3.4 液晶顯示模塊</p

61、><p>  3.4.1 液晶顯示器的硬件結(jié)構(gòu)</p><p>  液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,有電就有顯示,一般液晶顯示器分類通常可按顯示方式分為段式、字符式、點(diǎn)陣式等。本次課題使用的液晶顯示模塊是屬于字符型液晶顯示的SMC1602A。</p><p>  1602B 可以顯示 2 行 16 個字符,有 8 位數(shù)據(jù)總線D0-D7,

62、和 RS、R/W、EN三個控制端口,工作電壓為5V,并且?guī)в凶址麑Ρ榷日{(diào)節(jié)和背光。由于SMC1602A中內(nèi)袋字符發(fā)生器,因此,只需要在提供該字符對應(yīng)的代碼,通過查詢RAM地址,設(shè)定光標(biāo),即可獲得相應(yīng)的字符。以下圖18、圖19是SMC1602B的實物圖及尺寸圖。</p><p>  圖18 SMC1602B的實物圖</p><p>  圖19 SMC1602B封裝尺寸圖</p>

63、<p>  3.4.2 液晶顯示器時序控制</p><p>  下圖圖20為SMC162液晶顯示器時序控制圖</p><p>  圖20 SMC1602B液晶顯示器的時序控制</p><p><b>  4 軟件設(shè)計</b></p><p>  在本次課題中,以單片機(jī)為控制的核心模塊,因此編程的設(shè)計即為本次課

64、題的重點(diǎn)之一,也是智能機(jī)器車能夠現(xiàn)實智能運(yùn)作的核心所在。如何使本次的編程設(shè)計能夠把從光敏電阻傳感器、紅外接收器LT0038等各個傳感器模塊上收集到的信號數(shù)據(jù)輸入90C516AD單片機(jī)中進(jìn)行處理,并產(chǎn)生相應(yīng)的反應(yīng)動作,控制電機(jī)的運(yùn)作,從而實現(xiàn)智能機(jī)器車的智能化運(yùn)作。以下將通過框圖和說明,從整個工程構(gòu)建設(shè)計思路上進(jìn)行描述。</p><p>  4.1 主程序編程思路框圖</p><p>  系

65、統(tǒng)啟動初始化后,小車能夠進(jìn)行紅外遙控中,但同時掃描紅外發(fā)射器,當(dāng)控制信號(避障信號、超聲測距信號、自動尋跡信號)被紅外接受器接受后,可以進(jìn)入到相應(yīng)的模塊。完成相應(yīng)的動作。其主程序流程圖如21所示。該主程序應(yīng)包括了遙控模塊、紅外避障模塊、和自動尋跡模塊、超聲測距等四大模塊的主要程序框圖。(重點(diǎn):紅外遙控、自動尋跡)</p><p><b>  圖21 主程序框圖</b></p>

66、<p>  注:劃橫線部分為模塊接口,而灰色背景在此次工程中并非本人設(shè)計所負(fù)責(zé)。</p><p>  4.2 各模塊程序編程思路框圖</p><p>  4.2.1 紅外遙控模塊接受中斷程序編程思路框圖</p><p>  以下程序框圖可對比參照4.3.1中源程序。</p><p>  4.2.2尋跡模塊編程思路框圖</p&g

67、t;<p>  以下程序框圖可對比參照4.3.2中源程序。</p><p>  4.2.3電機(jī)模塊編程思路框圖</p><p>  以下程序框圖可對比參照4.3.3中源程序。</p><p>  各模塊源程序附上了自動尋跡模塊源程序、紅外避障模塊源程序和紅外遙控模塊源程序。這些程序與系統(tǒng)的硬件相配合,完整的構(gòu)成了智能機(jī)器車的主體功能。</p>

68、;<p><b>  4.3各模塊源程序</b></p><p>  4.3.1 紅外遙控源程序</p><p>  /**************************************</p><p>  紅外遙控接收解碼中斷服務(wù)子程序,</p><p>  獲得的正確鍵值存在變量 yk_cod

69、e 中</p><p>  **************************************/</p><p>  void accept(void) interrupt 2 //using 3</p><p><b>  {</b></p><p>  uchar i=0;</p><

70、p>  uchar k=0;</p><p>  uchar data code_L=0;</p><p>  uchar data code_H=0;</p><p><b>  EX1=0;</b></p><p>  for(i=0;i<4;i++) //重復(fù)10次,目的是檢測在8820微秒內(nèi)如果出現(xiàn)高

71、電平就退出解碼程序</p><p><b>  {</b></p><p>  DELAY_1(); //調(diào)用882微秒延時子程序</p><p>  if(input) //延時882微秒后判斷P3.2腳是否出現(xiàn)高電平如果有就退出解碼程序</p><p><b>  {</b></p&

72、gt;<p>  goto reti;</p><p><b>  }</b></p><p>  } //以上完成對遙控信號的9000微秒的初始低電平信號的識別。</p><p>  do{;}while(!input); //等待高電平避開9毫秒低電平引導(dǎo)脈沖</p><p&g

73、t;  DELAY_2(); //延時4.74毫秒避開4.5毫秒的結(jié)果碼</p><p>  for(i=0;i<16;i++) //忽略前16位系統(tǒng)識別碼</p><p><b>  {</b></p><p>  do{;}while(!input); //等待地址碼第一位的高電平信號</p>

74、<p>  DELAY_1(); // 高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態(tài)</p><p><b>  if(input)</b></p><p>  { DELAY_3(); } //檢測到高電平1的話,延時1毫秒等待脈沖高電平結(jié)束</p><p><b>  }

75、</b></p><p>  for(k=0 ;k<8 ;k++) //接收一字節(jié)的原碼</p><p><b>  {</b></p><p>  do{;}while(!input); //等待地址碼第一位的高電平信號</p><p>  DELAY_1();</p><

76、;p><b>  if(input)</b></p><p><b>  {</b></p><p>  DELAY_3(); //為1延時</p><p>  code_L^=0x80;</p><p><b>  }</b></p><p&

77、gt;<b>  else</b></p><p>  { code_L&=0x7f; }</p><p><b>  if(k<7)</b></p><p>  code_L>>=1;</p><p><b>  }</b></p>&

78、lt;p>  for(i=0 ;i<8 ; i++) //接收一字節(jié)的反碼</p><p><b>  {</b></p><p>  do{;}while(!input); //等待地址碼第一位的高電平信號</p><p>  DELAY_1();</p><p><b>  if(in

79、put)</b></p><p>  { DELAY_3(); //為1延時</p><p>  code_H ^=0x80;} </p><p>  else{code_H &=0x7f; }</p><p>  if(i<7) code_H>>=1;</p><p>

80、;<b>  }</b></p><p>  if(code_H==(~code_L)) // 如果不等表示接收數(shù)據(jù)發(fā)生錯誤,放棄</p><p>  { yk_code=code_L;</p><p><b>  yk_ok=1; </b></p><p>  updata_flage=0

81、x01;</p><p><b>  }</b></p><p><b>  reti:</b></p><p><b>  EX1=1;</b></p><p><b>  }</b></p><p>  4.3.2 自動尋跡模塊

82、源程序</p><p>  /*********************************</p><p><b>  光敏電阻分布接口</b></p><p>  車身從左到右的應(yīng)的IO為p03,p04,p05,p06,p07;</p><p>  ********************************

83、*/</p><p>  void scanf_obj(void) //尋跡和測障礙物程序</p><p><b>  {</b></p><p>  uchar temp=0,temp1=0,temp3=0;</p><p><b>  cs_245=0;</b></

84、p><p><b>  temp1=P2;</b></p><p><b>  temp=P0;</b></p><p><b>  cs_245=1;</b></p><p>  if((temp&0x70)!=0x70)</p><p><

85、b>  {</b></p><p>  if((temp&0x30)==0x30)</p><p>  { control(1,state3,left_light); } //左外邊檢測到黑線,左轉(zhuǎn)</p><p>  else if((temp&0x60)==0x60)</p><p>  { contro

86、l(1,state2,right_light);}//右外邊檢測到黑線,右轉(zhuǎn)</p><p>  else if((temp&0x08)==0x08) </p><p>  { control(2,state3,left_light); } //左內(nèi)邊檢測到黑線,左轉(zhuǎn)</p><p>  else if((temp&0x80)==0x80)

87、</p><p>  { control(2,state2,right_light);} //右內(nèi)邊檢測到黑線,右轉(zhuǎn)</p><p><b>  }</b></p><p>  P2=temp1 ;</p><p><b>  }</b></p><p>  4.3.3 電機(jī)

88、模塊源程序</p><p>  /*************************************</p><p><b>  小車運(yùn)行控制子程序</b></p><p>  void control(uchar n,//運(yùn)行時間:改變N值可以使當(dāng)前運(yùn)行狀態(tài)的時間</p><p>  uchar state,

89、//運(yùn)行狀態(tài):STATE1-STAT5;請參見"main.h"文件</p><p>  uchar light //狀態(tài)指示燈:比如左轉(zhuǎn)向燈等等;請參見"main.h"文件</p><p><b>  )</b></p><p>  ************************************

90、**/</p><p>  void control(uchar n,uchar state,uchar light)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  light_control(light);//轉(zhuǎn)向指示燈&l

91、t;/p><p>  P2 =state; //行使方向改變</p><p>  for(i=n;i>0;i--)</p><p>  {delay(1000);}</p><p>  P2=state5;</p><p>  delay(1000);</p><p&

92、gt;  light_control(light_off);//關(guān)閉</p><p>  P2=state1;</p><p>  delay(1000);</p><p><b>  }</b></p><p>  4.3.4 液晶模塊源程序</p><p>  /**************

93、***************************</p><p>  程序名稱:lcd1602底層驅(qū)動子程序</p><p>  ******************************************/</p><p>  #include <REG52.h></p><p>  sbit LCM_RS

94、= P1^5; //定義引腳</p><p>  sbit LCM_RW = P1^6;</p><p>  sbit LCM_E = P1^7 ;</p><p>  #define LCM_Data P0</p><p>  #define Busy 0x80 //用于檢測LCM狀態(tài)字中的Busy標(biāo)識</p&g

95、t;<p>  #define uchar unsigned char</p><p>  #define true 1 </p><p>  #define false 0</p><p>  void Delay5Ms(void);</p><p>  void Delay400Ms(void);</p>&

96、lt;p><b>  //讀狀態(tài)</b></p><p>  unsigned char ReadStatusLCM(void)</p><p><b>  {</b></p><p>  LCM_Data = 0xFF;</p><p>  LCM_RS = 0;</p>&l

97、t;p>  LCM_RW = 1;</p><p>  LCM_E = 0;</p><p>  LCM_E = 0;</p><p>  LCM_E = 1;</p><p>  while (LCM_Data & Busy); //檢測忙信號</p><p>  return(LCM_Data);&l

98、t;/p><p><b>  }</b></p><p><b>  //寫數(shù)據(jù)</b></p><p>  void WriteDataLCM(unsigned char WDLCM)</p><p><b>  {</b></p><p>  ReadS

99、tatusLCM(); //檢測忙</p><p>  LCM_Data = WDLCM;</p><p><b>  LCM_RS=1;</b></p><p>  LCM_RW = 0;</p><p>  LCM_E = 0; //若晶振速度太高可以在這后加小的延時</p><p>  LC

100、M_E = 0; //延時</p><p>  LCM_E = 0; //延時</p><p>  LCM_E = 1;</p><p><b>  }</b></p><p><b>  //寫指令</b></p><p>  void WriteCommandLCM(un

101、signed char WCLCM,BuysC) //BuysC為0時忽略忙檢測</p><p><b>  {</b></p><p>  if (BuysC) ReadStatusLCM(); //根據(jù)需要檢測忙</p><p>  LCM_Data = WCLCM;</p><p>  LCM_RS = 0;<

102、;/p><p>  LCM_RW = 0;</p><p>  LCM_E = 0;</p><p>  LCM_E = 0;</p><p>  LCM_E = 0; //延時</p><p>  LCM_E = 1;</p><p><b>  }</b></p>

103、;<p><b>  //讀數(shù)據(jù)</b></p><p>  /*unsigned char ReadDataLCM(void)</p><p><b>  {</b></p><p>  LCM_RS = 1;</p><p>  LCM_RW = 1;</p><

104、;p>  LCM_E = 0;</p><p>  LCM_E = 0;</p><p>  LCM_E = 1;</p><p>  return(LCM_Data);</p><p><b>  } */</b></p><p>  void LCMInit(void) //LCM初

105、始化</p><p><b>  {</b></p><p>  Delay400Ms();</p><p>  LCM_Data = 0;</p><p>  WriteCommandLCM(0x38,0); //三次顯示模式設(shè)置,不檢測忙信號</p><p>  Delay5Ms();<

106、/p><p>  WriteCommandLCM(0x38,0);</p><p>  Delay5Ms();</p><p>  WriteCommandLCM(0x38,0);</p><p>  Delay5Ms();</p><p>  WriteCommandLCM(0x38,1); //顯示模式設(shè)置,開始要求每

107、次檢測忙信號</p><p>  WriteCommandLCM(0x08,1); //關(guān)閉顯示</p><p>  WriteCommandLCM(0x01,1); //顯示清屏</p><p>  WriteCommandLCM(0x06,1); // 顯示光標(biāo)移動設(shè)置</p><p>  WriteCommandLCM(0x0C,1);

108、 // 顯示開及光標(biāo)設(shè)置</p><p><b>  }</b></p><p>  //按指定位置顯示一個字符</p><p>  void DisplayOneChar(uchar X, uchar Y, uchar DData)</p><p><b>  {</b></p>&

109、lt;p><b>  Y &= 0x1;</b></p><p>  X &= 0xF; //限制X不能大于15,Y不能大于1</p><p><b>  if (Y) </b></p><p>  X |= 0x40; //當(dāng)要顯示第二行時地址碼+0x40;</p><p>

110、  X |= 0x80; // 算出指令碼</p><p>  WriteCommandLCM(X, 0); //這里不檢測忙信號,發(fā)送地址碼</p><p>  WriteDataLCM(DData);</p><p><b>  }</b></p><p>  /***************************

111、**********************************</p><p>  void DisplayListChar(uchar X, 行地址</p><p>  uchar Y, 列地址</p><p>  uchar ListLength, 字符長度,必須要小于16</p><p>  uchar

112、 *DData, 顯示內(nèi)容首地址</p><p>  uchar n n=ture, 顯示字符串延時,n=false,現(xiàn)實字符串不延時</p><p><b>  );</b></p><p>  *************************************************************/&l

113、t;/p><p>  //按指定位置顯示一串字符(只能寫一行);</p><p>  void DisplayListChar(uchar X, uchar Y,uchar ListLength, uchar *DData,uchar n)</p><p><b>  {</b></p><p><b>  uc

114、har i;</b></p><p><b>  Y &= 0x1;</b></p><p>  X &= 0xF; //限制X不能大于15,Y不能大于1</p><p>  for(i=0;i<ListLength;i++)</p><p><b>  {</b>

115、</p><p>  if (X <= 0xF) //X坐標(biāo)應(yīng)小于0xF</p><p><b>  {</b></p><p>  DisplayOneChar(X, Y, DData[i]); //顯示單個字符</p><p>  if(n==true)Delay400Ms();</p><

116、p><b>  X++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //5ms延時</b></p>

117、<p>  void Delay5Ms(void)</p><p><b>  {</b></p><p>  unsigned int TempCyc = 5552;</p><p>  while(TempCyc--);</p><p><b>  }</b></p>&

118、lt;p><b>  //400ms延時</b></p><p>  void Delay400Ms(void)</p><p><b>  {</b></p><p>  uchar TempCycA = 5;</p><p>  unsigned int TempCycB;</p&g

119、t;<p>  while(TempCycA--)</p><p><b>  {</b></p><p>  TempCycB=7269;</p><p>  while(TempCycB--);</p><p><b>  };</b></p><p>&l

120、t;b>  }</b></p><p>  4.3主程序源程序;</p><p>  void main()</p><p><b>  {</b></p><p>  uchar flage=0x00;</p><p>  led_off();</p><p

121、>  LCMInit();</p><p>  //display();</p><p><b>  Init_T();</b></p><p>  //my_state = MY_CSB;</p><p><b>  while(1)</b></p><p><

122、b>  { </b></p><p>  if((updata_flage==0x01)&&(flage==0x00)) //狀態(tài)的等待。</p><p><b>  { </b></p><p>  WriteCommandLCM(0x01,1); </p><p>  de

123、lay(100);</p><p>  DisplayListChar(0,0,12,talk3,false);</p><p>  flage=0x01;</p><p><b>  } </b></p><p><b>  if(yk_ok)</b></p><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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論