版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
大連海事大學(xué)畢業(yè)論文基于NMEA2000的羅經(jīng)復(fù)示器設(shè)計(jì)基于NMEA2000的羅經(jīng)復(fù)示器設(shè)計(jì)1基于NMEA2000的羅經(jīng)復(fù)示器設(shè)計(jì)第1章緒論經(jīng)濟(jì)的迅速發(fā)展,科學(xué)技術(shù)的不斷進(jìn)步促使社會(huì)中各行各業(yè)都在不斷地發(fā)展壯大,特別是各種高、新、尖、精的技術(shù)應(yīng)用,而所有的一切都離不開控制系統(tǒng)[1]。如何能夠使控制系統(tǒng)趨向小型化、功能多樣化、支持GM10,成為了實(shí)際應(yīng)用中的重要課題。CAN通信就是在這樣的背景下應(yīng)運(yùn)而生。尤其是20世紀(jì)60年代末,隨著現(xiàn)代工業(yè)生產(chǎn)自動(dòng)化水平的日益提高及微電子技術(shù)的飛速發(fā)展,對工業(yè)控制器的要求也越來越高。CAN[Control(Controller)AreaNetwork]是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),最初由德國Bosch公司80年代用于汽車內(nèi)部測試和控制儀器之間的數(shù)據(jù)通信。目前CAN總線規(guī)范已被國際標(biāo)準(zhǔn)化組織ISO制訂為國際標(biāo)準(zhǔn)ISO11898,并得到了Motorola,Intel,Philips等大半導(dǎo)體器件生產(chǎn)廠家的支持,迅速推出各種集成有CAN協(xié)議的產(chǎn)品[2]。目前CAN總線主要用于汽車自動(dòng)化領(lǐng)域,如發(fā)動(dòng)機(jī)自動(dòng)點(diǎn)火、注油、復(fù)雜的加速剎車控制(ASC)、抗鎖定剎車系統(tǒng)(ABS)和抗滑系統(tǒng)等。BENZ、BMW等著名汽車上已經(jīng)采用CAN來滿足上述功能。在工業(yè)過程控制領(lǐng)域,CAN也得到了廣泛的應(yīng)用。NMEA2000是國家航海電子聯(lián)合會(huì)(NMEA)在J1939基礎(chǔ)上提出的航海應(yīng)用中控制單元間進(jìn)行數(shù)據(jù)交換的通訊協(xié)議[3]。帶NMEA2000選項(xiàng)的CANoe可以應(yīng)用在從設(shè)計(jì)到實(shí)現(xiàn)的整個(gè)開發(fā)過程中。在設(shè)計(jì)階段創(chuàng)建的模型可以在以其他形式不斷的重復(fù)利用。例如,可以利用模型校驗(yàn)實(shí)現(xiàn),隨后在最終測試階段作為功能測試。用戶不需要熟悉NMEA2000協(xié)議,只需集中注意力在創(chuàng)建仿真模型的實(shí)現(xiàn)或者數(shù)據(jù)分析。它可以顯著的提高開發(fā)進(jìn)程的質(zhì)量,提高數(shù)據(jù)分析的效率。由于海上的環(huán)境復(fù)雜,對儀器的要求較高,且船上的空間寶貴,因此雖然CAN通信已經(jīng)應(yīng)用于陸上的很多設(shè)備中,技術(shù)已經(jīng)較為成熟,但仍然未應(yīng)用于船舶通信中。現(xiàn)在船舶控制仍然采用DCS系統(tǒng)。因此,F(xiàn)CS系統(tǒng)能應(yīng)用于船舶控制已經(jīng)在業(yè)界達(dá)成了廣泛的共識。1.1課題研究的背景及意義此設(shè)計(jì)題目是針對船舶的羅經(jīng)的模擬通信進(jìn)行CAN協(xié)議的轉(zhuǎn)換,實(shí)現(xiàn)CAN通信。在設(shè)計(jì)伊始,為了更加明晰船舶羅經(jīng)的工作原理,我用了一周的時(shí)間專程去了錦州航星集團(tuán),在有關(guān)技術(shù)人員的指導(dǎo)下,對船用控制儀器儀表有了一個(gè)大致的了解,對船舶控制所涉及到的原理有了概念式的認(rèn)識,對船舶羅經(jīng)的工作原理有了比較深入的掌握,并把所設(shè)計(jì)的有關(guān)內(nèi)容做了整體的記錄,參觀過程中通過技術(shù)人員的指導(dǎo)和結(jié)合自身的實(shí)際情況,對本次設(shè)計(jì)按照如下步驟進(jìn)行:首先:依照AT89C51的特點(diǎn),添加看門狗元件X5045,構(gòu)成單片機(jī)最小系統(tǒng),實(shí)現(xiàn)上電復(fù)位控制、電源電壓監(jiān)控、看門狗定時(shí)器的功能。其次:進(jìn)行SJA1000控制器和82C250收發(fā)器的整體設(shè)計(jì),實(shí)現(xiàn)上位機(jī)與現(xiàn)場微處理器之間的數(shù)據(jù)通信。再次:選擇顯示電路的芯片元件。由于ZLG7290能夠承擔(dān)顯示部分的動(dòng)態(tài)顯示程序,減輕了單片機(jī)工作的負(fù)擔(dān),且使用簡單,電路可靠,因此本次設(shè)計(jì)使用ZLG7290構(gòu)成的矩陣鍵盤和四數(shù)碼管集成的7SEG-MPX4-CC元件構(gòu)成顯示電路。以上是理論知識的體現(xiàn)而更重要的是在設(shè)計(jì)中培養(yǎng)自己運(yùn)用所學(xué)的知識解決實(shí)際問題的能力和創(chuàng)新精神,增強(qiáng)工程觀,在設(shè)計(jì)過程中主要立足于應(yīng)用所學(xué)基本理論和專業(yè)知識,大膽地運(yùn)用新理論、新技術(shù)去分析解決實(shí)際問題,以便更好地適應(yīng)工作的需要。所有的設(shè)計(jì)查閱資料是必不可少的,而資料的獲取應(yīng)以實(shí)際為準(zhǔn),作為一名初次設(shè)計(jì)者,設(shè)計(jì)之前應(yīng)具備一定的設(shè)計(jì)能力,但是由于缺乏經(jīng)驗(yàn),知識體系的不夠完善等因素,在設(shè)計(jì)過程中也有缺陷。因此設(shè)計(jì)的電路無法直接應(yīng)用于實(shí)際電路中,應(yīng)稍加改動(dòng)。了解整個(gè)設(shè)計(jì)的目的、內(nèi)容和基本要求進(jìn)行設(shè)計(jì)的資料準(zhǔn)備。資料準(zhǔn)備主要通過查閱(包括上網(wǎng)查問)文獻(xiàn)資料和參加生產(chǎn)實(shí)習(xí)兩條渠道進(jìn)行。此設(shè)計(jì)充分吸收專業(yè)理論知識,考慮自己畢業(yè)設(shè)計(jì)的選題方向,有目的、有計(jì)劃地查閱與選題方向有關(guān)的文獻(xiàn)資料,特別是在參加生產(chǎn)實(shí)習(xí)的過程中有意識地搜集生產(chǎn)過程及新技術(shù)、新設(shè)備、改革新成果的應(yīng)用等方面資料,這也是為畢業(yè)設(shè)計(jì)課題收集資料的最重要的途徑。選定題目后,應(yīng)再有針對性地查閱一些資料,最后對所有收集的資料進(jìn)行整理。并對其進(jìn)行完善,對于一個(gè)完整的設(shè)計(jì)而言,文字與圖紙并存。文字的詳細(xì)敘述使內(nèi)容豐富,而圖紙則一目了然。最后由于設(shè)計(jì)者的水平有限,以及對電氣技術(shù)日新月異的發(fā)展掌握不夠,加之國外電氣技術(shù)和產(chǎn)品的大量引進(jìn),我國對電氣設(shè)計(jì)設(shè)備技術(shù)標(biāo)準(zhǔn)、規(guī)范還在不斷地改進(jìn)和完善,所以設(shè)計(jì)難免有不足,希望老師給予批評指正,使本設(shè)計(jì)更加完善。1.2本章小結(jié)本次設(shè)計(jì)不僅僅在于完成本人的畢業(yè)設(shè)計(jì),對于中國船舶控制行業(yè)未來的主流控制趨勢也有很好的前瞻性,為相關(guān)從業(yè)人員提供很好的范例。對此題目的設(shè)計(jì)除了注重實(shí)際應(yīng)用外,還應(yīng)考慮可靠性、經(jīng)濟(jì)性和控制的穩(wěn)定性。如線路保護(hù)、接地保護(hù)、變壓器保護(hù)等保護(hù)的有關(guān)問題及其設(shè)備元件的選擇。3第2章總體方案CAN[Control(Controller)AreaNetwork]是控制(器)局域網(wǎng)的簡稱[4]。CAN是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò),最初由德國Bosch公司80年代用于汽車內(nèi)部測試和控制儀器之間的數(shù)據(jù)通信。目前CAN總線規(guī)范已被國際標(biāo)準(zhǔn)化組織ISO制訂為國際標(biāo)準(zhǔn)ISO11898,并得到了Motorola,Intel,Philips等大半導(dǎo)體器件生產(chǎn)廠家的支持,迅速推出各種集成有CAN協(xié)議的產(chǎn)品。目前CAN總線主要用于汽車自動(dòng)化領(lǐng)域,如發(fā)動(dòng)機(jī)自動(dòng)點(diǎn)火、注油、復(fù)雜的加速剎車控制(ASC)、抗鎖定剎車系統(tǒng)(ABS)和抗滑系統(tǒng)等。BENZ、BMW等著名汽車上已經(jīng)采用CAN來滿足上述功能。在工業(yè)過程控制領(lǐng)域,CAN也得到了廣泛的應(yīng)用。2.1CAN協(xié)議解析CAN協(xié)議可分為:目標(biāo)層、傳送層、物理層。其中目標(biāo)層和傳送層包括了ISO/OSI定義的數(shù)據(jù)鏈路的所有功能[5]。目標(biāo)層的功能包括:確認(rèn)要發(fā)送的信息;位應(yīng)用層提供接口。傳送層功能包括:數(shù)據(jù)幀組織:總線仲裁:檢錯(cuò)、錯(cuò)誤報(bào)告、錯(cuò)誤處理。CAN總線以報(bào)文為單位進(jìn)行信息交換,報(bào)文中含有標(biāo)示符(ID),它既描述了數(shù)據(jù)的含義又表明了報(bào)文的優(yōu)先權(quán)。CAN總線上的各個(gè)協(xié)點(diǎn)都可主動(dòng)發(fā)送數(shù)據(jù)。當(dāng)同時(shí)有兩個(gè)或兩個(gè)以上的節(jié)點(diǎn)發(fā)送報(bào)文時(shí),CAN控制器采用ID進(jìn)行仲裁。ID控制節(jié)點(diǎn)對總線的訪問。發(fā)送具有最高優(yōu)先權(quán)報(bào)文的節(jié)點(diǎn)獲得總線的使用權(quán),其他節(jié)點(diǎn)自動(dòng)停止發(fā)送,總線空閑后,這些節(jié)點(diǎn)將自動(dòng)重發(fā)報(bào)文。2.2CAN主要技術(shù)特點(diǎn)CAN網(wǎng)絡(luò)上的節(jié)點(diǎn)不分主從,任一節(jié)點(diǎn)均可在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上其他節(jié)點(diǎn)發(fā)送信息,通信方式靈活,利用這一特點(diǎn)可方便地構(gòu)成多機(jī)備份系統(tǒng)[6]。CAN只需通過報(bào)文濾波即可實(shí)現(xiàn)點(diǎn)對點(diǎn)、一點(diǎn)對多點(diǎn)及全局廣播等幾種方式傳送接收數(shù)據(jù),無需專門的"調(diào)度"。CAN的直接通信距離最遠(yuǎn)可達(dá)10km(速率5kbps以下);通信速率最高可達(dá)21Mbps(此時(shí)通信距離最長為40m)。CAN上的節(jié)點(diǎn)數(shù)主要決定于總線驅(qū)動(dòng)電路,目前可達(dá)110個(gè);報(bào)文標(biāo)識符可達(dá)2032種(CAN2.0A),而擴(kuò)展標(biāo)準(zhǔn)(CAN2.0B)的報(bào)文標(biāo)識符幾乎不受限制。2.3總體設(shè)計(jì)CAN總線接口電路主要包括:單片機(jī)最小系統(tǒng)、控制器接口、總線收發(fā)器、看門狗電路和顯示電路等。采用Philips公司生產(chǎn)的SJA1000控制器和與其配套的82C250CAN收發(fā)器。按照CAN總線物理層協(xié)議選擇總線介質(zhì),設(shè)計(jì)布線方案,連接成CAN網(wǎng)絡(luò)。雙絞屏蔽線可設(shè)兩套,在兩套介質(zhì)上同時(shí)進(jìn)行信息傳輸,接收方只用一個(gè)介質(zhì)。在冗余和非冗余段的連接臨界點(diǎn)處進(jìn)行總線切換。硬件電路的設(shè)計(jì)主要是CAN通信控制器與微處理器之間和CAN總線收發(fā)器與物理總線之間的接口電路的設(shè)計(jì)。CAN通信控制器是CAN總線接口電路的核心,主要完成CAN的通信協(xié)議,而CAN總線收發(fā)器的主要功能是增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護(hù)總線,降低射頻干擾(RFI),實(shí)現(xiàn)熱防護(hù)等??撮T狗電路主要是實(shí)現(xiàn)對電路的監(jiān)控和復(fù)位作用。目前廣泛流行的CAN總線器件有兩大類:一類是獨(dú)立的CAN控制器,如82C200、SJA1000及Intel82526/82527等,另一類是帶有在片CAN的微控制器,如P8XC582及16位微控制器87C196CA/CB等。本課題選取PHILIPS公司的SJA1000CAN控制器以及82C250總線收發(fā)器,主要是考慮到SJA1000支持CAN2.0A/B規(guī)約。而82C250可以支持110個(gè)CAN節(jié)點(diǎn),并且國內(nèi)市場上PHILIPS的產(chǎn)品型號比較多,購買比較方便。在本次設(shè)計(jì)中,總體設(shè)計(jì)如下圖:圖2.1總體設(shè)計(jì)圖2.4本章小結(jié)本章對CAN總線進(jìn)行了簡單的介紹,同時(shí)拋出了本次設(shè)計(jì)的總體思想,對以后的設(shè)計(jì)具有指導(dǎo)意義。6第3章單片機(jī)最小系統(tǒng)部分3.1最小系統(tǒng)介紹單片機(jī)最小系統(tǒng)就是能使單片機(jī)工作的最少的器件構(gòu)成的系統(tǒng)。最小系統(tǒng)雖然簡單,但是卻是大多數(shù)控制系統(tǒng)所必不可少的關(guān)鍵部分。對于MCS-51單片機(jī),其內(nèi)部已經(jīng)包含了一定數(shù)量的程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器,在外部只要增加時(shí)鐘電路和復(fù)位電路即可構(gòu)成單片機(jī)最小系統(tǒng)。下面對51單片機(jī)最小系統(tǒng)需要的時(shí)鐘電路和復(fù)位電路做一下詳細(xì)的說明。時(shí)鐘電路單片機(jī)系統(tǒng)中的各個(gè)部分是在一個(gè)統(tǒng)一的時(shí)鐘脈沖控制下有序地進(jìn)行工作,時(shí)鐘電路是單片機(jī)系統(tǒng)最基本、最重要的電路。MCS-51單片機(jī)內(nèi)部有一個(gè)高增益反相放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端,如果引腳XTAL1和XTAL2兩端跨接上晶體振蕩器(晶振)或陶瓷振蕩器就構(gòu)成了穩(wěn)定的自激振蕩電路,該振蕩電路的輸出可直接送入內(nèi)部時(shí)序電路。MCS-51單片機(jī)的時(shí)鐘可由兩種方式產(chǎn)生,即內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。實(shí)際應(yīng)用中,并不是對51單片機(jī)外接晶振、電容和電阻等元件,而是使用集成元件與MCU進(jìn)行連接,既節(jié)約空間又增加了電路的可靠性。本次設(shè)計(jì)中,使用可靠性高、使用范圍廣、易于在公開市場上采購到的X5045集成元件。3.2X5045元件介紹X5045P把四種常用的功能:上電復(fù)位、看門狗定時(shí)器、電源電壓監(jiān)控和塊鎖(BlockLockTM)保護(hù)的串行EEPROM存儲(chǔ)器組成在一個(gè)封裝之內(nèi)。這種組合降低了系統(tǒng)成本、減少了電路板空間和增加了可靠性。其引腳及其功能如下:CS/WDI:片選輸入/看門狗復(fù)位輸入;SO:串行輸出;WP:寫保護(hù)輸入;Vss:地;Vcc:電源;RESET:復(fù)位輸出;SCK:同步時(shí)鐘輸入;SI:串行輸入。X5045P芯片功能包括以下4種:(1)上電復(fù)位控制。在對X5045P通電時(shí),ERSET引腳輸出有效的復(fù)位信號,并保持至少200ms,使CPU有效復(fù)位。(2)電源電壓監(jiān)控。當(dāng)檢測到電源電壓低于內(nèi)部門檻電壓VTRIP時(shí),RESET輸出復(fù)位信號,直至電源電壓高于VTRIP并保持至少200ms,復(fù)位信號才被撤消。VTRIP的出廠值根據(jù)芯片型號不同共有5個(gè)級別的電壓范圍。對于需要電源電壓精確監(jiān)控的應(yīng)用,用戶可以搭建編程電路,對芯片內(nèi)VTRIP電壓進(jìn)行微調(diào)。(3)看門狗定時(shí)器。芯片內(nèi)部狀態(tài)寄存器的WD1、WD0是看門狗定時(shí)設(shè)置位,通過狀態(tài)寄存器寫指令WRSR修改這2個(gè)標(biāo)志位,就能在3種定時(shí)間隔中進(jìn)行選擇或關(guān)閉定時(shí)器。對看門狗的復(fù)位由CS輸入電平的下降沿完成。(4)串行E2PROM。芯片內(nèi)含512字節(jié)存儲(chǔ)單元,10萬次可靠寫,數(shù)據(jù)保持時(shí)間100年。XICOR設(shè)計(jì)了3種保護(hù)方式防止誤寫。包括:WP寫保護(hù)引腳,當(dāng)引腳被拉低時(shí),內(nèi)部存儲(chǔ)單元狀態(tài)寄存器都禁止寫入;存儲(chǔ)區(qū)域?qū)懕Wo(hù)模式,通過對狀態(tài)寄存器的BL1、BL0位的設(shè)置,可以選擇對不同的存儲(chǔ)區(qū)域進(jìn)行寫保護(hù);在進(jìn)行任何寫操作前都必須打開寫使能開關(guān),而且在上電初始化寫操作完成時(shí),寫使能開關(guān)自動(dòng)關(guān)閉。顯然,在幾方面的保護(hù)之下,產(chǎn)生誤寫的可能性極小。對X5045P的操作是通過4根口線CS、SCK、SI和SO進(jìn)行同步串行通信來完成的。SCK是外部輸入的同步時(shí)鐘信號。在對芯片定改指令或數(shù)據(jù)時(shí),時(shí)鐘前沿將SI引腳信號輸入;在讀郵數(shù)據(jù)時(shí),時(shí)鐘后沿將數(shù)據(jù)位輸出到SO引腳上。數(shù)據(jù)的輸入/輸出都是高位在先。3.3電路設(shè)計(jì)X5045P在本設(shè)計(jì)中做為復(fù)位、監(jiān)控電路使用,簡化了電路的連接,同時(shí)增加了電路的可靠性,是系統(tǒng)中不可缺少的部分。對X5045的操作是通過4根口線CS、SCK、SI和SO進(jìn)行同步串行通信來完成的。SCK是外部輸入的同步時(shí)鐘信號。在對芯片定改指令或數(shù)據(jù)時(shí),時(shí)鐘前沿將SI引腳信號輸入;在讀數(shù)據(jù)時(shí),時(shí)鐘后沿將數(shù)據(jù)位輸出到SO引腳上。數(shù)據(jù)的輸入/輸出都是高位在先。在設(shè)計(jì)中,/CS腳和單片機(jī)P2.7、SI、SCK、SO、/WP、RST分別與單片機(jī)的引腳P1.3、P1.0、P1.4、P1.1和RST連接。對于不用到的引腳,可以直接和地相連。電路設(shè)計(jì)如下:圖3.1單片機(jī)最小系統(tǒng)電路103.4本章小結(jié)本章介紹了單片機(jī)最小系統(tǒng),用于監(jiān)測系統(tǒng)是否工作于正常狀態(tài),及時(shí)對運(yùn)行出錯(cuò)的狀態(tài)進(jìn)行復(fù)位,保證系統(tǒng)平穩(wěn)有序地工作。11第4章顯示部分4.1ZLG7290ZLG7290是一種I2C接口鍵盤及LED驅(qū)動(dòng)管理器件,提供數(shù)據(jù)譯碼和循環(huán)、移位、段尋址等控制。它可采樣64個(gè)按鍵或傳感器,單片即可完成LED顯示、鍵盤接口的全部功能。ZLG7290的從地址為70H,器件內(nèi)部通過I2C總線訪問的寄存器地址范圍為00H~17H,每個(gè)寄存器都可按字節(jié)直接讀寫,并支持自動(dòng)增址功能和地址翻轉(zhuǎn)功能其特點(diǎn)如下:1、I2C串行接口提供鍵盤中斷信號方便與處理器接口2、可驅(qū)動(dòng)8位共陰數(shù)碼管或64只獨(dú)立LED和64個(gè)按鍵3、可控掃描位數(shù)可控任一個(gè)數(shù)碼管閃爍4、提供數(shù)據(jù)譯碼和循環(huán)移位段尋址等控制5、每個(gè)功能鍵可檢測任一鍵的連擊次數(shù)6、無需外接元件即直接驅(qū)LED可擴(kuò)展驅(qū)動(dòng)電流和驅(qū)動(dòng)電壓7、提供工業(yè)級器件多種封裝形式PDIP24SO244.2顯示電路ZLG7290提供兩種控制方式。寄存器映象控制和命令解釋控制。寄存器映象控制是指直接訪問底層寄存器,除通信緩沖區(qū)外的寄存器實(shí)現(xiàn)基本控制功能,請參考寄存器詳解部分命令解釋控制是指通過解釋命令緩沖區(qū)CmdBuf0CmdBuf1中的指令間接訪問底層寄存器實(shí)現(xiàn)擴(kuò)展控制功能如實(shí)現(xiàn)寄存器的位操作對顯示緩存循環(huán)移位對操作數(shù)譯碼等操作。ZLG7290集成了LED顯示驅(qū)動(dòng)和矩陣鍵盤的按鍵功能,可以同時(shí)驅(qū)動(dòng)8個(gè)LED和64個(gè)矩陣按鍵,采用總線方式連接鍵盤和4LED封裝器件,ZLG7290的SDA、SCL、/INT和/RES分別接單片機(jī)的P1.7、P1.6、P3.3和P1.5。電路設(shè)計(jì)如下:圖4.1ZLG7290顯示電路圖4.2四位一體數(shù)碼管電路部分4.3本章小結(jié)本章對顯示部分的電路進(jìn)行了設(shè)計(jì),使用了ZLG7290對四位一體數(shù)碼管進(jìn)行顯示控制,減輕了單片機(jī)的負(fù)擔(dān)。第5章控制電路部分5.1SJA1000SJA1000是一種獨(dú)立控制器,用于移動(dòng)目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制(CAN)。它是PHILIPS半導(dǎo)體PCA82C200CAN控制器(BasicCAN)的替代產(chǎn)品。而且,它增加了一種新的工作模式(PeliCAN)。特點(diǎn).和PCA82C200獨(dú)立CAN控制器引腳兼容.和PCA82C200獨(dú)立CAN控制器電氣兼容.PCA82C200模式(即默認(rèn)的BasicCAN模式).擴(kuò)展的接收緩沖器(64字節(jié)、先進(jìn)先出FIFO).和CAN2.0B協(xié)議兼容(PCA82C200模式中的無源擴(kuò)展幀).同時(shí)支持11位和29位識別碼.位速率可達(dá)1Mbits/s.PeliCAN模式擴(kuò)展功能:.可讀/寫訪問的錯(cuò)誤計(jì)數(shù)器.可編程的錯(cuò)誤報(bào)警限制.最近一次錯(cuò)誤代碼寄存器.對每一個(gè)CAN總線錯(cuò)誤的中斷.具體控制位控制的仲裁丟失中斷.單次發(fā)送(無重發(fā)).只聽模式(無確認(rèn)、無活動(dòng)的出錯(cuò)標(biāo)志).支持熱插拔(軟件位速率檢測).驗(yàn)收濾波器擴(kuò)展(4字節(jié)代碼,4字節(jié)屏蔽).自身信息接收(自接收請求).24MHz時(shí)鐘頻率.對不同微處理器的接口.可編程的CAN輸出驅(qū)動(dòng)器配置5.2控制電路設(shè)計(jì)SJA1000是PHILIP公司生產(chǎn)的獨(dú)立CAN控制器,是用于實(shí)現(xiàn)CAN信號對數(shù)字信號轉(zhuǎn)換、CAN信號的收發(fā)、CAN信號的接收、校驗(yàn)和重發(fā)等功能的控制器件。同時(shí)還提供了通訊接口用于和微機(jī)芯片進(jìn)行通信,通過串行通信實(shí)現(xiàn)CAN信號的微機(jī)處理程序[8]。SJA1000的調(diào)用是通過微機(jī)訪問其內(nèi)部寄存器,操作寄存器標(biāo)志位實(shí)現(xiàn)的。SJA1000的AD0~AD7、ALE、/CS、/RD、/WR、MODE、/INT、/RST分別接單片機(jī)的PO口、/ALE、P2.6、P3.7、P3.6、P2.5、P3.2和P1.2。SJA1000與微機(jī)的電路圖如下所示:圖5.1四位一體數(shù)碼管電路部分5.3本章小結(jié)本章介紹CAN控制電路,這部分是CAN通信的核心部分,是本次設(shè)計(jì)的重點(diǎn)所在,對本次設(shè)計(jì)的成敗與否起到關(guān)鍵作用。第6章收發(fā)部分6.182C25082C250是CAN協(xié)議控制器和物理總線的接口,這個(gè)器件對總線提供不同的發(fā)送能力和對CAN控制器提供不同的接收能力。它主要用于汽車?yán)锏母咚賾?yīng)用(高達(dá)1Mbaud)。這個(gè)器件對總線提供不同的發(fā)送能力和對CAN控制器提供不同的接收能力,完全和ISO11898標(biāo)準(zhǔn)兼容。限定的電流值保護(hù)接收器輸出級,避免陽極和陰極的短路,盡管在默認(rèn)的條件下功率消耗是增加的,這個(gè)特征值將防止發(fā)送器輸出級的毀壞。如果節(jié)點(diǎn)溫度超過大約160攝氏度,發(fā)送器限定的電流值輸出被降低。因?yàn)榘l(fā)送器占去大部分的功率消耗,這將導(dǎo)致降額功耗和較低的片內(nèi)溫度。IC中的其它部分在使用中將保持不變,當(dāng)總線短路的時(shí)候,熱保護(hù)非常需要這個(gè)。CANH和CANL線也被保護(hù),防止在自動(dòng)運(yùn)作過程中電流的瞬變。三種操作模式高速模式在這個(gè)模式中,適合執(zhí)行最大的位速率和最大的總線長度高速模式,通常用于普通的工業(yè)應(yīng)用。譬如基于CAN的系統(tǒng)DeviceNetTM這種模式的總線輸出信號。用盡可能快的速度切換,因此,一般使用屏蔽的總線電纜來防止可能的擾動(dòng)。例如汽車無線電裝置對總線信號的擾動(dòng)。高速模式通過VRs<0.3<Vcc來選擇將Rs控制輸入直接連接到微控制器的輸出口或者地電平或者一個(gè)高電平有效的復(fù)位信號。高速模式中收發(fā)器有效的循環(huán)延遲時(shí)間可以低至最大145ns。當(dāng)Tamb>85時(shí)是155ns。斜率控制模式在一些應(yīng)用中,由于考慮到系統(tǒng)的成本等問題,而使用非屏蔽的總線電纜。然而使用非屏蔽電纜意味著收發(fā)器要滿足額外的要求,譬如電磁兼容性EMC問題。如果使用非屏蔽總線電纜PCA82C250/251的總線,信號轉(zhuǎn)換速度應(yīng)被特意降低。轉(zhuǎn)換速度可以通過連接在控制引腳Rs上的串連阻抗值Rext來調(diào)整。根據(jù)CAN的位定時(shí)要求轉(zhuǎn)換速度下降,將增加總線節(jié)點(diǎn)的循環(huán)延遲。因此在給定的位速率下,總線長度減少或者說在給定的總線長度下位速率降低,斜率控制模式中總線輸出的轉(zhuǎn)換速度大致和流出引腳Rs的電流成比例。如果斜率控制電阻Rext連接到地則VOL.max的值是0V。準(zhǔn)備模式這個(gè)模式是在需要將功率消耗,譬如是暫時(shí)性的減到最低時(shí)使用。當(dāng)VRs>0.75Vcc時(shí)進(jìn)入準(zhǔn)備模式。系統(tǒng)的功耗在準(zhǔn)備模式可被徹底減低。這個(gè)模式基本上用于電池供電的應(yīng)用。例如汽車停車的時(shí)候要進(jìn)入準(zhǔn)備模式,收發(fā)器的控制輸入Rs上要加一個(gè)邏輯高電平,這可以通過直接將一個(gè)輸出端口引腳連接到Rs或通過任何合適的斜率控制電阻Rext來實(shí)現(xiàn)。準(zhǔn)備模式中發(fā)送器的功能和接收器的輸入偏置網(wǎng)絡(luò)都關(guān)斷以減少功率消耗。參考電壓輸出和基本的接收器功能仍然活動(dòng),但以非常低的功耗工作。如果在總線上傳輸一個(gè)報(bào)文,系統(tǒng)可被重新激活,在檢測到3μs長的顯性總線電平后,收發(fā)器將通過RxD向協(xié)議控制器輸出一個(gè)喚醒中斷信號,在檢測到RxD的下降沿后控制器把Rs引腳置為邏輯低電平。這樣收發(fā)器就可以切換到普通傳輸模式。由于在準(zhǔn)備模式中工作速度緩慢,收發(fā)器要回到普通接收速度,則需要取決于邏輯的延遲時(shí)間Rs的下降沿。在總線速度很高的情況下,收發(fā)器在準(zhǔn)備模式,例如因?yàn)镽s引腳仍然為高,不可能正確地接收報(bào)文。另外一個(gè)應(yīng)用是將Rs輸入連接到一個(gè)高電平有效的復(fù)位信號。6.2收發(fā)電路設(shè)計(jì)在CAN接口電路的設(shè)計(jì)中,控制器SJA1000和收發(fā)器82C250是設(shè)計(jì)的關(guān)鍵部分。其中SJA1000負(fù)責(zé)對信號的發(fā)送、接收控制和校驗(yàn)重發(fā)等功能;82C250則負(fù)責(zé)連接CAN控制器和CAN通信的物理連接,同時(shí)負(fù)責(zé)對CAN信號地址分析,做出是否接收的判斷,是發(fā)送CAN信號的中轉(zhuǎn)站,也具有一定的判斷能力,收發(fā)電路由兩部分組成:光隔和收發(fā)部分。圖6.1光隔電路圖6.2收發(fā)電路6.3本章小結(jié)對CAN收發(fā)電路進(jìn)行了說明和設(shè)計(jì),實(shí)現(xiàn)CAN控制電路和外界物理CAN線路的連接。第7章詳細(xì)設(shè)計(jì)7.1各部分原理CAN總線接口電路主要包括:單片機(jī)、控制器接口、總線收發(fā)器和看門狗電路等。采用Philips公司生產(chǎn)的SJA1000控制器和與其配套的82C250CAN收發(fā)器。按照CAN總線物理層協(xié)議選擇總線介質(zhì),設(shè)計(jì)布線方案,連接成CAN網(wǎng)絡(luò)。雙絞屏蔽線可設(shè)兩套,在兩套介質(zhì)上同時(shí)進(jìn)行信息傳輸,接收方只用一個(gè)介質(zhì)。在冗余和非冗余段的連接臨界點(diǎn)處進(jìn)行總線切換。硬件電路的設(shè)計(jì)主要是CAN通信控制器與微處理器之間和CAN總線收發(fā)器與物理總線之間的接口電路的設(shè)計(jì)。CAN通信控制器是CAN總線接口電路的核心,主要完成CAN的通信協(xié)議,而CAN總線收發(fā)器的主要功能是增大通信距離,提高系統(tǒng)的瞬間抗干擾能力,保護(hù)總線,降低射頻干擾(RFI),實(shí)現(xiàn)熱防護(hù)等??撮T狗電路主要是實(shí)現(xiàn)對電路的監(jiān)控和復(fù)位作用。在本電路原理中,控制單元以單片機(jī)AT89C51為核心,選用器件SJA1000作為CAN控制器,并選用芯片82C250和6N137、X5045P作為CAN控制器接口和光耦合隔離、復(fù)位電路。在實(shí)際中,應(yīng)注意以下幾個(gè)問題1.SJA1000的中斷請求信號INT在中斷允許且有中斷發(fā)生時(shí),由高電來此跳變到低電平,所以INT和AT0C51的INT0直接相連。片選信號CS和單片機(jī)引腳P2.7相連,當(dāng)CS接到低電平時(shí),SJA1000被選中,CPU可對SJA1000進(jìn)行讀/寫操作。為了增強(qiáng)CAN總線節(jié)點(diǎn)的抗干擾能力。SJA1000的TX1腳懸空,RX1引腳的電位必須維持在約0.5VCC上,否則,將不能形成CAN協(xié)議要求的電平邏輯。2.SJA1000的TxD和RxD并不是直接與82C250的TxD和RxD相連而是通過高速光耦合6N137后與82C250相連,這樣就可以很好的實(shí)現(xiàn)了總線上個(gè)CAN節(jié)點(diǎn)的電氣隔離,不過應(yīng)該特別說明一點(diǎn)的是光耦部分電路所采用的兩個(gè)電源Vcc和Vdd必須完的時(shí)鐘信號接至AT89C51的時(shí)鐘電路輸入端,作為AT89C51的外部時(shí)鐘輸入,解決了時(shí)鐘同步問題。4.82C250是CAN總線收發(fā)器,是CAN控制器SJA1000正常工作與CAN總線的接口器件,是對CAN總線以差分方式發(fā)送,TXD和RXD引腳分別發(fā)送經(jīng)過驅(qū)動(dòng)后的發(fā)送和接收信號。其引腳RS用于選擇82C250的工作模式(高速、斜率或等待)。RS腳接地,82C250工作于高速方式,RS腳串接一個(gè)電阻R后再接地,若82C250處于CAN總線的網(wǎng)絡(luò)終端,總線接口部分必須加一個(gè)120Ω的匹配電阻,以保護(hù)82C250免受過激的沖擊忽略掉它們,會(huì)使數(shù)據(jù)通信的抗干擾性及可靠性大大降低。本設(shè)計(jì)中,82C250的CANH和CANL引腳與地之間并聯(lián)了兩個(gè)30pf的小電容可以起到濾除總線上的高頻干擾和一定的防電磁輻射的能力。5.另外在兩根CAN總線接入端與地之間分別反接了一個(gè)保護(hù)二極管。當(dāng)CAN總線有較高的負(fù)電壓時(shí),通過二極管的短路可起到一定的過壓保護(hù)作用,82C250的Rs腳上接一個(gè)斜率電阻。電阻大小可以根據(jù)總線通信速度適當(dāng)調(diào)整一般在16—140KΩ之間。6.另外,在本系統(tǒng)中應(yīng)用到的芯片X5045P具有電源監(jiān)控、看門狗等功能,還同時(shí)輸出高低電平的復(fù)位信號,分別輸出到AT89C51和SJA1000的復(fù)位端,以滿足本次設(shè)計(jì)的要求。原理圖和PCB圖參見附錄2。7.2本章小結(jié)詳細(xì)介紹了硬件設(shè)計(jì)的原理,同時(shí)附上制作好的PCB圖,以便制作出實(shí)際的產(chǎn)品用于實(shí)際應(yīng)用中。第8章CAN實(shí)現(xiàn)程序以下是對本次設(shè)計(jì)功能實(shí)現(xiàn)的軟件編程,在KEIL的軟環(huán)境下實(shí)現(xiàn)。需要在頭文件目錄中加入ZLG7290和IIC總線的C程序和頭文件。本次設(shè)計(jì)的目的旨在實(shí)現(xiàn)船舶羅經(jīng)信號的CAN信號轉(zhuǎn)換和通信,顯示部分用ZLG7290進(jìn)行動(dòng)態(tài)數(shù)碼管顯示,其循環(huán)程序在ZLG7290內(nèi)部循環(huán)運(yùn)行,減輕單片機(jī)的負(fù)擔(dān),同時(shí)動(dòng)態(tài)顯示有利于節(jié)約電源,對于船舶供電量有限的場所十分重要。對本次設(shè)計(jì)的電路和程序稍加改動(dòng)就可以應(yīng)用到實(shí)際工控中,完成更加復(fù)雜的功能。程序如下:8.1顯示部分檢測#include<reg51.h>#include<zlg7290.h>#include<viic_c51.h>#defineucharunsignedcharvoidmain(void){RES=0;delayMS(1000);RES=1;delayMS(1000);ZLG7290_SendCmd(0x60,0x01);ZLG7290_SendCmd(0x61,0x02);ZLG7290_SendCmd(0x62,0x03);ZLG7290_SendCmd(0x63,0x04);RES=1;}經(jīng)過檢測,系統(tǒng)的顯示部分能夠正常工作,說明系統(tǒng)能夠正常顯示。8.2通訊自檢測//PeliCan編程#include<reg51.h>#include<absacc.h>#include<SJA1000.h>#include<namesbit.h>#include<zlg7290.h>#defineucharunsignedcharucharAD[8];//全局接收數(shù)組//**********89S51初始化*************//voidInit_MCU(void){P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;}//**********SJA1000初始化***********//voidInit_SJA1000(void){A14=0;//片選SJA1000WR=0;//寫使能SJA1000A12=0;//82C250工作于斜率模式RST=0;//SJA1000復(fù)位模式CMR=0x1E;//自收發(fā),清除數(shù)據(jù)溢出,釋放接受緩存器,撤銷發(fā)送請求,發(fā)送當(dāng)前信息IER=0x03;//發(fā)送和接受均采用中斷方式//發(fā)送信息格式設(shè)置//////////////////////////////////////////TBSR0=0x08;//標(biāo)準(zhǔn)幀、數(shù)據(jù)發(fā)送、數(shù)據(jù)長度:8TBSR1=0xFF;//識別碼1TBSR2=0xFF;//識別碼2//////////////////////////////////////////BTR0=0xC1;//總線定時(shí)寄存器0:同步跳轉(zhuǎn)寬度為4tscl,波特率設(shè)定BTR1=0xA5;//總線定時(shí)寄存器1:三倍總線采樣,波特率設(shè)定OCR=0x1A;//輸出管腳TX0=TXD輸入信號,TX1輸出高阻CDR=0xC8;//PeliCAN模式、無接收比較,只有RX0被激活,CLKOUT引腳被禁用//delayMS(1000);RST=1;//SJA1000工作模式//delayMS(1000);MODR=0x04;//自檢測,節(jié)點(diǎn)沒有活動(dòng)時(shí)使用自收發(fā)命令CMR=0x10;//自收發(fā)MODE=1;//INTEL模式//delayMS(1000);//驗(yàn)收代碼寄存器ACR0=0xFF;ACR1=0xFF;ACR2=0xFF;ACR3=0xFF;//驗(yàn)收屏蔽寄存器AMR0=0xFF;AMR1=0xFF;AMR2=0xFF;AMR3=0xFF;}//////////////////////////////////////////**********中斷處理程序***********///voidinter0_can_xd(void)interrupt0{ucharstate;EA=0;IE0=0;//由于是中斷INT0是電平觸發(fā)方式,所以需要軟件將INT0的中斷請求標(biāo)志IE0清零if(IR&0x01)//檢測,RXD程序{RD=0;//讀使能SJA1000AD[0]=RBSR3;AD[1]=RBSR4;AD[2]=RBSR5;AD[3]=RBSR6;AD[4]=RBSR7;AD[5]=RBSR8;AD[6]=RBSR9;AD[7]=RBSR10;CMR=0x14;//釋放接收緩沖器,置位自接收請求state=ALC;//釋放仲裁隨時(shí)捕捉寄存器(讀該寄存器即可)state=ECC;//釋放錯(cuò)誤代碼捕捉寄存器(讀該寄存器即可)RD=1;//關(guān)閉SJA1000的讀使能}EA=1;}charcodedx516[3]_at_0x003b;//學(xué)林仿真器運(yùn)行C程序時(shí)獨(dú)有標(biāo)志voidmain(void){Init_MCU();Init_SJA1000();RES=0;//復(fù)位ZLG7290IP=0x01;//發(fā)送/接收中斷0優(yōu)于顯示中斷1EX0=1;//外部中斷0允許IT0=1;//外部中斷0下降沿方式EA=1;//中斷總控允許//delayMS(1000);//編制發(fā)送數(shù)據(jù)TBSR5=0x00;TBSR6=0x01;TBSR7=0x02;TBSR8=0x03;TBSR9=0x04;TBSR10=0x05;TBSR11=0x06;TBSR12=0x07;WR=1;//關(guān)閉SJA1000的寫使能,防止誤寫//delayMS(1000);CMR=0x11;//置位發(fā)送請求,自收發(fā)模式//擴(kuò)展幀格式發(fā)送、標(biāo)準(zhǔn)幀格式接收RES=1;//置位ZLG7290ZLG7290_SendCmd(0x60,AD[0]);ZLG7290_SendCmd(0x61,AD[1]);ZLG7290_SendCmd(0x62,AD[2]);ZLG7290_SendCmd(0x63,AD[3]);RES=0;//復(fù)位ZLG7290,清顯示}經(jīng)過檢測,系統(tǒng)可以實(shí)現(xiàn)自收發(fā)功能,說明系統(tǒng)能夠正常收發(fā),可以進(jìn)行通訊。系統(tǒng)的單向通訊程序和雙向通訊程序參見附錄3。8.3本章小結(jié)本章給出了CAN通訊的檢測和通訊程序,為實(shí)現(xiàn)了CAN通訊提供了程序支持??偨Y(jié)船舶羅經(jīng)復(fù)示器是船舶中的重要組成部分,對航向有重要的指導(dǎo)作用,從而確保船舶能夠安全經(jīng)濟(jì)地航行。本設(shè)計(jì)對船舶羅經(jīng)信號的傳輸方式進(jìn)行了研究,提出了一種高效、抗干擾、傳輸線路復(fù)用率高的通信方式。并通過硬件和軟件的設(shè)計(jì)實(shí)現(xiàn)了這一通信方式。由于CAN通信方式具有可以減少線束的數(shù)量,進(jìn)行大量數(shù)據(jù)的高速通信,有效支持分布式控制或?qū)崟r(shí)的串行通信網(wǎng)絡(luò),網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時(shí)性強(qiáng),出錯(cuò)率低等優(yōu)點(diǎn),本次設(shè)計(jì)中所使用的通信方式就采用CAN通信方式。本次設(shè)計(jì)采用單片機(jī)為中央處理器,飛利浦獨(dú)立CAN控制器SJA1000作為CAN信號控制器,82C250作為CAN信號的收發(fā)器,同時(shí)與CAN物理網(wǎng)絡(luò)進(jìn)行連接。設(shè)計(jì)流程分為兩大部分:硬件設(shè)計(jì)和軟件編程根據(jù)挑選的器件,設(shè)計(jì)出能實(shí)現(xiàn)CAN通信方式的原理圖,然后生成PCB板,經(jīng)過合理性分析和錯(cuò)誤檢測后,制作電路板,焊接器件。經(jīng)過檢測,硬件部分各部分工作都正常。至此,硬件設(shè)計(jì)結(jié)束。根據(jù)硬件的連接方式編寫程序,開始編寫的是各部分的測試程序,用以檢測硬件電路是否能正常工作。檢測工作結(jié)束后,就開始進(jìn)行通信程序的編寫,經(jīng)過測試,能夠?qū)崿F(xiàn)自收發(fā)功能,即說明通信部分能夠?qū)崿F(xiàn)自通信和雙向通信。船舶羅經(jīng)是船舶的重要航海儀器,對船舶航行具有重要的指導(dǎo)意義。因此如何克服船舶航行過程中惡劣環(huán)境的干擾,實(shí)現(xiàn)快速準(zhǔn)確地進(jìn)行傳輸成為當(dāng)今世界船舶領(lǐng)域的重要課題之一。CAN通信能夠克服這些干擾,而且可以減少線束的數(shù)量,進(jìn)行大量數(shù)據(jù)的高速通信,有效支持實(shí)時(shí)通信網(wǎng)絡(luò),因此CAN通信必然會(huì)取代現(xiàn)有的船舶通信方式,成為船舶通信的主流方式。參考文獻(xiàn)[1]百度文庫./view/1757ead0b14e852458fb578f.html[2]黨杰、劉錦泉.基于CAN總線的通信設(shè)計(jì)與應(yīng)用.控制工程,2005年1期[3]劉成勇、許昌如.基于NMEA2000協(xié)議的船舶集成網(wǎng)絡(luò)系統(tǒng)研究.武漢理工大學(xué)學(xué)報(bào),2010年5期[4]劉正權(quán)、許維勝.關(guān)于CAN控制器SJA1000新特性的一些應(yīng)用.電子技術(shù)(上海),2000年第11期[5]張素文.基于PCI總線的CAN通信卡設(shè)計(jì)與實(shí)現(xiàn).龍?jiān)雌诳?2012年第5期[6]劉正權(quán)、許維勝.關(guān)于CAN控制器SJA1000新特性的一些應(yīng)用.電子技術(shù)(上海),2000年第11期[7]李友善.基于ZLG7290的顯示電路設(shè)計(jì).龍?jiān)雌诳?2011年第24期[8]楊自厚.CAN通信的嵌入式應(yīng)用.機(jī)電工程,2012年第12期[9]D.B.Charter.Determinationofriskofcollisionusingtwentiethcenturytechniques.Navigation(JournalofTheInstituteof[10]DavidA.Pattersib.ComputerOrganizationandDesign:TheHardware/SoftwareInterface,2009[11]S.J.Chang.Keelung.DevelopmentandAnalysisofAISApplicationsasanEfficientToolforVesselTrafficService.IEEE27致謝在本次畢業(yè)設(shè)計(jì)中,我得到了各方面的大力支持。在錦州航星集團(tuán),技術(shù)人員和工人師傅們對我的問題不厭其詳?shù)剡M(jìn)行了解答,使我對船舶控制所涉及的方面有了系統(tǒng)的認(rèn)識,對船舶控制系統(tǒng)所涉及到的各方面的原理有了感性的認(rèn)識,為我本次畢業(yè)設(shè)計(jì)打下了掃盲式的基礎(chǔ)。在大連海事大學(xué),很多老師都對我很關(guān)心,對我提出的問題進(jìn)行引導(dǎo)性地解答,為我在迷茫中指明了方向。特別感謝我本次畢業(yè)設(shè)計(jì)的導(dǎo)師顏德文教授。顏教授一直對我進(jìn)行鼓勵(lì),并對我遇到的困難進(jìn)行引導(dǎo)性地解答,使我不僅僅克服了一個(gè)又一個(gè)難關(guān),更重要的是我在解決困難的過程中學(xué)會(huì)了如何自己解決難題的方法,感謝顏教授,授人以漁的教育方式。同時(shí)還要感謝楊承恩教授對我的關(guān)心、趙國庫老師對我的建設(shè)性的指導(dǎo)、李輝老師為我過程控制系統(tǒng)的學(xué)習(xí)打下的結(jié)實(shí)基礎(chǔ)、譚克俊老師和徐慧樸老師在分別教授我模擬電路和MATLAB中所付出的一切……感謝所有教授過我的老師,感謝他們!感謝他們的辛勤耕耘。同時(shí)我還要感謝我的父母,感謝他們對我的養(yǎng)育之恩,是他們的辛勤和期盼才有了我的今天,這一點(diǎn)到什么時(shí)候都不能夠忘記,到什么時(shí)候都要報(bào)答!1附錄1單向收發(fā)程序:發(fā)送程序://PeliCan編程#include<reg51.h>#include<absacc.h>#include<SJA1000.h>#include<namesbit.h>#include<zlg7290.h>#defineucharunsignedchar//**********89S51初始化*************//voidInit_MCU(void){P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;}//**********SJA1000初始化***********//voidInit_SJA1000(void){A14=0;//片選SJA1000WR=0;//寫使能SJA1000A12=0;//82C250工作于斜率模式RST=0;//SJA1000復(fù)位模式CMR=0x0E;//雙向收發(fā),清除數(shù)據(jù)溢出,釋放接受緩存器,撤銷發(fā)送請求IER=0x01;//SJA1000中斷方式接收//發(fā)送信息格式設(shè)置//////////////////////////////////////////TBSR0=0x08;//標(biāo)準(zhǔn)幀、數(shù)據(jù)發(fā)送、數(shù)據(jù)長度:8TBSR1=0xFF;//識別碼1TBSR2=0xFF;//識別碼2TBSR3=0xFF;//識別碼3TBSR4=0xFF;//識別碼4//////////////////////////////////////////BTR0=0x01;//總線定時(shí)寄存器0:同步跳轉(zhuǎn)寬度為1tscl,波特率設(shè)定BTR1=0x25;//總線定時(shí)寄存器1:單倍總線采樣,波特率設(shè)定OCR=0x1A;//輸出管腳TX0=TXD輸入信號,TX1輸出高阻CDR=0xC8;//PeliCAN模式、無接收比較,只有RX0被激活,CLKOUT引腳被禁用delayMS(1000);RST=1;//SJA1000工作模式delayMS(1000);MODR=0x00;//雙向收發(fā),正常工作模式CMR=0x00;//雙向收發(fā),正常工作模式MODE=1;//INTEL模式delayMS(1000);//驗(yàn)收代碼寄存器ACR0=0xFF;ACR1=0xFF;ACR2=0xFF;ACR3=0xFF;//驗(yàn)收屏蔽寄存器AMR0=0xFF;AMR1=0xFF;AMR2=0xFF;AMR3=0xFF;}///////////////////////////////////////charcodedx516[3]_at_0x003b;//學(xué)林仿真器運(yùn)行C程序時(shí)獨(dú)有標(biāo)志voidmain(void){ucharAD;Init_MCU();Init_SJA1000();delayMS(1000);//TBSR3=0x00;//TBSR4=0x01;TBSR5=0x02;TBSR6=0x03;TBSR7=0x04;TBSR8=0x05;TBSR9=0x06;TBSR10=0x07;TBSR11=0x08;TBSR12=0x09;WR=1;//關(guān)閉SJA1000的寫使能,防止誤寫delayMS(1000);CMR=0x01;//置位發(fā)送請求,雙向收發(fā)//擴(kuò)展幀格式發(fā)送、標(biāo)準(zhǔn)幀格式接收delayMS(1000);AD=0x00;RES=0;//ZLG7290復(fù)位delayMS(1000);RES=1;//ZLG7290置位ZLG7290_SendCmd(0x61,AD);}接收程序://PeliCan編程#include<reg51.h>#include<absacc.h>#include<SJA1000.h>#include<namesbit.h>#include<zlg7290.h>#defineucharunsignedcharucharAD[8];//全局接收數(shù)組//**********89S51初始化*************//voidInit_MCU(void){P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;}//**********SJA1000初始化***********//voidInit_SJA1000(void){A14=0;//片選SJA1000WR=0;//寫使能SJA1000A12=0;//82C250工作于斜率模式RST=0;//SJA1000復(fù)位模式CMR=0x0E;//雙向收發(fā),清除數(shù)據(jù)溢出,釋放接受緩存器,撤銷發(fā)送請求IER=0x01;//SJA1000中斷接收//發(fā)送信息格式設(shè)置//////////////////////////////////////////TBSR0=0x08;//標(biāo)準(zhǔn)幀、數(shù)據(jù)發(fā)送、數(shù)據(jù)長度:8TBSR1=0xFF;//識別碼1TBSR2=0xFF;//識別碼2//////////////////////////////////////////BTR0=0xC1;//總線定時(shí)寄存器0:同步跳轉(zhuǎn)寬度為4tscl,波特率設(shè)定BTR1=0xA5;//總線定時(shí)寄存器1:三倍總線采樣,波特率設(shè)定OCR=0x1A;//輸出管腳TX0=TXD輸入信號,TX1輸出高阻CDR=0xC8;//PeliCAN模式、無接收比較,只有RX0被激活,CLKOUT引腳被禁用delayMS(1000);RST=1;//SJA1000工作模式delayMS(1000);MODR=0x00;//雙向收發(fā),正常工作模式CMR=0x00;//雙向收發(fā),正常工作模式MODE=1;//INTEL模式delayMS(1000);//驗(yàn)收代碼寄存器ACR0=0xFF;ACR1=0xFF;ACR2=0xFF;ACR3=0xFF;//驗(yàn)收屏蔽寄存器AMR0=0xFF;AMR1=0xFF;AMR2=0xFF;AMR3=0xFF;WR=1;//寫關(guān)閉SJA1000}//////////////////////////////////////////**********中斷處理程序***********///voidinter0_can_xd(void)interrupt0{//ucharstate;EA=0;IE0=0;//由于是中斷INT0是電平觸發(fā)方式,所以需要軟件將INT0的中斷請求標(biāo)志IE0清零RD=0;//讀使能SJA1000delayMS(1000);AD[0]=RBSR3;AD[1]=RBSR4;AD[2]=RBSR5;AD[3]=RBSR6;AD[4]=RBSR7;AD[5]=RBSR8;AD[6]=RBSR9;AD[7]=RBSR10;delayMS(1000);CMR=0x04;//釋放接收緩沖器//state=ALC;//釋放仲裁隨時(shí)捕捉寄存器(讀該寄存器即可)//state=ECC;//釋放錯(cuò)誤代碼捕捉寄存器(讀該寄存器即可)RD=1;//關(guān)閉SJA1000的讀使能EA=1;delayMS(1000);}charcodedx516[3]_at_0x003b;//學(xué)林仿真器運(yùn)行C程序時(shí)獨(dú)有標(biāo)志voidmain(void){Init_MCU();Init_SJA1000();RES=0;//復(fù)位ZLG7290EX0=1;//外部中斷0允許IT0=1;//外部中斷0下降沿方式EA=1;//中斷總控允許delayMS(1000);RES=1;//置位ZLG7290while(1){RES=1;//置位ZLG7290//AD[0]=0x05;//AD[1]=0x06;//AD[2]=0x07;//AD[3]=0x08;ZLG7290_SendCmd(0x60,AD[0]);ZLG7290_SendCmd(0x61,AD[1]);ZLG7290_SendCmd(0x62,AD[2]);ZLG7290_SendCmd(0x63,AD[3]);//RES=0;//復(fù)位ZLG7290,清顯示}//RES=0;//復(fù)位ZLG7290,清顯示}雙向收發(fā)程序://PeliCan編程#include<reg51.h>#include<absacc.h>#include<VIIC_C51.h>#include<zlg7290.h>#defineucharunsignedcharuchardataRXD_flag;//全局接收中斷標(biāo)志位ucharxdata*RX_buffer;//全局定義接收緩存數(shù)組//7290hardware與硬件有關(guān)的定義//ZLG7290端口定義sbitSDA=P1^7;/*模擬I2C數(shù)據(jù)傳送位*/sbitSCL=P1^6;/*模擬I2C時(shí)鐘控制位*/#defineZLG72900x70//ZLG7290的IIC地址#defineSubCmdBuf0x07//命令緩沖區(qū)子地址#defineSubDpRam0x10//顯存子地址//根據(jù)硬件配置ZLG7290的中斷信號引腳INTsbitKeyInt=P3^3;//中斷信號uchari;//顯示緩沖區(qū)指針//MCU端口定義sbitP10=P1^0;//X5045控制端sbitP11=P1^1;//MCU復(fù)位端sbitP14=P1^4;//SJA1000復(fù)位端sbitP12=P1^2;//X5045時(shí)鐘輸入端sbitP15=P1^5;//ZLG7290復(fù)位端sbitP16=P1^6;//SCLsbitP17=P1^7;//SDAsbitP26=P2^6;//SJA1000片選//CAN定義#defineMODRDBYTE[0x0000]//MOD模式寄存器#defineCMRDBYTE[0x0001]//命令控制器#defineSRDBYTE[0x0002]//狀態(tài)前寄存器#defineIRDBYTE[0x0003]//中斷寄存器#defineIERDBYTE[0x0004]//中斷使能寄存器#defineBTR0DBYTE[0x0006]//總線定時(shí)寄存器0#defineBTR1DBYTE[0x0007]//總線定時(shí)寄存器1#defineOCRDBYTE[0x0008]//輸出控制寄存器#defineALCDBYTE[0x000B]//仲裁丟失捕捉寄存器#defineECCDBYTE[0x000C]//誤碼捕捉寄存器#defineACR0DBYTE[0x0010]//驗(yàn)收代碼寄存器#defineACR1DBYTE[0x0011]#defineACR2DBYTE[0x0012]#defineACR3DBYTE[0x0013]#defineAMR0DBYTE[0X0014]//驗(yàn)收屏蔽寄存器#defineAMR1DBYTE[0X0015]#defineAMR2DBYTE[0X0016]#defineAMR3DBYTE[0X0017]#defineTBSR0DBYTE[0x0020]//發(fā)送緩沖器各位#defineTBSR1DBYTE[0x0021]#defineTBSR2DBYTE[0x0022]#defineTBSR3DBYTE[0x0023]#defineTBSR4DBYTE[0x0024]#defineTBSR5DBYTE[0x0025]#defineTBSR6DBYTE[0x0026]#defineTBSR7DBYTE[0x0027]#defineRBSR0DBYTE[0x0030]//接收緩沖器各位#defineRBSR1DBYTE[0x0031]#defineRBSR2DBYTE[0x0032]#defineRBSR3DBYTE[0x0033]#defineRBSR4DBYTE[0x0034]#defineRBSR5DBYTE[0x0035]#defineRBSR6DBYTE[0x0036]#defineRBSR7DBYTE[0x0037]#defineCDRDBYTE[0x001F]//時(shí)鐘分頻寄存器//CAN定義結(jié)束//**********SJA1000初始化***********//voidInit_SJA1000(void){ucharstate;ucharACRR[4]={0XAA,0XFF,0X22,0X11};//接收代碼寄存器ucharAMRR[4]={0xff,0xff,0xff,0xff};//接收屏蔽寄存器do//使用do--while語句確保進(jìn)入復(fù)位模式{MODR=0x09; //設(shè)置MOD.0=1--進(jìn)入復(fù)位模式,以便設(shè)置相應(yīng)的寄存器 state=MODR; }while(!(state&0x01));//對SJA1000部分寄存器進(jìn)行初始化設(shè)置CDR=0x88; //CDR為時(shí)鐘分頻器,CDR.3=1--時(shí)鐘關(guān)閉,CDR.7=0basicCAN,CDR.7=1PeliCANBTR0=0x04;//0x31; //總線定時(shí)寄存器0;總線波特率設(shè)定BTR1=0x1c;//0x1c; //總線定時(shí)寄存器1;總線波特率設(shè)定IER=0x01; //IER.0=1--接收中斷使能;IER.1=0--關(guān)閉發(fā)送中斷使能OCR=0xaa; //配置輸出控制寄存器CMR=0x04; //釋放接收緩沖器ACR0=ACRR[0];//初始化接收代碼寄存器ACR1=ACRR[1];ACR2=ACRR[2];ACR3=ACRR[3];AMR0=AMRR[0];//初始化接收屏蔽寄存器AMR1=AMRR[1];AMR2=AMRR[2];AMR3=AMRR[3];do//使用do--while語句確保退出復(fù)位模式{ MODR=0x08; //MOD.3=0--雙濾波器模式 state=MODR;}while(state&0x01);}////////////////////////////////////////**********CAN發(fā)送數(shù)據(jù)到CAN-Bus***********//voidCAN_TXD(void){ucharstate;ucharxdata*TX_buffer;//初始化標(biāo)示碼頭信息TX_buffer[0]=0x88;//.7=0--擴(kuò)展幀;.6=0--數(shù)據(jù)幀;.0-.3=100--數(shù)據(jù)長度為8字節(jié)//TX_buffer[1]=0xFF;//本幀信息的ID//TX_buffer[2]=0xFF;TX_buffer[3]=0xFF;TX_buffer[4]=0xFF;do//查詢SJA1000是否處于接收狀態(tài),當(dāng)SJA1000不處于接收狀態(tài)時(shí)才可繼續(xù)執(zhí)行{state=SR;//SR為SJA1000的狀態(tài)寄存器}while(state&0x10);//SR.4=1正在接收,等待do//查詢SJA1000是否處于發(fā)送完畢狀態(tài){state=SR;}while(!(state&0x08));//SR.3=0,發(fā)送請求未處理完,等待直到SR.3=1do//查詢發(fā)送緩沖器狀態(tài){state=SR;}while(!(state&0x04));//SR.2=0,發(fā)送緩沖器被鎖。等待直到SR.2=1//將待發(fā)送的一幀數(shù)據(jù)信息存入SJA1000的發(fā)送緩沖器中TBSR0=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];CMR=0x04;//置位發(fā)送請求}////////////////////////////////////////**********中斷接收來自CAN-Bus數(shù)據(jù)***********//voidinter0_can_rxd(void)interrupt0{ucharstate;EA=0;//關(guān)CPU中斷IE0=0;//由于是中斷INT0是電平觸發(fā)方式,所以需要軟件將INT0的中斷請求標(biāo)志IE0清零state=IR;//IR為SJA1000的中斷寄存器if(state&0x01)//若IR.0=1--接收中斷{//ucharxdata*RX_buffer;//全局定義接收緩存器RX_buffer[0]=RBSR0;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;RXD_flag=1;//接收標(biāo)志置位,以便進(jìn)入接收處理程序CMR=0x04;//CMR.2=1--接收完畢,釋放接收緩沖器state=ALC;//釋放仲裁隨時(shí)捕捉寄存器(讀該寄存器即可)state=ECC;//釋放錯(cuò)誤代碼捕捉寄存器(讀該寄存器即可)}IER=0x01;//IER.0=1--接收中斷使能EA=1;//重新開啟CPU中斷}////////////////////////////////////////**********中斷處理ZLG7290的按鍵程序***********//voidinter1_ZLG7290_handle(void)interrupt1{uchari,j=0;ucharxdatares;res=RX_buffer;i=ZLG7290_GetKey();switch(i)//S1~3的處理程序{case1:do//使數(shù)碼管閃爍{ISendStr(ZLG7290,SubCmdBuf,RX_buffer,8);delayMS(10);}while((i!=2)&(i!=3));break;case2:do//使數(shù)碼管閃爍位循環(huán)左移{ISendStr(ZLG7290,SubCmdBuf,RX_buffer++,1);delayMS(10);j++;if(j>7){j=0;RX_buffer=res;}}while((i!=1)&(i!=3));break;case3:ISendStr(ZLG7290,SubCmdBuf,RX_buffer,8);//停止循環(huán)閃爍break;default:break;}}//初始化MCUvoidInit_MCU(void){P0=P1=P2=P3=0;//選通SJA1000}//初始化ZLG7290voidInit_ZLG7290(void){ucharxdataduanma[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};//0~9的段碼,按照abcdefgdp的順序排列RX_buffer=duanma;//對全局定義接收緩存數(shù)組賦初值KeyInt=1;//置KeyInt引腳為輸入狀態(tài)i=0;//顯示緩沖區(qū)指針初始化}voidmain(void){voidInit_MCU(void);//初始化MCU,P10=P1^0使能看門狗voidInit_SJA1000(void);//初始化SJA1000voidInit_ZLG7290(void);//ZLG7290初始化while(1);//等待SJA1000中斷0接收或者ZLG7290中斷1按鍵處理程序EX0=1;EX1=1;IT0=1;IT1=1;EA=1;if(RXD_flag)//PO口得到SJA1000的中斷接收值{P0=RX_buffer;RXD_flag=0;}do//SJA1000不接受數(shù)據(jù)或者S1~3的按鍵未按下時(shí),循環(huán)顯示數(shù)據(jù){ZLG7290_SendBuf(RX_buffer,4);//向顯示緩沖區(qū)發(fā)送數(shù)據(jù)delayMS(10);}while(!(IE1|IE0));while(ECC&0x20)//若ECC.5=1--RX;接收時(shí)發(fā)生的錯(cuò)誤{P14=!P14;delayMS(10);P14=!P14;delayMS(10);//對SJA1000復(fù)位}}附錄2總體設(shè)計(jì)原理圖PCB圖附錄3英文資料:FUNCTIONALDESCRIPTIONDescriptionoftheCANcontrollerblocksINTERFACEMANAGEMENTLOGIC(IML)TheinterfacemanagementlogicinterpretscommandsfromtheCPU,controlsaddressingoftheCANregistersandprovidesinterruptsandstatusinformationtothehostmicrocontroller.TRANSMITBUFFER(TXB)ThetransmitbufferisaninterfacebetweentheCPUandtheBitStreamProcessor(BSP)thatisabletostoreacompletemessagefortransmissionovertheCANnetwork.Thebufferis13byteslong,writtentobytheCPUandreadoutbytheBSP.RECEIVEBUFFER(RXB,RXFIFO)ThereceivebufferisaninterfacebetweentheacceptancefilterandtheCPUthatstoresthereceivedandacceptedmessagesfromtheCAN-busline.TheReceiveBuffer(RXB)representsaCPU-accessible13-bytewindowoftheReceiveFIFO(RXFIFO),whichhasatotallengthof64bytes.WiththehelpofthisFIFOtheCPUisabletoprocessonemessagewhileothermessagesarebeingreceived.ACCEPTANCEFILTER(ACF)Theacceptancefiltercomparesthereceivedidentifierwiththeacceptancefilterregistercontentsanddecideswhetherthismessageshouldbeacceptedornot.Intheeventofapositiveacceptancetest,thecompletemessageisstoredintheRXFIFO.BITSTREAMPROCESSOR(BSP)Thebitstreamprocessorisasequencerwhichcontrolsthedatastreambetweenthetransmitbuffer,RXFIFOandtheCAN-bus.Italsoperformstheerrordetection,arbitration,stuffinganderrorhandlingontheCAN-bus[9].BITTIMINGLOGIC(BTL)ThebittiminglogicmonitorstheserialCAN-buslineandhandlesthebusline-relatedbittiming.ItissynchronizedtothebitstreamontheCAN-busona‘recessive-to-dominant’buslinetransitionatthebeginningofamessage(hardsynchronization)andre-synchronizedonfurthertransitionsduringthereceptionofamessage(softsynchronization).TheBTLalsoprovidesprogrammabletimesegmentstocompensateforthepropagationdelaytimesandphaseshifts(e.g.duetooscillatordrifts)andtodefinethesamplep
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中華女子學(xué)院《傳統(tǒng)及現(xiàn)代手工藝制作》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州信息工程職業(yè)學(xué)院《工業(yè)控制網(wǎng)絡(luò)》2023-2024學(xué)年第一學(xué)期期末試卷
- 長沙航空職業(yè)技術(shù)學(xué)院《數(shù)字電路設(shè)計(jì)及實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 云南國防工業(yè)職業(yè)技術(shù)學(xué)院《品牌形象專項(xiàng)設(shè)計(jì)一》2023-2024學(xué)年第一學(xué)期期末試卷
- 新型材料在電池儲(chǔ)能中的應(yīng)用
- 共建文化 發(fā)展未來模板
- 市場營銷領(lǐng)導(dǎo)力實(shí)踐述職
- 業(yè)務(wù)操作-房地產(chǎn)經(jīng)紀(jì)人《業(yè)務(wù)操作》模擬試卷4
- 房地產(chǎn)交易制度政策-《房地產(chǎn)基本制度與政策》預(yù)測試卷4
- 農(nóng)學(xué)成果答辯報(bào)告模板
- 物業(yè)項(xiàng)目服務(wù)進(jìn)度保證措施
- (隱蔽)工程現(xiàn)場收方計(jì)量記錄表
- DB22T 5005-2018 注塑夾芯復(fù)合保溫砌塊自保溫墻體工程技術(shù)標(biāo)準(zhǔn)
- 醫(yī)院手術(shù)室醫(yī)院感染管理質(zhì)量督查評分表
- 稱量與天平培訓(xùn)試題及答案
- 超全的超濾與納濾概述、基本理論和應(yīng)用
- 2020年醫(yī)師定期考核試題與答案(公衛(wèi)專業(yè))
- 2022年中國育齡女性生殖健康研究報(bào)告
- 各種靜脈置管固定方法
- 消防報(bào)審驗(yàn)收程序及表格
- 教育金規(guī)劃ppt課件
評論
0/150
提交評論