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