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

下載本文檔

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

文檔簡介

1、<p>  基于CAN總線技術的汽車車燈、電動車窗、雨刮的控制系統(tǒng)</p><p><b>  簡介</b></p><p>  隨著現(xiàn)代汽車的迅猛發(fā)展和電子技術的日新月異,汽車電子設備不斷增多,從發(fā)動機控制到傳動系統(tǒng)控制,從行駛、制動、轉向系統(tǒng)控制到安全保證系統(tǒng)及儀表報警系統(tǒng),從電源管理到為提高舒適性而作的各種努力,使汽車綜合控制系統(tǒng)越來越復雜。目前.以微

2、控制器為代表的汽車電子在整車電子系統(tǒng)中應用廣泛,汽車控制正由機電控制系統(tǒng)轉向以分布式網(wǎng)絡為基礎的智能化系統(tǒng)。CAN總線是一種支持分布式和實時控制的串行通信網(wǎng)絡,以其高性能和高可靠性在自動控制領域廣泛應用。本設計主要針對基于CAN總線的汽車電子系統(tǒng)的設計,包括汽車車燈和汽車車窗和汽車雨刮等控制系統(tǒng)的總體設計思想、方法和硬件設計,介紹如何實現(xiàn)用CAN總線完成汽車控制系統(tǒng)的控制。</p><p><b>  

3、目錄</b></p><p><b>  CAN總線3</b></p><p>  1.1 CAN簡介3</p><p>  1.2 CAN總線協(xié)議的報文幀結構形式3</p><p>  CAN 總線在奧迪A6汽車車燈上的應用4</p><p>  2.1 燈光控制系統(tǒng)的

4、網(wǎng)絡硬件設計。5</p><p>  2.2 MCU的選擇6</p><p>  2.3 CAN通訊控制器6</p><p>  2.4 CAN總線收發(fā)器6</p><p>  2.5 系統(tǒng)的軟件設計7</p><p>  2.6 CAN控制初始化程序7</p><p>  

5、2.7 中央處理器程序設計8</p><p>  2.8車燈控制程序11</p><p>  CAN總線在奧迪A6汽車電動車窗上的應用15</p><p>  3.1系統(tǒng)的總體設計15</p><p>  3.2硬件接口電路設計15</p><p>  3.3系統(tǒng)軟件設計17</p><

6、p>  3.3.1 CAN控制初始化-----------------------------------------------------------------------------------------------17</p><p>  3.3.2節(jié)點發(fā)送/接收報文-----------------------------------------------------------------

7、--------------------- --17</p><p>  3.3.3 主控程序--------------------------------------------------------------------------------------------------------18</p><p>  3.4電動車窗系統(tǒng)主要技術參數(shù)和功能19</p>

8、<p>  CAN總線在奧迪A6汽車雨刮上的應用19</p><p>  4.1系統(tǒng)的總體設計19</p><p>  4.2系統(tǒng)硬件電路設計20</p><p>  4.2.1雨量檢測模塊20</p><p>  4.2.2開關控制模塊21</p><p>  4.2.3 ECU和CAN通信模

9、塊21</p><p>  4.2.4輸出驅動模塊22</p><p>  4.2.5雨刮電動機22</p><p>  4.3系統(tǒng)軟件設計24</p><p>  結語-----------------------------------------------------------------------------------

10、------------------------------------32</p><p><b>  CAN總線</b></p><p>  1.1 CAN簡介</p><p>  CAN(ControllerAreaNewtork)即控制器局域網(wǎng),是一種先進的串行通信協(xié)議,屬于現(xiàn)場總線范圍。CAN總線是最初由德國Bosch公司在80年代

11、初期,為了解決現(xiàn)代汽車中眾多的控制與測試一起之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,目的是通過較少的信號線將汽車上的各種電子設備通過網(wǎng)絡連接起來,并提高數(shù)據(jù)在網(wǎng)絡中傳輸?shù)目煽啃?,CAN總線具有較強糾錯能力,支持差分收發(fā),因而適合高噪聲環(huán)境,并具有較遠的傳輸距離,特別適合于中小型分布式測控系統(tǒng),目前己在工業(yè)自動化、建筑物環(huán)境控制、機床、醫(yī)療設備等領域得到廣泛應用。CAN總線具有以下幾個重要特點:   

12、1)結構簡單,只有兩根線與外部相連,且內(nèi)部含有錯誤探測和管理模塊。    2)通信方式靈活??梢远喾N方式工作,網(wǎng)絡上任意一個節(jié)點均可在任意時刻主動的向網(wǎng)絡上的其他節(jié)點發(fā)送信息,而不分主從。    3)可以點對點、點對多點及全局廣播方式發(fā)送和接受數(shù)據(jù)。    4)網(wǎng)絡上的節(jié)點信息可分成不同的優(yōu)先級,可以滿足不同的實時要求。 

13、0;  5)CAN通訊格式采用短幀格式,每幀字節(jié)數(shù)最多為8個,可滿足通常工業(yè)領域中控制命令、工作狀態(tài)和</p><p>  1.2 CAN總線協(xié)議的報文幀結構形式</p><p>  在報文傳輸時,不同的幀具有不同的傳輸結構,下面將分別介紹四種傳輸幀的結構,只有嚴格按照該結構進行幀的傳輸,才能被節(jié)點正確接收和發(fā)送。</p><p>  (1)數(shù)據(jù)幀由七種

14、不同的位域(Bit Field)組成:幀起始(Start of )、仲裁域(Arbitration Field)、控制域(Control Field)、數(shù)據(jù)域(DataField)、CRC域(CRC Field)、應答域(ACK Field)和幀結尾(End of )。數(shù)據(jù)域的長度可以為0~8個字節(jié)。</p><p>  1)幀起始(SOF):幀起始(SOF)標志著數(shù)據(jù)幀和遠程幀的起始,僅由一個“顯性”位組成。在

15、CAN的同步規(guī)則中,當總線空閑時(處于隱性狀態(tài)),才允許站點開始發(fā)送(信號)。所有的站點必須同步于首先開始發(fā)送報文的站點的幀起始前沿(該方式稱為“硬同步”)。</p><p>  2)仲裁域:仲裁域由標識符和RTR位組成,標準幀格式與擴展幀格式的仲裁域格式不同。標準格式里,仲裁域由1l位標識符和RTR位組成。標識符位有ID28~IDl8。擴展幀格式里,仲裁域包括29位標識符、SRR位、IDE(Identifier

16、 Extension,標志符擴展)位、RTR位。其標識符有ID28~IDO。為了區(qū)別標準幀格式和擴展幀格式,CANl.0~1.2版本協(xié)議的保留位r1現(xiàn)表示為IDE位。IDE位為顯性,表示數(shù)據(jù)幀為標準格式;IDE位為隱性,表示數(shù)據(jù)幀為擴展幀格式。在擴展幀中,替代遠程請求(Substitute Remote Request,SRR)位為隱性。仲裁域傳輸順序為從最高位到最低位,其中最高7位不能全為零。RTR的全稱為“遠程發(fā)送請求(Remote

17、 TransmissionRequest)”。RTR位在數(shù)據(jù)幀里必須為“顯性”,而在遠程幀里必須為“隱性”。它是區(qū)別數(shù)據(jù)幀和遠程幀的標志。</p><p>  3)控制域:控制域由6位組成,包括2個保留位(r0、r1同于CAN總線協(xié)議擴展)及4位數(shù)據(jù)長度碼,允許的數(shù)據(jù)長度值為0~8字節(jié)。</p><p>  4)數(shù)據(jù)域:發(fā)送緩沖區(qū)中的數(shù)據(jù)按照長度代碼指示長度發(fā)送。對于接收的數(shù)據(jù),同樣如此。

18、它可為0~8字節(jié),每個字節(jié)包含8位,首先發(fā)送的是MSB(最高位)。</p><p>  5)CRC校驗碼域:它由CRC域(15位)及CRC邊界符(一個隱性位)組成。CRC計算中,被除的多項式包括幀的起始域、仲裁域、控制域、數(shù)據(jù)域及15位為0的解除填充的位流給定。此多項式被下列多項式X15+X14+X10+X8+X7+X4+X3+1除(系數(shù)按模2計算),相除的余數(shù)即為發(fā)至總線的CRC序列。發(fā)送時,CRC序列的最高有

19、效位被首先發(fā)送/接收。之所以選用這種幀校驗方式,是由于這種CRC校驗碼對于少于127位的幀是最佳的。</p><p>  6)應答域:應答域由發(fā)送方發(fā)出的兩個(應答間隙及應答界定)隱性位組成,所有接收到正確的CRC序列的節(jié)點將在發(fā)送節(jié)點的應答間隙上將發(fā)送的這一隱性位改寫為顯性位。因此,發(fā)送節(jié)點將一直監(jiān)視總線信號已確認網(wǎng)絡中至少一個節(jié)點正確地接收到所發(fā)信息。應答界定符是應答域中第二個隱性位,由此可見,應答間隙兩邊有

20、兩個隱性位:CRC域和應答界定位。</p><p>  7)幀結束域:每一個數(shù)據(jù)幀或遠程幀均由一串七個隱性位的幀結束域結尾。這樣,接收節(jié)點可以正確檢測到一個幀的傳輸結束。</p><p>  CAN 總線在奧迪A6汽車車燈上的應用</p><p>  摘要:以汽車控制局域網(wǎng)CAN總線為基礎,結合89C51單片機,對奧迪汽車的的車燈進行控制。</p>&

21、lt;p>  關鍵詞:89C51,sja1000,CAN總線,82c250</p><p><b>  正文:</b></p><p>  燈光控制系統(tǒng)是保證汽車安全行駛的一個重要系統(tǒng)。傳統(tǒng)的燈光控制系統(tǒng)多采用繼電器和獨立模式控制,這使得車內(nèi)線束過多且布線復雜,會引起嚴重的電磁干擾,使系統(tǒng)的可靠性下降。CAN(Controller Area Network)數(shù)據(jù)

22、總線是一種適用汽車環(huán)境的汽車局域網(wǎng)。它能夠很好的解決這個問題,它具有較高的傳輸速度,主要是針對汽車中對實時性要求很高的動力系統(tǒng)而設計的。利用CAN總線,不僅能簡化線束,而且還能大大降低車輛的故障率?;贑AN總線的燈光控制系統(tǒng),就很好用利用CAN總線的優(yōu)勢,發(fā)揮車燈的最大性能。</p><p>  本設計利用CAN總線通信協(xié)議建立汽車燈光(前照燈)控制系統(tǒng)的局域網(wǎng)(對于汽車其他燈光可以按照同樣道理設計而成,只需要

23、多加幾個通信的節(jié)點),控制的燈光有:遠光燈、近光燈、示寬燈、霧燈、轉向燈。通過CAN總線實現(xiàn)上述燈光的開和閉的控制。</p><p>  2.1 燈光控制系統(tǒng)的網(wǎng)絡硬件設計。</p><p>  對于傳統(tǒng)的燈光控制系統(tǒng)如圖一所示。</p><p><b> ?。▓D一)</b></p><p>  從圖一可以看出,傳統(tǒng)供

24、電系統(tǒng)是所謂的并行結構,一個用電器賠一跟電力線和一個開關,開關置于駕駛員旁,由駕駛員控制開關通斷,控制燈(或其他用電器)工作。這種結構缺點是若用電設備越多,電力線就越多,這無疑是加大了汽車的負擔而且容易收到干擾,導致器件不能正常運行。</p><p>  對于CAN總線的燈光控制系統(tǒng)如圖二所示。</p><p>  它利用CAN總線,能夠有效的減小電力線的數(shù)量,減少干擾,實現(xiàn)優(yōu)化控制。&l

25、t;/p><p><b>  (圖二)</b></p><p>  我們可以直接在(圖二)中增加CAN總線收發(fā)器,及其MCU控制電路,這樣就能實現(xiàn)更多的車燈控制系統(tǒng)。</p><p>  2.2 MCU的選擇</p><p>  本設計選用AT89C51單片機作為燈光控制節(jié)點MCU。P89C51單片機是一個8位高性能微控制

26、器。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS8位的單片機。AT89C2051是一種帶2K字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能

27、8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p>  2.3 CAN通訊控制器</p><p>  本設計采用SAJ1000獨立CAN控制器。PHILIPS公司的PCA82C200是符合CAN2.0A協(xié)議的總線控制器,SJA100

28、0是它的替代產(chǎn)品,它是應用于汽車和一般工業(yè)環(huán)境的獨立CAN總線控制器。具有完成CAN通信協(xié)議所要求的全部特性。經(jīng)過簡單總線連接的SJA1000可完成CAN總線的物理和數(shù)據(jù)鏈路層的所有功能。其硬件與軟件設計和PCA82C200的基本CAN模式(BesicCAN)兼容。同時,新增加的增強CAN模式(PeliCAN)還可支持CAN2.0B協(xié)議。</p><p>  2.4 CAN總線收發(fā)器</p>&l

29、t;p>  本文世紀采用CAN總線收發(fā)器82C250。PCA82C250是CAN協(xié)議控制器和物理總線之間的接口,該器件對總線提供差動發(fā)送能力并對CAN控制器提供差動接收能力。如在ISO11898標準中描述的,它們可以用高達1Mbit/s的位速率在兩條有差動電壓的總線電纜上傳輸數(shù)據(jù)。這是全世界使用最廣泛的CAN收發(fā)器之一。</p><p>  圖三為車燈控制系統(tǒng)硬件電路圖,它的工作原理為:CAN總線控制器與單

30、片機連通,由單片機的程序給予初始化,并選通控制器,當單片機P1.0~P1.4其中一個管腳開關按下時,立刻把數(shù)據(jù)傳送到CAN控制器SJA1000,利用CAN總線收發(fā)器82C250將信號發(fā)出,通過CANH,CANL兩個管腳傳輸數(shù)據(jù),當控制對象(車燈)系統(tǒng)中的收發(fā)器收到信號時,其系統(tǒng)中的CAN總線控制器發(fā)出中斷,使車燈系統(tǒng)的MCU執(zhí)行相關程序,控制車燈驅動電路,使其相應的車燈完成控制目的。(注意圖中的發(fā)光二極管為車燈的驅動電路,驅動車燈的亮和

31、滅)</p><p><b> ?。▓D三)</b></p><p>  微處理器AT89C51負責SJA1000的初始化,通過控制SJA1000實現(xiàn)數(shù)據(jù)的接受和發(fā)送等通訊任務。SJA1000的AD0~AD7連接到單片機的P0.0~P0.7口,SJA1000的CS連接到89c51的P2.0,P2.0為0時片外存儲器地址可選中SJA1000,CPU通過這些地址可對SJA1

32、000執(zhí)行相應的讀/寫操作。SJA1000的RD,WR,ALE分別與89c51的引腳相連,INT接INT0。</p><p>  82c250與CAN總線的接口采用了一定的完全和抗干擾措施。一般情況下,若CAN總線系統(tǒng)干擾很強烈,為了增強CAN總線節(jié)點的抗干擾能力,SJA1000的TX0和RX0并不是直接與82C250的TXD和RXD相連,而是通過高速光耦6N137后與82c250相連,且光耦部分電路VCC和VD

33、D完全隔離,這樣就可以實現(xiàn)總線上各節(jié)點間的電氣隔離。</p><p>  2.5 系統(tǒng)的軟件設計</p><p>  系統(tǒng)軟件設計的關鍵是通訊程序的設計。本設計的通訊軟件程序主要由3部分組成:初始化程序、中央處理器程序、車燈控制程序。編寫主要運用KEIL的C語言對AT89C51進行軟件程序設計。</p><p>  2.6 CAN控制初始化程序</p>

34、<p>  初始化程序主要是通過對CAN控制器控制段中的寄存器寫入控制字,從而確定CAN控制器的工作方式等。有3種方式進入初始化程序:一是上電復位;二是硬件復位;三是軟件復位,即運行期間通過給CAN控制器發(fā)一個復位請求,置復位請求為1。在復位期間,必須初始化的寄存器有:MR模式寄存器、CDR時分寄存器、ACR接收代碼寄存器、AMR屏蔽寄存器、BTR總線定時定時器及OCR輸出控制寄存器等。需要注意的是,這些寄存器僅能在復位期

35、間寫訪問。因此,在對這些寄存器初始化前,必須確保系統(tǒng)進入了復位狀態(tài)。流程圖如下:</p><p>  2.7 中央處理器程序設計</p><p>  中央處理器程序包括初始MCU,以及初始化CAN控制器。通過查詢,判斷是否有開關信號發(fā)出。若有,將此信號發(fā)送到CAN控制器,CAN控制器經(jīng)處理后發(fā)送到CAN收發(fā)器。</p><p><b>  程序流程圖如下:

36、</b></p><p><b>  否</b></p><p><b>  是</b></p><p><b>  否</b></p><p><b>  是</b></p><p>  圖1.中央MCU控制程序&l

37、t;/p><p><b>  中央處理器程序如下</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  ucha

38、r sj[8];</p><p>  #define TIM0 -50000</p><p>  sbit cs=P2^0;</p><p>  #define MyAddr 1</p><p>  #define CAN_DATA P0</p><p>  #define CAN_CR 0 //控制&l

39、t;/p><p>  #define CAN_CMR 1 //命令</p><p>  #define CAN_SR 2 //狀態(tài)</p><p>  #define CAN_IR 3 //中斷</p><p>  #define CAN_ACR 4 //驗收</p><p>  #de

40、fine CAN_AMR 5 //屏蔽</p><p>  #define CAN_BTR0 6 //時序0</p><p>  #define CAN_BTR1 7 //時序1</p><p>  #define CAN_OCR 8 //輸出</p><p>  #define CAN_TXB 10 //發(fā)

41、送緩沖</p><p>  #define CAN_RXB 20 //接收緩沖</p><p>  #define CAN_CDR 31 //分頻</p><p>  uchar pdata CAN[32] _at_(0);</p><p>  void CAN_INI() /*初始化部分*/</p><p&

42、gt;<b>  {</b></p><p>  CAN[CAN_CR]=0x01; //進入復位模式,允許訪問各個寄存器</p><p>  CAN[CAN_ACR]=MyAddr;//驗收,表示接收的數(shù)據(jù)中第一位為1。</p><p>  CAN[CAN_AMR]=0x00; //屏蔽;00表示不屏蔽,8位全有效。</p

43、><p>  CAN[CAN_BTR0]=0x07; //總線時序0</p><p>  CAN[CAN_BTR1]=0xff;//總線時序1</p><p>  CAN[CAN_OCR]=0x1A; //0xaa,0xd2,0xfa 輸出控制</p><p>  CAN[CAN_CR]=0x02; //接收中斷使能,否則不能

44、接收 </p><p><b>  }</b></p><p>  void delay(uint x) //延時部分</p><p><b>  {</b></p><p><b>  uint y;</b></p><p>  fo

45、r(y=x;y>0;y--);</p><p><b>  }</b></p><p>  void CAN_SEND() /*發(fā)送數(shù)據(jù)部分*/</p><p><b>  {</b></p><p>  uchar i,p;</p><p>  p=CAN[CAN_S

46、R];//狀態(tài)寄存器的內(nèi)容給p</p><p>  if (p&0x04)//檢查第三位即發(fā)送緩沖器的狀態(tài),為1 CPU可以向發(fā)送緩沖器寫報文</p><p><b>  {</b></p><p>  p=CAN_TXB; /*p指向發(fā)送緩存首址*/</p><p>  for(i=0;i&

47、lt;8;i++) CAN[p++]=sj[i];</p><p>  CAN[CAN_CMR]=0x01; /*請求發(fā)送*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  void main() </p><p>

48、;<b>  {</b></p><p><b>  P0=0xff;</b></p><p><b>  EA=0;</b></p><p><b>  cs=0;</b></p><p><b>  EX0=0;</b></

49、p><p><b>  PX0=0;</b></p><p><b>  ET0=0;</b></p><p>  CAN_INI();</p><p>  IT0=1;//外中斷請求信號方式控制位:1 脈沖方式(后沿負跳有效),0 電平方式(低電平有效)</p><p>  T

50、H0=TIM0&0XFF; TL0=TIM0>>8; TR0=1;//啟動0號計數(shù)器,-50000equsFFFF3CB0;TH0==B0,TL0==3C</p><p><b>  EX0=1;</b></p><p><b>  ET0=1;</b></p><p><b>  EA=

51、1;</b></p><p><b>  PX0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if((P0&0xff)!=0xff)</p><p>

52、<b>  {</b></p><p>  delay(10000);</p><p>  if((P0&0xff)!=0xff)</p><p><b>  {</b></p><p>  sj[0]=P0^0;</p><p>  sj[1]=P0^1;</

53、p><p>  sj[2]=P0^2;</p><p>  sj[3]=P0^3;</p><p>  sj[4]=P0^4;</p><p><b>  sj[5]=1;</b></p><p><b>  sj[6]=1;</b></p><p>&l

54、t;b>  sj[7]=1;</b></p><p>  CAN_SEND();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>

55、  }</b></p><p>  void Timer1() interrupt 1 using 1</p><p><b>  {</b></p><p>  TH0=TIM0&0XFF; TL0=TIM0>>8; TR0=1;</p><p><b>  }</b&

56、gt;</p><p><b>  2.8車燈控制程序</b></p><p>  當CANH,和CNAL,有數(shù)據(jù)傳來時,經(jīng)過CAN總線數(shù)據(jù)接受器接受到的數(shù)據(jù),發(fā)送給SJA1000控制器,控制器接受完畢后發(fā)出中斷請求,MCU接受中斷請求,發(fā)生中斷隨之處理中斷程序。</p><p><b>  程序框圖如下:</b><

57、/p><p><b>  否</b></p><p><b>  否</b></p><p>  圖2.車燈控制系統(tǒng)MCU程序</p><p><b>  車燈控制程序如下</b></p><p>  #include<reg52.h></

58、p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define TIM0 -50000</p><p>  uchar sj[8];</p><p>  uchar CANBUS=0;</p>

59、<p>  sbit cs=P2^0;</p><p>  sbit qd1=P0^1;</p><p>  sbit qd0=P0^0;</p><p>  sbit qd2=P0^2;</p><p>  sbit qd3=P0^3;</p><p>  sbit qd4=P0^4;</p>

60、<p>  sbit qd5=P0^5;</p><p>  sbit qd6=P0^6;</p><p>  sbit qd7=P0^7;</p><p>  #define MyAddr 1</p><p>  #define CAN_DATA P0</p><p>  #define CAN_CR

61、 0 //控制</p><p>  #define CAN_CMR 1 //命令</p><p>  #define CAN_SR 2 //狀態(tài)</p><p>  #define CAN_IR 3 //中斷</p><p>  #define CAN_ACR 4 //驗收</p>

62、<p>  #define CAN_AMR 5 //屏蔽</p><p>  #define CAN_BTR0 6 //時序0</p><p>  #define CAN_BTR1 7 //時序1</p><p>  #define CAN_OCR 8 //輸出</p><p>  #define CAN

63、_TXB 10 //發(fā)送緩沖</p><p>  #define CAN_RXB 20 //接收緩沖</p><p>  #define CAN_CDR 31 //分頻</p><p>  uchar pdata CAN[32] _at_(0);</p><p>  void CAN_INI() /*初始化部分*/<

64、/p><p><b>  {</b></p><p>  CAN[CAN_CR]=0x01; //進入復位模式,允許訪問各個寄存器</p><p>  CAN[CAN_ACR]=MyAddr;//驗收,表示接收的數(shù)據(jù)中第一位為1。</p><p>  CAN[CAN_AMR]=0x00; //屏蔽;00表示不屏

65、蔽,8位全有效。</p><p>  CAN[CAN_BTR0]=0x07; //總線時序0</p><p>  CAN[CAN_BTR1]=0xff;//總線時序1</p><p>  CAN[CAN_OCR]=0x1A; //0xaa,0xd2,0xfa 輸出控制</p><p>  CAN[CAN_CR]=0x02;

66、 //接收中斷使能,否則不能接收 </p><p><b>  }</b></p><p>  void main() </p><p><b>  {</b></p><p><b>  P0=0xff;</b></p><p><b> 

67、 EA=0;</b></p><p><b>  cs=0;</b></p><p><b>  EX0=0;</b></p><p><b>  PX0=0;</b></p><p><b>  ET0=0;</b></p>&

68、lt;p>  CAN_INI();</p><p>  IT0=1;//外中斷請求信號方式控制位:1 脈沖方式(后沿負跳有效),0 電平方式(低電平有效)</p><p>  TH0=TIM0&0XFF; TL0=TIM0>>8; TR0=1;//啟動0號計數(shù)器,-50000equsFFFF3CB0;TH0==B0,TL0==3C</p><

69、;p><b>  EX0=1;</b></p><p><b>  ET0=1;</b></p><p><b>  EA=1;</b></p><p><b>  PX0=1;</b></p><p><b>  while(1);<

70、;/b></p><p><b>  }</b></p><p>  void CAN_INT() interrupt 0 using 1/*接收中斷*/</p><p><b>  {</b></p><p>  uchar i,p;</p><p>  p=CAN[

71、CAN_IR];</p><p>  if(p&0x01) //中斷寄存器的低一位為一:RXFIFO不空且中斷寄存器的RIE(接收中斷使能)位置1</p><p><b>  {</b></p><p>  p=CAN_RXB;//接收數(shù)據(jù)的首地址給p</p><p>  for(i=0;i<8;i++)&

72、lt;/p><p><b>  {</b></p><p>  sj[i]=CAN[p++];//讀接收的數(shù)據(jù)</p><p><b>  }</b></p><p>  CAN[CAN_CMR]=0x04; /*釋放接收緩存*/</p><p><b>  C

73、ANBUS=1;</b></p><p><b>  }</b></p><p>  if(CANBUS==1)</p><p><b>  {</b></p><p>  qd0=sj[0];</p><p>  qd1=sj[1];</p>&l

74、t;p>  qd2=sj[2];</p><p>  qd3=sj[3];</p><p>  qd4=sj[4];</p><p>  qd5=sj[5];</p><p>  qd6=sj[6];</p><p>  qd7=sj[7];</p><p><b>  }<

75、;/b></p><p><b>  }</b></p><p>  void Timer1() interrupt 1 using 1</p><p><b>  {</b></p><p>  TH0=TIM0&0XFF; TL0=TIM0>>8; TR0=1;<

76、;/p><p><b>  }</b></p><p>  CAN總線在奧迪A6汽車電動車窗上的應用</p><p>  3.1系統(tǒng)的總體設計</p><p>  現(xiàn)在各中高檔轎車都安裝有電動車窗,按鈕控制車窗玻璃的升降。如果車窗無智能,司機在沒有注意到乘客的手或物體伸出窗口的情況下按下按鈕,乘客容易被車窗夾傷。為了安全,很

77、多乘車都采用電動防夾車窗。在充分研究有關CAN總線在汽車電子系統(tǒng)中的應用和電動車窗防夾方案的基礎上,提出一種基于CAN總線的轎車車窗智能控制系統(tǒng)的設計方案,實現(xiàn)車窗在正常工作模式下防夾控制功能和緊急情況下(異常工作模式)快速升降車窗控制功能。CAN總線系統(tǒng)節(jié)點分為不帶微控制器的非智能節(jié)點和帶微控制器的智能節(jié)點。該系統(tǒng)采用智能節(jié)點設計,轎車車窗按CAN總線結構和電器元件在汽車中的物理位置劃分為左前、右前、左后和右后4個節(jié)點單元。其中左前節(jié)

78、點為主控制單元,除負責本地(左前)車窗的升降,還可以遠程控制其他車窗。各節(jié)點采用獨立的帶CAN功能的微控制器設計,其CAN網(wǎng)絡結構如圖所示。</p><p>  3.2硬件接口電路設計</p><p>  該系統(tǒng)采用片內(nèi)含有CAN控制器的P8xC591作為節(jié)點單元主控制器。P8xC591采用強大的80C51指令集;內(nèi)部集成有SJAl000 CAN控制器的PeliCAN功能;全靜態(tài)內(nèi)核提供了

79、擴展的節(jié)電方式:振蕩器停止和恢復而不丟失數(shù)據(jù);改進的1:l內(nèi)部時鐘分頻器在12 MHz外部時鐘頻率時實現(xiàn)500ns指令周期。</p><p>  控制器P8xC2591讀取按鍵信息,驅動車窗電機按預先編制的軟件指令運行,同時監(jiān)測傳感器的輸出電壓和負載電流,作為車窗在上升(下降)過程中與障礙物夾持時的邏輯判斷,然后驅動電機。為了防止車窗玻璃上升到頂部或下降到底部時,電動機受到?jīng)_擊堵轉而降低電動車窗機械的使用壽命,該

80、系統(tǒng)設計具有軟停止功能,并且手動或自動上升、下降時都有此功能。當玻璃上升(下降)快到頂(底)部時,在上升軟停止點切斷電動機的電源使其停止工作,通過電動機的慣性使玻璃上升(下降)到頂(底)部。各節(jié)點單元相關命令和狀態(tài)通過CAN控制器以報文格式由CAN總線完成與其他節(jié)點單元信息間的傳輸和共享。系統(tǒng)節(jié)點單元硬件設計框圖如圖所示。</p><p>  車窗控制系統(tǒng)CAN總線硬件原理圖</p><p&g

81、t;  系統(tǒng)左前節(jié)點單元除具有全局控制外,其余節(jié)點單元只負責控制本地車窗,硬件設計僅多一個按鍵K4,主要在于軟件設計。該系統(tǒng)設計的控制電路不僅支持節(jié)點單元間的CAN總線通信,還要檢測壓電傳感器和負載電流等模擬量,判斷各種邏輯,通過驅動器實現(xiàn)控制功能。</p><p><b>  3.3系統(tǒng)軟件設計</b></p><p>  系統(tǒng)軟設計目主包括CAN控制器始化、節(jié)點發(fā)

82、送接收報文主控程序3個模塊。</p><p><b>  can控制器初始化</b></p><p>  CAN控制器電或硬復位必須始化,包括操作模式、驗收濾波器、總線位定時、斷配置TXDC輸出引腳。</p><p><b>  節(jié)點發(fā)送/接收報文</b></p><p>  報文發(fā)送由CAN控制器

83、遵循CAN協(xié)議規(guī)范自動完成。首先CPU必須待發(fā)送數(shù)據(jù)按特定格式組合成幀報文,進入CAN控制發(fā)送緩沖器,并置位命令寄存器發(fā)送求標志,發(fā)送處理通過斷求或查詢狀態(tài)標志進行控制。其發(fā)送程序分發(fā)送遠程幀數(shù)據(jù)幀兩種,遠程幀無數(shù)據(jù)場。</p><p>  報文接收程序責節(jié)點報文接收以及總線關閉、誤報警、接收溢出等其處理。報文收發(fā)主有斷接收方式查詢接收方式。軟設計采報文接收查詢斷控制方式報文發(fā)送斷控制方式。報文發(fā)送/接收程序流程

84、如下圖所示。</p><p><b>  主控程序</b></p><p>  各車窗節(jié)點單元,左節(jié)點單元功能最復雜,具有最控制優(yōu)先權。這里以左節(jié)點單元例,詳細介紹其主控程序設計。首先始化系統(tǒng),包括P8xC591控制器CAN模塊始化、斷、I/0端口、定時模塊、看門狗模塊、A/D轉換器模塊設置全局變量,還電機堵轉時最電流車窗頂(底)時傳感器電壓閾值入EPROM。P8xC

85、591實測電流EPROM標定值比較,實現(xiàn)防夾功能,比較電壓閾值測得傳感器電路電壓值判斷車窗達極限位置。始化完成,讀組合按鍵信息,根據(jù)按鍵動作實施具體操作,同時發(fā)送CAN報文,完成各節(jié)點單元間CAN通信智能化控制。圖5左節(jié)點單元主控程序流程。</p><p><b>  設計流程圖</b></p><p>  3.4電動車窗系統(tǒng)主要技術參數(shù)和功能</p>

86、<p> ?、俜缞A功能 初始化后,手動和自動上升時都具有防夾功能,防夾次數(shù)不受限制;從車窗上極限下沿40mm往下,車窗上極限上沿40 mm往上的區(qū)間為防夾區(qū)間</p><p> ?、谑‰娔J?在輸入信號消失120 ms后。且電動機溫度接近室溫25℃時,系統(tǒng)自動進入省電模式.靜態(tài)電流小于300μA。當電動機控制單元一旦得到輸入指令就被喚醒。</p><p>  ③軟停止功能 上升軟

87、停止點為上極限位置約2 mm處,下降軟停止點為下極限位置上約12 mm處。</p><p> ?、茈妱訖C保護功能對電動機采取保護措施,提高電動機和電動車窗系統(tǒng)的使用壽命。</p><p> ?、葑栽\斷保護功能 為保證系統(tǒng)的可靠性,同時提高系統(tǒng)的平均無故障時間,采用自診斷保護措施:如果電源電壓超過16 V±0.5 V,關閉自動上升功能。</p><p>  

88、⑥系統(tǒng)抗干擾設計技術軟件抗干擾以其設計靈活、節(jié)省硬件資源、成本低等優(yōu)勢得到廣泛應用。</p><p>  CAN總線在奧迪A6汽車雨刮上的應用</p><p>  4.1系統(tǒng)的總體設計</p><p>  本設計為奧迪A6汽車雨刮控制系統(tǒng),由左右節(jié)點構成。左節(jié)點主控制單元,兩節(jié)點基本相同,區(qū)別僅在于左節(jié)點多出開關命令模塊。以左節(jié)點為介紹內(nèi)容,它包括雨量檢測模塊、電源

89、模塊、開關控制模塊、CAN通信模塊、處理器模塊??蓪崿F(xiàn)停止、低速、高速、點動、間歇、自動五種刮水模式。左節(jié)點工作時,開關控制命令輸入到控制器模塊,雨量檢測模塊將雨量信息輸入控制模塊供自動模式使用,控制器由開關信號和雨量信號作出判斷,輸出命令到輸出驅動模塊和CAN通信模塊。右節(jié)點經(jīng)CAN通信模塊獲得動作命令,輸出驅動命令到輸出驅動模塊。電源模塊為左右節(jié)點供電。</p><p>  左節(jié)點

90、 右節(jié)點</p><p><b>  系統(tǒng)整體電路圖</b></p><p>  4.2系統(tǒng)硬件電路設計</p><p>  4.2.1雨量檢測模塊</p><p>  圖4-1雨量檢測電路圖</p><p>  圖4-2紅外傳感器檢測原理圖</p&g

91、t;<p>  雨量檢測采用紅外雨水傳感器,紅外光受外界環(huán)境影響小,且易于檢測。把半導體發(fā)光元件和感光元件配成一對,從發(fā)光元件發(fā)出的光信號,如果在光路途中遇到雨滴落下,由于光的散射,光強減弱,可利用檢測光強的衰減信號來控制雨刮器的動作。由此雨量檢測部分由紅外光發(fā)射電路和紅外光接收電路組成,如圖4-1所示。</p><p>  圖中左半部分為紅外發(fā)射電路,紅外發(fā)射管采用硅光電二極管,它具有暗電流小、噪

92、聲低、受溫度影響小、價格便宜等優(yōu)點。紅外發(fā)射管三個并聯(lián),三極管驅動,利用單片機定時器定時中斷在P5.0口產(chǎn)生38 kHz的頻率脈沖控制發(fā)射管的通斷,采用這種方式可以減少發(fā)射電路的功耗。電路中D1用來指示紅外發(fā)射管是否在正常工作中。右半部分為紅外接收電路,采用Vishay公司的紅外專用集成接收芯片 TK1838,該芯片將光接收二極管、放大電路、帶通濾波器、檢波電路封裝在一起,以實現(xiàn)接收脈沖編碼信號調制的紅外光信號,塑料封裝可濾除可見光,使

93、得電路簡單,體積也比較小。TK1838芯片共有3個引腳:l腳為輸出,2 腳為接地,3 腳電源接 +5 V,內(nèi)部集成了放大、濾波、解調及其控制電路,1腳直接輸出高低電平。TK1838只有接收到38 kHz的脈沖信號才會工作。當接收不到38 kHz的脈沖信號時,1腳輸出高電平;當接收到38 kHz的脈沖信號時,1腳輸出低電平。當有雨滴落在擋風玻璃的“敏感區(qū)域”時,1腳輸出一串脈沖波,脈沖波的數(shù)量則與雨量的大小成正比。</p>

94、<p>  4.2.2開關控制模塊</p><p>  汽車上使用的電源系統(tǒng)是12V系統(tǒng),控制輸入信號也為12V,而89C51是5V系統(tǒng)供電。開關的控制信號不能直接輸入到MCU管腳,必須進行電平轉換,使輸入的12V雨刮器開關控制信號轉換后輸出5V電壓,再進入到MCU的I/O管腳。開關處的具體電平轉換連接電路,如下圖4-3所示。整個模塊總共有“停止、低速、高速、點動、間歇、自動”五個按鈕。</p&g

95、t;<p>  圖4-3控制開關模塊電路圖</p><p>  4.2.3 ECU和CAN通信模塊</p><p>  雨刮器中的ECU和CAN通信模塊與車燈控制系統(tǒng)、車窗控制系統(tǒng)中ECU和CAN通信模塊一樣。</p><p>  4.2.4.電源模塊</p><p>  電源模塊為控制器的其它模塊電路提供符合要求的電源。目前

96、汽車上使用的電源系統(tǒng)是12V系統(tǒng),蓄電池的電壓范圍是9~15V,一般單片機的輸入電壓和各個管腳的最大輸入電壓是5V,需要對汽車上的電源系統(tǒng)進行電平轉換,給需要5V電源的MCU和其它器件使用,如圖4-4所示。</p><p>  圖4-4 電源模塊電路原理圖</p><p>  4.2.4輸出驅動模塊</p><p>  輸出驅動模塊主要實現(xiàn)ECU輸出命令信號轉化為能

97、夠驅動繼電器工作的大電流信號。以電機的正反轉控制信號驅動電路為原理分析,其他的繼電器動作電路同樣?;鶚O接主控器控制引腳,輸出高電平時,三極管導通對電流進行放大,繼電器吸合進行開關動作。繼電器并聯(lián)反向二極管的作用是泄流,三極管截止時形成回路,繼電器中線圈電流經(jīng)二極管流走。</p><p>  圖4-5 輸出驅動控制繼電器電路圖</p><p>  4.2.5雨刮電動機</p>

98、<p>  本設計采用永磁電動機,通過改變電樞電流方向控制器正反轉,通過改變正負電刷間串聯(lián)繞組匝數(shù)控制轉速。主控器輸出命令控制繼電器動作,有不同的繼電器組合動作可以選擇電樞電流方向和電刷間匝數(shù)。自動停位滑片隨電動機轉動,當刮水片不在風窗下緣位置時保持通電,當刮水片正好停在風窗下緣位置時,電動機與電源斷開。</p><p>  1—電樞 2—永久磁鐵磁極</p><p>  3—蝸

99、桿 4—蝸輪 5—自動停位滑片</p><p>  圖4-6 雨刮電動機原理圖</p><p><b>  4.3系統(tǒng)軟件設計</b></p><p>  軟件流程設計如圖所示,單片機初始化程序包括初始化I/O端口的輸入輸出狀態(tài),設置定時計數(shù)器的參數(shù)和中斷優(yōu)先級等。逐個按鍵檢測輸入信號,經(jīng)控制器處理后輸出控制命令到本地控制驅動裝置,然后初始化C

100、AN通信模塊,發(fā)送命令信號到其他節(jié)點。循環(huán)檢測按鍵狀態(tài)進行控制。其中的點動信號為短暫通電信號,電動機短暫工作后停止;間歇信號為延時一段時間后電動機工作之后再延時,電動機再工作;自動控制信號使電機根據(jù)雨量檢測信號的大小來選擇電動機轉動速度。</p><p><b>  具體代碼:</b></p><p>  #include<reg52.h></p&g

101、t;<p>  #include "sja_reg_def.h"</p><p>  unsigned charxdataCAN_SJA_BaseAdr_at_ 0xfa00; //定義SJA1000的片選基址:根據(jù)實際電路確定</p><p>  unsigned char xdata *SJA_CS_Point

102、 ; //指針指向空</p><p>  unsigned char Send_CAN_Filter[8]={0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff};//存放SJA1000濾波器參數(shù) </p><p>  unsigned char Send_CAN_Data[8];//待發(fā)送的數(shù)據(jù),具體數(shù)據(jù)由發(fā)送前確定</p>

103、;<p>  unsigned char Rec_CAN_Data[8]; //用于接收數(shù)據(jù)</p><p>  unsigned char Send_CAN_Info_ID[5]={0x88,0x00,0x00,0x00,0x00}; //幀頭標識碼</p><p>  unsigned char BTR0,BTR1; </p>

104、;<p>  unsigned long int num= 0;//用于雨量檢測時的脈沖計數(shù)</p><p>  unsigned char flag_zidong=0;//用于標記雨量大小</p><p>  sbit KEY_Diandong = P1^0;//點動,按下鍵得低電平</p><p>  sbit KEY_Zidong

105、= P1^1;//自動</p><p>  sbit KEY_Jianxie = P1^2;//間歇</p><p>  sbit KEY_High = P1^3;//高速</p><p>  sbit KEY_Low = P1^4;//低速</p><p>  sbit KEY_Stop = P1

106、^5;//停止</p><p>  sbit StartRain = P1^6;//啟動雨量檢測</p><p>  sbit RainSignal = P1^7;//接收雨量信號</p><p>  sbit MC_front = P2^0;//正:0,0;反;1,1;停:1,0</p><p>  sbit

107、MC_back = P2^1;</p><p>  sbit MC_choose = P2^2;//輸出高速:1;輸出高速:0</p><p><b>  /*延時函數(shù)*/</b></p><p>  void Delayms( unsigned int xms)</p><p><b>  {

108、</b></p><p>  unsigned int i,j;</p><p>  for(i=xms;i>0;i--)</p><p>  for(j=110;j>0;j--);</p><p><b>  }</b></p><p>  /*CAN總線初始化*/&l

109、t;/p><p>  void Can_Sja_Init()</p><p><b>  {</b></p><p>  SJA_CS_Point=&CAN_SJA_BaseAdr;//確定基址指針</p><p>  BTR0=0x00;</p><p>  BTR1=

110、0x14; //設置為1M波特率通信 </p><p>  //SJAEntryResetMode();</p><p>  *(SJA_CS_Point+REG_CAN_MOD) |= 0X01;

111、//進入復位模式</p><p>  //WriteSJAReg(REG_CAN_CDR,0xc8);</p><p>  *(SJA_CS_Point+REG_CAN_CDR) = 0X08;//配置時鐘分頻寄存器,選擇PeliCAN模式</p><p>  //WriteSJAReg(REG_CAN_MOD,0x01);</p&g

112、t;<p>  *(SJA_CS_Point+REG_CAN_MOD) = 0X01;//配置模式寄存器,選擇雙濾波、正常模式 </p><p>  //WriteSJARegBlock(16,Send_CAN_Filter,8);</p><p>  *(SJA_CS_Point+REG_CAN_ACR0) = Send_CAN_Filter[0];

113、//配置驗收代碼/屏蔽寄存器</p><p>  *(SJA_CS_Point+REG_CAN_ACR1) = Send_CAN_Filter[1];</p><p>  *(SJA_CS_Point+REG_CAN_ACR2) = Send_CAN_Filter[2];</p><p>  *(SJA_CS_Point+REG_CAN_ACR3)

114、 = Send_CAN_Filter[3];</p><p>  *(SJA_CS_Point+REG_CAN_AMR0) = Send_CAN_Filter[4];</p><p>  *(SJA_CS_Point+REG_CAN_AMR1) = Send_CAN_Filter[5];</p><p>  *(SJA_CS_Point+REG_CAN_AMR

115、2) = Send_CAN_Filter[6];</p><p>  *(SJA_CS_Point+REG_CAN_AMR3) = Send_CAN_Filter[7];</p><p>  //WriteSJAReg(REG_CAN_BTR0,BTR0);</p><p>  *(SJA_CS_Point+REG_CAN_BTR0) = BTR0;

116、//配置總線定時器0等于0x00 </p><p>  //WriteSJAReg(REG_CAN_BTR1,BTR1);</p><p>  *(SJA_CS_Point+REG_CAN_BTR1) = BTR1;//配置總線定時器1等于0x14 </

117、p><p>  //WriteSJAReg(REG_CAN_OCR,0x1a);</p><p>  *(SJA_CS_Point+REG_CAN_OCR) = 0X1a;//配置輸出管腳 </p><p>  //SJAQuitResetMode();</p><p>

118、  *(SJA_CS_Point+REG_CAN_MOD) &= 0Xfe;</p><p><b>  }</b></p><p>  /*MCU外部中斷初始化*/</p><p>  void Init_Cpu()</p><p><b>  {</b></p><p

119、>  PX0 = 1; //外部中斷0高優(yōu)先級</p><p>  IT0 = 1;//下降沿觸發(fā)</p><p>  EX0 = 1;//允許外部中斷</p><p>  EA = 1;//允許總中斷</p><p><b>  }</b></p><p>  /*C

120、AN發(fā)送函數(shù)*/</p><p>  void Can_Sja_Send()</p><p><b>  {</b></p><p>  unsigned char sr,i ;</p><p>  EA = 0 ;//發(fā)送期間不接受新的請求</p><p

溫馨提示

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

評論

0/150

提交評論