汽車巡航控制系統(tǒng)設(shè)計畢業(yè)設(shè)計說明書張翅_第1頁
汽車巡航控制系統(tǒng)設(shè)計畢業(yè)設(shè)計說明書張翅_第2頁
汽車巡航控制系統(tǒng)設(shè)計畢業(yè)設(shè)計說明書張翅_第3頁
汽車巡航控制系統(tǒng)設(shè)計畢業(yè)設(shè)計說明書張翅_第4頁
汽車巡航控制系統(tǒng)設(shè)計畢業(yè)設(shè)計說明書張翅_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

畢業(yè)設(shè)計說明書題目:汽車巡航控制系統(tǒng)設(shè)計學(xué)院(直屬系):交通與汽車工程學(xué)院年級、專業(yè):2007級車輛工程姓名:張翅學(xué)號:指導(dǎo)教師:趙玲完成時間:2011年6月1日目錄摘要 4Abstract 41前言 51.1設(shè)計的目的及意義 51.2單片機的國內(nèi)外開展狀況 51.3任務(wù)與分析 72系統(tǒng)方案設(shè)計 82.1系統(tǒng)設(shè)計方案 82.2系統(tǒng)總體框圖 103系統(tǒng)硬件電路介紹 113.189C52單片機 113.2ADC0804A/D轉(zhuǎn)換器 153.3舵機 193.4LCD液晶顯示器 193.5時鐘電路 193.6復(fù)位電路 204系統(tǒng)軟件設(shè)計 204.1proteus軟件環(huán)境介紹 204.2protel軟件環(huán)境介紹 224.3系統(tǒng)軟件分析 224.4程序流程圖 235系統(tǒng)調(diào)試過程 295.1電路原理圖 295.2系統(tǒng)仿真調(diào)試 30結(jié)論 37總結(jié)與體會 38謝辭 39參考文獻 40附錄 41汽車巡航控制系統(tǒng)設(shè)計摘要本設(shè)計是基于AT89C52單片機為控制核心的汽車巡航控制系統(tǒng)設(shè)計。系統(tǒng)采用LM016L液晶顯示屏,將汽車在高速狀態(tài)下的當前速度以及巡航設(shè)置速度顯示出來,在系統(tǒng)中還采用舵機來控制節(jié)氣門〔也俗稱油門〕來控制其開度,設(shè)置舵機的轉(zhuǎn)向來表示加油還是減油,在巡航控制中,設(shè)置按鍵對巡航進行加減速度的設(shè)計,并運用PID算法進行實現(xiàn),在仿真中,用滑動變阻器的增減代替道路狀況的好或壞來仿真巡航設(shè)定后,舵機工作狀況。本設(shè)計說明書對該系統(tǒng)的硬件電路,工作原理進行了詳細的介紹。同時給出了軟件設(shè)計的流程圖和主要源代碼。關(guān)鍵詞:AT89C52單片機舵機LCD液晶顯示器PID算法TheDesignOfTheCruiseControlSystemAbstractThedesignistheCruiseControlSystem,basedontheAT89C52Singlechipasthecontrolcenter.ThisSystemusedLM016LLCDscreentodisplaythecruisingspeedofthevehicleandthecurrentspeedwhenitathighspeed.AlsotheSystemusedsteeringenginetocontrolthethrottleactuator(commonlyknownasthethrottle),inordertocontrolthesizeofopening;androtatingthedirectionofsteeringenginetorepresentincreasingordecreasingoil.Underthecruisecontrol,thedesignofsettingthekeystocreaseordecreasethecruisingspeed,thenusingofPIDalgorithmtoprogramming.Inthecourseofsimulation,authorusestheslidingrheostattosimulatetheroadconditions(goodorbad);afterspeedchanging,authorwatchestheworkingconditionsofsteeringengine.Thisdesignspecificationintroducedbothhardwarecircuitandworkingprincipleindetail;atthesametime,itgivestheflowchartandthemainsourcecodeofsoftwaredesign.Keywords:89C52SingleChipSteeringgearLCDdisplayPIDalgorithm1前言1.1設(shè)計的目的及意義隨著高速公路的開展,汽車在高速路上以80Km/h-120Km/h的速度行駛,在這種高速下,節(jié)氣門的開度需要大幅度的開啟,也就是說駕駛員需要較大的力度去踩踏板,并且在高速路上要全部保持這種狀態(tài),如果駕駛員光用腳去控制踏板,很容易導(dǎo)致控制油門的踏板的腿部肌肉疲勞加大,如果嚴重了,會失去對踏板的控制能力,那在汽車需要制動的時候,很容易發(fā)生事故。一方面對駕駛員的身體造成一定傷害,又增大了駕駛員得勞動強度,使駕駛員容易疲勞,引起交通事故?,F(xiàn)代汽車電子技術(shù)為解決這個問題,研發(fā)出了一種電子控制巡航系統(tǒng)〔CCS〕,當車速到達一定高速的時候,如果想進入巡航狀態(tài),可以直接開啟巡航控制開關(guān),然后汽車會以當前的車速自動進入巡航狀態(tài),保持在這個速度附近不變,如果突遇道路狀況變化、上下坡、轉(zhuǎn)彎和各種阻力變化的情況下,巡航控制系統(tǒng)的執(zhí)行器可以在一定范圍下自動調(diào)節(jié)節(jié)氣門開度,保持車速恒定,駕駛員在巡航過程中只需要控制轉(zhuǎn)向盤,兩腿處于自由狀態(tài),使駕駛員的勞動強度大大減輕1.2任務(wù)與分析本次設(shè)計的系統(tǒng)的實現(xiàn)是基于單片機的。首先,在Protel軟件環(huán)境中進行硬件電路圖的設(shè)計。然后在8051軟件環(huán)境中進行系統(tǒng)的軟件編程,并進行程序源文件的編譯和調(diào)試,最后生成.hex文件。此.hex文件是硬件電路運行實現(xiàn)的源代碼來源。把.hex文件加載到AT89C52單片機芯片,然后在Proteus軟件環(huán)境中運行硬件電路[1]。本課題設(shè)計的系統(tǒng)主要由:AT89C52為中央處理芯片,用于數(shù)據(jù)處理,初值設(shè)定。車速是由一個方波信號發(fā)生器發(fā)出一個固定的信號,是一個固定的信號也就是每次采集的脈沖個數(shù)不會因為舵機動作而變化,作為對車速的反應(yīng)調(diào)節(jié),把舵機信號和路況模擬參數(shù)加了進去,在巡航控制中,主要設(shè)置5個按鍵,KEY1〔巡航總開關(guān)〕,KEY2〔巡航設(shè)定開啟〕,KEY3〔巡航加速〕,KEY4〔巡航減速〕,KEY5〔巡航取消〕,除這5個按鍵之外,還設(shè)置了兩個按鍵來模擬駕駛員開車時候的加油門和減油門,并將檢測的當前的車速和巡航控制中設(shè)定的車速顯示在LM016L液晶顯示器顯屏中,本次設(shè)計用VC語言進行編程。本系統(tǒng)可以分為以下4大模塊:1、AT89C52模塊:用于數(shù)據(jù)處理,和外圍的時鐘芯片通信,并控制時鐘傳輸過程,采集時間信息并予以處理。2、A/D轉(zhuǎn)換:本次設(shè)計采用的是ADC0804A/D轉(zhuǎn)換器,三態(tài)鎖定輸出,135US的存取時間,8位的分辨率,在設(shè)計中,用一個滑動變阻器代替汽車行駛時候路面變化狀況,阻止的減少表示路面狀況變好,阻止增大表示路面狀況變差,這樣就會產(chǎn)生一個模擬信號,用ADC0804A/D轉(zhuǎn)換器將模擬信號轉(zhuǎn)換成數(shù)字信號輸入到AT89C52單片機進行處理。3、1602LCD液晶顯示器:工業(yè)字符型液晶,能夠同時顯示16x02即32個字符。4、程序:單片機主程序,包括A/D轉(zhuǎn)換程序,中斷程序,按鍵掃描子程序,顯示字符子程序,顯示轉(zhuǎn)速子程序。

2系統(tǒng)方案設(shè)計2.1系統(tǒng)設(shè)計方案通過查閱相關(guān)資料,設(shè)計初期共有3個方案供選擇,分別是:〔1〕采用89C2051單片機+步進電機+數(shù)碼管顯示組成的系統(tǒng);〔2〕采用AT89C52單片機+步進電機+1602液晶顯示芯片組成的系統(tǒng);〔3〕采用AT89C52單片機和舵機加上1602顯示組成的系統(tǒng)?!?〕采用89C2051單片機+步進電機+數(shù)碼管顯示組成的系統(tǒng)此系統(tǒng)的硬件局部主要是由89C2051單片機,數(shù)碼管,7805,ADC0832構(gòu)成。該系統(tǒng)硬件結(jié)構(gòu)簡單,但是數(shù)碼管顯示消耗單片機資源,軟件設(shè)計局部,程序冗長而復(fù)雜,易產(chǎn)生混淆?!?〕采用AT89C52單片機+步進電機+1602液晶顯示芯片組成的系統(tǒng);這個方案采用AT89C52單片機,1602液晶,步進電機來組成系統(tǒng)的硬件。但是步進電機做位置定位電機扭力一般比舵機要小,而舵機機用于位置定位,必須用位置反應(yīng)的方法通過一定的算法來實現(xiàn)的,在進行反應(yīng)調(diào)速時候不如舵機好用?!?〕采用AT89C52單片機和舵機加上1602顯示組成的系統(tǒng)此方案在硬件局部采用了AT89C52單片機,MG995舵機,ADC0804,1602液晶顯示器,幾個按鍵。在功能上進行了擴充,并且使得硬件連線顯得較為簡單,在軟件局部,程序顯得層次清楚。最后確定設(shè)計采用第3方案,即系統(tǒng)是由AT89C52單片機,MG995舵機,ADC0804,1602液晶顯示器組成[2]。2.2系統(tǒng)總體框圖圖1系統(tǒng)總體框圖當汽車巡航控制系統(tǒng)啟動后,程序進入初始化階段。單片機一直檢測是否有按鍵按下。當開關(guān)鍵按下后液晶顯示當前車速和巡航車速,當巡航車速為0km/h時,系統(tǒng)處于關(guān)閉狀態(tài)。當按下設(shè)定鍵如果當前車速在40km/h-180km/h時,設(shè)置巡航車速為當前車速,系統(tǒng)翻開,PID算法控制舵機開始通過節(jié)氣門調(diào)整車速。此時按下加速〔或減速〕鍵,巡航車速每次增加(或降低)

3系統(tǒng)硬件電路設(shè)計3.189C52單片機

AT89C52單片機是低電壓,高性能CMOS8位的單片機,其中由和隨機存取數(shù)據(jù)存儲器組成,而程序存儲器由可反復(fù)擦寫的Flash8kbytes組成,器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),可以說是89C51單片機的升級版,單片機片內(nèi)置通用8位中央處理器和Flash存儲單元。AT89C52有40個引腳,雙向輸入/輸出〔I/O〕有32個端口,中斷口有兩個,16位可編程定時計數(shù)器有3個,全雙工串行通信口有2個,讀寫口線有2個,AT89C52雖然不可以在線編程,但可以按照常規(guī)方法進行編程。Flash存儲器是和通用的微處理器結(jié)合在一起的,而Flash存儲器能夠反復(fù)擦寫使開發(fā)本錢得到了降低。圖2AT89C52單片機引腳圖AT89C52單片機與早期Intel的8051/8751/8031芯片的外部引腳和指令系統(tǒng)完全兼容,只不過用FlashROM替代了ROM/EPROM而已。89C52單片機內(nèi)部結(jié)構(gòu)如下圖。圖3AT89C52單片機內(nèi)部結(jié)構(gòu)示意圖VCC:供電引腳。GND:接地。P0口:P0口是一個8位漏級開路雙向I/O口,每腳吸收8TTL門電流。當P1口的引腳第一次寫入1時,定義為高阻輸入。P0口能夠用做外部程序數(shù)據(jù)存儲器,還可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時,P0口可作為原碼輸入口,當對FIASH校驗時,P0輸出原碼,此時P0外部一定要被拉高。P1口:P1口是一個在內(nèi)部提供上拉電阻的8位雙向I/O口。P1口緩沖器可以接收輸出4TTL門電流,P1口引腳寫入1后,被內(nèi)部上拉為高,可以用作輸入。P1口被外部下拉為低電平時,會輸出電流,這是因為內(nèi)部上拉的原因。對FLASH校驗和編程時P1口作為第八位地址接收。P2口:P2口是內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器能接收輸出4個TTL門電流。當P2口被寫1時其管腳被內(nèi)部的上拉電阻拉高,并且作為輸入。因此原因作為輸入時,P2口的引腳被外部拉低,此時輸出電流,這是由于內(nèi)部上拉的緣故。當對外部8位地址數(shù)據(jù)存儲器進行讀寫時,P2口將輸出特殊功能存放器的內(nèi)容。P2口在FLASH校驗和編程時接收高八位控制信號和地址信號。P3口:P3口的引腳是8個帶內(nèi)部上拉電阻的雙向I/O口可以接收輸出4個TTL門電流。當P3口寫入1時管腳被內(nèi)部上拉為高電平,并作為輸入引腳。當外部下拉為低電平P3口將輸出電流〔ILL〕,是由于上拉的緣故。P3口也可作為AT89C52的特殊功能口P3口管腳第二功能:P3.0RXD:〔串行輸入口〕P3.1TXD:〔串行輸出口〕P3.2INT0:〔外部中斷0〕P3.3INT1:〔外部中斷1〕P3.4T0:〔記時器0外部輸入〕P3.5T1:〔記時器1外部輸入〕P3.6WR:〔外部數(shù)據(jù)存儲器寫選通〕P3.7RD:〔外部數(shù)據(jù)存儲器讀選通〕P3口同時也為閃爍編程、編程校驗接收一些控制信號。RST引腳:復(fù)位功能。當振蕩器復(fù)位器件時,應(yīng)該保持RST引腳兩個機器周期的高電平時間。ALE/PROG引腳:ALE端是以不變的頻率周期輸出正的脈沖信號,此頻率為振蕩器頻率的1/6,因此它可用作對外部輸出的脈沖或者用于定時。但是要注意的是,每當用作外部數(shù)據(jù)存儲器時,都將跳過一個ALE脈沖,如想禁止ALE的輸出,可在SFR8EH地址上置0。與此同時,ALE只有在執(zhí)行MOVX,MOVC指令時ALE才起作用。另外,該引腳被拉高。PSEN引腳:是外部程序存儲器的選通信號。在外部程序存儲器取指期間,每個機器周期兩次/PSEN有效。但當訪問外部數(shù)據(jù)存儲器時,兩次有效的/PSEN信號將不會出現(xiàn)。EA/VPP引腳:加密方式1時,/EA將內(nèi)部鎖定為RESET。在FLASH編程期間,這個引腳也可用于施加12V編程電源〔VPP〕。XTAL1引腳:反向振蕩放大器的輸入以及內(nèi)部時鐘工作電路的輸入。XTAL2引腳:反向振蕩器的輸出。振蕩器特性:XTAL1和XTAL2分別是反向放大器的輸入和輸出端。該反向放大器可以配置為片內(nèi)振蕩器,石晶振蕩和陶瓷振蕩都可采用。如果采用外部時鐘源驅(qū)動器件那么XTAL2應(yīng)不接。要是有輸入至內(nèi)部時鐘信號那么要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬并無任何要求,但是必須保證脈沖的上下電平需要的寬度。AT89C52主要特性:1〕與MCS-51兼容2〕片內(nèi)振蕩器和時鐘電路3〕4K字節(jié)可編程閃爍存儲器4〕全靜態(tài)工作:0Hz-24MHz5〕三級程序存儲器鎖定6〕數(shù)據(jù)保存時間:10年7〕128×8位內(nèi)部RAM8〕32可編程I/O線9〕5個中斷源10〕兩個16位定時器/計數(shù)器11〕壽命:1000寫/擦循環(huán)12〕可編程串行通道13〕低功耗的閑置和掉電模式

3.2ADC0804A/D轉(zhuǎn)換器A/D轉(zhuǎn)換器就是將產(chǎn)生的模擬信號〔無論是電壓變化,溫度變化〕轉(zhuǎn)變成數(shù)字信號輸入單片機進行處理。ADC0804A/D轉(zhuǎn)換器有依次逼近的8位COMS,三態(tài)鎖定輸出,在工作中能到達135US的存取時間。而它的8位分辨率,100US轉(zhuǎn)換時間,1LSB的總誤差,是相當高效的圖4ADC0804引腳圖下面對ADC0804引腳依次作介紹:/CS:為芯片的選擇信號。/RD:為外部讀取轉(zhuǎn)換結(jié)果的控制輸出信號。當/RD為HI時,DB0~DB7是高阻抗處理,當/RD為LO時,才能夠輸出數(shù)字信號。/WR:用來控制輸入轉(zhuǎn)換的啟動口,表示ADC的轉(zhuǎn)換開始〔/CS=0時〕,當/WR口由HI變?yōu)長O時,去除轉(zhuǎn)換器:當/WR變?yōu)镠I時,開始轉(zhuǎn)換。其中/CS,/RD,/WR三個端口對整個AD轉(zhuǎn)換器進行控制。CLKIN,CLKR:時鐘輸入。/INTR:中斷請求信號輸出口。VIN(+)VIN(-):差動模擬電壓輸入。當單端正電壓時輸入時,VIN(-)接地:當差動輸入時,直接參加VIN(+)VIN(-)。DGND,AGND:數(shù)字信號和模擬信號的接地口。VREF:輔助參考電壓。DB0~DB7:輸出8位的數(shù)字信號。VCC:電源供給。在本次設(shè)計中,由滑動變阻器產(chǎn)生的一個模擬信號,由VIN(+)口輸入ADC0804,轉(zhuǎn)換后的數(shù)字信號由DB1到DB6輸入進89C52單片機進行處理。3.3舵機本次設(shè)計采用輝盛mg995舵機,在仿真中,用舵機控制節(jié)氣門的開度,舵機轉(zhuǎn)動范圍為-90度到+90度,而相對應(yīng)車速在0Km/h到180Km/n之間,舵機轉(zhuǎn)角增大表示節(jié)氣門開度增大,節(jié)氣門開度變大,使速度增加,當舵機轉(zhuǎn)角變小時,表示節(jié)氣門開度減少,駕駛員開始減油門,車速減小,通過單片機AT89C52中的P2.3口來控制舵機。圖5舵機3.4LCD1602液晶顯示器液晶顯示是利用液晶的物理特性,顯示區(qū)域由電壓來控制,有電就有顯示,LCD既可以顯示圖形,也可以顯示字符。液晶顯示器以體型薄、顯示質(zhì)量高,功耗低等優(yōu)點被廣泛使用。圖61602LCD液晶顯示屏LCD液晶顯示屏的優(yōu)點。1602LCD液晶屏顯示質(zhì)量高液晶顯示器畫質(zhì)高且不會閃爍,這是因為液晶顯示器不像陰極射線管顯示器,會不斷刷新新亮點,每一個點在收到信號后的亮度和色彩會得到很好的保持,而且發(fā)光非常恒定。2、數(shù)字式接口液晶顯示器都是接受數(shù)字式的信號,單片機系輸出的信號能夠被液晶顯示器更好吸收,在做實物的時候方便操作。3,體積小、重量輕液晶顯示器通過顯示屏上的電極控制液晶分子狀態(tài)來到達顯示的目的,在重量上比相同顯示面積的傳統(tǒng)顯示器要輕得多。4,功耗低LCD液晶顯示器主要內(nèi)部的電極和驅(qū)動IC上耗功電量,因而耗電量比其它顯示器要少得多。下列圖是LCD液晶顯示器實物圖:圖7LCD液晶顯示器3.5時鐘電路本設(shè)計采用內(nèi)部時鐘方式的電路。在89C52單片機內(nèi)部中有一個用于構(gòu)成放大器,該放大器內(nèi)有高增益反相的振蕩器,其中XTAL1為輸入端口,XTAL2為輸出端口。這兩個引腳連接石英晶體振蕩器和微調(diào)電容,就構(gòu)成了一個穩(wěn)定的自激振蕩器。電路中的電容C3和C4為30pF。常是在1.2MHZ~12MHZ為晶體的振蕩頻率的通常范圍。晶體頻率與系統(tǒng)的時鐘頻率成正比,而頻率越快,單片機的運行速度也就越快。圖8時鐘電路3.6復(fù)位電路復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。本次設(shè)計采用上電復(fù)位電路。加電瞬間通過電容充電來實現(xiàn)的是上電復(fù)位電路,其電路如圖9所示。通電的時候,電容C1通過電阻R1充電,RST端口出現(xiàn)正脈沖時候,用以復(fù)位。當電源Vcc的上升時間沒有超過1ms時,系統(tǒng)自動復(fù)位,即接通電源就完成了系統(tǒng)的復(fù)位初始化。在參數(shù)的選定過程中,振蕩穩(wěn)定后應(yīng)保證復(fù)位高電平持續(xù)時間大于2個機器周期。本次設(shè)計采用的晶體頻率為6MHZ,C1=22uF,R1=1kΩ。圖9復(fù)位電路

4系統(tǒng)軟件設(shè)計4.1proteus軟件環(huán)境介紹Proteus軟件是英國Labcenterelectronics公司所開發(fā)的工具軟件,Proteus軟件除了具有和其它EDA工具一樣的原理布圖、PCB自動或人工布線及電路仿真的功能外,最重要的是,它有互動的電路仿真。在微處理器的應(yīng)用上,還可以直接在基于原理圖的虛擬原型上編程,并實現(xiàn)軟件源碼級的實時調(diào)試。Proteus軟件中能進行模擬和數(shù)字電路的設(shè)計,在設(shè)計中可以使用一個特定符號來代替元器件,并完成不會對真實電路造成任何損害的電路仿真操作。而且在仿真過程中能獲得信號圖標,對于市面上最流行的單片機都能進行仿真,而且還能利用ARES開發(fā)印制電路板。4.2Protel軟件環(huán)境介紹Protel印制板設(shè)計軟件包是澳大利亞proteltechnology公司發(fā)開的電子CAD產(chǎn)品,在電路圖的設(shè)計上,protel有著很高的自動布線布通率。而電子元器件在電路圖中連接,在印刷幅員中能否實現(xiàn)主要依靠它。在設(shè)計常用的單、雙面印制板時只要選擇適當?shù)脑季趾筒季€策略方法,protel就可以輕易的到達98%-100%的布通率。對于極少數(shù)不能布通的定方,protel可以用飛線指示出來,引導(dǎo)用戶用手工方法連通。 4.3系統(tǒng)軟件和硬件在本次系統(tǒng),我偏重做了軟件局部,對整個巡航系統(tǒng)首先做了Protel電路圖,和Proteus仿真,又利用keil軟件進行程序的編譯與調(diào)試,它對硬件系統(tǒng)起到擴充和完善的作用。而在系統(tǒng)硬件局部,我做了巡航5個按鍵以及顯示的功能。下面將軟件和硬件局部做個簡單介紹:〔1〕汽車巡航軟件程序設(shè)計過程使用的AD芯片采樣模擬路況,通過信號發(fā)生器模擬車速傳感器信號,程序里要對AD進行控制和數(shù)據(jù)讀取,而單片機要處理車速信號得到當前車速,還要控制液晶顯示和舵機的工作,由于本系統(tǒng)使用的單片機沒有PWM模塊,舵機控制信號采用的是由兩個中斷來控制產(chǎn)生的[7]?!?〕汽車巡航硬件實物設(shè)計過程在硬件電路設(shè)計中,先購置需要的各種元器件,然后依照Protel軟件中生的PCB版,對電路進行連線,最后將程序?qū)懭雴纹瑱C,輸入信號,進行按鍵調(diào)試,下列圖為此次畢業(yè)設(shè)計中所做的實物:圖10硬件實物4.4程序流程圖〔1〕主程序流程圖圖11主程序圖〔上〕圖12主程序圖〔下〕主程序流程圖說明:對系統(tǒng)先進行初始化,由AD轉(zhuǎn)換器采集的模擬信號轉(zhuǎn)換為數(shù)字信號,輸入單片機進行處理,同時進行按鍵掃描,當車速到達巡航要求范圍內(nèi),按下巡航設(shè)定,采樣當前車速,并進行設(shè)定,那么此時PID算法將起作用,將車速和舵機轉(zhuǎn)角控制在設(shè)定值左右,由于本系統(tǒng)涉及到生命財產(chǎn)平安,所以設(shè)計了開關(guān)和設(shè)定兩個按鍵來確認汽車巡航,其中巡航取消按鍵和駕駛員加減油門都可以使汽車巡航關(guān)閉?!?〕A/D采樣模擬路況子程序圖13AD采樣子程序流程圖框圖A/D采樣模擬路況子程序圖說明:在此圖中先將AD轉(zhuǎn)換器初始化,將滑動變阻器產(chǎn)生的模擬信號轉(zhuǎn)變成數(shù)字信號,然后讀取到采樣值,并輸入給單片機工作?!?〕PID車速控制子函數(shù)圖14PID車速控制子程序流程框圖PID車速控制子函數(shù)流程圖說明:在此流程圖中,主要說明的是車速的控制算法,車速的變化范圍從幾十千米每小時到零點幾千米每小時,變化范圍大,控制精度高,一套PID參數(shù)難以到達要求,于是我采用了分段PID的方式,當前車速和巡航車速相差較大的時候,采用一套參數(shù),較小采用另一套,最后得到當前舵機的控制量[9]?!?〕車速采樣子函數(shù)圖15車速采樣程序流程圖車速采樣程序流程圖說明:因為本方案采用的車速傳感器是用信號源模擬的,傳給單片機的脈沖是一定的,因為車速和舵機角度還有路況都有關(guān)系,計算車速的時候我是用舵機和路況參數(shù)產(chǎn)生一個系數(shù)來影響車速,經(jīng)過試驗,得出,舵機系數(shù)是(duoji-500)/800,路況系數(shù)為(adval+400)/700,從而把這三者聯(lián)系起來?!?〕按鍵掃描子程序圖16按鍵掃描子程序流程圖按鍵掃描子程序流程圖說明:按鍵按下后信號會出現(xiàn)一定頻率的抖動,導(dǎo)致單片機識別錯誤,只按了一次,識別為按了屢次,所以我們這里要加延時去抖。5系統(tǒng)調(diào)試過程5.1電路原理圖通過上面的硬件設(shè)計和軟件設(shè)計過程,設(shè)計的工作已經(jīng)根本完成,接下來的工作就是對所設(shè)計好的應(yīng)用系統(tǒng)進行調(diào)試。通過調(diào)試可以檢查出系統(tǒng)出現(xiàn)的一些錯誤,從而進行下一步的修改。〔1〕在Protel99SE中,對硬件電路圖進行ERC電氣規(guī)那么檢查。圖17protel原理圖圖18ERC電氣規(guī)那么檢查結(jié)果〔2〕程序調(diào)試程序經(jīng)過調(diào)試顯示“0錯誤,0警告〞。表示程序調(diào)試通過。圖19程序調(diào)試通過示意圖(3)PCB板圖圖20PCB圖5.2系統(tǒng)仿真調(diào)試(1)在Proteus中建立仿真圖,界面結(jié)果如圖圖21protues仿真圖圖22巡航按鍵(2)當速度到達40Km/H圖23汽車巡航狀態(tài)圖24汽車舵機轉(zhuǎn)動狀態(tài)此時當前速度83Km/h,設(shè)定巡航車速為83Km/h(3)在仿真中我用一個滑動變阻器來模擬道路狀況的變化,如下圖:圖25滑動變阻器1當滑動變阻器值變小時,表示路面狀況變好,此時速度會增加,但因為在巡航中,設(shè)定為一定速度,所以,此時巡航控制系統(tǒng)會調(diào)節(jié)舵機角度,使其變小,來減小節(jié)氣門開度,從而到達降速的目的:圖26路況變好車速和舵機轉(zhuǎn)角此圖為當?shù)缆窢顩r變好時,當前車速略微高于設(shè)定車速,所以舵機轉(zhuǎn)角從-10.8減小為-13.0,降低節(jié)氣門開度,來到達降速目的。2當滑動變阻器值增大時,表示路面狀況變差,此時速度會降低,但因為在巡航中,設(shè)定為一定速度,所以,此時巡航控制系統(tǒng)會調(diào)節(jié)舵機角度,使其變大,來增大節(jié)氣門開度,從而到達提速的目的:圖27路況變差車速和舵機轉(zhuǎn)角此圖為道路狀況變差時,當前車速略微低于設(shè)定速度,所以舵機轉(zhuǎn)角從-10.8增大至-8.1,增大假期們開度,開到達提速目的。(4)在巡航中,當駕駛員想減小巡航車速,按下巡航減速鍵,設(shè)定速度會以5Km/h往下遞減,如圖:圖28巡航減速此圖為駕駛員連續(xù)按了3次設(shè)定速度減為68Km/h,舵機轉(zhuǎn)角從-10.8減小至-23.2,使節(jié)氣門減小,當前車速也隨著減小為69Km/h(5)巡航中,當駕駛員想增加巡航車速,按下巡航加速鍵,設(shè)定速度會以5Km/h往上遞增,如圖:圖29巡航加速此圖為駕駛員連續(xù)按了3次巡航加速鍵以后,設(shè)定速度增值98(6)當駕駛員在巡航過程中,按下巡航取消鍵時,巡航功能自動取消,如圖:圖30巡航取消(7)當駕駛員在巡航過程中,踩下油門或者踩下剎車時,巡航設(shè)定自動取消,但LCD液晶顯示屏幕依然顯示當前速度,如圖:圖31設(shè)定取消結(jié)論在本次設(shè)計采用了穩(wěn)定性好,并且功能強大的AT89C52單片機。在系統(tǒng)中,單片機對接收到的按鍵信號進行判斷識別,并執(zhí)行相應(yīng)的處理;并且讀取車速信號,控制LCD液晶顯示屏顯示當前車速和巡航設(shè)定車速,以及控制舵機轉(zhuǎn)動來到達調(diào)節(jié)車速。其中,還特別添加了模擬路況局部,將一個滑動變阻器產(chǎn)生一個模擬信號,再通過A/D轉(zhuǎn)換輸入進單片機,使巡航的仿真過程更加的完善,本系統(tǒng)采用的電路簡單便易于實現(xiàn),軟件設(shè)計獨特、可靠。本次設(shè)計偏重涉及了軟件局部,硬件局部只模擬了按鍵和顯示模塊的功能,而在實際運用中,還需要將硬件實物與軟件結(jié)合,才能最終在實際生產(chǎn)中得以實現(xiàn)??偨Y(jié)與體會在這次系統(tǒng)設(shè)計的過程中,充分表達了微機原理對汽車電器局部的運用,在設(shè)計中對單片機的工作原理需要熟練的掌握,而且學(xué)習(xí)了解了很多芯片的使用方法,對數(shù)據(jù)存儲器和程序存儲器的擴展以及I/O并行口的擴展知識有了更深的了解。而在專業(yè)知識中,對汽車巡航設(shè)計的理解以及設(shè)計,更是讓我受益匪淺。本來汽車電器的設(shè)計中,主要針對軟件局部進行設(shè)計,將汽車巡航中中能實現(xiàn)的功能根本實現(xiàn)了,并且模擬路況和油門使仿真更具說服力。在設(shè)計中,自己學(xué)習(xí)了新的芯片以及編譯程序,尤其是在編譯程序中,更是讓自己的VC語言有了更多的進步,再設(shè)計之外,也對顯示局部和按鍵局部做了實物仿真,在制作實物過程中,不斷的進行焊接,連線,程序調(diào)試,在這期間,遇到過很多問題,包括線路的連接,元器件的排版,調(diào)試,等等,但隨著與導(dǎo)師同學(xué)進行交流,很多自己不懂的問題最后都迎刃而解,不僅僅如此,還充分鍛煉了自己的動手能力。當看到自己做的實物呈現(xiàn)在面前,有著無比的自豪感,而這次畢業(yè)設(shè)計,相信對我的專業(yè)領(lǐng)域有著深遠的影響,而對于即將工作的我們,遠遠知道學(xué)校的理論知識在實際生產(chǎn)和設(shè)計中,還有著很大差異,這也時時鼓勵我朝著更高的目標前進。謝辭經(jīng)過半年的準備和忙碌,我畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一名本科生,由于知識的欠缺,經(jīng)驗的匱乏,畢業(yè)設(shè)計中難免有許多考慮不周全的地方,如果沒有趙老師的催促指導(dǎo),同學(xué)們的幫助,想要完成這次設(shè)計是難以想象的。首先要感謝我尊敬的導(dǎo)師趙老師。在設(shè)計過程中,趙老師給了我很大的幫助和支持,并提出了很多珍貴的意見,幫我解決了諸多的實際問題。特別是在我對設(shè)計感到焦慮時,她也能耐心地給我介紹資料,講解思路。衷心地感謝趙老師!她嚴謹細致、一絲不茍的作風(fēng)將一直是我工作、學(xué)習(xí)中的典范;她循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。更重要的是,趙老師在大三教我們微機原理時一絲不茍其次要感謝和我同在一個班級的同學(xué)們,在設(shè)計中,大家相互鼓勵并在學(xué)習(xí)和生活上相互幫助。在這樣一個溫馨團結(jié)的氣氛中,我度過了愉快而有意義的大學(xué)時光,并最終完成了學(xué)業(yè)。【參考文獻】[1]?Protel99SEEDA技術(shù)及應(yīng)用?徐崢穎編著,北京:機械工業(yè)出版社,2005[2]?單片機系統(tǒng)的protues設(shè)計與仿真?張靖武編著,北京:電子工業(yè)出版社,2007[3]?單片機原理及接口技術(shù)?李朝青編著,北京:北京航空航天大學(xué)出版社,2005[4]?MCS-51單片機應(yīng)用開發(fā)實用子程序?邊春遠編著,北京:人民郵電出版社,2005[5]?單片機應(yīng)用技術(shù)?劉守義編著,西安:西安電子科技大學(xué)出版社,2002[6]?單片機應(yīng)用系統(tǒng)設(shè)計?韓志軍編著,北京:機械工業(yè)出版社,2005[7]?基于PIC單片機汽車巡航控制系統(tǒng)的研究?李海軍,王東旭編著,哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2003[8]?微型計算機控制技術(shù)?臺方編著,北京:中國水利水電出版社,2001[9]?基于模糊PID控制的汽車巡航控制系統(tǒng)仿真與設(shè)計?周美蘭,張穎,關(guān)曉麗,張詩閣編著,哈爾濱:哈爾濱理工大學(xué)出版社2021[10]?微機接口技術(shù)300例?李恩林編著,北京:機械工業(yè)出版社,2003[11]?現(xiàn)代汽車巡航系統(tǒng)控制原理淺談?任偉,王懷玲編著,哈爾濱:哈爾濱理工大學(xué)出版社2021

附錄程序:#definexunhang_Kpp35 #definexunhang_Kii0#definexunhang_Kdd20#definexunhang_Kppp15#definexunhang_Kiii0#definexunhang_Kddd0sbitkey1=P1^3; //定義開關(guān)鍵sbitkey2=P1^4; //定義設(shè)定鍵sbitkey3=P1^5; //定義加速鍵sbitkey4=P1^6; //定義減速鍵sbitkey5=P1^7; //定義取消鍵sbitjiayou=P1^2; //定義加油門鍵sbitjianyou=P1^1; //定義減油門鍵sbitE=P2^2; //定義液晶使能端口sbitRW=P2^1; //定義液晶控制端口sbitRS=P2^0; //sbitCS=P2^4; //定義AD控制端口sbitADRD=P2^5; //sbitADWR=P2^6; //sbitpwm=P2^3; //定義PWM輸出端口//sfrDBPort =0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口 unsignedlongintspeed_get,speed_set=0;//unsignedintadval,duoji=700;//adval為AD采樣的值用來模擬路況變化范圍0-255,duoji為占空比的控制量范圍是500-2500分別對應(yīng)-90°到90°intpan,key;//pan為判定設(shè)定速度和讀取速度相對大小的中間值后面詳述,key為5個功能按鍵的狀態(tài)值ucharnum;//定義一個循環(huán)變量,在各個FOR循環(huán)中使用ucharcodetable[]="NOW";//顯示在液晶上的字符串ucharcodetable1[]="SET";ucharcodetable2[]="km/h";ucharcodetable3[]="SYSTEM";ucharcodetable4[]="DISABLED";ucharbai,shi,ge,xiaosu1,xiaosu2,s_bai,s_shi,s_ge,s_xiaosu1,s_xiaosu2;unsignedlongintPulse;//pulse為采集到的脈沖個數(shù)voiddelay(uintN)//延時N毫秒子程序{ uintx,y; for(x=N;x>0;x--) for(y=110;y>0;y--);}voidwrite_cmd(ucharcmd)//寫指令子程序{ RS=0; RW=0; P0=cmd; delay(1); E=1; delay(1); E=0;}voidwrite_data(uchardate)//寫數(shù)據(jù)子程序{ RS=1; RW=0; P0=date; delay(1); E=1; delay(1); E=0;}voidLCD_init()//顯示屏初始化{ E=0; write_cmd(0x38);//5*7點陣字符 write_cmd(0x0c);//整體顯示,關(guān)光標,不閃爍 write_cmd(0x06);//AC自動增一,畫面不動 write_cmd(0x01);//清屏 write_cmd(0x80);//設(shè)置DDRAM地址}voidad_init()//AD轉(zhuǎn)換初始化{ CS=0;//片選}voidCPU_Init(void)//單片機中斷初始化{TMOD=0x11;//T0定時模式,方式1;T1定時模式,方式1 T2CON=0x02;//T2計數(shù)模式TH0=0;//T0定時初值TL0=0;TH2=0;//T2計數(shù)初值TL2=0; TH1=0X63;//T1定時初始值TL1=0XBF;//20MSEA=1;//開放總中斷 ET0=1; //允許定時器中斷 ET1=1;//允許定時器中斷 ET2=1;//允許計數(shù)器中斷 TR0=0; TR1=1; TR2=0; //關(guān)閉TO和T1 }voidad_start()//AD使能,AD開始轉(zhuǎn)換子程序{ ADWR=1; _nop_(); ADWR=0; _nop_(); ADWR=1;}voidad_read()//AD讀取子程序{ P3=0XFF; ADRD=1; _nop_(); ADRD=0; _nop_(); adval=P3; ADRD=1;}voidkey_scan()//按鍵掃描子程序{ if(key1==0) { delay(5);//延時去抖 if(key1==0) { key=1;//給標志位賦值,1表示開關(guān)鍵 while(!key1);//等待按鍵釋放 } } elseif(key2==0) { delay(5); if(key2==0) { key=2;//2表示設(shè)定鍵 while(!key2); } } elseif(key3==0) { delay(5); if(key3==0) { key=3;//3表示加速鍵 while(!key3); } } elseif(key4==0) { delay(5); if(key4==0) { key=4;//4表示減速鍵 while(!key4); } } elseif(key5==0) { delay(5); if(key5==0) { key=5;//5表示取消鍵 while(!key5); } } else//沒有鍵按下時KEY復(fù)位0 { key=0; } if(jiayou==0)//加油鍵檢測 { duoji=duoji+10; speed_set=0; } elseif(jianyou==0)//減有鍵檢測 { duoji=duoji-10; speed_set=0; }}voiddisplay1()//顯示字符子程序{ write_cmd(0x80+0x00);//光標定為 for(num=0;num<3;num++) { write_data(table[num]);//寫入字符串 } write_cmd(0x80+0x0C); for(num=0;num<4;num++) { write_data(table2[num]); } write_cmd(0x80+0x40); for(num=0;num<3;num++) { write_data(table1[num]); } write_cmd(0x80+0x4C); for(num=0;num<4;num++) { write_data(table2[num]); }}voidCount_Disp(void)//數(shù)據(jù)轉(zhuǎn)換函數(shù){ if(flage1==1)//flage1為采集完成標志位1表示脈沖采集完成 { Pulse=T2H*256+T2L;//高八位乘以256加上低八位為采集到的脈沖個數(shù),讀取脈沖采集頻率為1s一次車輪, //Pulse=1500; //假設(shè)車輪周長為1米每轉(zhuǎn)一圈50個脈沖如果車速為200KM/H,相當于55m/s,每秒鐘產(chǎn)生55*50=2750脈沖, //計數(shù)器2的計數(shù)范圍為0-65535所以無論什么情況都不會產(chǎn)生溢出 speed_get=Pulse*(adval+400)*36/(5*700)*(duoji-500)/800;//車速本來應(yīng)該為speed_get=Pulse*3。6/50 flage1=0;//讀取完成,標志位置0 m=0;//讀取完成,標志位置0 }if(speed_get>1000000)//最大量程為999999{speed_get=999999;}bai=speed_get/10000;//百位(wan)shi=(speed_get%10000)/1000;//十位ge=((speed_get%10000)%1000)/100;//個位xiaosu1=(((speed_get%10000)%1000)%100)/10;//小數(shù)點xiaosu2=((((speed_get%10000)%1000)%100)%10);//小數(shù)點 s_bai=speed_set/10000;//百位(wan)s_shi=(speed_set%10000)/1000;//十位s_ge=((speed_set%10000)%1000)/100;//個位s_xiaosu1=(((speed_set%10000)%1000)%100)/10;//小數(shù)點s_xiaosu2=((((speed_set%10000)%1000)%100)%10);//小數(shù)點}voiddisplay2()//顯示轉(zhuǎn)速子程序{ write_cmd(0x80+0x05);//給液晶寫入命令,指定光標位置 write_data(0x30+bai);//給液晶寫入數(shù)據(jù) write_data(0x30+shi); write_data(0x30+ge); write_data('.'); write_data(0x30+xiaosu1); write_data(0x30+xiaosu2); write_cmd(0x80+0x45); write_data(0x30+s_bai); write_data(0x30+s_shi); write_data(0x30+s_ge); write_data('.'); write_data(0x30+s_xiaosu1); write_data(0x30+s_xiaosu2);}voiddisplay3()//顯示無效子程序{ write_cmd(0x80+0x05); for(num=0;num<6;num++) { write_data(table3[num]); } write_cmd(0x80+0x44); for(num=0;num<8;num++) { write_data(table4[num]); }}voidxunhang_PID_Set(void)//分段PID控制函數(shù){staticinte2;//上上次誤差staticinte1;//上次誤差staticinte0;//當前誤差 staticinte02;//上上次誤差staticinte01;//上次誤差/

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論