智能平衡電動小車設(shè)計報告

上傳人:1888****888 文檔編號:38793606 上傳時間:2021-11-09 格式:DOC 頁數(shù):30 大小:975.54KB
收藏 版權(quán)申訴 舉報 下載
智能平衡電動小車設(shè)計報告_第1頁
第1頁 / 共30頁
智能平衡電動小車設(shè)計報告_第2頁
第2頁 / 共30頁
智能平衡電動小車設(shè)計報告_第3頁
第3頁 / 共30頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《智能平衡電動小車設(shè)計報告》由會員分享,可在線閱讀,更多相關(guān)《智能平衡電動小車設(shè)計報告(30頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、2014年廣西大學(xué)生電子設(shè)計大賽 2014年廣西大學(xué)生電子設(shè)計大賽 【本科組E題】 智能平衡電動小車設(shè)計報告 學(xué)校:桂林電子科技大學(xué) 院系:計算機科學(xué)與工程學(xué)院 隊員姓名:黎遠明,孫翔,安聰穎 實驗地點:創(chuàng)新學(xué)院B106 負責(zé)人:管芳 時間:2014年8月29日 設(shè)計摘要: 隨著人

2、工智能技術(shù)、計算機技術(shù)、自動控制技術(shù)的迅速發(fā)展,智能控制必將迎來它的發(fā)展新時代。整個智能小車設(shè)計主要以STC89C52單片機為控制核心,使用超聲波模塊檢測距離,采用紅外傳感器控制躲避障礙。小車驅(qū)動采用減速直流電機,執(zhí)行采用脈寬調(diào)制(PWM)技術(shù)實現(xiàn)對縣級的精確控制。通過不斷對單片機I/O口進行掃描來監(jiān)測傳感器的狀態(tài),控制小車循線、轉(zhuǎn)彎、避障等動作,使得小車按預(yù)定軌道行駛,并在遇到障礙時發(fā)出指示并停車的功能。同時,運用顯示屏和數(shù)碼管,顯示時間,路程和電壓。 關(guān)鍵詞: 智能小車,超聲波測距,循線模塊,PWM,聲光指示 Abstract: With the r

3、apid development of artificial intelligence technology, computer technology, automatic control technology, intelligent control will usher in a new era of itsdevelopment.This dissertation discusses mainly on the design of the intelligent car  in&

4、#160;STC89C52single-chip processor as the control core.Detection distance using ultrasonic module, using an infrared sensor control to avoid obstacles. Car driven by a DC motor reducer, execution using pulse width modulation (PWM) technology to achieve precise control of the

5、 county's. By constantly on the MCU I / O port for scanning to monitor the state of the sensor, control the car through the line, turning, obstacle avoidance and other actions, making the car traveling at a predetermined orbit, and give directions in the face of obstacles and park features. K

6、ey Word: Intelligence Balancing Electric Car, Ultrasonic Ranging, PWM,Sound and Light Indication 目錄 1 系統(tǒng)方案 1 1.1總體方案設(shè)計與比較 1 1.2電機的比較與選擇 2 1.3循跡模塊的選擇與比較 2 1.31循跡模塊選擇 2 1.32尋跡傳感器布局  3 1.4避障測距模塊 3 2 理論分析與計算 4 2.1信號檢測與控制  4 2.2節(jié)能  4 2.3直流電機調(diào)速原理 4 2.4 PWM基本原理 

7、; 5 2.5循跡模塊算法分析(5路) 6 3電路與程序設(shè)計 7 3.1單片機控制系統(tǒng) 7 3.2電源模塊設(shè)計 8 3.3驅(qū)動模塊設(shè)計 9 3.4循跡模塊設(shè)計及程序流程 9 3.5超聲波測距模塊  10 3.6程序大致流程 11 4結(jié)果分析 12 4.1調(diào)試儀器儀表  12 4.2系統(tǒng)測試  12 4.3調(diào)試過程及分析 12 4.4調(diào)整與改正 13 附錄1;程序源代碼 14 附錄2:元件清單 26 1 系統(tǒng)方案 整個電路系統(tǒng)采用模塊化的設(shè)計方案,有尋跡檢測、避障檢測、超聲波距離檢測、驅(qū)動模塊等多個模塊。首先利用檢測模塊對路面信

8、號進行檢測,經(jīng)過比較器處理之后,送給軟件控制模塊進行實時控制,輸出相應(yīng)的信號給驅(qū)動芯片驅(qū)動電機轉(zhuǎn)動,從而控制小車沿著引導(dǎo)黑線行駛,同時,超聲波模塊進行測距, 小車用數(shù)碼管,檢測運作時的小車電壓。在遇到硬幣時,通過避障模塊進行檢測,并發(fā)出聲光指示,控制小車停車5秒,后繼續(xù)按照引導(dǎo)黑線走完全程。 1.1總體方案設(shè)計與比較 方案一:采用STC89C52單片機作為整機的控制單元。 以STC89C52單片機為核心的控制電路,運用循跡模塊、避障檢測、超聲波距離檢測、驅(qū)動模塊等多個模塊,實現(xiàn)小車在行駛中轉(zhuǎn)彎、蔽障、測距等問題。同時利用1620和數(shù)碼管,顯示時間,路程,以及電壓。并將測量數(shù)據(jù)傳送至單

9、片機進行處理,然后由單片機根據(jù)所檢測的各種數(shù)據(jù)實現(xiàn)尋線,停車,聲光指示等智能化控制,以及各種數(shù)據(jù)顯示。 方案二:選用一片CPLD作為系統(tǒng)的核心部件,實現(xiàn)控制與處理的功能。 CPLD復(fù)雜可編程邏輯器件,是從PAL和GAL器件發(fā)展出來的器件,相對而言規(guī)模大,結(jié)構(gòu)復(fù)雜,屬于大規(guī)模集成電路范圍,是一種用戶根據(jù)各自需要而自行構(gòu)造邏輯功能的數(shù)字集成電路。具有速度快、編程容易、資源豐富、開發(fā)周期短等優(yōu)點,可利用VHDL語言進行編寫開發(fā)。但CPLD在控制上較單片機有較大的劣勢。同時,CPLD的處理速度非??欤≤嚨男羞M速度不可能太高,若采用該方案,必將在控制上遇到很多不必要增加的難題。

10、 綜合考慮了傳感器、電機的驅(qū)動等諸多因素,方案一簡潔、靈活、可擴展性好,并且我們對單片機掌握的比較好,且能達到題目的設(shè)計要求,因此本設(shè)計采用方案一來實現(xiàn),充分利用STC89C52的單片機資源。 1.2電機的比較與選擇 方案一:采用步進電機 步進電機的一個顯著特點就是具有快速啟停能力,如果負荷不超過步進電機所能提供的動態(tài)轉(zhuǎn)矩值,就能夠立即使步進電機啟動或反轉(zhuǎn)。另一個顯著特點是轉(zhuǎn)換精度高,正轉(zhuǎn)反轉(zhuǎn)控制靈活。 方案二:采用直流伺服電機 直流伺服電機具有優(yōu)良的速度控制性能,它輸出較 大的轉(zhuǎn)矩,直接拖動負載運行,同時他又受控制信號的直接控制進行轉(zhuǎn)速調(diào)節(jié),在很多方面具有優(yōu)越性,但是直

11、流伺機電機價格昂貴,且不易購買 方案三:采用減速直流電機。 直流電動機具有優(yōu)良的調(diào)速特性,調(diào)速平滑、方便,調(diào)整范圍廣;過載能力強,能承受頻繁的沖擊負載,可實現(xiàn)頻繁的無級快速啟動、制動和反轉(zhuǎn);能滿足生產(chǎn)過程自動化系統(tǒng)各種不同的特殊運行要求。 由于減速直流電機更易于購買,并且電路相對簡單,并能完成所需的功能,故采用減速直流電機作為動力源。 1.3循跡模塊的選擇與比較 1.31循跡模塊選擇 方案一:采用發(fā)光二極管+光敏電阻 易受到外界光源的干擾,有時甚至檢測不到黑線,主要是因為可見光的反射效果跟地表的平坦程度、地表材料的反射情況均對檢測效果產(chǎn)生直接影響。克服此缺點的方法:

12、采用超高亮度的發(fā)光二極管能降低一定的干擾,但這又會增加檢測系統(tǒng)的功耗。 方案二:脈沖調(diào)制的反射式紅外發(fā)射接收器。 由于采用帶有交流分量的調(diào)制信號,則可大幅度減少外界的干擾;此外紅外發(fā)射接收管的工作電流取決于平均電流,如果采用占空比小的調(diào)制信號,在平均電流不變的情況下,瞬時電流很大(50~100mA)(ST-188允許的最大輸入電流為50mA),則大大提高了信噪比。此種測試方案反應(yīng)速度大約在5us。    通過比較,方案二更加有優(yōu)勢,故選擇紅外發(fā)射接收器制作循跡模塊。 1.32尋跡傳感器布局     

13、 方案一:一字形布局 反射式光電傳感器在小車前方一字形簡單排布。在一字形中傳感器的間隔有均勻布局和非均勻布局兩種方式,均勻布局不利于彎道信息的準(zhǔn)確采集,通常采取的是非均勻布局??紤]到弧度信息采集的連貫性,非均勻布局的理論依據(jù)是等角度分布原則,即先確定一合適的定點,從頂點依次等角度畫射線,射線與傳感器水平線相交的位置即為傳感器的位置。這種方案信息檢測相對連貫,準(zhǔn)確,使控制程序算法簡單,小車運行連貫,穩(wěn)定。  方案二:M形布局。傳感器呈M形排布。這種方案的優(yōu)點在于拓寬了邊沿傳感器的檢測范圍,更適合于小車快速行進中的彎道檢測,但相對一字形布局來說,M形布局不利于信息檢

14、測的穩(wěn)定,易于產(chǎn)生振蕩,不利于小車行駛的穩(wěn)定。 由于本次尋跡實驗要求比較簡單,考慮到方案的可行性并且保持小車運行穩(wěn)定,故此次采用方案一來進行傳感器的布局。 1.4避障測距模塊 方案一: 超聲波測距。超聲波傳感器是利用超聲波的特性研制而成的傳感器。超聲波是一種振動頻率高于聲波的機械波,由換能晶片在電壓的激勵下發(fā)生振動產(chǎn)生的,它具有頻率高、波長短、繞射現(xiàn)象小,特別是方向性好、能夠成為射線而定向傳播等特點。  方案二:視覺測距。視覺傳感器具有從一整幅圖像捕獲光線的數(shù)以千計的像素。在捕獲圖像之后,視覺傳感器將其與內(nèi)存中存儲的基準(zhǔn)圖像進行比較,以做出分析。視覺

15、傳感器的優(yōu)點是易于多目標(biāo)測量和分類,分辨率好。但它不能直接測量距離,算法復(fù)雜,處理速度慢。  由于超聲波傳感器價格合理,功能齊全。而視覺傳感器價格昂貴,且算法復(fù)雜,不易于控制,故選擇超聲波模塊。 2 理論分析與計算 2.1信號檢測與控制  本系統(tǒng)采用紅外檢測電路,當(dāng)系統(tǒng)檢測到外側(cè)的黑線時,系統(tǒng)通過單片機向電機發(fā)送控制指令,從而使小車左側(cè)輪子停轉(zhuǎn),右側(cè)輪子正常運轉(zhuǎn),以實現(xiàn)小車左轉(zhuǎn)的目的。同理,當(dāng)系統(tǒng)檢測到內(nèi)測黑線時,小車相應(yīng)會右轉(zhuǎn),這樣就能實現(xiàn)小車沿著黑線行駛。同時紅外對管檢測路面信息,能控制小車轉(zhuǎn)彎和防止小車出界。 

16、并且用超聲波檢測前方障礙,可防止與障礙物相撞。  2.2節(jié)能  本車采用可充電電池驅(qū)動小車行駛,比一次性電池更加節(jié)能環(huán)保。開關(guān)電源調(diào)節(jié)器件以完全導(dǎo)通或關(guān)斷方式工作。因此,開關(guān)電源功耗極低,比線性電源更加節(jié)能。 2.3直流電機調(diào)速原理 依據(jù)直流電動機轉(zhuǎn)速公式:n=(U-IR)/Kφ 。其中U為電樞端電壓,I為電樞電流,R為電樞電路總電阻,φ為磁通量,K為電動機結(jié)構(gòu)參數(shù)。  由公式可以看出,可以通過改變勵磁磁通量φ、電樞電路總電阻R、電樞端電壓U三種方法來調(diào)節(jié)轉(zhuǎn)速。  (1)改變勵磁磁通量主要是針對勵磁式直

17、流電機(定子上也為繞組,通電產(chǎn)生磁場,相當(dāng)于電磁鐵),改變勵磁電流進而改勵磁磁通量,而我們用的直流電極是永磁式直流電機(定子為永久磁鐵),所以不能通過改變勵磁磁通量的方法改變速度。  (2)通過改變電樞電路的總電阻R來調(diào)速,由n=(U-IR)/Kφ可知,當(dāng)R變大時,n變小。  (3)通過改變電樞端電壓U來調(diào)速,調(diào)節(jié)電樞端電壓可以實現(xiàn)無級調(diào)速,是應(yīng)用范圍最為廣泛的調(diào)速方法。   2.4 PWM基本原理  采樣控制理論中有一個重要結(jié)論:沖量相等而形狀不同的窄脈沖加在具有慣性的環(huán)節(jié)上時,其效果基本相同。PWM 控制技術(shù)就是以該結(jié)論為

18、理論基礎(chǔ),對半導(dǎo)體開關(guān)器件的導(dǎo)通和關(guān)斷進行控制,使輸出端得到一系列幅值相等而寬度不相等的脈沖,用這些脈沖來代替正弦波或其他所需要的波形。按一定的規(guī)則對各脈沖的寬度進行調(diào)制,既可改變逆變電路輸出電壓的大小,也可改變輸出頻率。通俗的說PWM 是采用數(shù)字量對模擬量進行合成的方法。  由于電壓UAB的正、負變化,使電流波形存在兩種情況:   (1)電動機負載較重(如id1 ),這時平均負載電流大,在續(xù)流階段電流仍維持正方向,電機始終工作在第Ⅰ象限的電動狀態(tài);  (2)電動機負載較輕(如id2 ),平均電流小,在續(xù)

19、流階段電流很快衰減到零,于是VT2和VT3集一射極兩端失去反壓,在負的電源電壓(-Us)和電樞反電動勢的共同作用下導(dǎo)通,電樞電流反向,沿回路3流通,電動機處于制動狀態(tài)。與此相仿,在0≤t<ton期間,當(dāng)負載輕時,電流也有一次倒向。  雙極式可逆PWM變換器電樞平均端電壓用公式表示為:     仍以ρ=Ud/Us來定義PWM電壓的占空比,則ρ與ton的關(guān)系為 :    調(diào)速時,ρ的變化范圍為—l≤ρ≤1 ; 當(dāng)ρ為正值時,電動機正轉(zhuǎn); ρ為負值時,電動機反轉(zhuǎn);ρ=0時,電

20、動機停止。    直流脈寬調(diào)速系統(tǒng)中包括一個具有繼電特性的脈寬調(diào)制變換器,它在本質(zhì)上是一個開關(guān)控制系統(tǒng)。 P1^0 P1^1 P1^2 P1^3 P1^4 2.5循跡模塊算法分析(5路) 左電機 右電機 P2^0 P2^1 1轉(zhuǎn) 1轉(zhuǎn) 0不轉(zhuǎn) 0不轉(zhuǎn) P1^0 P1^1 P1^2 P1^3 P1^4 方向 0 0 0 0 0 前進 — 0 1 1 — 左轉(zhuǎn) — 1 0 1 — 前進 — 0 0 1 — 左轉(zhuǎn) —

21、 1 1 0 — 右轉(zhuǎn) — 1 0 0 — 右轉(zhuǎn) — — — — 左轉(zhuǎn) — — — — 0 右轉(zhuǎn) 3電路與程序設(shè)計 3.1單片機控制系統(tǒng) 89S52是一種低功耗、高性能CMOS 8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。 采用此芯片與復(fù)位電路,晶振回路即可構(gòu)成單片機控制系統(tǒng),電路圖如圖所示: 程序流程圖如下: 3.2電源模塊設(shè)計 電源模模塊,由3部分組成,升壓模塊,穩(wěn)壓模塊,和降壓模塊,利用LM2587,LM2596以及LM2576芯片,

22、達到三合一,節(jié)約了成本,同時提高了模塊的性能。 3.3驅(qū)動模塊設(shè)計 采用內(nèi)部集成H橋式芯片每一組PWM波用來控制一個電機的速度,而另外兩個I/O口可以控制電機的正反轉(zhuǎn),控制比較簡單,電路也很簡單,一個芯片內(nèi)包含有8個功率管,這樣簡化了電路的復(fù)雜性。 3.4循跡模塊設(shè)計及程序流程 循跡模塊是智能車系統(tǒng)的關(guān)鍵模塊之一,其主要功能是準(zhǔn)確,快速,超前地采集路面信息,把它轉(zhuǎn)變成電信號,傳送到單片機中處理。 原理: 紅外探測法,即利用紅外線在不同顏色的物體表面具有不同的反射強度的特點,在小車行駛過程中不斷地向地面發(fā)射紅外光,當(dāng)紅外光遇到白色紙質(zhì)地板時發(fā)

23、生漫反 射,反射光被裝在小車上的接收管接收;如果遇到黑線則紅外光被吸收,小車上的接收管接收不到紅外光。單片機就是否收到反射回來的紅外光為依據(jù)來確定黑線的 位置和小車的行走路線。 程序設(shè)計流程圖: 循跡避障程序入口 讀紅外傳感器狀態(tài) 左轉(zhuǎn) 右轉(zhuǎn) 前進 依據(jù)狀態(tài)選擇小車運行方式 3.5超聲波測距模塊  車測距上我們選擇了HC-SR04超聲波模塊傳感,HC-SR04可提供2cm-400cm的非接觸式距離感測功能,模塊包括超聲波發(fā)射器、接收器與控制電路。超聲波是指頻率高于20KHz的機械波。超聲波從發(fā)射

24、到遇到障礙物返回所經(jīng)歷的時間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離。 此超聲波測距模塊的工作原理:接收回路為諧振回路,將收到的微弱回波信號檢出,送信號放大電路放大,收到產(chǎn)生脈沖輸出送單片機中斷端,單片機收到中斷信號后停止計時,計算出距離值,保存等待讀出或直接經(jīng)UART 送出。接收過程中,單片機定時控制放大電路的增益,逐漸提高,以適應(yīng)距離越來越弱的回波信號。 超聲測距傳感器的核心功能是測量距離,通過發(fā)射器發(fā)射超聲波,超聲波遇到物體反射回來被接收器接收。傳感器將所測量的量轉(zhuǎn)換成數(shù)字信息,即將非電量轉(zhuǎn)換為便于測量的電量,這樣單片機就能計算出超聲波從發(fā)射到接受用

25、的時間,測量時間*聲速/2=距離。車測距上我們選擇了HC-SR04超聲波模塊傳感,HC-SR04可提供2cm-400cm的非接觸式距離感測功能,模塊包括超聲波發(fā)射器、接收器與控制電路。超聲波是指頻率高于20KHz的機械波。超聲波從發(fā)射到遇到障礙物返回所經(jīng)歷的時間,再乘以超聲波的速度就得到二倍的聲源與障礙物之間的距離。 3.6程序大致流程 此設(shè)計由尋跡檢測、避障檢測、超聲波距離檢測、驅(qū)動模塊等多個模塊組合而成。 89S52 循跡程序 硬幣檢測 聲光控制 顯示路程時間 停車程序 4結(jié)果分析 4.1調(diào)試儀器儀

26、表  設(shè)計及測試中所用的儀器及工具主要有:秒表、數(shù)字萬用表、信號發(fā)生器、示波器、MCS51仿真機、直流穩(wěn)壓電源等 電源:可充電電池。  常用儀表:數(shù)字萬用表、AVR Studio。 4.2系統(tǒng)測試  對小車的整體的調(diào)試按照模塊來進行,分為以下幾個步驟:  ①首先測試電源的工作情況,各個模塊能否得到良好供電。  ②然后檢查單片機能否正常的燒寫程序和工作。  ③紅外對管安裝完成后根據(jù)測試數(shù)據(jù)調(diào)試程序。  ④測試兩前輪電機的工作情況,并試驗電機的驅(qū)動能力。  ⑤讓小車

27、在黑色軌道上初步循跡運行。  ⑥反復(fù)測試各參數(shù)變化對小車的影響,找出最有效的配置。  ⑦對小車運行過程中各種可能出現(xiàn)的情況測試,發(fā)現(xiàn)問題,找出解決方法。 ⑧整理數(shù)據(jù),優(yōu)化程序設(shè)計。 經(jīng)過多次調(diào)試,本系統(tǒng)能夠基本滿足設(shè)計要求,能夠較快較平穩(wěn)的沿路面行駛。 4.3調(diào)試過程及分析 由于各模塊往單片機發(fā)送的數(shù)據(jù)都是數(shù)字信號,在對各模塊進行檢測的時候,用萬用表對輸出信號進行檢測,觀測是否輸出相應(yīng)的電壓變化即檢測出各模塊的工作狀態(tài)。  在小車調(diào)試完成后我們用萬用表對小車的整體完成情況進行測試,根據(jù)程序設(shè)計流程圖可以看出本系統(tǒng)用一套程序就可以完成基本部分和

28、發(fā)揮部分的各項任務(wù),在測試時,我們對小車分別行使一圈用時情況和和小車上坡時的狀態(tài)進行記錄。 測試次數(shù) 小車行駛一圈的秒數(shù)(S) 是否超出跑道 遇到硬幣時,是否聲光指示,并停車 是否能 爬上坡 1 35 是 是 否 2 33 是 否 否 3 32 否 否 是 4 30 否 是 是 4.4調(diào)整與改正 在設(shè)計的過程中發(fā)現(xiàn)了自身知識的不足,也發(fā)現(xiàn)我們必須具備專業(yè)基礎(chǔ)知識才能成功的設(shè)計出一件合格的東西。這次課程設(shè)計收獲很多,體會也很深刻,并且對我們所學(xué)的東西也產(chǎn)生了濃厚的興趣。在設(shè)計過程中,也學(xué)會了很多新的東西,如對一些初

29、次使用的模塊的認識與掌握。當(dāng)然最重要的是學(xué)到了關(guān)于基本電子設(shè)計的一些方法,同時也加深了對一些常用的電子元件的理解以及其基本用法的掌握。 通過多次調(diào)試,發(fā)現(xiàn)小車有以下幾方面的問題及因素影響:    (1) 程序邏輯方面不夠嚴(yán)謹,導(dǎo)致在行駛過程中不按預(yù)期的路線去行駛。究其原因,一方面由于電路自身缺陷導(dǎo)致程序有誤,另一方面由于C語言掌握不夠,需要加強。  (2) 小車車身前重后輕難以上坡 針對以上問題,改進方案如下:  (1) 解決方案:先對程序進行軟件調(diào)試,進行單步運行,軟件調(diào)試成功在進行硬件調(diào)試,最終實現(xiàn)預(yù)期要求 (2)

30、加重小車前身的重量,及利用軟件控制電機有足夠的速度沖上上坡。 附錄1;程序源代碼 #include<reg52.h> #include"delay.h" #define uint unsigned int #define uchar unsigned char sbit beef=P1^5;//蜂鳴器和燈 sbit ena=P2^0; //左使能端 sbit enb=P2^1; //右使能端 sbit tan1=P1^0; //探頭1 sbit tan2=P1^1; //探頭2 sbit tan3=P1^2; //探頭3 sbi

31、t tan4=P1^3; //探頭4 sbit tan5=P1^4; //探頭5 sbit LCD_RST=P2^2 ;//復(fù)位,0復(fù)位; sbit LCD_CE=P2^3; // 片選,芯片使能, (片選為零時,開使能端) sbit LCD_DC=P2^4; // 1寫數(shù)據(jù),0寫命令; sbit SDIN=P2^5; //串行數(shù)據(jù)傳輸端; sbit SCLK=P2^6; //串行時鐘輸入端; sbit Trig=P0^0; uint secondsg=0,secondss=0,secondsb=0; //時間顯示 uint dis=0,count3=0

32、; //距離 uchar tt=0; //定時器里面的 uint us=0;//10us uint ms=0;//1ms uint s;//100ms uchar count1=0,count2=0; //計數(shù)次數(shù) uchar lspeed=0,rspeed=0; //左右輪速度 uchar j=0; //全部檢測到黑線的次數(shù) void stop(); void HC_init() { TMOD=0x09; TR0=1; TH0=0;TL0=0; }

33、 uint HC_jisuan() { uint dist,timer; timer=TH0; timer<<=8; timer=timer|TL0; dist=timer/53; //晶振11.0592MHz //距離cm=微秒us/58 return dist; //1個機器周期是12個時鐘周期 timer*12/(58*11.0592)=timer/53 } void HC_run() { uint tempH=0x00,tempL=0x00; TH0=0;TL0=0;

34、 Trig=0; Trig=1; delay_1ms(1); Trig=0; while((TH0-tempH!=0||TL0-tempL!=0)||(TH0==0&&TL0==0)) { tempH=TH0; tempL=TL0; } delay_1ms(1); } code unsigned char font6x8[][6] = { { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x

35、00 }, // ! { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 }, // " { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // # { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $ { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 }, // % { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 }, // & { 0x00, 0x00,

36、 0x05, 0x03, 0x00, 0x00 }, // ' { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 }, // ( { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 }, // ) { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 }, // * { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 }, // + { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 }, // ,

37、 { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 }, // - { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 }, // . { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 }, // / { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0 { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1 { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46

38、}, // 2 { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3 { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4 { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5 { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6 { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7 { 0x00, 0x36, 0x49, 0x49,

39、 0x49, 0x36 }, // 8 { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9 { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 }, // : { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 }, // ; { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 }, // < { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 }, // = { 0x00, 0x

40、00, 0x41, 0x22, 0x14, 0x08 }, // > { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 }, // ? { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E }, // @ { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C }, // A { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C

41、 { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H { 0x00, 0x00, 0x4

42、1, 0x7F, 0x41, 0x00 }, // I { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N { 0x0

43、0, 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 }, // S { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 }, //

44、T { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 }, // X { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y { 0x00, 0x61, 0x51, 0x49, 0x45, 0

45、x43 }, // Z { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [ { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 }, // 55 { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 }, // ] { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^ { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 }, // _ { 0x00, 0x00, 0x01,

46、0x02, 0x04, 0x00 }, // ' { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 }, // a { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 }, // c { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F }, // d { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 }, // e { 0x

47、00, 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C }, // g { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 }, // j { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 }, //

48、 k { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 }, // o { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 }, // p { 0x00, 0x18, 0x24, 0x24, 0x18,

49、0xFC }, // q { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 }, // s { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v { 0x00, 0x3C, 0x40,

50、0x30, 0x40, 0x3C }, // w { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 }, // x { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C }, // y { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 } // horiz lines }; /*************************************************

51、********** 函數(shù)名稱:LCD_write_byte 函數(shù)功能:模擬SPI接口時序?qū)憯?shù)據(jù)/命令LCD 入口參數(shù):data :寫入的數(shù)據(jù); command :寫數(shù)據(jù)/命令選擇; 出口參數(shù):無 備 注: ***********************************************************/ void LCD_write_byte(unsigned char dat, unsigned char command) { unsigned char i; LCD_CE = 0;

52、 //5110片選有效,允許輸入數(shù)據(jù) if (command == 0) //寫命令 LCD_DC = 0; else LCD_DC = 1; //寫數(shù)據(jù) for(i=0;i<8;i++) //傳送8bit數(shù)據(jù) { if(dat&0x80) SDIN = 1; else SDIN = 0; SCLK = 0; dat = dat << 1; SCLK = 1; }

53、 LCD_CE = 1; //禁止5110 } /********************** 清屏函數(shù) ***********************/ void LCD_clear() { unsigned int i; LCD_write_byte(0x0c, 0); LCD_write_byte(0x80, 0); for (i=0; i<504; i++) LCD_write_byte(0x00, 1); } /******************

54、***************************************** 函數(shù)名稱:LCD_init 函數(shù)功能:5110初始化 入口參數(shù):無 出口參數(shù):無 備 注: ***********************************************************/ void LCD_init(void) { LCD_RST=0; delay_1ms(10); LCD_RST=1; LCD_write_byte(0x21, 0); // 使用擴展命令設(shè)置LCD模式 LCD_write_byte

55、(0xc6, 0); // 設(shè)置液晶偏置電壓 LCD_write_byte(0x06, 0); // 溫度校正 LCD_write_byte(0x13, 0); // 1:48 LCD_write_byte(0x20, 0); // 使用基本命令,V=0,水平尋址 LCD_clear(); // 清屏 LCD_write_byte(0x0c, 0); // 設(shè)定顯示模式,正常顯示 LCD_CE = 0; // 關(guān)閉LCD } /*********************************

56、************************** 函數(shù)名稱:LCD_set_XY 函數(shù)功能:設(shè)置LCD坐標(biāo)函數(shù) 入口參數(shù):X :0-83 Y :0-5 出口參數(shù):無 備 注: ***********************************************************/ void LCD_set_XY(unsigned char X, unsigned char Y) { LCD_write_byte(0x40 | Y, 0); // column LCD_write

57、_byte(0x80 | X, 0); // row } /*********************************************************** 函數(shù)名稱:LCD_write_char 函數(shù)功能:顯示英文字符 入口參數(shù):c : 顯示的字符 出口參數(shù):無 備 注: ***********************************************************/ void LCD_write_char(unsigned char c) { unsigned char line;

58、 c -= 32; //數(shù)組的行號 for (line=0; line<6; line++) LCD_write_byte(font6x8[c][line], 1); } /********************************************************** 函數(shù)名稱:LCD_write_english_string 函數(shù)功能:顯示英文字符串 入口參數(shù):*s: 顯示的字符串 出口參數(shù):無 備 注: ***************************

59、********************************/ void LCD_write_english_string(unsigned char X,unsigned char Y,char *s ) { LCD_set_XY(X,Y); while (*s) { LCD_write_char(*s); s++; } } void LCD_write_number(unsigned char X,unsigned char Y,unsigned char c) { unsigned char line

60、; LCD_set_XY(X,Y); c -= 32; //數(shù)組的行號 for (line=0; line<6; line++) LCD_write_byte(font6x8[c][line], 1); } void timeshow() { LCD_write_english_string(0,1,"Time"); LCD_write_number(42,1,secondsg+0x30); //時間個位秒鐘 LCD_write_n

61、umber(36,1,secondss+0x30); //時間十位秒鐘 LCD_write_number(30,1,secondsb+0x30); //時間十位秒鐘 } void disshow() { int disq,disb,diss,disg; dis=(count1/35)*15; disq=dis/1000; disb=(dis/100)%10; diss=(dis/10)%10; disg=(dis%10); LCD_write_english_string(0,2,"Distance"); LCD_w

62、rite_number(54,2,disq+0x30); LCD_write_number(60,2,disb+0x30); LCD_write_number(66,2,diss+0x30); LCD_write_number(72,2,disg+0x30); } /*使能端初始化函數(shù)*/ void initen() { ena=1; enb=1; } /*定時器0初始化函數(shù)*/ void init_time0() { TMOD=0x01;//GATE=0,定時模式,方式1 TH0=(65536-10)/256;//裝初值 TL0=(655

63、36-10)%256; EA=1;//打開外部中斷總開關(guān) ET0=1;//選擇定時器0 TR0=1;//打開定時器0的開關(guān) } /*定時器0中斷服務(wù)函數(shù)*/ void time0() interrupt 1 { TR0=0;//關(guān)閉定時器 us++; TH0=(65536-10)/256;//裝初值 TL0=(65536-10)%256; TR0=1;//打開定時器 count1++; count2++; if(count1<=lspeed) ena=1; else ena=0; if(count2<=rspe

64、ed) enb=1; else enb=0; if(count1==100) count1=0; if(count2==100) count2=0; } void sum() { if(us==100) { us=0; ms++; } if(ms==100) { ms=0; s++; } if(s==10) { s=0; tt++; } if(tt==20) { tt=0; secondsg++; if(secondsg>9)

65、 { secondss++; secondsg=0; if(secondss>9) { secondsb++; secondss=0; } } } } /*外部中斷0初始化函數(shù)*/ void init_zd0() { EA=1;//打開中斷總開關(guān) EX0=1;//選擇外部中斷0 IT0=1;//下降沿觸發(fā) } void int0() interrupt 0 { stop(); beef=0; delay_1ms(1500); delay_1ms(25

66、00); delay_1ms(2500); beef=1; delay_1ms(2500); delay_1ms(2500); delay_1ms(2500); } /*前進函數(shù)*/ void go(uchar l,uchar r) //左右輪速度 { lspeed=l; rspeed=r; ena=1; enb=1; } /*停車函數(shù)*/ void stop() { ena=0; enb=0; } /*紅外檢測函數(shù)*/ uchar hongwai() { uchar i=0; if(tan1==0&&

67、tan2==0&&tan3==0&&tan4==0&&tan5==0) { i=0; j++; } if(tan2==0&&tan3==1&&tan4==1) i=1; if(tan2==1&&tan3==0&&tan4==1) i=2; if(tan2==0&&tan3==0&&tan4==1) i=3; if(tan2==1&&tan3==1&&t

68、an4==0) i=4; if(tan2==0&&tan3==1&&tan4==0) i=5; if(tan2==1&&tan3==0&&tan4==0) i=6; if(tan1==0) i=7; if(tan5==0) i=8; return i; } /*尋線函數(shù)*/ void xunxian(uchar i) { if(i==0) go(40,40); if(i==1) go(20,40); if(i==2) go(40,40);

69、 if(i==3) go(30,40); if(i==4) go(40,20); if(i==5) go(40,40); if(i==6) go(40,30); if(i==7) go(10,60); if(i==8) go(60,10); } void main() { uchar a=0,b=0;//循環(huán)次數(shù) 與傳值變量 initen(); init_time0(); init_zd0(); LCD_init(); //5110初始化 LCD_clear(); //5110清屏 beef=1; while(1) {

展開閱讀全文
溫馨提示:
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. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!