畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的智能雨刮控制器設(shè)計(jì)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的智能雨刮控制器設(shè)計(jì)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的智能雨刮控制器設(shè)計(jì)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的智能雨刮控制器設(shè)計(jì)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)-基于單片機(jī)的智能雨刮控制器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

基于單片機(jī)的智能雨刮控制器全套圖紙加V信153893706或扣3346389411摘要雨刮器是汽車安全行駛的重要部件,用于消除擋風(fēng)玻璃、后窗玻璃及大燈玻璃上的雨雪和灰塵等,以保證玻璃透明清晰。本文分析采用具有LIN總線接口的雨量傳感器來(lái)獲取雨量和光照強(qiáng)度信號(hào),根據(jù)雨量大小對(duì)雨刮進(jìn)行智能控制,無(wú)需駕駛員手動(dòng)控制,兼容CAN總線通信接口,可向其他車身CAN網(wǎng)絡(luò)控制節(jié)點(diǎn)發(fā)送燈控和窗控命令,從而實(shí)現(xiàn)自動(dòng)開啟前照燈以及自動(dòng)關(guān)閉車窗的操作。在汽車智能雨刮系統(tǒng)中由于兩個(gè)雨刮電機(jī)的轉(zhuǎn)速不可能完全一樣,就存在兩個(gè)雨刮擺動(dòng)不同步的問(wèn)題。本文在分析了模糊控制理論及雨刮同步擺動(dòng)規(guī)則的基礎(chǔ)上,提出了一種基于模糊控制的汽車智能雨刮系統(tǒng)。該系統(tǒng)將轉(zhuǎn)速偏差和轉(zhuǎn)速偏差變化量模糊化為模糊控制器的輸入語(yǔ)言變量,根據(jù)所制定的一套模糊控制規(guī)則來(lái)選擇控制PWM的輸出變量,并以此通過(guò)脈寬調(diào)制技術(shù)來(lái)驅(qū)動(dòng)直流電機(jī),使兩個(gè)雨刮同步擺動(dòng)。本文基于單片機(jī)完成了對(duì)雨滴傳感器、CAN網(wǎng)絡(luò)控制節(jié)點(diǎn)、模糊控制的軟、硬件設(shè)計(jì),實(shí)現(xiàn)了雨刮器根據(jù)雨量大小智能控制,提高汽車雨天行駛安全。在雨天駕駛者無(wú)需調(diào)節(jié)雨刮器便能獲得良好的駕駛視野,更好的集中精力開車。關(guān)鍵詞:CAN網(wǎng)絡(luò)控制節(jié)點(diǎn);模糊控制;單片機(jī);雨刮器IntelligentWindscreenWiperControllerBasedonMCUAbstractThewiperisanimportantpartofautomobiledrivingsafety,usedtoremovesnowanddustwindshield,rearwindowglassandglassandsoon,inordertoensureatransparentandclearglass.ThispaperanalysistoobtainrainfallandlightintensitysignalusingarainfallsensorwithLINbusinterface,accordingtothesizeoftherainfallwiperforintelligentcontrol,thedriverdoesnotneedtomanuallycontrol,compatiblewithCANbuscommunicationinterface,canbetoothervehicleCANnetworkcontrolnodesendsthelampcontrolandwindowcontrolcommand,soastorealizetheautomaticopeningheadlightandoperationoftheautomaticclosingthewindows.InIntelligentWindscreenwipersystemofautomobilewithtwowipermotorspeedcannotbeexactlythesame,thereisnosynchronizationoftwowiperswingproblem.Basedontheanalysisofthefuzzycontroltheoryandthewipertoswingsynchronouslyrules,proposesanintelligentwindscreenwipersystemofautomobilebasedonfuzzycontrol.Thesystemwillrotatespeedandspeeddeviationvariationfuzzyinputvariablesoffuzzycontroller,basedontheformulationofasetoffuzzycontrolrulestoselecttheoutputvariablePWMcontrol,andthenthroughthepulsewidthmodulationtechnologytodriveDCmotor,sothatthetwowipertoswingsynchronously.BasedontheMCUtocompletetherainsensornetworknodes,CANcontrol,fuzzycontrolofsoft,hardwaredesign,realizationofthewiperbladeaccordingtotherainfallofintelligentcontrol,toimprovethecardrivingrainsafety.Onrainydaysthedriverwithoutadjustingthewipercangetgooddrivingvision,focusonbetterdrive.Keywords:CANnetworkcontrolnode;fuzzycontrol;singlechipmicrocomputer;wiper第一章緒論研究背景汽車工業(yè)是國(guó)民經(jīng)濟(jì)發(fā)展的支柱產(chǎn)業(yè)之一,現(xiàn)代汽車正從一種單純的交通工具朝著滿足人們需求、安全、節(jié)能和環(huán)保的方向發(fā)展。為了滿足人們對(duì)汽車日益提高的要求,汽車研發(fā)及生產(chǎn)機(jī)構(gòu)必然要將越來(lái)越多的電子產(chǎn)品引入到汽車上,智能控制系統(tǒng)也成為汽車革新的主要內(nèi)容。雨刮器屬汽車附件,是汽車安全行駛的重要部件,用于消除擋風(fēng)玻璃、后窗玻璃及大燈玻璃上的雨雪、灰塵和水泥等,以保證玻璃透明清晰。第一個(gè)發(fā)明電動(dòng)刮水器的是德國(guó)博世公司,博世將它作為“博世最年幼的產(chǎn)品”加入到博世的產(chǎn)品家族。自那以后,這個(gè)嬰兒逐漸成長(zhǎng),從單純的刮片發(fā)展到二十一世紀(jì)初的風(fēng)窗玻璃之星——無(wú)支架的刮水器。在汽車的駕駛史上,對(duì)風(fēng)窗玻璃的清潔問(wèn)題解決開始得比較晚。汽車從只有平添駕駛發(fā)展到成為全天候的駕駛。技術(shù)變化最大是在二戰(zhàn)以后,伴隨著大規(guī)模機(jī)械的出現(xiàn)。風(fēng)窗玻璃洗滌器、間歇開關(guān)、后窗刮水器和可加熱噴水器保證了駕駛時(shí)的視野清晰與行車安全。伴隨著其他一些技術(shù)革新,比如雨滴傳感器、可變位刮水臂、刮水器的出現(xiàn),就更擴(kuò)大了刮拭的范圍,刮水器成為了一個(gè)復(fù)雜的系統(tǒng)。現(xiàn)場(chǎng)總線技術(shù)已經(jīng)廣泛應(yīng)用于工業(yè)控制中,尤其是CAN(ControlerAreaNerwork)總線由于具有可靠性高、成本低、容易實(shí)現(xiàn)等優(yōu)點(diǎn),在現(xiàn)場(chǎng)總線實(shí)際工程應(yīng)用中占有了較大份額。伴隨著總線技術(shù)發(fā)展,LIN(LocalInterconnectNetwork)總線作為一種低成本串行通信網(wǎng)絡(luò),其目標(biāo)是為現(xiàn)有現(xiàn)場(chǎng)總線控制網(wǎng)絡(luò)提供輔助功能,特別是汽車控制網(wǎng)絡(luò)中總線應(yīng)用,因此必然存在一個(gè)LIN總線和其它總線通信接口實(shí)現(xiàn)研究的意義據(jù)統(tǒng)計(jì)全世界雨天行車有7%的事故是由于駕駛員手動(dòng)操作雨刷引起的,現(xiàn)在的汽車中已經(jīng)安裝了越來(lái)越多的傳感器以增加主動(dòng)性和被動(dòng)安全性。LIN是一種低成本串行通訊網(wǎng)絡(luò)用于實(shí)現(xiàn)汽車中分布式電子系統(tǒng)控制,LIN目標(biāo)是為現(xiàn)有汽車網(wǎng)絡(luò)(例如CAN總線)提供輔助功能,因此LIN總線是一種輔助總線網(wǎng)絡(luò),在不需要CAN總線帶寬和多功能場(chǎng)合比如智能傳感器和制動(dòng)裝置之間通訊,使用LIN總線可大大節(jié)省成本。LIN通訊是基于SCI(UART)數(shù)據(jù)格式,采用單主控制器/多從設(shè)備模式,僅使用一根12V信號(hào)總線和一個(gè)無(wú)固定時(shí)間基準(zhǔn)節(jié)點(diǎn)同步時(shí)鐘線。采用CAN-LIN網(wǎng)關(guān)設(shè)計(jì),解決了現(xiàn)場(chǎng)總線控制中CAN總線控制網(wǎng)絡(luò)和LIN總線控制網(wǎng)絡(luò)之間信息傳輸問(wèn)題,有效地提高了雨天行車的安全性。如果汽車這種智能雨刷控制器,駕駛者就無(wú)需調(diào)節(jié)雨刮器設(shè)置來(lái)迅速停止刮片的運(yùn)動(dòng)或者得到更好的視角。當(dāng)在濕路上駕駛時(shí),駕駛者就無(wú)需動(dòng)手來(lái)打開雨刮器,所以駕駛者就可以集中精力開車?;緝?nèi)容和技術(shù)方案基本內(nèi)容:運(yùn)用汽車雨量傳感器對(duì)環(huán)境雨量大小的檢測(cè),把信號(hào)輸單片機(jī)系統(tǒng),通過(guò)程序控制步進(jìn)電機(jī)根據(jù)相應(yīng)的環(huán)境做出不同的轉(zhuǎn)動(dòng)。比如當(dāng)下小雨時(shí),雨刷器自動(dòng)工作在小雨運(yùn)行方案(雨刷電機(jī)轉(zhuǎn)動(dòng)一個(gè)來(lái)回后停止10s后繼續(xù)運(yùn)行),當(dāng)中下大雨時(shí),雨刷器自動(dòng)工作在中大雨運(yùn)行方案(雨刷電機(jī)轉(zhuǎn)動(dòng)一個(gè)來(lái)回后停止5s后繼續(xù)運(yùn)行),當(dāng)下大雨時(shí),雨刷器自動(dòng)工作在大雨運(yùn)行方案(雨刷電動(dòng)機(jī)轉(zhuǎn)動(dòng)一個(gè)來(lái)回后繼續(xù)運(yùn)行)。同時(shí)提供五種運(yùn)行方式讓用戶選擇運(yùn)行狀態(tài),本設(shè)計(jì)中單片機(jī)運(yùn)用AT89C52、步進(jìn)電機(jī)用TA8435H進(jìn)行驅(qū)動(dòng)。控制系統(tǒng)同時(shí)還具有CAN總線通信接口,可向其他車身CAN網(wǎng)絡(luò)控制節(jié)點(diǎn)發(fā)送燈控和窗控命令,從而實(shí)現(xiàn)自動(dòng)開啟前照燈以及自動(dòng)關(guān)閉車窗的操作。技術(shù)方案:本系統(tǒng)主要由電源電路、驅(qū)動(dòng)電路、中央處理單元等組成。系統(tǒng)中所用的單片機(jī)為AT89C52單片機(jī),其是一種性能優(yōu)良的集成可編程的單片機(jī),其功能的強(qiáng)大,它把CPU、存儲(chǔ)器、及I/O集成到一個(gè)芯片上,只要外加少許電子零件便可以構(gòu)成一套簡(jiǎn)易的控制系統(tǒng)。步進(jìn)電機(jī)運(yùn)用細(xì)分發(fā)進(jìn)行控制,這樣可以使電機(jī)工作更穩(wěn)定,并通過(guò)編程實(shí)現(xiàn)對(duì)汽車雨刷的控制。通過(guò)這些可以降低設(shè)計(jì)出來(lái)的產(chǎn)品的硬件成本和提高系統(tǒng)的穩(wěn)定性??刂品桨副容^設(shè)計(jì)中運(yùn)用的單片機(jī)為AT89C52,它的指令集和引腳結(jié)構(gòu)與INTEL公司的MCS-51系列單片機(jī)高度兼容,加上我們也學(xué)習(xí)過(guò)該類型的單片機(jī),應(yīng)用相對(duì)順手。在傳統(tǒng)的雨刷電機(jī)中大多采用直流電機(jī),但綜合考慮,采用了步進(jìn)電機(jī)作為雨刷電極。設(shè)計(jì)中鍵盤、電機(jī)驅(qū)動(dòng)芯片的也需要做出合理的選擇,下面對(duì)幾種主要器件進(jìn)行比較。(1)電動(dòng)機(jī)驅(qū)動(dòng)芯片的選擇根據(jù)設(shè)計(jì)要求,本設(shè)計(jì)的核心部分就是對(duì)步進(jìn)電動(dòng)機(jī)進(jìn)行控制。最常用的是脈寬調(diào)制式斬波驅(qū)動(dòng)方式,大多數(shù)專用的步進(jìn)電機(jī)驅(qū)動(dòng)芯片都采用這種驅(qū)動(dòng)方式調(diào)速控制。TA8435H和L298都是比較常用,性能比較穩(wěn)定可靠的集成有橋式電路的電機(jī)專用芯片。TA8435是東芝公司生產(chǎn)的單片正弦細(xì)分二相步進(jìn)電機(jī)驅(qū)動(dòng)專用芯片,TA8435主要由1個(gè)解碼器,2個(gè)橋式驅(qū)動(dòng)電路、2個(gè)輸出電流\o"控制"控制電路、2個(gè)最大電流限制電路、1個(gè)斬波器等功能模塊組成。工作電壓范圍寬(10-40V)L298是ST公司生產(chǎn)的內(nèi)部集成有兩個(gè)橋式電路的電機(jī)驅(qū)動(dòng)專用芯片,它驅(qū)動(dòng)的電壓可達(dá)到46V,單個(gè)橋直流電流可達(dá)到2A。具有兩個(gè)使能控制端口,分別控制兩個(gè)電機(jī)的啟動(dòng)和制動(dòng)。它可以外接電阻,把變化量反饋給控制電路。其外,L298的兩個(gè)橋式電路還可以并聯(lián)起來(lái)驅(qū)動(dòng)一個(gè)直流電動(dòng)機(jī),直流電流可達(dá)到4A。其實(shí)對(duì)于本設(shè)計(jì)來(lái)說(shuō),上述兩塊芯片都可用。不過(guò)在市場(chǎng)上,TA8435H使用比較廣,而且控制起來(lái)也很方便,所以本設(shè)計(jì)選用TA8435H作為電機(jī)的驅(qū)動(dòng)芯片。(2)雨量傳感器選擇目前市場(chǎng)上的雨水傳感器大都是依據(jù)以下三種工作原理制成的:利用壓電振子的傳感器、利用靜電電容的傳感器、利用光強(qiáng)變化的傳感器。第一種和第二種是要把雨水傳感器安裝在汽車的外面,雨滴直接滴在傳感器上,第三種把雨水傳感器安裝在風(fēng)擋玻璃駕駛室一側(cè),通過(guò)雨滴滴落在玻璃上引起反射光強(qiáng)的變化感應(yīng)傳感器。相比較各類雨水傳感器的性能和價(jià)格,設(shè)計(jì)中采用的是第三種方案的雨量傳感器,其是基于光強(qiáng)變化的原理,提出了一種新的紅外線雨水傳感器。傳感器由紅外光發(fā)射電路和紅外光接收電路組成,實(shí)驗(yàn)證明,這種雨水傳感器反應(yīng)靈敏,實(shí)時(shí)性好,性能穩(wěn)定。電源電路傳感器時(shí)鐘電路復(fù)位電路單片機(jī)電機(jī)驅(qū)動(dòng)芯片雨刷電機(jī)電源電路傳感器時(shí)鐘電路復(fù)位電路單片機(jī)電機(jī)驅(qū)動(dòng)芯片雨刷電機(jī)系統(tǒng)的硬件設(shè)計(jì)單片機(jī)電路的設(shè)計(jì)一個(gè)單片機(jī)應(yīng)用系統(tǒng)的硬件電路設(shè)計(jì)包含兩部分內(nèi)容:一是系統(tǒng)擴(kuò)展,即單片機(jī)內(nèi)部的功能單元,如ROM、RAM、I/O、定時(shí)器/計(jì)數(shù)器、中斷系統(tǒng)等不能滿足應(yīng)用系統(tǒng)的要求時(shí),必須在片外進(jìn)行擴(kuò)展,選擇適當(dāng)?shù)男酒?,設(shè)計(jì)相應(yīng)的電路;二是系統(tǒng)的配置,即按照系統(tǒng)功能要求配置外圍設(shè)備,如鍵盤、顯示器、A/D、D/A轉(zhuǎn)換器等。單片機(jī)的功能特性描述單片機(jī)又稱單片微控制器,它不是完成某一個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成到一個(gè)芯片上。概括的講:一塊芯片就成了一臺(tái)計(jì)算機(jī)。它的體積小、質(zhì)量輕、價(jià)格便宜。單片機(jī)內(nèi)部也有和電腦功能類似的模塊,比如CPU,內(nèi)存,并行總線,還有和硬盤作用相同的存儲(chǔ)器件。單片機(jī)是一種集成電路芯片,采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。本課題選擇了STC公司的生產(chǎn)的STC89C52單片機(jī)。STC89C52是一種低功耗、高性能CMOS8位微控制器,是帶8K字節(jié)閃爍可編程可檫除只讀存儲(chǔ)器。一個(gè)芯片上擁有8位CPU,并且在系統(tǒng)可編程Flash。STC89C52提供給為眾多嵌入式控制應(yīng)用系統(tǒng)高靈活、超有效的解決方案。STC89C52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM,32位I/O口線,看門狗定時(shí)器,內(nèi)置4KBEEPROM,兩個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。此外,空閑模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。表3.1STC89C52單片機(jī)和AT89S52單片機(jī)的對(duì)比STC89C52單片機(jī)AT89S52單片機(jī)序存儲(chǔ)空間8K字節(jié)8K字節(jié)數(shù)據(jù)存儲(chǔ)空間512字節(jié)256字節(jié)EEPROM存儲(chǔ)空間內(nèi)帶4K字節(jié)無(wú)是否可以直接使用串口下載可以不可以晶振電路在STC89S52單片機(jī)上內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。時(shí)鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。在1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩器就產(chǎn)生自激振蕩。定時(shí)元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。從XTAL1接入,如圖3.2所示。由于外部時(shí)鐘信號(hào)經(jīng)過(guò)二分頻觸發(fā)后作為外部時(shí)鐘電路輸入的,所以對(duì)外部時(shí)鐘信號(hào)的占空比沒有要求。本設(shè)計(jì)選用的是12MHZ無(wú)源晶振、2個(gè)22pF電容,使得一個(gè)機(jī)器周期是1μs。晶振的作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào),而兩個(gè)電容則是起到并聯(lián)諧振的作用,如果沒電容,振蕩電路會(huì)因?yàn)闆]有回路而停振,電路不能正常工作。圖3.2單片機(jī)晶振電路圖復(fù)位電路復(fù)位電路的作用是在上電或復(fù)位過(guò)程中,控制CPU的復(fù)位狀態(tài):這段時(shí)間內(nèi)讓CPU保持復(fù)位狀態(tài),而不是一上電或剛復(fù)位完畢就工作,防止CPU發(fā)出錯(cuò)誤的指令、執(zhí)行錯(cuò)誤操作,也可以提高電磁兼容性能。89系列單片機(jī)的復(fù)位信號(hào)是從RST引腳輸入到芯片內(nèi)的施密特觸發(fā)器中的。施密特觸發(fā)電路是一種波形整形電路,當(dāng)任何波形的信號(hào)進(jìn)入電路時(shí),輸出在正、負(fù)飽和之間跳動(dòng),產(chǎn)生方波或脈波輸出。不同于比較器,施密特觸發(fā)電路有兩個(gè)臨界電壓且形成一個(gè)滯后區(qū),可以防止在滯后范圍內(nèi)之噪聲干擾電路的正常工作。如遙控接收線路,傳感器輸入電路都會(huì)用到它整形。當(dāng)系統(tǒng)處于正常工作狀態(tài)時(shí),且振蕩器穩(wěn)定后,如果RST引腳上有一個(gè)高電平并維持2個(gè)機(jī)器周期(24個(gè)振蕩周期)以上,則CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。本設(shè)計(jì)采用的電容值為10μF的電容和電阻采用1.5KΩ和200Ω的電阻。如圖3.3所示上電后,由于電容充電,使RST持續(xù)一段高電平時(shí)間。當(dāng)單片機(jī)已在運(yùn)行之中時(shí),按下復(fù)位鍵也能使RST持續(xù)一段時(shí)間的高電平,從而實(shí)現(xiàn)上電且開關(guān)復(fù)位的操作[6][7]。圖3.3單片機(jī)復(fù)位電路圖雨滴傳感器的硬件設(shè)計(jì)雨滴傳感器部分,由555定時(shí)器構(gòu)成的多謝振蕩器對(duì)紅外發(fā)射管進(jìn)行驅(qū)動(dòng),再由接收管接收,這樣就構(gòu)成一個(gè)光電傳感器。把光電傳感器的信號(hào)經(jīng)帶通濾波器把信號(hào)頻率限制在38KHz左右,再經(jīng)分頻器進(jìn)行128分頻,使脈沖信號(hào)變?yōu)楹撩霐?shù)量級(jí)。電機(jī)驅(qū)動(dòng)電路本設(shè)計(jì)采用L298N電機(jī)專用驅(qū)動(dòng)芯片帶動(dòng)兩個(gè)12V的直流電動(dòng)機(jī)。直流電機(jī)由定子和轉(zhuǎn)子兩大部分組成。直流電機(jī)運(yùn)行時(shí)靜止不動(dòng)的部分稱為定子,定子的主要作用是產(chǎn)生磁場(chǎng),由機(jī)座、主磁極、換向極、端蓋、軸承和電刷裝置等組成。運(yùn)行時(shí)轉(zhuǎn)動(dòng)的部分稱為轉(zhuǎn)子,其主要作用是產(chǎn)生電磁轉(zhuǎn)矩和感應(yīng)電動(dòng)勢(shì),是直流電機(jī)進(jìn)行能量轉(zhuǎn)換的樞紐,通常又稱為電樞,由轉(zhuǎn)軸、電樞鐵心、電樞繞組、換向器等組成。其中L298N是ST公司的產(chǎn)品,比較常見的是15腳Multiwatt封裝的L298N,內(nèi)部包含4通道邏輯驅(qū)動(dòng)電路??梢则?qū)動(dòng)兩個(gè)直流電機(jī)或驅(qū)動(dòng)兩個(gè)二相電機(jī),也可單獨(dú)驅(qū)動(dòng)一個(gè)四相電機(jī),輸出電壓最高可達(dá)50V。直接通過(guò)電源來(lái)調(diào)節(jié)輸出電壓,直接通過(guò)單片機(jī)的IO端口提供信號(hào),使得電路簡(jiǎn)單,使用更方便。L298N可接受標(biāo)準(zhǔn)的TTL邏輯電平信號(hào)VSS,VSS通常接4.5~7V的電壓。4腳VS接電壓源,VS可接電壓范圍VIH為2.5~46V。L298N芯片輸出電流可達(dá)2.5A,可驅(qū)動(dòng)電感負(fù)載。L298N是一個(gè)內(nèi)部有兩個(gè)H橋的高電壓大電流全橋式驅(qū)動(dòng)芯片,可以用來(lái)驅(qū)動(dòng)直流電動(dòng)機(jī)、步進(jìn)電動(dòng)機(jī)。使用標(biāo)準(zhǔn)邏輯電平信號(hào)控制,直接連接單片機(jī)管腳,具有兩個(gè)使能控制端,使能端在不受輸入信號(hào)影響的情況下不允許器件工作。L298N有一個(gè)邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工作。L298N引腳結(jié)構(gòu)圖3.5L298N驅(qū)動(dòng)芯片表2.3L298N引腳編號(hào)與功能引腳編號(hào)名稱功能1電流傳感器A在該引腳和地之間接小阻值電阻可用來(lái)檢測(cè)電流2輸出引腳1內(nèi)置驅(qū)動(dòng)器A的輸出端1,接至電機(jī)A3輸出引腳2內(nèi)置驅(qū)動(dòng)器A的輸出端2,接至電機(jī)A4電機(jī)電源端電機(jī)供電輸入端,電壓可達(dá)46V5輸入引腳1內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端16使能端A內(nèi)置驅(qū)動(dòng)器A的使能端7輸入引腳2內(nèi)置驅(qū)動(dòng)器A的邏輯控制輸入端28邏輯地邏輯地9邏輯電源端邏輯控制電路的電源輸入端為5V10輸入引腳3內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端111使能端B內(nèi)置驅(qū)動(dòng)器B的使能端12輸入引腳4內(nèi)置驅(qū)動(dòng)器B的邏輯控制輸入端213輸出引腳3內(nèi)置驅(qū)動(dòng)器B的輸出端1,接至電機(jī)B14輸出引腳4內(nèi)置驅(qū)動(dòng)器B的輸出端2,接至電機(jī)B15電流傳感器B在該引腳和地之間接小阻值電阻可用來(lái)檢測(cè)電流電機(jī)驅(qū)動(dòng)原理電路的形狀很像字母H。四個(gè)三極管就是H橋的四條垂直線,而電機(jī)就是H中的橫線。圖2.6L298N內(nèi)部H橋驅(qū)動(dòng)電路圖2.6為一個(gè)典型的直流電機(jī)的控制電路。被命名為“H橋驅(qū)動(dòng)電路”主要是因?yàn)殡娐返男螤詈芟褡帜窰。四個(gè)三極管就是H橋的四條垂直線,而電機(jī)就是H中的橫線。如圖所示,H橋電機(jī)驅(qū)動(dòng)電路包含四個(gè)三極管和一個(gè)電機(jī)。電機(jī)運(yùn)轉(zhuǎn),必須遵循導(dǎo)通對(duì)角線上的一對(duì)三極管?;诓煌龢O管對(duì)的導(dǎo)通情況可以控制電機(jī)的轉(zhuǎn)向,電流可可以從左至右流過(guò)電機(jī),也可以從右至左流過(guò)電機(jī)。如圖2.6所示,當(dāng)Q1管和Q4管導(dǎo)通時(shí),電流就從電源正極經(jīng)Q1從左至右流過(guò)電機(jī),然后再經(jīng)Q4回到電源負(fù)極,該流向的電流將驅(qū)動(dòng)電機(jī)順時(shí)針轉(zhuǎn)動(dòng)。下面分析另一對(duì)三極管Q2和Q3,當(dāng)兩個(gè)三極管同時(shí)導(dǎo)通的情況下,電流將從右至左流過(guò)電機(jī)。從而驅(qū)動(dòng)電機(jī)沿逆時(shí)針方向轉(zhuǎn)動(dòng)。驅(qū)動(dòng)電機(jī)時(shí),保證H橋上兩個(gè)同側(cè)的三極管不會(huì)同時(shí)導(dǎo)通非常重要。如果三極管Q1和Q2同時(shí)導(dǎo)通,那么電流就會(huì)從正極穿過(guò)兩個(gè)三極管直接回到負(fù)極。此時(shí),電路中除了三極管外沒有其他任何負(fù)載,因此電路上的電流就可能達(dá)到最大值,該電流僅受電源性能限制,可能燒壞三極管?;谏鲜鲈?,在實(shí)際驅(qū)動(dòng)電路中通常要用硬件電路方便地控制三極管的開關(guān)。圖2.7所示就是基于這種考慮的改進(jìn)電路,它在基本H橋電路的基礎(chǔ)上增加了四個(gè)二極管來(lái)保護(hù)電路。四個(gè)與門同一個(gè)“使能”導(dǎo)通信號(hào)相接,這樣,用這一個(gè)信號(hào)就能控制整個(gè)電路的開關(guān)。采用以上方法,電機(jī)的運(yùn)轉(zhuǎn)就只需要用三個(gè)信號(hào)控制:兩個(gè)方向信號(hào)和一個(gè)使能信號(hào)。如果DIR-L信號(hào)為“0”,DIR-R信號(hào)為“1”,并且使能信號(hào)是“1”,那么三極管Q1和Q4導(dǎo)通,電流從左至右流經(jīng)電機(jī);如果DIR-L信號(hào)變?yōu)椋骸?”圖2.7L298N驅(qū)動(dòng)芯片和直流電機(jī)接線圖2.3.3直流電機(jī)PWM調(diào)速原理1、直流電機(jī)轉(zhuǎn)速直流電機(jī)的數(shù)學(xué)模型可用圖表示由圖可見電機(jī)的電樞電動(dòng)勢(shì)Ea的正方向與電樞電流Ia的方向相反Ea為反電動(dòng)勢(shì)電磁轉(zhuǎn)矩T的正方向與轉(zhuǎn)速n的方向相同是拖動(dòng)轉(zhuǎn)矩軸上的機(jī)械負(fù)載轉(zhuǎn)矩T2及空載轉(zhuǎn)矩T0均與n相反是制動(dòng)轉(zhuǎn)矩。圖3.2直流電機(jī)的數(shù)學(xué)模型根據(jù)基爾霍夫第二定律得到電樞電壓電動(dòng)勢(shì)平衡方程式1.1U=Ea-IaRa+Rc式1.1中Ra為電樞回路電阻電樞回路串聯(lián)保繞阻與電刷接觸電阻的總和Rc是外接在電樞回路中的調(diào)節(jié)電阻。由此可得到直流電機(jī)的轉(zhuǎn)速公式為n=Ua-IR/CeΦ……………式1.2式1.2中Ce為電動(dòng)勢(shì)常數(shù)Φ是磁通量。由1.1式和1.2式得n=Ea/CeΦ………………式1.3由式1.3中可以看出對(duì)于一個(gè)已經(jīng)制造好的電機(jī)當(dāng)勵(lì)磁電壓和負(fù)載轉(zhuǎn)矩恒定時(shí)它的轉(zhuǎn)速由回在電樞兩端的電壓Ea決定電樞電壓越高電機(jī)轉(zhuǎn)速就越快電樞電壓降低到0V時(shí)電機(jī)就停止轉(zhuǎn)動(dòng)改變電樞電壓的極性電機(jī)就反轉(zhuǎn)。2、PWM電機(jī)調(diào)速原理對(duì)于直流電機(jī)來(lái)說(shuō)如果加在電樞兩端的電壓脈動(dòng)電流壓要求脈動(dòng)電壓的周期遠(yuǎn)小于電機(jī)的慣性常數(shù)可以看出在T不變的情況下改變T1和T2寬度得到的電壓將發(fā)生變化。圖3.3為施加不同占空比時(shí)實(shí)測(cè)的數(shù)據(jù)繪制所得占空比與轉(zhuǎn)速的關(guān)系由圖看出轉(zhuǎn)速與占空比D并不是完全速的線性關(guān)系圖中實(shí)線原因是電樞本身有電阻不過(guò)一般直流電機(jī)的內(nèi)阻較小可以近視為線性關(guān)系。由此可見改變施加在電樞兩端電壓就能改變電機(jī)的轉(zhuǎn)速成這就是直流電機(jī)PWM調(diào)速原理CAN/LIN總線的硬件設(shè)計(jì)現(xiàn)場(chǎng)總線技術(shù)已經(jīng)廣泛應(yīng)用于工業(yè)控制中,尤其是CAN(ControlerAreaNerwork)總線由于具有可靠性高、成本低、容易實(shí)現(xiàn)等優(yōu)點(diǎn),在現(xiàn)場(chǎng)總線實(shí)際工程應(yīng)用中占有了較大份額。伴隨著總線技術(shù)發(fā)展,LIN(LocalInterconnectNetwork)總線作為一種低成本串行通信網(wǎng)絡(luò),其目標(biāo)是為現(xiàn)有現(xiàn)場(chǎng)總線控制網(wǎng)絡(luò)提供輔助功能,特別是汽車控制網(wǎng)絡(luò)中總線應(yīng)用,因此必然存在一個(gè)LIN總線和其它總線通信接口實(shí)現(xiàn),本文以CAN總線為例,提出了一種基于STC89C52單片機(jī)CAN-LIN網(wǎng)關(guān)設(shè)計(jì)方案。LIN是一種低成本串行通訊網(wǎng)絡(luò)用于實(shí)現(xiàn)汽車中分布式電子系統(tǒng)控制,LIN目標(biāo)是為現(xiàn)有汽車網(wǎng)絡(luò)(例如CAN總線)提供輔助功能,因此LIN總線是一種輔助總線網(wǎng)絡(luò),在不需要CAN總線帶寬和多功能場(chǎng)合比如智能傳感器和制動(dòng)裝置之間通訊,使用LIN總線可大大節(jié)省成本。LIN通訊是基于SCI(UART)數(shù)據(jù)格式,采用單主控制器/多從設(shè)備模式,僅使用一根12V信號(hào)總線和一個(gè)無(wú)固定時(shí)間基準(zhǔn)節(jié)點(diǎn)同步時(shí)鐘線。CAN接口電路CAN總線是一種最有前途的現(xiàn)場(chǎng)總線,因其優(yōu)異性能而在工業(yè)控制、汽車電子、安防等方面得到廣泛應(yīng)用。設(shè)計(jì)CAN-bus通訊接口是很重要的一個(gè)環(huán)節(jié),設(shè)備的正確運(yùn)行與其密切相關(guān)。如圖2.4.1給出了一個(gè)實(shí)際的CAN-bus通訊單元電路圖,電路結(jié)構(gòu)為:MCU(P89C52)+CAN控制器(SJA1000)+隔離CAN收發(fā)器(CTMModule)整個(gè)系統(tǒng)電源采用+5V電源輸入,上電復(fù)位芯片(CAT810L)可保證上電時(shí)正確的啟動(dòng)系統(tǒng)。微處理器采用STC的89C52單片機(jī),該系列單片機(jī)是80C51微控制器的派生器件,采用先進(jìn)的CMOS工藝制造,指令系統(tǒng)與80C51完全相同。CAN控制器采用PHILIPS的SJA1000,SJA1000是一款獨(dú)立的控制器,用于汽車和一般工業(yè)環(huán)境中的控制器局域網(wǎng)絡(luò)。它是PHILIPS半導(dǎo)體PCA82C200CAN控制器(BasicCAN)的替代產(chǎn)品。而且,它增加了一種新的工作模式(PeliCAN),這種模式支持具有很多新特性的CAN2.0B協(xié)議,是目前市面上用的最廣的一款CAN控制器。該電路中采用了隔離CAN收發(fā)器模塊,以確保在CAN總線遭受嚴(yán)重干擾時(shí)控制器能夠正常運(yùn)行,LIN接口電路LIN總線和CAN總線傳輸是不一樣,這就需要改換軟件,因此在此設(shè)計(jì)中用一個(gè)5位撥碼開關(guān)用于波特率設(shè)置,三位用于LIN波特率設(shè)置,兩位用于CAN波特率設(shè)置。LIN是一種低成本串行通訊網(wǎng)絡(luò)用于實(shí)現(xiàn)汽車中分布式電子系統(tǒng)控制,LIN目標(biāo)是為現(xiàn)有汽車網(wǎng)絡(luò)(例如CAN總線)提供輔助功能,因此LIN總線是一種輔助總線網(wǎng)絡(luò),在不需要CAN總線帶寬和多功能場(chǎng)合比如智能傳感器和制動(dòng)裝置之間通訊,使用LIN總線可大大節(jié)省成本。LIN通訊是基于SCI(UART)數(shù)據(jù)格式,采用單主控制器/多從設(shè)備模式,僅使用一根12V信號(hào)總線和一個(gè)無(wú)固定時(shí)間基準(zhǔn)節(jié)點(diǎn)同步時(shí)鐘線。硬件結(jié)構(gòu)如下圖LIN總線結(jié)構(gòu)圖第三單系統(tǒng)的軟件設(shè)計(jì)3.1軟件設(shè)計(jì)的流程目前,52系列單片機(jī)使用的編程語(yǔ)言主要有匯編語(yǔ)言和C語(yǔ)言這兩種。最接近機(jī)器的語(yǔ)言是匯編語(yǔ)言,其常用來(lái)編制與系統(tǒng)硬件相關(guān)的程序,如訪問(wèn)I/O口、中斷處理程序等,它是一種最快而又最有效的語(yǔ)言,在對(duì)于程序的空間和時(shí)間要求很高的場(chǎng)合中使用匯編語(yǔ)言是最佳的選擇,然而匯編語(yǔ)言也有其自身的缺點(diǎn),比如程序開發(fā)周期較長(zhǎng)、浮點(diǎn)運(yùn)算處理復(fù)雜、程序移植性差等不利因素。在程序設(shè)計(jì)過(guò)程中C語(yǔ)言編程設(shè)計(jì)思想被稱為模塊化程序設(shè)計(jì)思想。有的時(shí)候?yàn)榱擞行У赝瓿扇蝿?wù),把所要完成的任務(wù)分割成若干個(gè)相互獨(dú)立但相互又仍然有所聯(lián)系的模塊,這些模塊使得任務(wù)變得相對(duì)簡(jiǎn)單,對(duì)外的數(shù)據(jù)交換相對(duì)簡(jiǎn)單、容易編寫、容易檢測(cè),容易閱讀和維護(hù)。本設(shè)計(jì)采用C語(yǔ)言來(lái)編譯程序。模塊化結(jié)構(gòu)程序的設(shè)計(jì),可以使系統(tǒng)軟件便于調(diào)試與優(yōu)化,也使其他人更好地理解和閱讀系統(tǒng)的程序設(shè)計(jì)。因此,軟件的設(shè)計(jì)上,運(yùn)用了模塊化程序的結(jié)構(gòu)對(duì)軟件進(jìn)行設(shè)計(jì),使得程序變得更加直觀易懂。程序的主要模塊有:主程序、定時(shí)溢出中斷服務(wù)程序、外部中斷服務(wù)程序。隨著單片機(jī)開發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開發(fā),單片機(jī)的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā)MCS-51系列單片機(jī)的軟件,這從近年來(lái)各仿真機(jī)廠商紛紛宣布全面支持Keil即可看出。Keil提供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過(guò)一個(gè)集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。掌握這一軟件的使用對(duì)于使用51系列單片機(jī)的學(xué)者來(lái)說(shuō)是十分必要的,如果使用C語(yǔ)言編程,那么Keil幾乎就是不二之選,即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)事半功倍。KeilC51軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到KeilC51生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)[8]。3.2本系統(tǒng)的編譯器Keil編譯器軟件KeilC51單片機(jī)軟件開發(fā)系統(tǒng)可用于編輯C或匯編源文件。然后分別由C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件與庫(kù)文件一起經(jīng)LIB51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫入程序存貯器如EPROM中。打開Keil軟件后,出現(xiàn)如圖3.1所示界面。圖3.1Keil軟件主界面點(diǎn)擊Project--NewProject??梢孕陆ㄒ粋€(gè)工程,如圖3.2所示。圖3.2Keil軟件新建工程界面點(diǎn)擊會(huì)出現(xiàn)的對(duì)話框中選擇工程存在路徑(如圖3.3所示),單擊“保存”后,出現(xiàn)界面。在此界面上選擇電路板上所用的單片機(jī)型號(hào)(如圖3.4所示),單擊“確定”。圖3.3保存路徑界面圖3.4選擇電路板上所用的單片機(jī)型號(hào)界面設(shè)置完成后,軟件會(huì)提示是否將8051上電初始化程序添加入工程。這個(gè)一般選“否”。這樣就建立好了一個(gè)空的51工程(如圖4.5所示)。圖3.5建立空的51工程界面點(diǎn)擊File--New,便建立了一個(gè)空的文本框(如圖3.6所示)。圖3.6建立空文本框界面到現(xiàn)在為止,就可以開始在里面輸入代碼了。保存時(shí)注意:如果是用C語(yǔ)言寫的程序,則將文本保存成*.c(如圖3.7所示)。圖3.7保存文本改寫界面將寫完的程序添加到工程里面,如圖3.8所示,在左邊ProjectWorkspace里的SourceGroup1上右擊,選擇AddFilestoGroup’SourceGroup1’。在打開的對(duì)話框中,選擇剛存的文件路徑和對(duì)應(yīng)的擴(kuò)展名。此時(shí),程序就添加進(jìn)了這個(gè)工程。圖3.8添加工程界面下一步,就開始編譯剛輸入進(jìn)去的代碼。接著,Keil會(huì)打出下面的提示:0Error(s),0Warning(s).建立工程的時(shí)候,默認(rèn)是不生成HEX文件的,得在編譯做如下設(shè)置:在ProjectWorkspace里Target1上右擊,選擇“OptionsforTarget‘Target1”。出現(xiàn)如圖3.9所示對(duì)話框,選擇“Output”按圖示,將箭頭所指的多選框勾上,點(diǎn)“確定”。現(xiàn)在再點(diǎn)擊重新編譯,就會(huì)在工程所在文件夾里生成HEX文件[9][10]。圖3.9生成HEX文件界面軟件設(shè)計(jì)系統(tǒng)主程序流程圖如圖3.10所示。主程序流程圖總結(jié)該雨滴傳感器安裝在風(fēng)擋玻璃上駕駛室一側(cè),通過(guò)改變雨量的大小,能使雨刮器自動(dòng)工作在低速檔或高速檔。實(shí)驗(yàn)證明,該智能雨刮系統(tǒng)反應(yīng)靈敏,輸出信號(hào)延時(shí)可忽略,性能穩(wěn)定,實(shí)現(xiàn)了雨量實(shí)時(shí)監(jiān)測(cè)。本文在查閱了大量文獻(xiàn)的基礎(chǔ)上,結(jié)合實(shí)際應(yīng)用問(wèn)題,對(duì)智能雨刮系統(tǒng)進(jìn)行了研究。目前的雨刮系統(tǒng)大多是機(jī)械連桿結(jié)構(gòu)的,采用雨滴感應(yīng)式的智能雨刮系統(tǒng)只是在少數(shù)高級(jí)轎車上有應(yīng)用,因?yàn)槟壳笆褂玫墓怆娪甑蝹鞲衅鞔蠖际怯蓢?guó)外廠商一統(tǒng)天下,因而,價(jià)格比較昂貴,很難普及。本文所研究的紅外雨滴傳感器及智能雨刮系統(tǒng),由于成本低廉,性能穩(wěn)定,可靠性高,易于在大客車和低檔轎車上普及應(yīng)用,有廣泛的市場(chǎng)應(yīng)用前景。關(guān)于紅外雨滴傳感器及模糊控制器的設(shè)計(jì),還有一些特殊情況未在本文所研究之內(nèi),仍有待進(jìn)一步研究。參考文獻(xiàn)1.趙巖.基于模糊控制的汽車智能雨刮系統(tǒng)的研究〔D〕,北京:哈爾濱理工大學(xué),2007.2.康華光,鄒壽彬.電子技術(shù)基礎(chǔ)[M],北京:高等教育出版社,1987,8,347-373.3.孫在信,全志云,丁鎮(zhèn)生.環(huán)境對(duì)555紅外線發(fā)射系統(tǒng)的影響[J],大連交通大學(xué)學(xué)報(bào),2007,2:94-96.4.恒盛杰資訊編著.Protel電路板設(shè)計(jì)從入門到精通.第1版.中國(guó)青年出版社.2006:1-1485.江思敏,陳明編著.Protel電路設(shè)計(jì)教程.第1版.清華大學(xué)出版社,2006:1-2966.陳曉莉,張俊濤.KEILC51單片機(jī)仿真器的設(shè)計(jì).第二版.陜西科技大學(xué)出版社,2006:19-20.7.楊素行編著.模擬電子技術(shù)基礎(chǔ)簡(jiǎn)明教程.第2版.高等教育出版社,2005:532-5478.余孟嘗編著.?dāng)?shù)字電子技術(shù)基礎(chǔ)簡(jiǎn)明教程.第2版.高等教育出版社.1999:1-3619.李全利,遲榮強(qiáng)編著.單片機(jī)原理及接口技術(shù).第1版.高等教育出版社,2004:14-19110.王守中編著.51單片機(jī)開發(fā)入門與典型實(shí)例.第1版.人民郵電出版社,2007:103-10811.李勇,羅隆福,許加柱,李季.基于模糊控制的直流電機(jī)PWM調(diào)速系統(tǒng)[J],大電機(jī)技術(shù),2006,1:66-68.12.岑木峰.汽車雨刮器的改進(jìn)[J],湖北汽車工業(yè)學(xué)院報(bào),2007,3:74-78.13.謝飛.基于微分平坦的雙電機(jī)雨刮控制器研究〔D〕,吉林:吉林大學(xué),2007.附錄A硬件原理圖附錄B程序#include<reg52.h>#include<intrins.h>#include<can_showdef.h>voidCAN_init(void);//初始化CAN總線芯片voidCAN_TXD(uchar*p);voidDelay(uchardelay_time);//延時(shí)子函數(shù)voidctr_pro(void);voidmoto_stop(void);//CAN_init();//初始化函數(shù)voidcpu_init(void){ TMOD=0x21;TH0=(65536-100)/256;TL0=(65536-100)%256;//定時(shí)0.1mSSCON=0x50;TH1=0xFD;TL1=TH1;PCON=0x00;//EA=1;ES=1;TR1=1; EA=1;ET0=1;TR0=1;}/************************************//*LIN中斷接收函數(shù)*//************************************/voidUARTInterrupt(void)interrupt4{if(RI){RI=0;LINRX_temp[0]=SBUF; while(!RI); RI=0;LINRX_temp[1]=SBUF;}elseTI=0;}/************************************//*定時(shí)器中斷函數(shù)*//************************************/voidtim(void)interrupt1{//staticunsignedcharcount;TH0=(65536-100)/256;TL0=(65536-100)%256;//定時(shí)0.1mSif(count==PWM_ON){PWM=0;//高電平 PWM1=0;}if(++count1==100){count1=0;} count++;if(count==10){count=0;if(PWM_ON!=0){PWM=1;//低電平 PWM1=1;}}if(++time_count==10000) //1s到了嗎{ time_count=0; if(!run_flag&&start_flag) { start_flag=0; run_time1=run_time; if(run_time1==0) { in1=0; in2=0; in3=0; in4=0; } else { run_flag=1; first_flag=1; in1=1; in2=0; in3=1; in4=0; } } elseif((!run_flag&&!start_flag)||run_flag) { if(first_flag&&run_time1!=0)run_time1--; elseif(first_flag&&run_time1==0){second_flag=1;first_flag=0;in1=0;in2=1;run_time1=run_time;} elseif(second_flag&&run_time1!=0)run_time1--; elseif(second_flag&&run_time1==0&&status_temp==0x01) { second_flag=0; three_flag=1; in1=0; in2=0; in3=0; in4=0; run_time1=run_time; } elseif(second_flag&&run_time1==0&&status_temp!=0x01) { second_flag=0; first_flag=1; run_flag=0; in1=1; in2=0; in3=1; in4=0; run_time1=run_time; } elseif(three_flag&&run_time1!=0)run_time1--; elseif(three_flag&&run_time1==0){three_flag=0;first_flag=1;in1=1;in2=0;run_time1=run_time;run_flag=0;} } }}voidmain(void){//CPU初始化SJA_RST=0; Delay(10);SJA_RST=1;//CAN總線復(fù)位管腳SJA_CS=0;//CAN總線片選有效EX1=1;//外部中斷1使能;CAN總線接收中斷IT1=0;//低電平觸發(fā)//IT0=1;//脈沖方式觸發(fā),外部中斷0負(fù)邊沿觸發(fā)//EX0=1;//打開外部中斷0EA=1;//打開總中斷SJA_CS=1;//CAN總線片選無(wú)效,保證數(shù)據(jù)線上的變化不會(huì)影響SJA1000//CPU初始化 cpu_init();CAN_init();//SJA1000初始化,對(duì)SJA1000寄存器的讀寫是采用外部寄存器尋址方式,所以不需要程序單獨(dú)控制片選有效無(wú)效_nop_();_nop_(); PWM_ON=4;while(1){_nop_();_nop_(); // if(RXD_flag)//Rxd_deal();//接收處理程序 if(!auto_key) { if(status_temp!=0x01) { start_flag=1; status_temp=0x01;PWM_ON=LINRX_temp[1]/25; run_time=10/PWM_ON; ctr_pro(); } } elseif(!jxie_key) { if(status_temp!=0x01) { start_flag=1; status_temp=0x02; PWM_ON=LINRX_temp[1]/25; run_time=10/PWM_ON; ctr_pro(); } } elseif(!slow_key) { if(status_temp!=0x01) { start_flag=1; status_temp=0x03; PWM_ON=3; run_time=10/PWM_ON; } } elseif(!fast_key) { if(status_temp!=0x01) { start_flag=1; status_temp=0x04; PWM_ON=9; run_time=10/PWM_ON; } } else { status_temp=0x00; start_flag=1; run_time=0; }}}voidctr_pro(void){ucharadr_buffer[4]; if(LINRX_temp[0]==0xff)//天黑情況下打開前燈并關(guān)閉窗 { Txd_data=0xff; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x01; //此為門控節(jié)點(diǎn) CAN_TXD(adr_buffer); Txd_data=0x11; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x02; //此為燈控節(jié)點(diǎn) CAN_TXD(adr_buffer); } if(PWM_ON>=3&&LINRX_temp[0]==0x11)//雨量越大且天亮情況下關(guān)閉前燈并關(guān)閉窗 { Txd_data=0xff; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x01; //此為門控節(jié)點(diǎn) CAN_TXD(adr_buffer); Txd_data=0xff; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x02; //此為燈控節(jié)點(diǎn) CAN_TXD(adr_buffer); } if(PWM_ON<3&&LINRX_temp[0]==0x11)//沒雨且天亮情況下關(guān)閉前燈并打開窗 { Txd_data=0x11; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x01; //此為門控節(jié)點(diǎn) CAN_TXD(adr_buffer); Txd_data=0xff; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x02; //此為燈控節(jié)點(diǎn) CAN_TXD(adr_buffer); } if(PWM_ON<3&&LINRX_temp[0]==0xff)//沒雨且天黑情況下打開前燈并關(guān)閉窗 { Txd_data=0xff; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x01; //此為門控節(jié)點(diǎn) CAN_TXD(adr_buffer); Txd_data=0x11; adr_buffer[0]=0x00; adr_buffer[1]=0x00; adr_buffer[2]=0x00; adr_buffer[3]=0x02; //此為燈控節(jié)點(diǎn) CAN_TXD(adr_buffer); }}/////////////////////////////中斷處理程序//////////////////////////////////////voidCAN_RXD(void)interrupt2{//接收數(shù)據(jù)函數(shù),在中斷服務(wù)程序中調(diào)用uchardataJudge;EA=0;//關(guān)CPU中斷IE0=0;Judge=IR;if(Judge&0x01){//IR.0=1接收中斷RX_buffer[0]=RBSR;RX_buffer[1]=RBSR1;RX_buffer[2]=RBSR2;RX_buffer[3]=RBSR3;RX_buffer[4]=RBSR4;RX_buffer[5]=RBSR5;RX_buffer[6]=RBSR6;RX_buffer[7]=RBSR7;RX_buffer[8]=RBSR8;RX_buffer[9]=RBSR9;RX_buffer[10]=RBSR10;RX_buffer[11]=RBSR11;RX_buffer[12]=RBSR12;RXD_flag=1;//置有接收標(biāo)志CMR=0X04;Judge=ALC;//釋放仲裁隨時(shí)捕捉寄存器Judge=ECC;//釋放錯(cuò)誤代碼捕捉寄存器}IER=0x01;//.0=1--接收中斷使能;EA=1;//打開CPU中斷}//-----------------按鍵中斷發(fā)送處理-------------/////////////////////SJA1000的初始化///////////////////////////////voidCAN_init(void){ucharbdataJudge;ucharACRR[4];ucharAMRR[4];ACRR[0]=0x11;ACRR[1]=0x22;ACRR[2]=0x33;ACRR[3]=0x44;//接收代碼寄存器,節(jié)點(diǎn)1AMRR[0]=0xff;AMRR[1]=0Xff;AMRR[2]=0xff;AMRR[3]=0xff;//接收屏蔽寄存器。 do {//.0=1---resetMODRe,進(jìn)入復(fù)位模式,以便設(shè)置相應(yīng)的寄存器 //防止未進(jìn)入復(fù)位模式,重復(fù)寫入; MODR=0x09; Judge=MODR; }//保證在復(fù)位模式下操作while(!(Judge&0x01));CDR=0x88;//時(shí)鐘分頻;CDR.3=1--時(shí)鐘關(guān)閉,CDR.7=0---basicCAN,CDR.7=1---PeliCAN4個(gè)ID位BTR0=0x03;BTR1=0x1c;//16M晶振,波特率125KbpsIER=0x01;//.0=1--接收中斷使能;.1=0--關(guān)閉發(fā)送中斷使能OCR=0xaa;//配置輸出控制寄存器CMR=0x04;//命令寄存器;釋放接收緩沖器ACR=ACRR[0];ACR1=ACRR[1];ACR2=ACRR[2];ACR3=ACRR[3];//初始化標(biāo)示碼AMR=AMRR[0];AMR1=AMRR[1];AMR2=AMRR[2];AMR3=AMRR[3];//初始化掩碼do//回到工作模式{ MODR=0x08; Judge=MODR;}while(Judge&0x01);}/////////CAN初始化結(jié)束////////////////////////////////////////發(fā)送初始化//////////////voidCAN_TXD(uchar*p){ uchardataJudge; uchardataTX_buffer[N_can]; //初始化標(biāo)示碼頭信息 TX_buffer[0]=0x88;//TX.7=1擴(kuò)展幀;TX.6=0數(shù)據(jù)幀;tx.6=1遠(yuǎn)程請(qǐng)求.3=1數(shù)據(jù)長(zhǎng)度8位數(shù)據(jù) TX_buffer[1]=p[0];//本節(jié)點(diǎn)地址 TX_buffer[2]=p[1];// TX_buffer[3]=p[2];// TX_buffer[4]=p[3];// //初始化標(biāo)示碼頭信息 //初始化發(fā)送數(shù)據(jù)單元 TX_buffer[5]=Txd_data; TX_buffer[6]=0x00; TX_buffer[7]=0x00; TX_buffer[8]=0x00;// TX_buffer[9]=0x00;// TX_buffer[10]=0x00;// TX_buffer[11]=0x00;// TX_buffer[12]=0x00;// //初始化數(shù)據(jù)信息 EA=0;//關(guān)中斷 //-----接收狀態(tài)??--------------------------------- do { Judge=SR;//狀態(tài)寄存器 LED_RED=0;//紅燈亮 } while(Judge&0x10);//SR.4=1正在接收,等待 //---------發(fā)送狀態(tài)???--------------------------- do { Judge=SR; LED_RED=0;// } while(!(Judge&0x08));//SR.3=0,發(fā)送請(qǐng)求未處理完,等待 //---------發(fā)送緩沖器被鎖???---------------------- do { Judge=SR; LED_RED=0;// } while(!(Judge&0x04));//SR.2=0,發(fā)送緩沖器被鎖。等待 //---------------------------------------------------- TBSR=TX_buffer[0]; TBSR1=TX_buffer[1]; TBSR2=TX_buffer[2]; TBSR3=TX_buffer[3]; TBSR4=TX_buffer[4]; TBSR5=TX_buffer[5]; TBSR6=TX_buffer[6]; TBSR7=TX_buffer[7]; TBSR8=TX_buffer[8]; TBSR9=TX_buffer[9]; TBSR10=TX_buffer[10]; TBSR11=TX_buffer[11]; TBSR12=TX_buffer[12]; CMR=0x01;//置位發(fā)送請(qǐng)求//P57 EA=1;} /////////delay程序//////////////// voidDelay(uchardelay_time) {//延時(shí)程序 while(delay_time--) {} }#defineucharunsignedchar#defineuintunsignedint#defineNOP5 {_nop_();_nop_();_nop_();_nop_();_nop_();}/*延時(shí)5us*/#defineN_can13//一幀字節(jié)數(shù)bitTXD_flag=0;//若為1,要求發(fā)送處理bitRXD_flag=0;//有無(wú)數(shù)據(jù)可以接收;0無(wú),1有bitstart_flag=0;ucharLINRX_temp[2];//接收雨量傳感器數(shù)據(jù)LINRX_temp[0]=0xff表示光線暗0x11表示光線亮LINRX_temp[1]ucharRX_buffer[13];//接收的數(shù)據(jù)ucharTX_buffer[13];//接收的數(shù)據(jù)ucharTxd_data=0;//CAN總線要發(fā)送的數(shù)據(jù),也是要在數(shù)碼管1-2位置顯示的數(shù)據(jù)ucharRxd_data=0;//CAN總線要接收的數(shù)據(jù),也是要在數(shù)碼管3-4位置顯示的數(shù)據(jù)ucharPWM_ON;//定義高電平時(shí)間ucharstatus_temp;//uchartime_temp;//ucharrun_time;ucharrun_time1,count;uinttime_count,count1;bitrun_flag,first_flag,second_flag,three_flag;/*P1口分配*//*P2口分配*/sbitLED_RED=P2^1;sbitLED_GRE=P2^2;sbitSJA_RST=P2^3;//SJA1000復(fù)位管腳sbitSJA_CS=P2^0;//SJA1000片選管腳sbitauto_key=P1^0; //自動(dòng)按鍵sbitoff_key=P1^1; //關(guān)閉按鍵sbitjxie_key=P1^2; //間歇按鍵sbitslow_key=P1^3; //慢速按鍵sbitfast_key=P1^4; //快速按鍵sbitin1=P1^4;sbitin2=P1^5;sbitPWM=P1^6;sbitin3=P2^3;sbitin4=P2^2;sbitPWM1=P2^1;/*CAN總線SJA1000寄存器地址定義(用的是PeliCAN模式,擴(kuò)展幀EFF模式)*/#defineSJA_base_adr0xfe00ucharxdataMODR_at_0x00+SJA_base_adr; //模式寄存器ucharxdataCMR _at_0x01+SJA_base_adr; //命令寄存器ucharxdataSR _a

溫馨提示

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

評(píng)論

0/150

提交評(píng)論