版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)論文(設(shè)計(jì)、創(chuàng)作)</p><p> 題目: 基于CAN總線(xiàn)控制的溫度儀表 </p><p> Temperature control instrument based on CAN bus </p><p><b> 摘 要</b></p&g
2、t;<p> 隨著科學(xué)技術(shù)的快速發(fā)展,工業(yè)控制和生產(chǎn)自動(dòng)化技術(shù)的不斷進(jìn)步以及微處理器的廣泛應(yīng)用,現(xiàn)場(chǎng)總線(xiàn)技術(shù)日益成為國(guó)內(nèi)外各個(gè)行業(yè)的關(guān)注焦點(diǎn)。傳統(tǒng)的獨(dú)</p><p> 立儀表已經(jīng)不能滿(mǎn)足目前控制系統(tǒng)大規(guī)?;?、智能化、網(wǎng)絡(luò)化方向發(fā)展的要求,一種新型的基于現(xiàn)場(chǎng)總線(xiàn)的智能儀表應(yīng)運(yùn)而生。CAN (Controller Area Network)現(xiàn)場(chǎng)總線(xiàn)作為一種自效支持分布式控制和實(shí)時(shí)控制的技術(shù),以其穩(wěn)
3、定性好、可靠性高、抗干擾能力強(qiáng)、通訊速率快、維護(hù)成本低及其獨(dú)特的設(shè)計(jì),現(xiàn)己經(jīng)成為國(guó)際上應(yīng)用最為廣泛的現(xiàn)場(chǎng)總線(xiàn)之一。</p><p> 本課題采用主流單片機(jī)STC89C52為微處理器,結(jié)合獨(dú)立CAN控制器SJA1000設(shè)計(jì)了CAN總線(xiàn)的數(shù)據(jù)通信系統(tǒng)硬件電路,使CAN總線(xiàn)的通訊更加直觀(guān)。本文提出了相應(yīng)的通信軟件模型,通信軟件模型包括應(yīng)用層協(xié)議模塊、基本通信模塊和運(yùn)動(dòng)控制應(yīng)用模塊。其中,應(yīng)用層協(xié)議模塊包括消息標(biāo)識(shí)符的
4、分配、數(shù)據(jù)域信息格式、數(shù)據(jù)交換方式和報(bào)文濾波機(jī)制等內(nèi)容;基本通信模塊包括CAN控制器的初始化、報(bào)文接收、報(bào)文發(fā)送、錯(cuò)誤處理和中斷服務(wù)程序等內(nèi)容;運(yùn)動(dòng)控制應(yīng)用模塊包括輸出控制命令和輸入狀態(tài)信息等內(nèi)容。</p><p> 本課題設(shè)計(jì)的數(shù)據(jù)通信系統(tǒng)結(jié)構(gòu)簡(jiǎn)單、使用方便、設(shè)計(jì)靈活,能夠滿(mǎn)足工業(yè)控制中網(wǎng)絡(luò)化、智能化的發(fā)展要求,對(duì)目前基于CAN總線(xiàn)的研究具有積極作用。</p><p> 關(guān)鍵詞:CA
5、N數(shù)據(jù)通信,SJA1000,單片機(jī)</p><p><b> Abstract</b></p><p> With the rapid development of science and technology, industrial control and automation technology continues to progress as well a
6、s the microprocessor application, field bus technology has increasingly become the focus of various domestic and international industry. The traditional independent instrument can not meet the current control system of l
7、arge-scale, intelligent, networked direction requirements, a novel based on the field bus in intelligent instrument emerge as the times require. CAN (</p><p> The subject of the use of mainstream chip STC89
8、C52microprocessor, with independent CAN controller SJA1000design of CAN bus data communication system hardware circuit, the CAN bus communication more intuitive. This paper presents the corresponding communication model,
9、 communication software model including the application layer protocol module, basic communication module and motion control application module. Among them, the application layer protocol module includes a message identi
10、fier allocati</p><p> The design of the subject data communication system has the advantages of simple structure, convenient use, flexible design, can meet the requirements of industrial control network, in
11、telligent development requirement, to at present based on the CAN bus has positive effects on.</p><p> Key words: data communication of CAN, SJA1000, single chip microcomputer</p><p><b>
12、 目錄</b></p><p><b> 摘 要I</b></p><p> AbstractⅡ</p><p><b> 目錄Ⅲ</b></p><p> 第一章 緒 論1</p><p> 1.1選題背景及意義1</p>
13、<p> 1.2國(guó)內(nèi)外研究現(xiàn)狀及其發(fā)展1</p><p> 1.3本文組織結(jié)構(gòu)2</p><p> 第二章 現(xiàn)場(chǎng)總線(xiàn)及CAN總線(xiàn)技術(shù)通信標(biāo)準(zhǔn)3</p><p> 2.1 CAN總線(xiàn)簡(jiǎn)介3</p><p> 2.2 CAN總線(xiàn)技術(shù)特點(diǎn)3</p><p> 2.3 CAN總線(xiàn)通信協(xié)議4&
14、lt;/p><p> 2.3.1 CAN總線(xiàn)的特點(diǎn)4</p><p> 2.3.2 CAN總線(xiàn)幀格式4</p><p> 2.3.3 CAN總線(xiàn)位仲裁技術(shù)特點(diǎn)5</p><p><b> 2.4本章小結(jié)5</b></p><p> 第三章 系統(tǒng)硬件電路設(shè)計(jì)
15、1</p><p> 3.1智能儀表系統(tǒng)整體硬件構(gòu)成1</p><p> 3.2 CAN通信模塊硬件設(shè)計(jì)1</p><p> 3.2.1 SJAl000有以下基本特性:1</p><p> 3.2.2 CAN總線(xiàn)收發(fā)器TJA10502</p><p> 3.2.3 微控制器STC8
16、9C52單片機(jī)3</p><p> 3.2.4 數(shù)字溫度傳感器DS18B205</p><p> 3.2.5 八段數(shù)碼管6</p><p> 3.2.6 74HC5957</p><p> 3.3 本章小結(jié)8</p><p> 第四章 CAN數(shù)據(jù)通信接口模塊軟件設(shè)計(jì)9</p>
17、<p> 4.1 CAN總線(xiàn)數(shù)據(jù)通信程序9</p><p> 4.2 DS18B20 溫度采集程序11</p><p> 4.3 74HC595驅(qū)動(dòng)數(shù)碼管顯示程序14</p><p><b> 結(jié)論16</b></p><p><b> 參考文獻(xiàn)17</b><
18、/p><p><b> 致謝19</b></p><p><b> 附錄20</b></p><p><b> 程序設(shè)計(jì)20</b></p><p><b> 第一章 緒 論</b></p><p> 1.1選題背景
19、及意義</p><p> 隨著微型計(jì)算機(jī)技術(shù)和嵌入式系統(tǒng)技術(shù)的迅速發(fā)展,工業(yè)控制系統(tǒng)已成為計(jì)算機(jī)技術(shù)應(yīng)用領(lǐng)域中最具活力的一個(gè)分支,并取得了巨大進(jìn)步。由于對(duì)系統(tǒng)可靠性和靈活性的高要求,工業(yè)控制系統(tǒng)的發(fā)展主要表現(xiàn)為:控制面向多元化,系統(tǒng)面向分散化,即負(fù)載分散、功能分散、危險(xiǎn)分散和地域分散。即以微型計(jì)算機(jī)(單片機(jī)或嵌入式系統(tǒng))為主體,代替?zhèn)鹘y(tǒng)儀表的常見(jiàn)電子線(xiàn)路, 稱(chēng)為新一代的具有某種智能的靈巧儀表。傳統(tǒng)模擬式儀表的各
20、種功能是由單元 電路實(shí)現(xiàn)的,而在以單片機(jī)或嵌入式系統(tǒng)為主體的儀表中,則由軟件完成眾多的 數(shù)據(jù)處理和控制任務(wù)。同時(shí),正由于現(xiàn)場(chǎng)總線(xiàn)的標(biāo)準(zhǔn)尚未統(tǒng)一,也使得現(xiàn)場(chǎng)總線(xiàn)的應(yīng)用得以不拘一格地發(fā)揮,并將為現(xiàn)場(chǎng)總線(xiàn)的完善提供更加豐富的依據(jù)。控制器局部網(wǎng)CAN (Controller Area Network)正是在這種背景下應(yīng)運(yùn)而生的。CAN(Controller Area Network)是現(xiàn)場(chǎng)總線(xiàn)的一種,最早是德國(guó)Bosch公司在上世紀(jì)80年代
21、推出的,主要應(yīng)用于汽車(chē)內(nèi)部檢測(cè)以及控制系統(tǒng)間的數(shù)據(jù)通信。CAN總線(xiàn)通信協(xié)議充分考慮了工業(yè)現(xiàn)場(chǎng)環(huán)境,采用了ISO-OSI模型中的三層,即物理層,數(shù)據(jù)層和應(yīng)用層。CAN總線(xiàn)規(guī)范</p><p> 1.2國(guó)內(nèi)外研究現(xiàn)狀及其發(fā)展</p><p> 當(dāng)今國(guó)外有許多知名的汽車(chē)制造企業(yè),如奔馳,寶馬,保時(shí)捷,勞斯萊斯等公司均已采用CAN總線(xiàn)來(lái)實(shí)現(xiàn)汽車(chē)內(nèi)部電控系統(tǒng)與各檢測(cè)和執(zhí)行機(jī)構(gòu)間的數(shù)據(jù)通訊。國(guó)內(nèi)的
22、一些汽車(chē)生產(chǎn)廠(chǎng)家最初雖然也嘗試著在自己的產(chǎn)品中使用CAN,并也制造出了一些相應(yīng)的產(chǎn)品,但在成熟度方面無(wú)疑與那些著名的廠(chǎng)家還有著很大的差距。CAN總線(xiàn)歷經(jīng)20多年的發(fā)展,尤其是隨著其國(guó)際標(biāo)準(zhǔn)化(IS011898 )的制定,更加推動(dòng)了它的發(fā)展和應(yīng)用,已有INTEL, MOTOROLA, PHILIPS, SIEMENS等百余家國(guó)際大公司支持CAN總線(xiàn)協(xié)議。</p><p> 目前,國(guó)內(nèi)科技水平及整體綜合技術(shù)水平達(dá)到
23、了國(guó)際80年代中期水平。隨著微電子技術(shù)和計(jì)算機(jī)技術(shù)在儀器儀表產(chǎn) 品中的普遍采用,約15%的產(chǎn)品實(shí)現(xiàn)了智能化,達(dá)到國(guó)際90年代水平,30%的產(chǎn)品實(shí)現(xiàn)了數(shù)字化達(dá)到了國(guó)際80年代末期水平。通過(guò)科技攻關(guān)、聯(lián)合開(kāi)發(fā)、合資合作和引進(jìn)技術(shù)消化吸收國(guó)產(chǎn)化等多種 形式,使我國(guó)儀器儀表行業(yè)部分中高檔主導(dǎo)產(chǎn)品縮小了與國(guó)際先進(jìn)水平的差距 ,并形成了生產(chǎn)能力。</p><p> CAN總線(xiàn)在未來(lái)的發(fā)展前景上,將具有如下幾個(gè)方向:<
24、/p><p> (1) CAN總線(xiàn)將在未來(lái)的市場(chǎng)竟?fàn)幹姓加幸欢ǖ膬?yōu)勢(shì)。</p><p> (2)與企業(yè)以太網(wǎng)(Ethernet)的互聯(lián)。</p><p> (3)與模糊控制技術(shù)和智能技術(shù)的結(jié)合。</p><p> (4)與無(wú)線(xiàn)技術(shù)的結(jié)合。</p><p><b> 1.3本文組織結(jié)構(gòu)</b>
25、</p><p> 本文研究了基于CAN總線(xiàn)的數(shù)據(jù)通信系統(tǒng)的通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)。內(nèi)容涉及需求分析、總體設(shè)計(jì)、硬件組成結(jié)構(gòu)設(shè)計(jì)、軟件設(shè)計(jì)和開(kāi)發(fā)、系統(tǒng)仿真測(cè)試等。</p><p> 第一章為緒論,簡(jiǎn)單介紹了CAN總線(xiàn)在國(guó)內(nèi)外的應(yīng)用現(xiàn)狀,說(shuō)明了本課題的研究背景和意義。</p><p> 第二章概括介紹了CAN總線(xiàn)通信標(biāo)準(zhǔn),包括其技術(shù)特點(diǎn)、報(bào)文的幀類(lèi)型與格式、富有特色
26、的位仲裁技術(shù)、報(bào)文濾波技術(shù)等。</p><p> 第三章是CAN總線(xiàn)通信系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)和應(yīng)用層通信協(xié)議模塊的設(shè)計(jì)。</p><p> 第四章介紹了CAN通信系統(tǒng)軟件開(kāi)發(fā)的過(guò)程,說(shuō)明了在仿真測(cè)試平臺(tái)上的測(cè)試情況。</p><p> 第五章總結(jié)了本通信系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)的主要成果與結(jié)論,并做了下一步的工作展望。</p><p> 第二章
27、 現(xiàn)場(chǎng)總線(xiàn)及CAN總線(xiàn)技術(shù)通信標(biāo)準(zhǔn)</p><p> 2.1 CAN總線(xiàn)簡(jiǎn)介</p><p> CAN網(wǎng)絡(luò)即控制器局域網(wǎng)(Controller Area Network) 是德國(guó)BOSCH公司為現(xiàn)代汽車(chē)應(yīng)用領(lǐng)先推出的一種多主機(jī)局域網(wǎng),它是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通訊網(wǎng)絡(luò),其總線(xiàn)規(guī)范已被ISO國(guó)際標(biāo)準(zhǔn)化組織制定為國(guó)際標(biāo)準(zhǔn),并被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線(xiàn)之一。CAN總線(xiàn)的通
28、信介質(zhì)可以是雙絞線(xiàn)、同軸電纜或光纖,最大通信速率可達(dá)1Mbps。其應(yīng)用范圍遍及從高速網(wǎng)絡(luò)到低成本的多線(xiàn)路網(wǎng)絡(luò),廣泛應(yīng)用于工業(yè)自動(dòng)化、多種控制設(shè)備、交通工具、醫(yī)療儀器以及建筑、環(huán)境控制等眾多部門(mén)。</p><p> 2.2 CAN總線(xiàn)技術(shù)特點(diǎn)</p><p> ?。?)多主機(jī)方式工作,網(wǎng)絡(luò)上任意一個(gè)節(jié)點(diǎn)均可以在任意時(shí)刻主動(dòng)地向網(wǎng)絡(luò)上的其他節(jié)點(diǎn)發(fā)送信息,而不分主從,通信方式靈活。</p
29、><p> (2)網(wǎng)絡(luò)上的節(jié)點(diǎn)(信息)可分成不同的優(yōu)先級(jí),可以滿(mǎn)足不同的實(shí)時(shí)要求。 </p><p> ?。?)采用非破壞性位仲裁總線(xiàn)結(jié)構(gòu)機(jī)制,當(dāng)兩個(gè)節(jié)點(diǎn)同時(shí)向網(wǎng)絡(luò)上傳送信息時(shí),優(yōu)先級(jí)低的節(jié)點(diǎn)主動(dòng)停止數(shù)據(jù)發(fā)送,而優(yōu)先級(jí)高的節(jié)點(diǎn)可不受影響地繼續(xù)傳輸數(shù)據(jù)。</p><p> ?。?)可以點(diǎn)對(duì)點(diǎn)、一點(diǎn)對(duì)多點(diǎn)(成組)及全局廣播幾種傳送方式接收數(shù)據(jù)。</p&g
30、t;<p> ?。?)直接通信距離最遠(yuǎn)可達(dá)6km(速率10Kbps以下)。</p><p> ?。?)通信速率最高可達(dá)1MB/s(此時(shí)距離最長(zhǎng)40m)。</p><p> ?。?)節(jié)點(diǎn)數(shù)實(shí)際可達(dá)110個(gè)。</p><p> ?。?)采用短幀結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為8個(gè)。</p><p> (9)每幀信息都有CRC校驗(yàn)及其它檢
31、錯(cuò)措施,數(shù)據(jù)出錯(cuò)率極低。</p><p> ?。?0)通信介質(zhì)可采用雙絞線(xiàn),同軸電纜和光導(dǎo)纖維,一般采用廉價(jià)的雙絞線(xiàn)即可,無(wú)特殊要求。</p><p> ?。?1)節(jié)點(diǎn)在錯(cuò)誤嚴(yán)重的情況下,具有自動(dòng)關(guān)閉總線(xiàn)的功能,切斷它與總線(xiàn)的聯(lián)系,以使總線(xiàn)上的其他操作不受影響。</p><p> 2.3 CAN總線(xiàn)通信協(xié)議</p><p> 2.3.1&
32、#160; CAN總線(xiàn)的特點(diǎn)</p><p> CAN總線(xiàn)是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。其通訊介質(zhì)可以是雙絞線(xiàn)、同軸電纜或光纖。在汽車(chē)發(fā)動(dòng)機(jī)控制部件、傳感器等應(yīng)用中,總線(xiàn)的位速率最大可達(dá)1Mbit/s。CAN總線(xiàn)具有以下主要特性:</p><p> a.無(wú)破壞性的基于優(yōu)先權(quán)競(jìng)爭(zhēng)的總線(xiàn)仲裁</p><p> b.可借助接收濾波的多地
33、址幀傳送</p><p> c.具有錯(cuò)誤檢測(cè)與出錯(cuò)幀自動(dòng)重發(fā)功能</p><p> d.?dāng)?shù)據(jù)傳送方式可分為數(shù)據(jù)廣播式和遠(yuǎn)程數(shù)據(jù)請(qǐng)求式</p><p> 2.3.2 CAN總線(xiàn)幀格式</p><p> CAN總線(xiàn)通信協(xié)議包括CAN2.0A和CAN2.0B兩種,它們的幀格式:</p><p> ?。?)
34、CAN2.0A通信協(xié)議規(guī)定了4種不同的幀格式:</p><p> 數(shù)據(jù)幀 用于節(jié)點(diǎn)間傳遞數(shù)據(jù),是網(wǎng)絡(luò)信息的主體,其幀格式依次包括: 幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)、CRC場(chǎng)、ACK場(chǎng)和幀結(jié)束。其中數(shù)據(jù)段長(zhǎng)度可編程0~8個(gè)字節(jié)。</p><p> 遠(yuǎn)程幀 由在線(xiàn)單元發(fā)送,用于請(qǐng)求發(fā)送具有相同標(biāo)識(shí)符的數(shù)據(jù)幀,其幀格式與數(shù)據(jù)幀基本相同,但沒(méi)有數(shù)據(jù)場(chǎng)。]</p&g
35、t;<p> 出錯(cuò)幀 出錯(cuò)幀是檢測(cè)總線(xiàn)出錯(cuò)的一個(gè)信號(hào)標(biāo)志,由兩個(gè)不同的場(chǎng)構(gòu)成。第一個(gè)場(chǎng)由來(lái)自不同節(jié)點(diǎn)的錯(cuò)誤標(biāo)志疊加,第二個(gè)場(chǎng)為錯(cuò)誤界定符。CAN協(xié)議采用CRC檢驗(yàn)并可提供相應(yīng)的錯(cuò)誤處理功能,保證數(shù)據(jù)通訊的可靠性。</p><p> 超載幀 由超載標(biāo)識(shí)和超載界定符組成,表明邏輯鏈路控制層要求的內(nèi)部超載狀態(tài),并將由媒體訪(fǎng)問(wèn)控制層的一些出錯(cuò)條件而被啟動(dòng)發(fā)送。用于擴(kuò)展幀序列的延遲
36、時(shí)間。</p><p> ?。?)CAN2.0B通信協(xié)議分為兩種幀格式:</p><p><b> ?、?標(biāo)準(zhǔn)幀</b></p><p> 標(biāo)準(zhǔn)幀信息為11個(gè)字節(jié),包括兩部分:信息和數(shù)據(jù)部分。前3個(gè)字節(jié)為信息部分。1字節(jié)1為幀信息。第7位(FF)表示幀格式,在標(biāo)準(zhǔn)幀中,F(xiàn)F=0;第6位(RTR)表示幀的類(lèi)型,RTR=0表示為數(shù)據(jù)幀,RTR=1
37、表示為遠(yuǎn)程幀;DLC表示在數(shù)據(jù)幀時(shí)實(shí)際的數(shù)據(jù)長(zhǎng)度。2字節(jié)2、3為報(bào)文識(shí)別碼,11位有效。 </p><p> 3字節(jié)4~11為數(shù)據(jù)幀的實(shí)際數(shù)據(jù),遠(yuǎn)程幀時(shí)無(wú)效。 </p><p><b> ?、?擴(kuò)展幀</b></p><p> 1擴(kuò)展幀信息為13個(gè)字節(jié),包括兩部分,信息和數(shù)據(jù)部分。前5個(gè)字節(jié)為信息部分。字節(jié)1為幀信息。第7位(FF)表示幀格
38、式,在擴(kuò)展幀中,F(xiàn)F = 1;第6位(RTR)表示幀的類(lèi)型,RTR=0表示為數(shù)據(jù)幀,RTR=1表示為遠(yuǎn)程幀;DLC表示在數(shù)據(jù)幀時(shí)實(shí)際的數(shù)據(jù)長(zhǎng)度。</p><p> 2字節(jié)2~5為報(bào)文識(shí)別碼,其高29位有效。</p><p> 3字節(jié)6~13為數(shù)據(jù)幀的實(shí)際數(shù)據(jù),遠(yuǎn)程幀時(shí)無(wú)效。</p><p> 2.3.3 CAN總線(xiàn)位仲裁技術(shù)特點(diǎn)</p><
39、p> 只要總線(xiàn)空閑,任何單元都可以開(kāi)始發(fā)送報(bào)文。要對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,就必須將數(shù)據(jù)快速傳送,這就要求數(shù)據(jù)的物理傳輸通路有較高的速度。在幾個(gè)站同時(shí)需要發(fā)送數(shù)據(jù)時(shí),要求快速地進(jìn)行總線(xiàn)分配。如果2個(gè)或2個(gè)以上的單元同時(shí)開(kāi)始傳送報(bào)文,那么就會(huì)有總線(xiàn)訪(fǎng)問(wèn)沖突。通過(guò)使用識(shí)別符的位形式仲裁可以解決這個(gè)沖突。</p><p> CAN總線(xiàn)以報(bào)文為單位進(jìn)行數(shù)據(jù)傳送,報(bào)文的優(yōu)先級(jí)結(jié)合在11位標(biāo)識(shí)符中,具有最低二進(jìn)制數(shù)的標(biāo)識(shí)
40、符有最高的優(yōu)先級(jí)。這種優(yōu)先級(jí)一旦在系統(tǒng)設(shè)計(jì)時(shí)被確立后就不能再被更改。總線(xiàn)讀取中的沖突可通過(guò)位仲裁解決。 </p><p><b> 2.4本章小結(jié)</b></p><p> 首先,CAN控制器工作于多主方式,網(wǎng)絡(luò)中的各節(jié)點(diǎn)都可根據(jù)總線(xiàn)訪(fǎng)問(wèn)優(yōu)先權(quán)(取決于報(bào)文標(biāo)識(shí)符)采用無(wú)損結(jié)構(gòu)的逐位仲裁的方式競(jìng)爭(zhēng)向總線(xiàn)發(fā)送數(shù)據(jù),且CAN協(xié)議廢除了站地址編碼,而代之以對(duì)通信數(shù)據(jù)進(jìn)行編
41、碼,這可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這些特點(diǎn)使得CAN總線(xiàn)構(gòu)成的網(wǎng)絡(luò)各節(jié)點(diǎn)之間的數(shù)據(jù)通信實(shí)時(shí)性強(qiáng),并且容易構(gòu)成冗余結(jié)構(gòu),提高系統(tǒng)的可靠性和系統(tǒng)的靈活性。</p><p> 其次,CAN總線(xiàn)通過(guò)CAN控制器接口芯片TJA1050的兩個(gè)輸出端CANH和CANL與物理總線(xiàn)相連,而CANH端的狀態(tài)只能是高電平或懸浮狀態(tài),CANL端只能是低電平或懸浮狀態(tài)。</p><p> 而且,CAN具
42、有的完善的通信協(xié)議可由CAN控制器芯片及其接口芯片來(lái)實(shí)現(xiàn),從而大大降低系統(tǒng)開(kāi)發(fā)難度,縮短了開(kāi)發(fā)周期。另外,與其它現(xiàn)場(chǎng)總線(xiàn)比較而言,CAN總線(xiàn)是具有通信速率高、容易實(shí)現(xiàn)、且性?xún)r(jià)比高等諸多特點(diǎn)的一種已形成國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線(xiàn)。這些也是目前 CAN總線(xiàn)應(yīng)用于眾多領(lǐng)域,具有強(qiáng)勁的市場(chǎng)競(jìng)爭(zhēng)力的重要原因。</p><p> CAN (Controller Area Network)即控制器局域網(wǎng)絡(luò),屬于工業(yè)現(xiàn)場(chǎng)總線(xiàn)的范疇。與
43、一般的通信總線(xiàn)相比,CAN總線(xiàn)的數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性。由于其良好的性能及獨(dú)特的設(shè)計(jì),CAN總線(xiàn)越來(lái)越受到人們的重視。它在汽車(chē)領(lǐng)域上的應(yīng)用是最廣泛的,世界上一些著名的汽車(chē)制造廠(chǎng)商,如BENZ(奔馳)、BMW(寶馬)、PORSCHE(保時(shí)捷)和ROLLS-ROYCE(勞斯萊斯)等都采用了CAN總線(xiàn)來(lái)實(shí)現(xiàn)汽車(chē)內(nèi)部控制系統(tǒng)與各檢測(cè)和執(zhí)行機(jī)構(gòu)間的數(shù)據(jù)通信。同時(shí),由于CAN總線(xiàn)本身的特點(diǎn),其應(yīng)用范圍目前已不再局限于汽車(chē)行業(yè),而向
44、自動(dòng)控制、航空航天、航海、過(guò)程工業(yè)、機(jī)械工業(yè)、紡織機(jī)械、農(nóng)用機(jī)械、機(jī)器人、數(shù)控機(jī)床、醫(yī)療器械及傳感器等領(lǐng)域發(fā)展。CAN已經(jīng)形成國(guó)際標(biāo)準(zhǔn),并已被公認(rèn)為幾種最有前途的現(xiàn)場(chǎng)總線(xiàn)之一。</p><p> 第三章 系統(tǒng)硬件電路設(shè)計(jì)</p><p> 3.1智能儀表系統(tǒng)整體硬件構(gòu)成</p><p> 本文設(shè)計(jì)的智能儀表系統(tǒng)主要完成對(duì)直接現(xiàn)場(chǎng)模擬信號(hào)的采樣、計(jì)算、傳輸和顯示
45、,將數(shù)據(jù)和參數(shù)傳送到監(jiān)控計(jì)算機(jī)上進(jìn)行實(shí)時(shí)監(jiān)控管理,并在監(jiān)控計(jì)算機(jī)中進(jìn)行PID調(diào)節(jié),智能節(jié)點(diǎn)接收調(diào)節(jié)后的參數(shù),即對(duì)被控對(duì)象進(jìn)行控制。整個(gè)系統(tǒng)的工作過(guò)程如下:傳感器從現(xiàn)場(chǎng)采集數(shù)據(jù),通過(guò)中央處理器進(jìn)行轉(zhuǎn)換,轉(zhuǎn)化量程,然后送數(shù)碼管進(jìn)行顯示,并通過(guò)CAN總線(xiàn)將數(shù)據(jù)傳送到監(jiān)控計(jì)算機(jī)進(jìn)行顯示和分析,進(jìn)行PID調(diào)節(jié)后的數(shù)據(jù)下傳到對(duì)應(yīng)節(jié)點(diǎn),控制被控對(duì)象。同時(shí),在其它節(jié)點(diǎn)有數(shù)據(jù)請(qǐng)求的情況下,可以將數(shù)據(jù)通過(guò)CAN總線(xiàn)送向其它智能節(jié)點(diǎn)。</p>
46、<p> 根據(jù)系統(tǒng)要實(shí)現(xiàn)的功能及經(jīng)濟(jì)性和靈活性的設(shè)計(jì)要求,本設(shè)計(jì)中選取STC89C52作為中央處理器,STC89C52完成傳感器數(shù)據(jù)的采集、數(shù)碼管顯示、數(shù)據(jù)發(fā)送等控制。運(yùn)用獨(dú)立的CAN控制器SJAl000結(jié)合CAN總線(xiàn)收發(fā)器TJA1050,SJAl000是一個(gè)獨(dú)立的CAN控制器,它和以前的PCA82C200在硬件和軟件上都兼容,并且具有一系列先進(jìn)的功能適合于多種應(yīng)用。TJA1050負(fù)責(zé)與CAN物理層的連接,接收和發(fā)送數(shù)據(jù)。解
47、決了CAN總線(xiàn)雖然可連接設(shè)備數(shù)目多、傳輸距離遠(yuǎn)、抗干擾能力強(qiáng),但不能直接與計(jì)算機(jī)相連接的問(wèn)題。智能節(jié)點(diǎn)中,微處理器由兩片單片機(jī)組成,兩片單片機(jī)之間利用串口進(jìn)行通信,其中一片主要負(fù)責(zé)數(shù)據(jù)的采集和顯示,另一片負(fù)責(zé)SJAl000的初始化,并通過(guò)控制SJAl000實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。利用兩片單片機(jī)來(lái)實(shí)現(xiàn)智能節(jié)點(diǎn)的功能,為系統(tǒng)的模塊化開(kāi)發(fā)提供了便利。</p><p> 3.2 CAN通
48、信模塊硬件設(shè)計(jì)</p><p> 本設(shè)計(jì)中選用獨(dú)立的CAN控制器,因?yàn)楠?dú)立的CAN控制器使用上比較靈活,可以與多種類(lèi)型的單片機(jī)、微型計(jì)算機(jī)的各類(lèi)標(biāo)準(zhǔn)總線(xiàn)進(jìn)行接口組合,而且在目前我國(guó)市面上很容易購(gòu)買(mǎi),并且性?xún)r(jià)比高。SJAl000是一種獨(dú)立的CAN控制器,主要用于移動(dòng)目標(biāo)和一般工業(yè)環(huán)境中的區(qū)域網(wǎng)絡(luò)控制。</p><p> 3.2.1 SJAl000有以下基本特性:</p>&
49、lt;p> ·引腳和電氣參數(shù)與PCA82C200獨(dú)立CAN控制器兼容。</p><p> ·具有PCA82C200模式(即默認(rèn)的BasicCAN模式)。</p><p> ·有擴(kuò)展的接收緩沖器64字節(jié),先進(jìn)先出(FIFO)。</p><p> ·支持CAN 2.OA和CAN 2.OB協(xié)議。</p>
50、<p> ·支持11位和29位標(biāo)識(shí)碼。</p><p> ·通信位速率可達(dá)1Mbps。</p><p> ·PeliCAN模式的擴(kuò)展功能:可讀/寫(xiě)訪(fǎng)問(wèn)的錯(cuò)誤計(jì)數(shù)寄存器;可編程的錯(cuò)</p><p> 誤報(bào)警限額寄存器;最近一次錯(cuò)誤代碼寄存器;對(duì)每一個(gè)CAN總線(xiàn)錯(cuò)誤</p><p> 的中斷;有具
51、體位表示的仲裁丟失中斷;單次發(fā)送(無(wú)重發(fā));只聽(tīng)模</p><p> 式(無(wú)確認(rèn)、無(wú)激活的錯(cuò)誤標(biāo)志);支持熱插拔(軟件進(jìn)行位速率檢測(cè));</p><p> 驗(yàn)收濾波器的擴(kuò)展(4字節(jié)的驗(yàn)收代碼,4字節(jié)的屏蔽);接收自身報(bào)文</p><p><b> (自接收請(qǐng)求);</b></p><p> ·24MHz
52、時(shí)鐘頻率;</p><p> ·可與不同的微處理器接口;</p><p> ·可編程的CAN輸出驅(qū)動(dòng)器配置;</p><p> ·溫度適應(yīng)范圍大(一40~+125℃)。</p><p> CAN核心控制塊主要是控制CAN幀的接收和發(fā)送。SJAl000的發(fā)送緩沖器可以存儲(chǔ)一個(gè)完整的信息(擴(kuò)展的或標(biāo)準(zhǔn)的),當(dāng)
53、主控制器開(kāi)始一個(gè)傳送時(shí),邏輯管理接口強(qiáng)迫CAN核心控制塊讀發(fā)送緩沖器中的CAN信息。當(dāng)收到一個(gè)消息時(shí),CAN核心控制塊將連續(xù)的位轉(zhuǎn)換成標(biāo)準(zhǔn)的數(shù)據(jù)存放在接收過(guò)濾器中,通過(guò)可編程的過(guò)濾器SJAl000可以判定哪條消息是被主控制器接收的。所有存放在接收過(guò)濾器中的已經(jīng)接收信息被保存于接收隊(duì)列中。根據(jù)操作的模式,可以保存最大長(zhǎng)度為64字節(jié)的信息。這使得用戶(hù)在指定系統(tǒng)中斷服務(wù)和中斷優(yōu)先級(jí)時(shí)更具有彈性,因?yàn)槌霈F(xiàn)數(shù)據(jù)溢出的可能性己經(jīng)被減小。</p
54、><p> 3.2.2 CAN總線(xiàn)收發(fā)器TJA1050</p><p> 通常情況下使用SJAl000獨(dú)立CAN總線(xiàn)控制器可以完成CAN總線(xiàn)的通訊任務(wù),但是所存在的不足之處就是它的驅(qū)動(dòng)能力不夠,因此需要外加一個(gè)TJA1050總線(xiàn)驅(qū)動(dòng)芯片來(lái)彌補(bǔ)這一缺陷,使系統(tǒng)達(dá)到用戶(hù)滿(mǎn)意的水平。TJA1050是CAN控制器與物理總線(xiàn)之間的接口,它最初是為汽車(chē)中的高速應(yīng)用(達(dá)1Mbps)而設(shè)計(jì)的。器件可以提供
55、對(duì)總線(xiàn)的差動(dòng)發(fā)送和接收功能。</p><p> TJA1050的主要特性如下:</p><p> ·與IS01 1898標(biāo)準(zhǔn)完全兼容;</p><p> ·高速率(最高可達(dá)1Mbps);</p><p> · 具有抗汽車(chē)環(huán)境下的瞬間干擾及保護(hù)總線(xiàn)能力;</p><p>
56、3;采用斜率控制,降低射頻干擾;</p><p><b> ·過(guò)熱保護(hù);</b></p><p> ·總線(xiàn)與電源及地之間的短路保護(hù);</p><p><b> ·低電流待機(jī)模式;</b></p><p> ·未上電節(jié)點(diǎn)不會(huì)干擾總線(xiàn);</p>
57、<p> ·總線(xiàn)至少可連接1lO個(gè)節(jié)點(diǎn)。</p><p> 引腳8(Rs)允許選擇三種不同的工作方式:高速、斜率控制和待機(jī)。在高速工作方式下,發(fā)送器輸出晶體管已經(jīng)可以以盡可能快的速度啟動(dòng)和關(guān)閉。在這種模式下,無(wú)需采取任何措施限制上升和下降的斜率。對(duì)于較低速度和較短的總線(xiàn)長(zhǎng)度,可以用非屏蔽雙絞線(xiàn)或平行線(xiàn)做總線(xiàn)。為降低射頻干擾,應(yīng)該限制上升和下降的斜率。上升和下降的斜率可以通過(guò)Rs引腳與同
58、地連接的電阻進(jìn)行控制,斜率正比于Rs引腳上的電流輸出。</p><p> 3.2.3 微控制器STC89C52單片機(jī)</p><p> STC89C52是一個(gè)低電壓,高性能CMOS8位單片機(jī)帶有8K字節(jié)的可反復(fù)擦寫(xiě)的程序存儲(chǔ)器(PENROM)。和512字節(jié)的存取數(shù)據(jù)存儲(chǔ)器(RAM),這種器件采用STC公司的高密度、不容易丟失存儲(chǔ)技術(shù)生產(chǎn),并且能夠與MCS-51系列的單片機(jī)兼容。片內(nèi)含有
59、8位中央處理器和閃爍存儲(chǔ)單元,有較強(qiáng)的功能的STC89C52單片機(jī)能夠被應(yīng)用到控制領(lǐng)域中。</p><p><b> 引腳描述</b></p><p> VCC:電源電壓 </p><p><b> GND:地</b></p><p><b> P0口:</b>&
60、lt;/p><p> P0口是一組8位漏極開(kāi)路雙向I/O口,即地址/數(shù)據(jù)總線(xiàn)復(fù)用口。作為輸出口時(shí),每一個(gè)管腳都能夠驅(qū)動(dòng)8個(gè)TTL電路。當(dāng)“1”被寫(xiě)入P0口時(shí),每個(gè)管腳都能夠作為高阻抗輸入端。P0口還能夠在訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),轉(zhuǎn)換地址和數(shù)據(jù)總線(xiàn)復(fù)用,并在這時(shí)激活內(nèi)部的上拉電阻。P0口在閃爍編程時(shí),P0口接收指令,在程序校驗(yàn)時(shí),輸出指令,需要接電阻。</p><p><b&g
61、t; P1口:</b></p><p> P1口一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的電阻把端口拉到高電平,此時(shí)可作為輸入口。因?yàn)閮?nèi)部有電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)輸出一個(gè)電流。閃爍編程時(shí)和程序校驗(yàn)時(shí),P1口接收低8位地址。</p><p><b> P2口:</b></p>
62、;<p> P2口是一個(gè)內(nèi)部帶有上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)4個(gè)TTL電路。對(duì)端口寫(xiě)“1”,通過(guò)內(nèi)部的電阻把端口拉到高電平,此時(shí),可作為輸入口。因?yàn)閮?nèi)部有電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流。在訪(fǎng)問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口送出高8位地址數(shù)據(jù)。在訪(fǎng)問(wèn)8位地址的外部數(shù)據(jù)存儲(chǔ)器時(shí),P2口線(xiàn)上的內(nèi)容在整個(gè)運(yùn)行期間不變。閃爍編程或校驗(yàn)時(shí),P2口接收高位地址和其它控制信號(hào)。&
63、lt;/p><p><b> P3口:</b></p><p> P3口是一組帶有內(nèi)部電阻的8位雙向I/O口,P3口輸出緩沖故可驅(qū)動(dòng)4個(gè)TTL電路。對(duì)P3口寫(xiě)如“1”時(shí),它們被內(nèi)部電阻拉到高電平并可作為輸入端時(shí),被外部拉低的P3口將用電阻輸出電流。</p><p> P3口除了作為一般的I/O口外,更重要的用途是它的第二功能,如下表所示:&l
64、t;/p><p> P3口還接收一些用于閃爍存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。</p><p><b> RST:</b></p><p> 復(fù)位輸入。當(dāng)震蕩器工作時(shí),RET引腳出現(xiàn)兩個(gè)機(jī)器周期以上的高電平將使單片機(jī)復(fù)位。</p><p><b> ALE/:</b></p><
65、;p> 當(dāng)訪(fǎng)問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪(fǎng)問(wèn)外部存儲(chǔ)器,ALE以時(shí)鐘震蕩頻率的1/16輸出固定的正脈沖信號(hào),因此它可對(duì)輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖時(shí),閃爍存儲(chǔ)器編程時(shí),這個(gè)引腳還用于輸入編程脈沖。如果必要,可對(duì)特殊寄存器區(qū)中的8EH單元的D0位置禁止ALE操作。這個(gè)位置后只有一條MOVX和MOVC指令A(yù)LE才會(huì)被應(yīng)用。此外,這個(gè)
66、引腳會(huì)微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效。</p><p><b> PSEN:</b></p><p> 程序儲(chǔ)存允許輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C51由外部程序存儲(chǔ)器讀取指令時(shí),每個(gè)機(jī)器周期兩次PSEN 有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪(fǎng)問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的PSEN 信號(hào)不出現(xiàn)。</p><p&g
67、t;<b> EA/VPP:</b></p><p> 外部訪(fǎng)問(wèn)允許。欲使中央處理器僅訪(fǎng)問(wèn)外部程序存儲(chǔ)器,EA端必須保持低電平。需要注意的是:如果加密位LBI被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端為高電平,CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。閃爍存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電壓VPP,當(dāng)然這必須是該器件是使用12V編程電壓VPP。</p><p&g
68、t; XTAL1:震蕩器反相放大器及內(nèi)部時(shí)鐘發(fā)生器的輸入端。</p><p> XTAL2:震蕩器反相放大器的輸出端。</p><p> 3.2.4 數(shù)字溫度傳感器DS18B20</p><p> DSI8B20是DALLAS公司的最新單線(xiàn)數(shù)字溫度傳感器,它體積小、經(jīng)濟(jì)實(shí)惠。是世界上第一片支持“一線(xiàn)總線(xiàn)”接口的溫度傳感器。一線(xiàn)總線(xiàn)獨(dú)特而且經(jīng)濟(jì)的特點(diǎn),使用戶(hù)可
69、輕松地組建傳感器網(wǎng)絡(luò),為測(cè)量系統(tǒng)的構(gòu)建引入全新概念。它的測(cè)量溫度范圍為-55~+125℃?,F(xiàn)場(chǎng)溫度直接以“一線(xiàn)總線(xiàn)”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如環(huán)境控制、設(shè)備或過(guò)程控制、測(cè)溫類(lèi)消費(fèi)電子產(chǎn)品等。與前一代產(chǎn)品不同,新的產(chǎn)品支持3~5.5 V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。DSI8B20可以程序設(shè)定9~12位的分辨率,精度為±0.5℃??梢赃x擇更小的封
70、裝方式,更寬的電壓適用范圍。分辨率設(shè)定及用戶(hù)設(shè)定的報(bào)警溫度存儲(chǔ)在EPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的,性能價(jià)格比也非常出色,繼“一線(xiàn)總線(xiàn)”的早期產(chǎn)品后,DSI8B20開(kāi)辟了溫度傳感器技術(shù)的新概念。本次設(shè)計(jì)CAN總線(xiàn)數(shù)據(jù)通信的溫度采集就由DSI8B20完成。將DSI8B20的GND腳接地,VDD腳接高電平,而單總線(xiàn)DQ腳接單片機(jī)的外部中斷1腳,具體的采集電路如圖所示。</p><p&g
71、t;<b> 溫度采集電路</b></p><p> 3.2.5 八段數(shù)碼管 </p><p> LED(Light Editing Diode)是發(fā)光二極管的縮寫(xiě)。LED數(shù)碼管里面有8只發(fā)光二極管,分別記著a、b、c、d、e、f、g、dp,其中dp為小數(shù)點(diǎn),中間的是公共端(COM)。市面上用的數(shù)碼管有兩種:共陽(yáng)極與共陰極。共陽(yáng)數(shù)碼管是指將所有發(fā)光二極管的陽(yáng)極接
72、到一起形成公共陽(yáng)極(COM)的數(shù)碼管,共陽(yáng)數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陰極為高電平時(shí),相應(yīng)字段就不亮。共陰數(shù)碼管是指將所有發(fā)光二極管的陰極接到一起形成公共陰極(COM)的數(shù)碼管,共陰數(shù)碼管在應(yīng)用時(shí)應(yīng)將公共極COM接到地線(xiàn)GND上,當(dāng)某一字段發(fā)光二極管的陽(yáng)極為高電平時(shí),相應(yīng)字段就點(diǎn)亮,當(dāng)某一字段的陽(yáng)極為低電平時(shí),相應(yīng)字段就不亮。原理圖如下圖所示:</p&
73、gt;<p> 3.2.6 74HC595 </p><p> 74HC595是一款漏極開(kāi)路輸出的COMS移位寄存器,輸出端口為可控制的三態(tài)輸出端,亦能串行輸出控制下一級(jí)級(jí)聯(lián)芯片。</p><p><b> 特點(diǎn):</b></p><p> (1)高速移位時(shí)鐘頻率Fmax>25Mhz
74、</p><p> ?。?)標(biāo)準(zhǔn)串行(SPI)接口</p><p> (3)COMS串行輸出,可用于多個(gè)設(shè)備的級(jí)聯(lián)</p><p> 74HC595電路圖如下圖所示:</p><p><b> 3.3 本章小結(jié)</b></p><p> 從圖中可以看出,電路主要由4部分組成:微控制器89C
75、52、獨(dú)立CAN通信控制器SJAl000、CAN總線(xiàn)收發(fā)器TJA1050和數(shù)碼管顯示。微處理器89C52負(fù)責(zé)SJAl000的初始化,并通過(guò)控制SJAl000實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。電路中SJAl000的AD0~AD7連接到89C52的P0口,CS連接到89C52的P2.0。P2.0為低電平時(shí),CPU片外存儲(chǔ)器地址可選中SJA I 000,CPU通過(guò)這些地址可對(duì)SJA1000執(zhí)行相應(yīng)的讀/寫(xiě)操作。SJAl000的PAD、WR、AL
76、E分別與89C52的對(duì)應(yīng)腳相連,J,Ⅳr接89C52的INTO,89C52也可以通過(guò)中斷方式訪(fǎng)問(wèn)SJAl000。</p><p> 第四章 CAN數(shù)據(jù)通信接口模塊軟件設(shè)計(jì)</p><p> 4.1 CAN總線(xiàn)數(shù)據(jù)通信程序</p><p> 通信接口模塊程序主要包括三部分:初始化子程序、發(fā)送子程序和接收子程序。初始化程序主要是通過(guò)CAN控制器控制段中的寄存器寫(xiě)入
77、控制字,從而確定CAN控制器的工作方式等。有三種方式進(jìn)入初始化程序:一是上電復(fù)位,二是硬件復(fù)位;三是軟件復(fù)位,即在運(yùn)行期間通過(guò)給CAN控制器發(fā)一個(gè)復(fù)位請(qǐng)求,置復(fù)位請(qǐng)求位為1。</p><p> CAN節(jié)點(diǎn)的主函數(shù)模塊完成的工作是:根據(jù)接收到的控制命令消息的數(shù)據(jù)域信息幀代號(hào),做出不同的處理,例如對(duì)節(jié)點(diǎn)進(jìn)行初始化,從CAN總線(xiàn)接收和發(fā)送消息,進(jìn)行控制命令中的數(shù)字輸出等。</p><p>
78、CAN總線(xiàn)收發(fā)主程序:</p><p> #include <STC89C51.h></p><p> #include <stdio.h></p><p> #include <intrins.h></p><p> #include <can1.h></p><p
79、> unsigned char code numtab[16]={0x24,0x6F,0xE0,0x62,0x2B,0x32,0x30,0x67,0x20,0x22,0x21,0x38,0xB4,0x68,0xB0,0xB1};</p><p> void delayms(unsigned int t);</p><p> /**************************
80、*********************** </p><p> Function: main()// 函數(shù)名稱(chēng) </p><p> Description: // 函數(shù)功能、性能等的描述 </p><p> Calls: delayms()// 被本函數(shù)調(diào)用的函數(shù)清單 </p><p> C
81、alled By: // 調(diào)用本函數(shù)的函數(shù)清單 </p><p> Table Accessed: // 被訪(fǎng)問(wèn)的表(此項(xiàng)僅對(duì)于牽扯到數(shù)據(jù)庫(kù)操作的程序)</p><p> Table Updated: // 被修改的表(此項(xiàng)僅對(duì)于牽扯到數(shù)據(jù)庫(kù)操作的程序)</p><p> Input: // 輸入?yún)?shù)說(shuō)明,包括每個(gè)參數(shù)的作
82、</p><p> // 用、取值說(shuō)明及參數(shù)間關(guān)系。 </p><p> Output: // 對(duì)輸出參數(shù)的說(shuō)明。 </p><p> Return: // 函數(shù)返回值的說(shuō)明 </p><p> Others: // 其它說(shuō)明 </p><p> ******
83、*******************************************/ </p><p> void main()</p><p><b> {</b></p><p> unsigned char i;</p><p> WDT_CONTR= 0x00; //關(guān)閉看門(mén)狗</p>
84、<p> DISP_PORT = numtab[15]; //顯示F,表示發(fā)送</p><p> delayms(200);</p><p> TestCan();</p><p><b> while(1)</b></p><p><b> {</b>&l
85、t;/p><p> DISP_PORT = numtab[0]; //顯示0</p><p> delayms(50);</p><p> DISP_PORT = numtab[0]; //顯示1</p><p> delayms(50);</p><p> for(i=0;i<16;i++)
86、</p><p><b> {</b></p><p> DISP_PORT = numtab[i]; //循環(huán)顯示0~F</p><p> delayms(50);</p><p><b> }</b></p><p><b> }</b>
87、</p><p><b> }</b></p><p> /************************************************* </p><p> Function: delayms()// 函數(shù)名稱(chēng) </p><p> Description: delay f
88、unction// 函數(shù)功能、性能等的描述 </p><p> Calls: // 被本函數(shù)調(diào)用的函數(shù)清單 </p><p> Called By: // 調(diào)用本函數(shù)的函數(shù)清單 </p><p> Table Accessed: // 被訪(fǎng)問(wèn)的表(此項(xiàng)僅對(duì)于牽扯到數(shù)據(jù)庫(kù)操作的程序)</p><p> T
89、able Updated: // 被修改的表(此項(xiàng)僅對(duì)于牽扯到數(shù)據(jù)庫(kù)操作的程序)</p><p> Input: t// 輸入?yún)?shù)說(shuō)明,包括每個(gè)參數(shù)的作 </p><p> // 用、取值說(shuō)明及參數(shù)間關(guān)系。 </p><p> Output: // 對(duì)輸出參數(shù)的說(shuō)明。 </p><p> Re
90、turn: // 函數(shù)返回值的說(shuō)明 </p><p> Others: // 其它說(shuō)明 </p><p> *************************************************/ </p><p> void delayms(unsigned int t)</p><p>&
91、lt;b> {</b></p><p> unsigned int i,j;</p><p> for(i=0;i<t;i++)</p><p> for(j=0;j<1000;j++)</p><p><b> {;}</b></p><p><b&
92、gt; }</b></p><p> 4.2 DS18B20 溫度采集程序</p><p> 本系統(tǒng)采用STC公司生產(chǎn)STC89C52單片機(jī)作為溫度數(shù)據(jù)采集和傳輸?shù)闹骺匦酒瑴囟葌鞲衅鞑捎脝慰偩€(xiàn)方式的集成數(shù)字溫度傳感器DS18B20。</p><p> DS18B20 溫度讀取函數(shù)參考步驟:</p><p> DS18B
93、20 開(kāi)始轉(zhuǎn)換:</p><p> 1. DS18B20 復(fù)位。</p><p> 2. 寫(xiě)入跳過(guò) ROM 的字節(jié)命令, 0xCC 。</p><p> 3. 寫(xiě)入開(kāi)始轉(zhuǎn)換的功能命令, 0x44 。</p><p> 4. 延遲大約 750~900 毫秒</p><p> DS18B20 讀暫存數(shù)據(jù):<
94、/p><p> 1.DS18B20 復(fù)位。</p><p> 2. 寫(xiě)入跳過(guò) ROM 的字節(jié)命令, 0xCC 。</p><p> 3. 寫(xiě)入讀暫存的功能命令, 0xee 。</p><p> 4. 讀入第 0 個(gè)字節(jié) LS Byte ,轉(zhuǎn)換結(jié)果的低八位。</p><p> 5. 讀入第 1 個(gè)字節(jié) MS Byt
95、e ,轉(zhuǎn)換結(jié)果的高八位。</p><p> 6.DS18B20 復(fù)位,表示讀取暫存結(jié)束。</p><p> DS18B20 溫度讀取函數(shù)參考函數(shù):</p><p> sbit DQ=P2^2;//18B20的接口</p><p> uint wendu;//溫度值</p><p> /************
96、************18b20的程序************************/</p><p> void delay_18B20(unsigned int i)//延時(shí)1微秒</p><p> { while(i--);}</p><p> void ds1820rst()/*ds1820復(fù)位*/</p><p>
97、 { uchar x=0;</p><p> DQ = 1; //DQ復(fù)位</p><p> delay_18B20(4); //延時(shí)</p><p> DQ = 0; //DQ拉低</p><p> delay_18B20(100); //精確延時(shí)大于480us</p><p&
98、gt; DQ = 1; //拉高</p><p> delay_18B20(40); </p><p><b> } </b></p><p> uchar ds1820rd()/*讀數(shù)據(jù)*/</p><p><b> {</b></p><p>
99、 uchar i=0;</p><p> uchar dat = 0;</p><p> for (i=8;i>0;i--)</p><p> { DQ = 0; //給脈沖信號(hào)</p><p><b> dat>>=1;</b></p><p> DQ = 1;
100、 //給脈沖信號(hào)</p><p><b> if(DQ)</b></p><p> dat|=0x80;</p><p> delay_18B20(10);</p><p><b> }</b></p><p> return(dat);</p>&l
101、t;p><b> }</b></p><p> void ds1820wr(uchar wdata)/*寫(xiě)數(shù)據(jù)*/</p><p><b> {</b></p><p> uchar i=0;</p><p> for (i=8; i>0; i--)</p>&l
102、t;p><b> { </b></p><p> DQ = 0;DQ = wdata&0x01;</p><p> delay_18B20(10);DQ = 1;</p><p> wdata>>=1;</p><p><b> }</b></p>
103、<p><b> }</b></p><p> uchar read_temp()/*讀取溫度值并轉(zhuǎn)換*/</p><p><b> {</b></p><p> uchar a,b,shi,ge;</p><p> ds1820rst(); </p>&l
104、t;p> ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/</p><p> ds1820wr(0x44);//*啟動(dòng)溫度轉(zhuǎn)換*/</p><p> ds1820rst(); </p><p> ds1820wr(0xcc);//*跳過(guò)讀序列號(hào)*/ </p><p> ds1820wr(0xbe);//*讀取溫度*/
105、 </p><p> a=ds1820rd();</p><p> b=ds1820rd();</p><p><b> wendu=b;</b></p><p> wendu<<=8;</p><p> wendu=wendu|a;</p><p>
106、 wendu=wendu*(0.625);//溫度值擴(kuò)大10倍,精確到1位小數(shù)</p><p> shi=wendu%1000/100;</p><p> ge=wendu%100/10;</p><p><b> }</b></p><p> 4.3 74HC595驅(qū)動(dòng)數(shù)碼管顯示程序</p>&
107、lt;p> 74HC595是具有8位移位寄存器和一個(gè)存儲(chǔ)器,三態(tài)輸出功能。 移位寄存器和存儲(chǔ)器是分別的時(shí)鐘。數(shù)據(jù)在SCHcp的上升沿輸入,在STcp的上升沿進(jìn)入的存儲(chǔ)寄存器中去。如果兩個(gè)時(shí)鐘連在一起,則移位寄存器總是比存儲(chǔ)寄存器早一個(gè)脈沖。 移位寄存器有一個(gè)串行移位輸入(Ds),和一個(gè)串行輸出(Q7’),和一個(gè)異步的低電平復(fù)位,存儲(chǔ)寄存器有一個(gè)并行8位的,具備三態(tài)的總線(xiàn)輸出,當(dāng)使能OE時(shí)(為低電平),存儲(chǔ)寄存器的數(shù)據(jù)輸出到總線(xiàn)。
108、</p><p> 74HC595驅(qū)動(dòng)數(shù)碼管顯示程序:</p><p> #include<reg52.h></p><p> #include <intrins.h></p><p> #define uint unsigned int</p><p> #define uchar
109、unsigned char</p><p> sbit XSDAT=P0^0; //數(shù)據(jù)</p><p> sbit XSCLK=P0^1; //時(shí)鐘</p><p> sbit GW=P0^2;</p><p> int count=0;</p><p> code uchar
110、TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};</p><p> uint l=0,h=0,tt=0,d=0;</p><p> void delay(uint z) //延時(shí)函數(shù)</p><p> { uint x,y;
111、</p><p> for(x=z;x>0;x--)</p><p> for(y=110;y>0;y--);</p><p><b> }</b></p><p> static void WR_595(uchar data num2 )//寫(xiě)</p><p><b&g
112、t; {</b></p><p> uchar count1; </p><p> for(count1=0;count1<=7;count1++)</p><p><b> {</b></p><p> if((num2&0x80)==0x80) //*最高位為1,則向SDAT
113、A_595發(fā)送1*/</p><p> XSDAT=1; //*發(fā)出數(shù)據(jù)的最高位*/</p><p><b> else </b></p><p> XSDAT=0; </p><p> num2<<=1; //*右移位*/</p><p&g
114、t; XSCLK=0; //*產(chǎn)生上生沿*/</p><p><b> XSCLK=1; </b></p><p><b> } </b></p><p><b> }</b></p><p> void disp(void)</p>
115、<p><b> { </b></p><p> WR_595(TAB[1]);//顯示十位小時(shí)數(shù)碼管的位 ,如果顯示顛倒可以調(diào)整位選</p><p> WR_595(TAB[2]);//顯示個(gè)位小時(shí)數(shù)碼管的位</p><p><b> GW=0;</b></p><p>
116、<b> _nop_();</b></p><p><b> _nop_();</b></p><p> GW=1; /*上升沿鎖存數(shù)據(jù)*/</p><p><b> }</b></p><p> void main()</p><p>&l
117、t;b> { </b></p><p><b> while(1)</b></p><p> {disp();</p><p><b> delay(1);</b></p><p><b> }</b></p><
118、;p><b> }</b></p><p><b> 結(jié)論</b></p><p> 論文在闡述并研究了自動(dòng)控制儀表的變遷和CAN現(xiàn)場(chǎng)總線(xiàn)協(xié)議規(guī)則的基礎(chǔ)上,完成了基于CAN協(xié)議的CAN通訊,CAN通訊的硬件和軟件設(shè)計(jì)。成功地把SJAl000 CAN控制器應(yīng)用于CAN通訊中,實(shí)現(xiàn)了現(xiàn)場(chǎng)信號(hào)的采集、數(shù)字信號(hào)在CAN總線(xiàn)上的傳輸?shù)裙δ?。在?/p>
119、硬件設(shè)計(jì)中還采用了一系列的抗干擾措施,使得這個(gè)系統(tǒng)可適應(yīng)較為惡劣的工作環(huán)境。</p><p> 基于CAN協(xié)議的現(xiàn)場(chǎng)總線(xiàn)儀表與傳統(tǒng)的儀表相比,在功能上發(fā)生了飛躍,即</p><p> 實(shí)現(xiàn)了雙向數(shù)字通信的功能,其可靠性高、穩(wěn)定性好、抗干擾能力強(qiáng)、通信速率</p><p> 高、維護(hù)成本低,并且具有開(kāi)放性、實(shí)時(shí)性,在自動(dòng)控制領(lǐng)域得到較廣泛的應(yīng)用。</p&g
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于can總線(xiàn)的溫度測(cè)控系統(tǒng)的設(shè)計(jì) 畢業(yè)論文
- 帶CAN總線(xiàn)的智能溫度測(cè)量?jī)x表的研制——基于CAN總線(xiàn)的通信系統(tǒng)的研究.pdf
- 基于CAN總線(xiàn)的溫度計(jì)量?jī)x表管理控制系統(tǒng)的網(wǎng)絡(luò)開(kāi)發(fā).pdf
- 基于CAN總線(xiàn)的汽車(chē)儀表研究.pdf
- 電廠(chǎng)溫度儀表自動(dòng)校驗(yàn)的研究.pdf
- 基于神經(jīng)網(wǎng)絡(luò)的智能溫度儀表的研制.pdf
- 基于can總線(xiàn)的溫度檢測(cè)系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于can總線(xiàn)的汽車(chē)儀表設(shè)計(jì)【畢業(yè)優(yōu)秀答辯資料】【全套】
- 溫度監(jiān)測(cè)系統(tǒng)虛擬儀表畢業(yè)論文
- 基于CAN總線(xiàn)的溫度控制系統(tǒng)研究.pdf
- 基于can總線(xiàn)的樓宇自動(dòng)化系統(tǒng)設(shè)計(jì)畢業(yè)論文
- 基于CAN總線(xiàn)的溫度監(jiān)控系統(tǒng).pdf
- 基于CAN總線(xiàn)的智能儀表的研究.pdf
- 基于CAN協(xié)議的現(xiàn)場(chǎng)總線(xiàn)儀表的設(shè)計(jì).pdf
- 基于CAN總線(xiàn)的智能溫度變送器.pdf
- 基于CAN總線(xiàn)的汽車(chē)儀表設(shè)計(jì)開(kāi)題報(bào)告.doc
- [cad圖紙全套]基于can總線(xiàn)的汽車(chē)儀表設(shè)計(jì)
- 基于CAN總線(xiàn)的汽車(chē)數(shù)字儀表系統(tǒng)設(shè)計(jì).pdf
- 基于CAN總線(xiàn)的汽車(chē)智能儀表設(shè)計(jì).pdf
- 基于can總線(xiàn)的電梯智能控制系統(tǒng)呼梯控制器設(shè)計(jì)與開(kāi)發(fā)——畢業(yè)論文
評(píng)論
0/150
提交評(píng)論