基于單片機的智能跟蹤小車.doc
. 畢 業(yè) 設(shè) 計( 2016 屆)題 目 基于單片機的智能跟蹤小車的設(shè)計以及實現(xiàn) 學 院 物理電氣信息學院 專 業(yè) 電氣工程與自動化 年 級 2012級 學生學號 12012242019 學生姓名 段春瑞 指導教師 白 娜 2016年5月12日基于單片機的智能跟蹤的小車及實現(xiàn)摘 要 智能車輛作為現(xiàn)代社會的新產(chǎn)物,并且在智能車輛開發(fā)出來的各種功能如跟蹤、循跡、避障、自動停泊等,這些功能讓生產(chǎn)工作,日常生活變得更加智能,自動化程度更進一步。目前,關(guān)于智能小車的研究越來越成為社會關(guān)注的焦點。這次的畢業(yè)設(shè)計是將STC89C52單片機為核心,由直流電機作為驅(qū)動,通過紅外線傳感器來發(fā)出跟蹤信號,來實現(xiàn)智能小車的跟蹤功能。論文先對自動跟蹤功能做了整體的介紹,然后對小車的硬件如單片機,傳感器做了介紹。最后在理解硬件的原理的基礎(chǔ)上,使用C語言編程和Keil軟件與燒寫軟件實現(xiàn)自動跟蹤的功能。關(guān)鍵詞:自動跟蹤 單片機 紅外傳感器AbstractIntelligent vehicle as a new product of modern society, and on the basis of intelligent vehicle developed products have become automated logistics transportation,flexible production organization system of key equipment,research and development of intelligent car is becoming the focus of attention.This design is based on STC89C52RC single-chip microcomputer as control core, as by DC motor drive,through infrared sensors to signal tracking,to realize the intelligent car tracing.Paper first made the overall introduction to the automatic tracking function,and then to the car hardware such as single chip microcomputer, sensor is presented.Then on the basis of understanding the principle of hardware,using C language programming and the Keil software and burning software to achieve the function of automatic tracking.Key words:Automatic trackingSingle chip microcomputerInfrared sensor目 錄1. 緒論41.1 課題研究背景41.2 國內(nèi)外發(fā)展狀況41.3 智能跟蹤小車的研究目的41.4 課題研究的意義52. 小車的功能以及設(shè)計62.1 智能跟蹤小車的設(shè)計要求62.2 小車的主要功能63. 智能跟蹤小車的硬件設(shè)計83.1 智能跟蹤小車的硬件組成83.2 STC89C52RC單片機的電路以及引腳介紹83.3電機驅(qū)動模塊103.4傳感器模塊113.5 電源供電系統(tǒng)133.6 LCD1602液晶顯示模塊144. 自動跟蹤系統(tǒng)的軟件設(shè)計154.1 開發(fā)軟件KeiluVision5與STC-ISP的介紹154.2跟蹤系統(tǒng)主程序分析164.3電機驅(qū)動程序174.4紅外傳感器程序184.5 LCD1602液晶顯示程序185.功能測試205.1智能跟蹤小車的功能測試205.2 發(fā)現(xiàn)問題與解決問題的方案206. 結(jié)論和展望216.1 結(jié) 論216.2 展望21參考文獻22謝 辭23附錄一:系統(tǒng)硬件仿真圖24附錄二:紅外遙控程序25附錄三:系統(tǒng)實物圖32緒論1.1 課題研究背景在當今的社會中,企業(yè)的生產(chǎn)技能逐漸提高,在生產(chǎn)過程中對于自動控制技術(shù)的要求也在逐漸提高,在高自動化的生產(chǎn)環(huán)境下,智能車輛的研究與運用越來成為工業(yè)生產(chǎn)的重要設(shè)備。許多科研機構(gòu)都在致力于智能車輛的開發(fā)與應用。智能小車是一個集感應,控制,輔助駕駛,智能操控于一體的系統(tǒng)。在功能性上它可以自動識別并避開障礙物,自動剎車,控制與障礙物或被跟蹤物體的安全距離,測量車速,自動停泊等功能。與一般的車輛系統(tǒng)相比智能車輛擁有以下特點:1)計算機處理系統(tǒng),主要完成對來自攝像機所獲取的圖像的預處理、增強、分析、識別等工作。2)獲得道路路況信息的攝像設(shè)備。3)傳感器設(shè)備,車速傳感器用來獲得當前車速,障礙物傳感器用來獲得前方、側(cè)方、后方障礙物等信息。越來越多的科研項目都在關(guān)注著智能小車的開發(fā)與研究。1.2 國內(nèi)外發(fā)展狀況關(guān)于國外的智能小車的研究狀況可以追溯到20世紀50年代。美國一家電子公司于1954年開發(fā)出了世界上第一臺無人駕駛的自主引導系統(tǒng)的車輛。雖然這個系統(tǒng)智能在固定的線路上直線行駛,但是這卻是智能車輛研究的長足的進步。隨后,關(guān)于智能車輛的研究成果如雨后春筍般的出現(xiàn)在世人面前。到了1980年左右歐洲以及美國等一些發(fā)達國家已經(jīng)將智能車輛控制系統(tǒng)投入到高速公路的使用中,智能小車的研究有了其實際意義。1990年之后美國卡內(nèi)基大學研究的Navlab系列智能小車在傳感器傳輸速度,圖像處理,以及車輛橫向移動等方面都作出了突出的研究成果,這標志著智能車輛即將進入我們的日常生活之中。國內(nèi)關(guān)于智能小車的研究起步相對較晚,在借鑒發(fā)達國家先進的研究成果的基礎(chǔ)之后,我國的科研項目致力于對智能交通系統(tǒng)ITS(Intelligent Transport System)的研究目前我國的交通運輸行業(yè)正在向著交通智能化邁進,相信在不久的將來,我們的出行會更加安全,快捷,智能。1.3 智能跟蹤小車的研究目的智能小車的一般功能包括自動循跡、傳感跟蹤、避障、自動停泊等。人們研究智能小車是為了讓其代替人類完成一些危險的或者十分枯燥的不適宜人類的工作,通過小車的程序化的工作可以節(jié)省物力人力而且可以更高效快捷的完成工作對實現(xiàn)工業(yè)系統(tǒng)的自動化有一定的幫助。關(guān)于智能自動跟蹤小車的研究,它可以幫助工人在工業(yè)工作中取料,運料。還可以在機場幫助下飛機的旅客運送行李,甚至還可以在高爾夫球場扮演“球童”的角色等等??偠灾悄芨櫺≤噷刮覀兊纳罡颖憬荨⑤p松。1.4 課題研究的意義目前,許多國家的重點大學的理工學院都在致力于智能化與自動化系統(tǒng)的研究,國內(nèi)外有許許多多關(guān)于智能機器人的競賽,這其中就包括了智能機器人,智能小車的設(shè)計與研究??梢娭悄苘囕v的研究在全球范圍內(nèi)都被人們所關(guān)注著。智能小車作為智能機器人的典型代表,由傳感、執(zhí)行、控制三大部分組成,本次畢業(yè)設(shè)計所采用的89C52單片機控制,紅外傳感,L293芯片控制的直流電機執(zhí)行運動模塊都是目前比較先進的器件,通過以C語言為基礎(chǔ)的程序編寫可實現(xiàn)智能跟蹤,智能循跡避障,智能停泊等功能。在生產(chǎn)實踐當中智能小車可以運用于工業(yè)生產(chǎn),醫(yī)療考古,生活服務等多方面,極大的方便了人們的生產(chǎn)生活,使我們的世界更加自動化。 該畢業(yè)設(shè)計對于畢業(yè)生來說,在硬件的研究與程序的編寫過程中,可以培養(yǎng)其自動控制系統(tǒng)的操作能力,熟練掌握STC89C52單片機的知識,在電路的設(shè)計過程中對于電機學,電路的相關(guān)知識可以做到溫故而知新。將實踐與理論統(tǒng)一結(jié)合起來,進一步熟悉自動控制系統(tǒng)。2. 小車的功能以及設(shè)計2.1 智能跟蹤小車的設(shè)計要求該系統(tǒng)以STC89C52單片機作為系統(tǒng)的核心,通過紅外線傳感器來檢測到被跟蹤對象所處的位置,將信號反饋給單片機,單片機根據(jù)STC軟件下載到其中的程序作出相應的反應,并將指令下達至電機驅(qū)動模塊然后電機驅(qū)動輪胎作出相應的動作實現(xiàn)跟蹤的功能。在下載紅外避障跟蹤程序的hex文件到單片機之前,應當做好充分的準備工作。首先應當安裝好開發(fā)板的驅(qū)動以及STC燒寫軟件,在設(shè)備管理器中查看USB端口的號碼如COM6。然后安裝KeiluVision4軟件為編程做準備。最后在使用紅外避障程序之前先將調(diào)用函數(shù)編譯好以備調(diào)用,所用的函數(shù)有小車左轉(zhuǎn)函數(shù)、小車右轉(zhuǎn)函數(shù)、電機后退函數(shù)、小車前進函數(shù)。這樣小車的功能函數(shù)就不會顯得過于冗長,而且不影響跟蹤功能的實現(xiàn)。將程序下載到單片機之后,檢測小車能否按照要求對目標進行跟蹤實現(xiàn)功能,總結(jié)實驗中發(fā)現(xiàn)的不足,進行總結(jié)與改進,盡最大可能滿足畢業(yè)設(shè)計的要求。2.2 小車的主要功能自動跟蹤小車的主要功能有:1、實現(xiàn)對指定物體的紅外感應跟蹤。2、延時50msK4確認是按下之后,蜂鳴器發(fā)出“滴”聲響,然后啟動小車。3、超聲波測距,測量小車與被跟蹤物體之間的距離。4、LCD1602液晶距離顯示:在液晶屏上顯示測得的距離。5、蜂鳴報警器還可以對危險情況進行報警等。對于智能小車更廣泛的更高級的功能來說主要有以下幾點:(1)智能家居的控制輔助:在家庭中,可以用智能小車進行家具、遠程控制家中的家用電器,控制室溫等等。(2)工程安全檢測與受損評估:在工程建設(shè)領(lǐng)域,可對高速公路自動跟蹤,進行道路質(zhì)量檢測和破壞分析檢測;對水庫堤壩、海岸護岸堤、江河大壩進行質(zhì)量和安全性檢測。在制造領(lǐng)域,可用于工業(yè)管道中機械損傷,裂紋等缺陷的探尋,對輸油和輸氣管線的泄漏和破損點的查找和定位等。(3)探測危險與排除險情:在戰(zhàn)場上或工程中,常常會遇到各種各樣的意外。這時,智能化探測小車就會發(fā)揮很好的作用。戰(zhàn)場上,可以使用智能車輛掃除路邊炸彈、尋找和銷毀地雷。民用方面,可以探測化學泄漏物質(zhì),可以進行地鐵滅火,以及在強烈地震發(fā)生后到廢墟中尋找被埋人員等。(4)輔助駕駛系統(tǒng):利用智能感知系統(tǒng)的信息進行決策規(guī)劃,給駕駛員提出駕駛建議或部分地代替駕駛員進行車輛控制操作。主要包括:巡航控制、車輛跟蹤系統(tǒng)、準確泊車系統(tǒng)及精確機動系統(tǒng)。這些高級的智能小車的功能讓我們的生活更加的自動化,讓人類的工作更為安全。智能跟蹤小車雖然比不上它們的功能強大,但是也為我們的生活提供了便利。如商場里的自動追蹤購物車、機場的自動行李運輸車等。3. 智能跟蹤小車的硬件設(shè)計3.1 智能跟蹤小車的硬件組成本次實驗所用到的硬件主要包括:STC89C52RC單片機、HL-1小車底盤、LCD液晶顯示模塊等。各模塊功能為:(1)單片機模塊為總控制模塊,控制其他模塊的工作。(2)HL-1小車底盤包括L293D電機驅(qū)動模塊、電源供電系統(tǒng)、紅外線傳感器模塊、超聲波傳感器模塊以及傳感器指示燈。電機驅(qū)動模塊控制小車的運動狀態(tài),超聲波傳感器模塊負責距離的測量,紅外傳感器負責光感檢測。3.2 STC89C52RC單片機的電路以及引腳介紹圖3-1 STC89C52RC引腳圖STC89C52是一種耗能較低,性能很強的單片機芯片,相比于傳統(tǒng)的單片機芯片89C52在控制上更加靈活1。STC89C52使用經(jīng)典的MCS-51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng)51單片機不具備的功能。其引腳圖如圖3-1所示。STC89C52微處理器的主要功能有:1. 8k可反復擦寫(大于1000次)FLASH ROM;2. 256x8bit內(nèi)部RAM;3. 工作電壓:5.5V3.3V(5V單片機)/3.8V2.0V(3V單片機);4. 工作頻率范圍:040MHz,相當于普通 8051 的 080MHz,實際工作頻率可達48MHz;5. 用戶可以獲得8k字節(jié)的應用程序空間;6. 時鐘頻率0-24MHz;7. 89C52擁有三十二個I/O口并且為雙向,P1P4口為準雙向口,當P0作為h.擴展口時,不需要加入上拉電阻;若作為信息傳遞的I/O接口時需要加入上拉電阻。8. ISP(在系統(tǒng)可編程)/IAP(在應用可編程),無需專用編程器,無需專用仿真器,可通過串口(RxD/P3.0,TxD/P3.1)直接下載用戶程序,數(shù)秒即可完成一片;29. EEPROM功能,看門狗功能;10. 有T0、T1、T2、三個定時器,定時器的位數(shù)為16位;11. 有八個中斷源,其中有兩個為外部的中斷源;12. 用異步串行口(UART),還可用定時器軟件實現(xiàn)多個 UART;13. 工作溫度范圍:-40+85(工業(yè)級)/075(商業(yè)級);PDIP封裝。14. 空閑模式:典型功耗 2mA;15. 正常工作模式:典型功耗4Ma7mA;STC89C52RC單片機的引腳功能說明:第一類:電源及時鐘引腳Vcc,Vss,XTAL1,XTAL2;第二類:控制引腳PSEN,ALE/PROG,EA/Vpp,RESET;第三類:P0,P1,P2,P3引腳(輸入輸出端引腳)P0 口是一個雙功能的八位并行口,字節(jié)地址為80H,位地址為80H87H。端口的各位具有完全相同但又相互獨立的電路結(jié)構(gòu)。P0口作為雙功能口(地址/數(shù)據(jù)復用口和通用I/O口),當P0口用作地址/數(shù)據(jù)復用口時,是一個真正的雙向口,用作與外部儲存器的連接,輸出低八位地址和輸出/輸入8位數(shù)據(jù)。當P0口作為通用I/O口時,需要在片外接上拉電阻,此時端口不存在高阻抗狀態(tài),因此是一個準雙向口;當作為通用的I/O口輸入時,應先向端口輸出鎖存器寫入1。P0口可驅(qū)動8個LS型TTL負載3。P1端口(P1.0P1.7,18引腳):八位,準雙向I/O口,在內(nèi)部具有自帶的上拉電阻。P1的輸出緩沖器可驅(qū)動(吸收或者輸出電流方式)4個TTL輸入。對端口寫入“1”時,通過內(nèi)部的上拉電阻把端口拉到高電位,這是可用作輸入口。P1口作輸入口使用時,因為有內(nèi)部上拉電阻,那些被外部拉低的引腳會輸出一個電流(I)3。P2端口(P2.0P2.7,2128引腳):P2口是一個自帶內(nèi)部上拉電阻的8位雙向 I/O 端口當單片機擴展外部儲存器及I/O口時,P2口作為高八位地址線總線用,輸出高八位地址,P2口也可以當做普通的I/O口使用。當作為普通的I/O口輸入時,應先向端口輸出鎖存器寫入1;P2口與P0口輸出的低八位地址一起構(gòu)成16位地址,可以尋址64KB的地址空間,在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器時,P2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器時,P2口引腳上的內(nèi)容(就是專用寄存器(SFR)區(qū)中的P2寄存器的內(nèi)容),在整個訪問期間不會改變3。P3端口為P3.0至P3.7端口(共八個引腳),P3端口為雙向的輸入輸出端口,字長為8位,帶有上拉電阻,工作時應當將鎖存器置為1。在實際的工作之中,復位時P3端口會自動恢復到1,可以直接進入到第二功能的操作。若不使用第二功能時,則自動進入第一功能的使用。此外P3端口的緩沖器BUF3,BUF2的輸出端作為第二,第一功能的輸入。3.3電機驅(qū)動模塊本次畢業(yè)設(shè)計跟蹤小車所用的電機是L293芯片所驅(qū)動的電機。該芯片的額定電壓高為36伏特,額定電流為1安培左右,有十六個引腳。驅(qū)動器為雙H橋的高電壓,較大電流的全橋驅(qū)動器。該芯片可以用來驅(qū)動電感負載例如直流電機,電磁繼電器等。并且此芯片可以用來驅(qū)動兩個直流電機,也就是說一個芯片就可以控制電機驅(qū)動模塊。直流電機具有優(yōu)越的調(diào)速性能,高性能可調(diào)速拖動都在采用直流電機。4直流電機驅(qū)動模塊的參數(shù):輸入邏輯電壓:5.0V。輸入電機電壓:5.0V-36.0V。輸出驅(qū)動電流:1000mA。尺寸:長為34毫米 寬為18毫米 高為8毫米 電機驅(qū)動模塊引腳圖如圖3-2所示:圖3-2 電機驅(qū)動模塊引腳圖 驅(qū)動模塊的接線方式:P1:控制M1電機PWM1輸入引腳。D1:控制M1電機轉(zhuǎn)向輸入引腳。P2:控制M2電機PWM2輸入引腳。D2:控制M2電機轉(zhuǎn)向輸入引腳。5V:邏輯電源+5V接口。VC:輸入電機驅(qū)動電壓接口。GND:電源地接口。M1+:M1電機驅(qū)動輸出引腳正極。M1-:M1電機驅(qū)動輸出引腳負極。M2+:M2電機驅(qū)動輸出引腳正極。M2-:M2電機驅(qū)動輸出引腳負極。3.4傳感器模塊超聲波測距是利用超聲脈沖回波渡越時間法來實現(xiàn)的。若傳感器所發(fā)出的脈沖信號至接收的時間為t,傳播速度為c(傳播介質(zhì)為空氣),則可由D=ct/2公式計算出目標物體與傳感器的距離5。這次智能小車畢業(yè)設(shè)計使用的是HC-SR04超聲波測距模塊。HC-SR04超聲波測距模塊可提供2cm-400cm的非接觸式距離感測功能,測距精度可達高到3mm;模塊包括超聲波發(fā)射器、接收器與控制電路。其主要的功能有:1、距離的測量,2、溫度的測量,3光感度測量。超聲波傳感器時序圖如下圖3-3所示所示:圖3-3 超聲波傳感器時序圖 超聲波傳感器工作原理圖如下圖3-4所示:圖3-4超聲波傳感器工作原理圖該模塊的基本工作原理:1.采用I/O口TRIG觸發(fā)測距,給最少10us 的高電平信號;2.八個40000Hz的方波由模塊發(fā)送,并且由模塊自動檢測是否有信號的反饋;3.若檢測到返回信號,ECHO可以通過I/O端口輸出高電平信號,此信號持續(xù)的時間是超聲波信號發(fā)出至返回的時間,所以測試的距離為高電平的時間乘以聲速除以二(聲音在空氣中的傳播速度為340米每秒)。該模塊的基本電氣參數(shù):表3-1 超聲波模塊電氣參數(shù)表工作電壓工作電流工作頻率最遠射程測量角度輸入觸發(fā)信號輸出回響信號輸出與射程關(guān)系規(guī)格尺寸5V15mA40KHz4m1510s TTL脈沖TTL電平反比45*20*15紅外線傳感器模塊采用的是由RPR220紅外傳感器與LM324芯片配合控制的紅外傳感器模塊,其原理圖如圖3-5所示:圖3-5 紅外傳感器原理圖上圖的紅外避障模塊展示了其基本的工作原理,小車的LM324運算放大器是由四個運放器組成的模塊。RPR220發(fā)射的紅外線經(jīng)反射回到接受管經(jīng)放大電路放大后將信號傳輸給單片機。反應在LED燈上則是左側(cè)有信號L4亮右側(cè)有信號L3亮。模塊參數(shù)說明:反射率和物體的面積是影響探測的主要因素,黑色的傳感器探測的距離比較小反之白色的比較大,在探測中面積較小的物體需要的探測距離比較大,反之則小。這就是紅外反射探測的基本原理;傳感器模塊輸出端口OUT 可直接與單片機I/O 口連接即可,也可以直接驅(qū)動一個5V繼電器。連接方式:VCC-VCC;GND-GND;OUT-I/O;比較器采用LM393,工作穩(wěn)定;采用兩節(jié)3.7V的充電電池作為電源,供電時流水燈L1為紅色L4為黃色顯示紅外傳感器正常工作;模塊接線說明:Vcc端口與單片機電源相連(35V;GND接地;OUT小板數(shù)字量輸出接口(0和1)。3.5 電源供電系統(tǒng) 電源供電系統(tǒng)的原理圖如圖3-6所示:圖3-6 電源供電系統(tǒng)原理圖其中除了一些電容,電阻,二極管,電源電機開關(guān)之外還有Header 4X2的八腳DIP將電源,電機,HL-1電路,以及單片機電路連接在一起,使通電后電路能夠正常運轉(zhuǎn)。3.6 LCD1602液晶顯示模塊1602液晶稱之為字符型液晶,該模塊在液晶屏上顯示數(shù)字、字母、字符,顯示的內(nèi)容由點陣組成。點陣的組成是由五乘以七或者五乘以十一的點陣組成,字符由每一個點陣所組成,每個字符之間有一個點的距離,每一行之間也有一個點的距離,通過這些距離起到了較好的隔離作用,因為有這些點距的存在所以點陣不能較好的顯示圖形。但是作為距離測量數(shù)據(jù)的顯示1602已經(jīng)能為其所用了。液晶顯示模塊的引腳圖如圖3-7所示:圖3-7 液晶模塊引腳圖LCD1602模塊引腳及其功能介紹:一號GND為接地端;二號VCC接5V電源正極; 三號VL為對比度的調(diào)整端口,當VL接電源正極時對比度最小,反之接GND時對比度最大;四號RS作為寄存器當信號為1時進行數(shù)據(jù)的寄存,當信號為0時進行指令的寄存;五號RW作為讀寫信號端口當輸入1時進行讀操作,當輸入0時進行寫操作;六號E(或EN)端為使能(enable)端,高電平(1)時讀取信息,負跳變時執(zhí)行指令;七到十四號D0D7為8位雙向數(shù)據(jù)端。十五、十六號 為空腳或背燈電源。十五腳為背燈正極,十六為負極。LCD的基本操作時序:1、讀狀態(tài):輸入:RS=L, RW=H, E=H 輸出:D0D7=狀態(tài)字;2、寫命令:輸入:RS=L, RW=L, D0D7=指令碼,E=高脈沖 輸出:無;3、讀數(shù)據(jù):輸入:RS=H, RW=H, E=H 輸出:D0D7=數(shù)據(jù);4、寫數(shù)據(jù):輸入:RS=H, RW=L, D0D7=數(shù)據(jù),E=高脈沖 輸出:無。LCD的初始化:1、延時15ms; 2、寫命令38H(不檢測忙信號);3、延時5ms;4、寫命令38H(不檢測忙信號);5、延時5ms;6、寫命令38H(不檢測忙信號);7以后每次命令、讀/寫數(shù)據(jù)操作之前均需要檢測忙信號;8、寫命令38H:顯示模式設(shè)置;9、寫命令08H:顯示關(guān)閉;10、寫命令01H:顯示清屏;11、寫命令06H:顯示光標移動設(shè)置;12、寫命令0CH:顯示開關(guān)及光標設(shè)置。4. 自動跟蹤系統(tǒng)的軟件設(shè)計4.1 開發(fā)軟件KeiluVision5與STC-ISP的介紹本次智能小車的程序開發(fā)是基于C語言的程序編寫,所以采用了KeilC51軟件對程序進行編寫并且用STC-ISP程序燒寫軟件對單片機進行程序燒錄。Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。6Keil軟件擁有強大的集成調(diào)試功能,其包含C語言編譯器、程序管理庫、連接功能等通過Vision組合在一起。該軟件兼容目前所有的Windows系統(tǒng)。Keil軟件最適用于和C語言配合的編程,其強大的集成環(huán)境與調(diào)試能力都會讓畢業(yè)設(shè)計的制作更加快捷。7Keil C51開發(fā)系統(tǒng)基本知識1.系統(tǒng)概述KeilC51擁有強大的集成功能與豐富的函數(shù)庫,并且與電腦的操作界面完全相同,是目前單片機程序開發(fā)的主要編程軟件。82.軟件開發(fā)系統(tǒng)的結(jié)構(gòu) KeilC51所包含的Vision是C51關(guān)于Windows系統(tǒng)的開發(fā)環(huán)境,在該開發(fā)環(huán)境之中可以編譯、鏈接、仿真、運行目。我們可以在此開發(fā)環(huán)境中生成.c文件用來編寫我們所需要的程序,并且在Options中創(chuàng)建我們所需要燒寫的.hex文件。最后進行編譯運行仿真,查找錯誤。使用獨立的Keil仿真器時,注意事項*仿真器的標準的晶振為11兆赫茲,但是在實際操作中可以通過晶振插口換用其他的頻率。*使用仿真器的復位鍵并不能將目標系統(tǒng)進行重置,只能復位仿真器的芯片。* 仿真時只可以使用內(nèi)部的只讀存儲器(ROM),片外的存儲器無法使用。這是因為仿真芯片的EA引腳已經(jīng)被置為高電平。KeilC51軟件的優(yōu)點:1.Keil C51中的語句所生成的匯編代碼與其他開發(fā)軟件相比較更容易讓人理解。在開發(fā)復雜的程序過程中更具有“高效代碼”優(yōu)勢。92.C語言功能高、可移植性好,既具有高級語言的優(yōu)點,又具有低級語言的許多特點,因此特別適合于編寫系統(tǒng)軟件。10STC-ISP燒寫軟件介紹:STC_ISP是將Keil軟件編寫好的程序燒寫進入單片機的一款軟件,是專門針對STC系列的單片機所設(shè)計的一款軟件,可下載目前絕大部分系列的STC單片機,因其操作簡單易用,現(xiàn)在已經(jīng)成為主流的燒寫軟件11。該軟件操作界面如下圖4-1所示: 圖4.1STC-ISP軟件界面該軟件的使用方法:第一步:選擇單片機的型號(選擇STC89C52)型號。第二步:在“我的電腦”里的設(shè)備管理器的USB端口查看串口號。第三步:點擊打開程序文件,將保存好的hex.文件添加到該軟件中。(此時不需要給單片機通電。)第四步:點擊下載編程,當顯示請給MCU上電時,給單片機通電。程序就能夠下載到單片機中。4.2跟蹤系統(tǒng)主程序分析本次設(shè)計的跟蹤主程序是對左轉(zhuǎn)函數(shù),右轉(zhuǎn)函數(shù),前進函數(shù),以及紅外線傳感函數(shù)的調(diào)用結(jié)合起來實現(xiàn)小車的跟蹤功能。具體的紅外傳感跟蹤函數(shù)見附錄二。工作流程:初始化后系統(tǒng)判斷K4鍵是否按下,按下后蜂鳴器發(fā)出聲音信號小車開始工作。程序調(diào)用前進函數(shù)小車開始向前走,并且紅外線傳感器開始檢測跟蹤目標,判斷跟蹤目標位置,然后反饋給單片機后判斷調(diào)用左轉(zhuǎn)或右轉(zhuǎn)函數(shù)來進行方向的控制,使小車跟著被跟蹤目標的移動而移動,實現(xiàn)跟蹤功能。程序流程圖如下圖4-2所示:開始初始化 否K4鍵是否按下 是 蜂鳴器發(fā)出信號小車前進 否紅外檢測目標是開始跟蹤圖4.2主程序流程圖4.3電機驅(qū)動程序電機驅(qū)動模塊可以實現(xiàn)小車的5個運動狀態(tài),包括小車的停止、前進、后退,左轉(zhuǎn),右轉(zhuǎn)。12當6個狀態(tài)引腳IN1,IN2,IN3,IN4,EN1,EN2為邏輯輸入端,當接收到高、低電平信號時,執(zhí)行對應的小車運動狀態(tài)。IN3高電平時左電機正轉(zhuǎn),IN4高電平左電機反轉(zhuǎn),EN1低電平左電機停車。IN1高電平右電機反轉(zhuǎn),IN2高電平右電機正轉(zhuǎn),EN2右電機低電平停車。調(diào)用左右轉(zhuǎn)函數(shù)實現(xiàn)轉(zhuǎn)向13。電機驅(qū)動程序見附錄二。4.4紅外傳感器程序在本次設(shè)計中,紅外模塊的作用是對小車的運動狀態(tài)進行控制。安裝在小車車尾左右放置,通過紅外跟蹤模塊對兩側(cè)的障礙物進行探測從而控制小車運動狀態(tài),同時,蜂鳴器作出報警相應提示,此時應注意車身周圍是否存在障礙物。紅外模塊的功能可以獨立完成,只需要給此模塊一個高或低的電平即可。當紅外模塊發(fā)射管發(fā)射出的的紅外線被紅外模塊的接收管接收時,此段程序開始執(zhí)行。當左右兩側(cè)檢測到障礙物時,蜂鳴器進行報警,小車進行停車操作,并打開延時。延遲過后蜂鳴器關(guān)閉報警狀態(tài)。紅外傳感器工作流程圖如下圖4-3所示:開始初始化 否紅外檢測被跟蹤物體 是將信號反饋給單片機圖4-3紅外傳感器流程圖4.5 LCD1602液晶顯示程序LCD1602液晶顯示程序中初始化程序部分如下所示:void LcdInitiate(void)delay(15);WriteInstruction(0x38);.delay(5);WriteInstruction(0x01);delay(5);以上代碼為使用LCD1206液晶顯示屏之前要對其進行初始化。隨著液晶屏的初始化操作完成以后,就該對其忙檢測來確定LCD液晶屏當前的狀態(tài)。 LCD1602液晶顯示程序中顯示程序見附錄二 程序代碼就是在忙檢測和顯示設(shè)置方面完成的前提下,進行數(shù)據(jù)的讀與寫的過程,并且將得到的數(shù)據(jù)顯示在液晶屏上。讓使用者能夠更加直觀的知道所獲得的數(shù)據(jù)14。5.功能測試5.1智能跟蹤小車的功能測試小車在測試之前應該先做好充分的準備工作。首先應當將HL-1電路板與電池、電機安裝好并且將紅色的線接在電機電源上端,黑色的線接在電機電源下端,(注意:不要將電機的螺絲擰的太緊,否則電機會堵轉(zhuǎn))最后將轉(zhuǎn)向輪,以及輪胎安好。接下來將單片機模塊與HL-1模塊相連接,按照兩塊板子上對應引腳的指示,用導線將HL-1模塊上的J3、J4、J8、J7、J5與單片機對應的引腳相連接。最后將超聲波模塊的四個引腳插入J6區(qū)域,完成組裝。在電腦上安裝Keil軟件的驅(qū)動,驅(qū)動安裝完成后安裝Keil軟件后安裝STC程序燒寫軟件。兩個軟件安裝完畢之后開始進行程序的編寫,編寫完畢并且生成hex.文件之后開始將程序燒寫進單片機。若燒寫成功,則此時小車以及具備跟蹤的功能。拔下USB傳輸線,按下電源開關(guān),小車則會按照預定的程序工作。5.2 發(fā)現(xiàn)問題與解決問題的方案在小車的安裝,編程,燒寫,運行中發(fā)現(xiàn)了不少問題,其中比較主要的問題有:1、在燒寫程序時已經(jīng)編寫好的程序無法寫進單片機,單片機與電腦連接無響應。2跟蹤過程中小車無法準確的跟蹤方向變化太快的被跟蹤物。3小車速度無法控制容易引起碰撞。解決方案:1、使用最新版本的STC燒寫軟件與所購買的單片機開發(fā)板不兼容,使用低版本的STC燒寫軟件可以將程序錄入單片機。2、紅外線感應容易受日光的影響所以在做跟蹤實驗時應當在陰天或者比較陰暗的房間里進行。3、將紅外線遙控程序燒寫進單片機可以用遙控器對小車的運動狀況進行控制。6. 結(jié)論和展望關(guān)于本次智能跟蹤小車的畢業(yè)設(shè)計,在硬件部分我將紅外傳感器模塊,單片機模塊,電機驅(qū)動模塊,電源供電模塊,用C語言所編寫的程序聯(lián)系起來實現(xiàn)跟蹤功能。在程序的編寫方面主要運用的是if語句來檢測是否給電,小車方向的控制采用的是對函數(shù)的調(diào)用,通過紅外傳感器對目標的位置的檢測與反饋來調(diào)用相應的函數(shù)。(采用Whileif來實現(xiàn)反饋信號與調(diào)用函數(shù)的聯(lián)系)。例如,當紅外信號檢測到被跟蹤物體在左側(cè)時Left=1 Right=0(有信號時為1)。調(diào)用左轉(zhuǎn)函數(shù)(小車左電機不轉(zhuǎn),右電機轉(zhuǎn)動)小車向左運動實現(xiàn)跟蹤。6.1 結(jié) 論本次畢業(yè)設(shè)計用到的主要工具是STC89C52RC單片機,關(guān)于單片機的知識我們在大四上學期的的課程中已經(jīng)學習過,所以在小車的程序方面學習的更加快捷一些。智能小車的設(shè)計在單片機的相關(guān)課題中是屬于比較偏向硬件設(shè)計的,所以有了實物模型才能更加具體的了解你所做的東西,否則一切都是紙上談兵罷了。智能小車的功能非常的多,主要包括循跡、避障、跟蹤等等在實際生活中的應用在前文中已經(jīng)闡述,我所做的跟蹤功能只不過是其中的一小種,盡管不是什么創(chuàng)新研究,但是這幾個月的畢業(yè)設(shè)計的學習讓我明白了理論與實踐結(jié)合的重要性,通過此次設(shè)計,使我把課堂上學到的C語言知識、單片機知識全部應用到實踐中去,讓理論與實踐有了完美的結(jié)合,在此結(jié)合的過程中讓自己的知識得到強化和復習, 溫故而知新,學到了不少新的知識。還對Keil C51軟件和STC_ISP軟件使用方法得到了加固。并且讓我感覺到自己的知識面和動手能力等多方面都得到了加強。6.2 展望在測試與實驗當中我也發(fā)現(xiàn)的小車的一些不足,小車對被跟蹤物體方向變化不是很敏感,有時需要物體里小車的傳感器很近才能實現(xiàn)跟蹤。所以我計劃在接下來的學習之中著力于改進小車的紅外檢測模塊,并且對程序進行進一步的研究與完善爭取作出更好的智能跟蹤小車。參考文獻 1張?zhí)m紅,鄒華.單片機原理及應用M.北京:機械工業(yè)出版社,2013.2周堅.單片機C語言輕松入門M.北京:北京航空航天大學出版社,2008.3鄭佩.基于51單片機智能小車的設(shè)計與實現(xiàn)J中國科技博覽20144陳伯時.電力拖動自動控制系統(tǒng)(第三版)M.北京:機械工業(yè)出版社,2000年.5劉迎春. 傳感器原理設(shè)計與應用M.長沙:國防科技大學出版社,1992.6譚浩強.C語言程序設(shè)計(第三版)M.北京:清華大學出版社,2005.7張旭濤.單片機原理與應用M.北京:北京理工大學出版社,2007.8高海生.單片機應用技術(shù)大全M.四川:西南科技出版社,2003.9張紅洗.C8051F系列單片機開發(fā)與C語言編程J電子產(chǎn)品可靠性與C語言編程2011.10徐惠民,安德寧.單片機微型計算機原理及應用M.北京:北京郵電大學出版社,2001.11李廣第.單片機基礎(chǔ)M.北京:北京航天航空大學出版社,1999.12陳興文,劉燕.單片機應用系統(tǒng)硬件調(diào)試與技巧J.中國測控網(wǎng).2006.13夏繼強.單片機實驗與實踐教程M.北京:北京航天航空大學出版社,2001.14陳享成,耿長青.基于單片機的LCD顯示終端設(shè)計J電力自動化設(shè)備2007(09).謝 辭 在本次畢業(yè)設(shè)計中由于本人知識水平的限制,我在完成畢業(yè)設(shè)計的時候遇到了許許多多的困難,但是到最后關(guān)于智能跟蹤小車的實驗設(shè)計終于順利完成,這其中少不了同學和指導老師的幫助,是他們的幫助讓我克服了重重困難,解決了許多棘手的問題。其中最應當感謝的是我的論文導師白娜老師,白老師給了我許多學習資料,讓我不僅僅完成了畢業(yè)設(shè)計,還對單片機有了系統(tǒng)的了解與學習,將理論與實踐結(jié)合起來順利完成了畢業(yè)設(shè)計。尊敬的老師和同學們,沒有你們的幫助我的設(shè)計也不能順利完成,謝謝你們,謝謝!附錄一:系統(tǒng)硬件仿真圖附錄二:紅外遙控程序紅外遙控程序#include<AT89x51.H>#define Left_moto_go P1_2=0,P1_3=1; /左邊電機向前走#define Left_moto_back P1_2=1,P1_3=0; /左邊電機向后轉(zhuǎn)#define Left_moto_Stop P1_2=0,P1_3=0; /左邊電機停轉(zhuǎn)#define Right_moto_go P1_6=1,P1_7=0;/右邊電機向前走#define Right_moto_back P1_6=0,P1_7=1;/右邊電機向后走#define Right_moto_Stop P1_6=0,P1_7=0;/右邊電機停轉(zhuǎn)#define Imax 14000 /此處為晶振為11.0592時的取值,#define Imin 8000 /如用其它頻率的晶振時,#define Inum1 1450 /要改變相應的取值。#define Inum2 700#define Inum3 3000unsigned char f=0;unsigned char Im4=0x00,0x00,0x00,0x00;unsigned char show2=0,0;unsigned long m,Tc;unsigned char IrOK;/*/延時函數(shù)void delay(unsigned int k)unsigned int x,y;for(x=0;x<k;x+)for(y=0;y<2000;y+);/*/外部中斷解碼程序void intersvr0(void) interrupt 1 using 1Tc=TH0*256+TL0; /提取中斷時間間隔時長TH0=0;TL0=0; /定時中斷重新置零if(Tc>Imin)&&(Tc<Imax)m=0;f=1;return; /找到啟始碼if(f=1)if(Tc>Inum1&&Tc<Inum3)Imm/8=Imm/8>>1|0x80; m+;if(Tc>Inum2&&Tc<Inum1)Imm/8=Imm/8>>1; m+; /取碼if(m=32)m=0;f=0; if(Im2=Im3)IrOK=1;else IrOK=0; /取碼完成后判斷讀碼是否正確/準備讀下一碼 /*/前速前進void run(void)Left_moto_go ; /左電機往前走Right_moto_go ; /右電機往前走/前速后退void backrun(void)Left_moto_back ; /左電機后退Right_moto_back ; /右電機后退/右轉(zhuǎn)void rightrun(void)Left_moto_go ; /左電機前進Right_moto_Stop ; /右電機停止/左轉(zhuǎn)void Leftrun(void)Left_moto_Stop ; /左電機停止Right_moto_go ; /右電機前進/停止void stoprun(void)Left_moto_Stop ; /左電機停止Right_moto_Stop ; /右電機停止/*/*-主函數(shù)-*/void main(void)m=0;f=0;IT0=1;EX0=1;TMOD=0x11;TH0=0;TL0=0;TR0=1;EA=1;delay(100);while(1)/*無限循環(huán)*/if(IrOK=1)switch(Im2)case 0x18: run(); /前進break;case 0x52: backrun(); /后退break;case 0x08: leftrun(); /左轉(zhuǎn)break;case 0x5A: rightrun(); /右轉(zhuǎn)break;case 0x1C: stoprun(); /停止break;default:break;IrOK=0;附錄二:主程序分析#include<AT89X52.H> /包含51單片機頭文件,內(nèi)部有各種寄存器定義/主函數(shù)void main(void)unsigned char i;P1=0X00; /關(guān)電車電機B:for(i=0;i<50;i+) /判斷K4是否按下delay(1);/1ms內(nèi)判斷50次,如果其中有一次被判斷到K4沒按下,便重新檢測if(P3_7!=0)/當K4按下時,啟動小車前進.goto B; /跳轉(zhuǎn)到標號B,重新檢測 BUZZ=0;/50次檢測K4確認是按下之后,蜂鳴器發(fā)出“滴”聲響,然后啟動小車。 delay(50); BUZZ=1;/響50ms后關(guān)閉蜂鳴器TMOD=0X01; TH0= 0XFc; /1ms定時 TL0= 0X18; TR0= 1; ET0= 1;EA = 1; /開總中斷while(1)/無限循環(huán) if(Left_1_led=1&&Right_1_led=1) /有信號為1 沒有信號為0run(); /調(diào)用前進函數(shù)elseif(Left_1_led=1&&Right_1_led=0)/左邊檢測到紅外信號 leftrun();/調(diào)用小車左轉(zhuǎn)函數(shù)if(Right_1_led=1&&Left_1_led=0)/右邊檢測到紅外信號rightrun(); /調(diào)用小車右轉(zhuǎn)函數(shù) if(Right_1_led=0&&Left_1_led=0)/兩邊傳感器同時檢測到紅外run(); /后為程序的注釋/電機驅(qū)動程序:void run(void)IN1=1;IN2=0;IN3=1;IN4=0; EN1=1; EN2=1;/前進函數(shù)左轉(zhuǎn)函數(shù):void leftrun(void)IN1=0;IN2=1;IN3=1;IN4=0; EN1=0;EN2=1;右轉(zhuǎn)函數(shù):void rightrun(void)IN1=0;IN2=1;IN3=0;IN4=1; EN1=1;EN2=0;后退函數(shù): void backrun(void) IN1=1; IN2=0;IN3=0;IN4=1; EN2=1; EN1=1;所以跟蹤系統(tǒng)的主函數(shù)包括轉(zhuǎn)向的部分如下所示:/主函數(shù)void main(void)run(); /調(diào)用前進函數(shù)前進后再進入 無限循環(huán) 前進再后退運動delay(100);while(1)/無限循環(huán) run();/調(diào)用前進函數(shù)delay(200);backrun(); /調(diào)用后退函數(shù)delay(200); leftrun(); /調(diào)用左轉(zhuǎn)函數(shù)delay(200);rightrun();/調(diào)用右轉(zhuǎn)函數(shù)delay(200);stop(); /調(diào)用停止轉(zhuǎn)動函數(shù)液晶顯示程序:void WriteCommandLCM(unsigned char WCLCM,BuysC) if (BuysC) ReadStatusLCM();LCM_Data = WCLCM;LCM_RS = 0;LCM_RW = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1;unsigned char ReadDataLCM(void) LCM_RS = 1; LCM_RW = 1; LCM_E = 0; LCM_E = 0; LCM_E = 1; return(LCM_Data); .附錄三:系統(tǒng)實物圖系統(tǒng)實物圖實物圖精選word范本!