基于485通信的網絡系統(tǒng)畢業(yè)設計_第1頁
已閱讀1頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  基于485通信的網絡系統(tǒng)研究與設計</p><p><b>  摘要</b></p><p>  基于51單片機的485網絡系統(tǒng)的算法研究,通過485總線組成遠距離數據采集控制系統(tǒng)。在分析了不同類型的單片機的特點及單片機與單片機機通信技術的基礎上,設計了單片機控制的采集系統(tǒng),并通過串口通信實現單片機與主機之間的通信,實現數據的傳送并將數據在主機上

2、顯示及存儲,完成單機的多通道數據采集系統(tǒng)的設計及實現。通信包括一個主機和兩個從機,主機完成報警門限設置及1602LCD的顯示,2個從機分別從測量環(huán)境溫度、濕度。一個主機和兩個從機的軟件模塊的算法分析。溫度DS18B20傳感器,濕度傳感器HS1101,分別采集數據通過485總線傳輸到由51單片機做的主機,主機判斷是否超過門限設置,如果超過門限設置就報警。整個網絡同步運行。設置主機和從機之間的通訊協(xié)議,以便整個網絡更好的構成一個獨立框架不受

3、其它信號的干擾。提高整個網絡軟硬件方面的可靠性。</p><p>  關鍵詞: 485總線 數據采集 通信協(xié)議 </p><p>  Communications network system research and design based on the 485</p><p><b>  Abstract</b&g

4、t;</p><p>  485 network system of the Algorithm and the research based on the 51SCM. On the analysis of the different types of single chip microcomputer and the characteristics of the single chip microcomput

5、er and PC communications technology, and on the basis of the design of the single chip computer control acquisition system, and through the realizes serial communication of communication between the microcontroller and h

6、ost, realize the data to the data transmission in host display and storage, complete </p><p>  Keywords:485 bus; Data acquisition ; Protocols Communication </p><p><b>  目錄</b></p&

7、gt;<p><b>  第一章 緒論1</b></p><p>  1.1 課題研究背景概述1</p><p>  1.2 課題研究的意義1</p><p>  1.3 本論文的主要內容和結構安排2</p><p>  第二章 系統(tǒng)分析及總體設計3</p><p>  2

8、.1系統(tǒng)功能簡介3</p><p>  2.2系統(tǒng)總統(tǒng)結構設計3</p><p>  2.3 本章小結3</p><p>  第三章 系統(tǒng)各模塊硬件設計及軟件實現4</p><p>  3.1溫度采集模塊設計4</p><p>  3.1.1 溫度DS18B20傳感器工作原理4</p><

9、;p>  3.1.2 DS18B20連接單片機的電路圖4</p><p>  3.1.3 溫度采集模塊流程圖5</p><p>  3.2濕度采集模塊設計5</p><p>  3.2.1濕度傳感器HS11015</p><p>  3.2.2濕度傳感器HS1101與單片機連接圖5</p><p>  

10、3.2.3濕度采集模塊流程圖7</p><p>  3.3報警模塊設計7</p><p>  3.4液晶顯示模塊8</p><p>  3.3.1 字符型液晶顯示模塊引腳8</p><p>  3.3.2 字符型液晶顯示模塊內部結構9</p><p>  3.3.3 報警模塊及LCD顯示電路圖9</p

11、><p>  3.3.4 報警模塊及LCD顯示流程圖10</p><p>  第四章485總線網絡系統(tǒng)軟件部分11</p><p>  4.1 系統(tǒng)結構11</p><p>  4.1.1總體框架11</p><p>  4.1.2芯片介紹11</p><p>  4.2 485總線介紹

12、12</p><p>  4.2.1 485總線電氣特性與通訊距離14</p><p>  4.2.2 485總線匹配15</p><p>  4.3 485通訊協(xié)議介紹15</p><p>  4.3.1 485通訊幀格式介紹16</p><p>  4.4通信軟件設計17</p><p

13、>  4.4.1 從機通信軟件設計17</p><p>  4.4.2 主機通信軟件設計18</p><p>  4.5 主機接收與發(fā)送19</p><p>  4.6 本章小結20</p><p>  第五章 功能仿真與測試21</p><p>  5.1 調試平臺21</p><

14、;p>  5.1.1 Proteus的簡介21</p><p>  5.2調試及結果21</p><p>  5.2.1 測試環(huán)境及工具21</p><p>  5.2.2 測試方法21</p><p>  5.2.3 測試結果分析22</p><p><b>  參考文獻24<

15、/b></p><p><b>  致謝25</b></p><p>  附錄 主要模塊的C語言26</p><p><b>  第一章 緒論</b></p><p>  1.1 課題研究背景概述</p><p>  RS-485是EIA(美國電子工業(yè)協(xié)會)制定的平

16、衡發(fā)送、平衡接收的標準異步串行總線,它具有傳輸距離遠、靈敏度高、多點通信能力強等優(yōu)點。</p><p>  在由以單片機為核心構成的儀器儀表、智能設備等諸多數據采集系統(tǒng)中,往往需要實現計算機與單片機之間的數據交換,這也就是單片機與計算機之間的通信,以此來充分發(fā)揮單片機與計算機各自的長處,提升整個應用系統(tǒng)性能及性價比。傳統(tǒng)的基于RS-232協(xié)議的通信由于傳輸距離短、速度慢、信號易受干擾等不足,使得其應用局限性日益突

17、出。有鑒于此,本論文中討論了如何基于RS-485通信協(xié)議,構建RS-485通信網絡,實現若干單片機與計算機之間遠程遠遠通信。</p><p>  1.2 課題研究的意義</p><p>  RS- 485是在RS-422的基礎上發(fā)展起來的,能實現一點對多點的通信,也能實現多點雙向通信,但同一時刻只能有一個發(fā)送器,其余的為接收器,即一主多從的通信方式。目前市場上可供選擇的RS-485總線芯片

18、很多,其中包括可支持128個節(jié)點的MAXl487和支持400個節(jié)點的SP485。利用該類芯片可直接組成簡單的通信網絡。</p><p>  RS-485總線采用差分平衡電路,即一條導線上的電壓是另外一條導線的電壓的取反值,接收器輸入電壓為兩根導線電壓的差值。由于其在兩條線路上傳遞的是大小相同,方向相反的電流,而噪聲電壓對于線路的影響都是同時出現,兩條線路的噪聲電壓相互抵消,極大的削弱噪聲的影響。差分平衡電路不受節(jié)

19、點之間的地平電壓差的影響,EIA 485沒有規(guī)定引腳定義,信號功能,只需保持兩根信號線相鄰,在同一個雙絞線中,引腳A,B不能互換就可以了,所以在工業(yè)現場使用過程中,RS-485接口沒有標準的規(guī)范,有可能是DB9,也有可能是RJ45/RJ11,但是用的最多的還是工業(yè)接線端子。由于RS-485總線采用差分平衡電路,極大的抑制噪聲干擾,有極強的抗共模干擾能力,輸入電壓檢測靈敏度為200毫伏(電壓信號可以在極遠距離進行恢復),使得RS-485的

20、傳輸距離可以達到1200米(傳輸速率在110Kbps情況下)。最大傳輸速率10Mbps(傳輸距離12米)。RS-485支持多點通信,多個驅動器和接收器共享一條信號通道,在半雙工連接模式下,只能有一個驅動器工作,多個驅動器同時啟用,會產生線競爭(導致通信失?。?,同時容易產生大電流,可能</p><p>  1.3 本論文的主要內容和結構安排</p><p>  本論文的結構安排如下:<

21、/p><p>  第一章:緒論。485通信網絡的簡介,及485總線的電氣特性介紹。RS-485是EIA(美國電子工業(yè)協(xié)會)制定的平衡發(fā)送、平衡接收的標準異步串行總線,它具有傳輸距離遠、靈敏度高、多點通信能力強等優(yōu)點。</p><p>  第二章:系統(tǒng)功能分析及總體設計。系統(tǒng)的功能介紹。</p><p>  第三章:數據采集模塊電路研究與設計。溫度DS18B20傳感器,濕

22、度傳感器HS1101,是如何工作的。LCD顯示數據,以及報警。</p><p>  第四章:485總線網絡系統(tǒng)通訊設計部分。主要芯片的介紹。通訊協(xié)議分為三層;物理層、數據鏈路層和用戶層。485總線電氣特性與通訊距離。</p><p>  第五章:功能仿真與測試。</p><p>  第二章 系統(tǒng)分析及總體設計</p><p><b>

23、;  2.1系統(tǒng)功能簡介</b></p><p>  本論文做的是由51單片機組成的485網絡系統(tǒng),通過485總線組成遠距離數據采集控制系統(tǒng)。通信包括一個主機和兩個從機,主機完成報警門限設置和顯示。主機完成和兩個從機之間的通信,2個從機分別測量環(huán)境溫度、濕度。</p><p>  溫度傳感器、濕度傳感器,分別采集數據通過485總線傳輸到由51單片機做的主機,主機判斷是否超過門限

24、設置,如果超過門限設置就報警。并且LCD顯示各數據采集器采集的數據,整個網絡同步運行。</p><p>  2.2系統(tǒng)總統(tǒng)結構設計</p><p>  本系統(tǒng)使用到溫度傳感器、濕度傳感器、AT89C51單片機、SP485芯片、485總線、1602LCD顯示器、蜂鳴器。</p><p>  圖2-1 系統(tǒng)的具體框架</p><p><b&

25、gt;  2.3 本章小結</b></p><p>  本章主要設計了整個系統(tǒng)的結構,在本系統(tǒng)中主要用到2個傳感器分別是:溫度傳感器,濕度傳感器。2個傳感器采集到數據后到各自的從機進行處理,其中濕度需A/D轉換。再由各自的從機進行數據保存,主機依次訪問從機。所有采集到的數據通過485網絡傳輸到主機進行判斷并顯示,主機判斷是否超過門限要報警,如果超過門限就報警。</p><p>

26、  第三章 系統(tǒng)各模塊硬件設計及軟件實現</p><p>  3.1溫度采集模塊設計</p><p>  本系統(tǒng)中使用溫度傳感器DS18B20,DS18B20與微處理器連接時僅需要一條線即可實現與微處理器間雙向通訊。DS18B20的測量范圍為-55℃-125℃,在-10℃-85℃范圍內,精度為±0.5℃。在使用中不需要任何外圍元件。DS18B20可以通過內部寄生電路從數據線上獲取

27、電源,因此,當數據線上的時序滿足一定的要求時,可以不接外部電源,從而使系統(tǒng)結構更簡單,可靠性更高。DS18B20的測量分辨率可通過程序設定為9-12位。DS18B20內部含有EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報警溫度的設定值。</p><p>  3.1.1 溫度DS18B20傳感器工作原理</p><p>  測量前,首先將-55 ℃所對應的基數分別置入減法計數器

28、1和溫度寄存器中,減法計數器1和溫度寄存器被預置在-55 ℃所對應的一個基數值。減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,當減法計數器1的預置值減到0時溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環(huán)直到減法計數器2計數到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數值即為所測溫度。</p><p>  3.1.

29、2 DS18B20連接單片機的電路圖 </p><p>  下圖是溫度采集從機的電路圖,當從機采集完數據后,通過連接SP485芯片,然后連接整個485網絡,最后傳送到主機。</p><p>  圖3-1 DS18B20與單片機的電路圖</p><p>  3.1.3 溫度采集模塊流程圖</p><p>  圖3 -2溫度采集模塊流程圖<

30、;/p><p>  3.2濕度采集模塊設計</p><p>  本系統(tǒng)使用濕度傳感器HS1101,HS1101 測量范圍是0%~100%,電容量由162PF 變到200PF,其誤差不大于±2%RH,響應時間小于5ms,濕度系數為0.34PF/℃,年漂移量0.5%RH/年,長期穩(wěn)定。HS1101在電路中相當于一個電容器件,它的電容量隨著所測空氣濕度的增加而增大。</p>

31、<p>  3.2.1濕度傳感器HS1101</p><p>  HS1101是電容傳感器,在電路構成中等效于一個電容器件,其電容量隨著所測空氣濕度的增大而增大。涉及如何將電容的變化量準確的轉變?yōu)橛嬎銠C易于接受的信號時,常用兩種方法:一種是將HS1101置于運放與阻容組成的橋式振蕩電路中,所產生的正弦波電壓信號經整流。直流放大。再A/D轉換為數字信號;第二種是將HS110置于555振蕩電路中,將電容值

32、的變化轉化與之成反比的電壓頻率信號,可直接被計算機采集。本系統(tǒng)使用的是第二種方法。</p><p>  3.2.2濕度傳感器HS1101與單片機連接圖</p><p>  濕度傳感器采集到的數據是模擬信號,單片只能處理數字信號,所以在采集信號后經過A/D轉換變成數字信號再由單片機進行處理。</p><p>  圖3-3 濕度采集與單片機連接電路</p>

33、<p>  3.2.3濕度采集模塊流程圖</p><p>  圖3-4 濕度采集及A/D轉換流程圖</p><p><b>  3.3報警模塊設計</b></p><p>  蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發(fā)聲器件。

34、蜂鳴器主要分為壓電式蜂鳴器和電磁式蜂鳴器兩種類型。蜂鳴器在電路中用字母“H”或“HA”(舊標準用“FM”、“LB”、“JD”等)表示。蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構成。當接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。</p><p>  圖3-5 蜂鳴器電路</p

35、><p><b>  3.4液晶顯示模塊</b></p><p>  本系統(tǒng)采用1602LCD字符型液晶顯示模塊是一類專門用于顯示字母,數字,符號等的點陣式液晶顯示模塊。在顯示器件上的電極圖型設計,它是由若干個5*7或5*11等點陣符位組成。每一個點陣字符位都可以顯示一個字符。點陣字符位之間有一空點距的間隔起到了字符間距和行距的作用。</p><p&g

36、t;  圖3-6 液晶接口電路</p><p>  3.3.1 字符型液晶顯示模塊引腳</p><p>  VSS為接地電源,VDD接5V正電源,VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。RW為讀寫信號線,高電平時進行讀操

37、作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平RW為高電平時可以讀忙信號,當RS為高電平RW為低電平時可以寫入數據。E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。DB0~DB7為8位雙向數據線,BLK和BLA是背光燈電源。模塊引腳如表1。</p><p>  表1 字符型液晶顯示模塊引腳</p><p>  3.3.2 字符型液

38、晶顯示模塊內部結構</p><p>  液晶顯示模塊LCD1602的內部結構如圖3.7分為三部份:一為LCD控制器,二為LCD驅動器,三為LCD顯示裝置。</p><p>  圖3-7 LCD1602內部結構</p><p>  3.3.3 報警模塊及LCD顯示電路圖</p><p>  P3.6口輸出的是控制信號,Q1相當于一個電子開關,用

39、來控制蜂鳴器的供電通斷。當P3.6口輸出高電平時,Q1飽和導通,LS2獲得電工作發(fā)出鳴響,當P3.6空輸出低電平時Q1截止蜂鳴器失電,停止工作。</p><p>  圖3-8 報警模塊及LCD顯示電路圖</p><p>  3.3.4 報警模塊及LCD顯示流程圖</p><p>  圖3-9 報警模塊流程圖</p><p>  第四章485

40、總線網絡系統(tǒng)軟件部分</p><p><b>  4.1 系統(tǒng)結構</b></p><p>  本論文通信系統(tǒng)的系統(tǒng)結構如下圖所示,系統(tǒng)采用半雙工主從通信方式,主機可以讀取從機的數據或寫數據到從機,并將數據送終端進行顯示;從機主要負責對分布的電子設備進行監(jiān)測或控制,用中斷的方式接收主機發(fā)來的命令并做出回應。</p><p>  4.1.1總體框

41、架 </p><p>  圖4-1 系統(tǒng)總體框架圖</p><p><b>  4.1.2芯片介紹</b></p><p>  本系統(tǒng)中用SP485芯片和AT89C51單片機。SP485芯片連接各單片機的通信,SP485是半雙工收發(fā)器,滿足RS-485規(guī)范。它的BiCMOS設計可實現低功耗操作。但不影響其它特性,數據傳輸速率高達5Mbps。&

42、lt;/p><p>  圖4-2 SP485 芯片引腳圖</p><p>  表2 SP485工作原理</p><p>  本系統(tǒng)中的主機和從機都用AT89C51單片機。80C51單片機是把那些作為控制應用所必需的基本內容都集成在一個尺寸有限的集成電路芯片上。按功能劃分由如下功能部件組成,即微處理器、數據存儲器、程序存儲器、并行I/O口、串行口、定時器/計數器、中斷系

43、統(tǒng)及特殊功能寄存器。該單片機中有一個8位的微處理器,與通用的微處理器基本相同,同樣包括了運算器和控制器兩大部分,只是增加了面向控制的處理功能,不僅可處理數據,還可以進行位變量的處理。片內為128個字節(jié),片外最多可外擴至64k字節(jié),用來存儲程序在運行期間的工作變量、運算的中間結果、數據暫存和緩沖、標志位等,所以稱為數據存儲器。</p><p>  由于受集成度限制,片內只讀存儲器一般容量較小,如果片內的只讀存儲器的

44、容量不夠,則需用擴展片外的只讀存儲器,片外最多可外擴至64k字節(jié)。</p><p>  具有5個中斷源,2級中斷優(yōu)先權。</p><p>  片內有2個16位的定時器/計數器, 具有四種工作方式。</p><p>  1個全雙工的串行口,具有四種工作方式??捎脕磉M行串行通訊,擴展并行I/O口,甚至與多個單片機相連構成多機系統(tǒng),從而使單片機的功能更強且應用更廣。<

45、;/p><p>  P1口、P2口、P3口、P4口為4個并行8位I/O口。</p><p>  4.2 485總線介紹</p><p>  RS-485 標準是由兩個行業(yè)協(xié)會共同制訂和開發(fā)的,即EIA—電子工業(yè)協(xié)會和TIA—通訊工業(yè)協(xié)會。EIA 曾經在它所有標準前面加上RS 前綴英文Rcommended standard 的縮寫,因此許多工程師一直延用這種名稱。<

46、/p><p>  RS-485 總線作為一種多點差分數據傳輸的電氣規(guī)范,已成為業(yè)界應用最為廣泛的標準通信接口之一。這種通信接口允許在簡單的一對雙絞線上進行多點雙向通信,它所具有的噪聲抑制能力、數據傳輸速率、電纜長度及可靠性是其他標準無法比擬的。正因為此,許多不同領域都采用RS-485 作為數據傳輸鏈路。例如:汽車電子、電信設備局域網、智能樓宇等都經??梢砸姷骄哂蠷S-485 接口電路的設備。這項標準得到廣泛接受的另外

47、一個原因是它的通用性RS-485 標準只對接口的電氣特性做出規(guī)定如下表1:</p><p>  表3 RS485 總線電氣性能</p><p>  本論文使用對節(jié)點數要求較多的SP485芯片及485總線,而485總線采用國際上通行的屏蔽雙絞線。我推薦用的屏蔽雙絞線的型號為RVSP2*0.5(二芯屏蔽雙絞線,每芯由16股的0.2mm的導線組成)。采用屏蔽雙絞線有助于減少和消除兩根485通信

48、線之間產生的分布電容以及來自于通訊線周圍產生的共模干擾。</p><p>  485收發(fā)器在規(guī)定的共模電壓-7V至+12V之間時,才能正常工作。如果超出此范圍會影響通訊,嚴重的會損壞通訊接口。共模干擾會增大上述共模電壓。消除共模干擾的有效手段之一是將485通訊線的屏蔽層用作地線,將機具、電腦等網絡中的設備地連接在一起,并由一點可靠地接入大地。通信線盡量遠離高壓電線,不要與電源線并行,更不能捆扎在一起。</p

49、><p>  星形結構會產生反射信號,從而影響到485通信??偩€到每個終端設備的分支線長度應盡量短,一般不要超出5米。分支線如果沒有接終端,會有反射信號,對通訊產生較強的干擾,應將其去掉。485總線必須要單點可靠接地。單點就是整個485總線上只能是有一個點接地,不能多點接地,因為將其接地是因為要將地線(一般都是屏蔽線作地線)上的電壓保持一致,防止共模干擾,如果多點接地適得其反。可靠接地時整個485線路的地線必須要有良

50、好的接觸,從而保證電壓一致,因為在實際施工中,為了接線方便,將線剪成多段再連接,但是沒有將屏蔽線作良好的連接,從而使得其地線分成了多段,電壓不能保持一致,導致共模干擾。</p><p>  共模干擾是在信號線與地之間傳輸,屬于非對稱性干擾。消除共模干擾的方法包括:(1)采用屏蔽雙絞線并有效接地</p><p> ?。?)強電場的地方還要考慮采用鍍鋅管屏蔽</p><p&

51、gt; ?。?)布線時遠離高壓線,更不能將高壓電源線和信號線捆在一起走線</p><p> ?。?)不要和電控鎖共用同一個電源</p><p>  (5)采用線性穩(wěn)壓電源或高品質的開關電源(紋波干擾小于50mV) </p><p>  在RS485通信中,為防止信號反射,通常在終端都接有90~120歐姆的電阻。一般的RS485接口芯片在帶這樣的電阻負載時,其輸出電壓

52、的擺幅只有1.5~1.8V,因此在進行長距離通信時,由于信號的衰減,接收器可能無法正確地接收到信號,導致誤碼。UM3085/UM3088驅動器將輸出信號擺幅提高到大于2.2V,從而在長距離通信中具有更高可靠性。此外,UM3085/UM3088具有斜率限制的特點,能減少EMI,并能在使用阻抗不匹的傳輸線時降低反射,提高通信質量。</p><p>  4.2.1 485總線電氣特性與通訊距離</p>&

53、lt;p>  RS-485接口標準通信的最大傳輸距離為1 200 m,通信速率限制在93.75 kb/s;當通信距離為100 m時,通信速率可達12Mb/s。但現有RS-485系統(tǒng)一般工作在較低傳輸速率,傳輸效率也較低??傊?對工業(yè)應用而言,目前通常RS-485的最大傳輸距離為1200 m,最高速率在10 Mb/s左右,從而制約了工業(yè)環(huán)境下高速、遠距離通訊的應用。</p><p>  由終端電阻、偏置電阻和

54、RS-485收發(fā)器三者構成的純阻性負載影響通信性能。長傳輸電纜可等效為傳輸線,為降低阻抗不連續(xù)導致的總線內信號反射,需匹配與電纜特性阻抗等值的終端電阻。RS485網絡中大多數雙絞線電纜特性阻抗約為100~120Ω。當傳輸距離小于1/6倍的傳輸信號波長,則無需終端匹配。設脈沖信號的上升時間為Tr,則傳輸信號的波長λ為λ=cTr/0.56. 式中c為電磁波波速。針對終端匹配負載與RS-485收發(fā)器之間印刷電路短線引起的反射,可縮減短線長度使

55、其表現為集中負載。因此,必須選用噪聲裕量大的高速RS-485器件,由實驗確定匹配參數,通過降低總線負載,以提高傳輸速率。每個視窗內上、下波形分別為RS-485發(fā)送端和經220 m雙絞線后接收端的時域波形,其中視窗內橫坐標時間總長為1μs,縱坐標電壓總幅值為40V。當時鐘頻率為5MHz以下時,幾種485器件的接收波形區(qū)別不大;當頻率增至10 MHz時,MAX3468和SN65HVD1176存在較大失真,接收信號的占空比變化很大; ISL4

56、486的過沖和高頻相移比SN65HVD23D更明顯。因此,綜合傳輸速率、接收信號波形及均衡功能等,</p><p>  4.2.2 485總線匹配</p><p>  總線匹配有兩種方法,一種是加匹配電阻,位于總線兩端的差分端口VA與VB之間應跨接120Ω匹配電阻,以減少由于不匹配而引起的反射、吸收噪聲,有效地抑制了噪聲干擾。但匹配電阻要消耗較大電流,不適用于功耗限制嚴格的系統(tǒng)。另外一種比

57、較省電的匹配方案是RC 匹配利用一只電容C 隔斷直流成分,可以節(jié)省大部分功率,但電容C的取值是個難點,需要在功耗和匹配質量間進行折衷。除上述兩種外還有一種采用二極管的匹配方案,這種方案雖未實現真正的匹配,但它利用二極管的鉗位作用,迅速削弱反射信號達到改善信號質量的目的,節(jié)能效果顯著。</p><p>  4.3 485通訊協(xié)議介紹</p><p>  通訊協(xié)議分為三層:物理層、數據鏈路層和

58、用戶層。</p><p>  (1)物理層采用SP485的電氣特性、差分信號來傳輸數據。</p><p>  (2)數據鏈路層接受上層來的數據并進行處理,對數據打包,產生校驗碼,組成合理的信息幀,傳輸數據。校驗采用CRC校驗機制,校驗碼附加于信息碼的后面,同時,它接收來自對方的數據,對數據進行校驗、解包,轉化成用戶層能識別的數據。</p><p>  數據鏈路層所傳

59、輸的幀格式為:</p><p>  其中幀頭包含了該幀的控制信息。根據傳輸內容的不同,所傳輸的幀又有命令幀和信息幀之分。命令幀較為簡單,幀格式如下:</p><p>  信息幀的幀頭還須包含傳輸信息的字節(jié)數及校驗的字節(jié)數,幀格式如下:</p><p>  (3)用戶層將用戶數據傳輸轉換為數據鏈路層可以識別的格式,并將接收的數據轉換為用戶有用的信息,實現用戶的實際信息

60、的發(fā)送和接收,并進行適當的處理,實現實際需要的信息的傳輸。</p><p>  4.3.1 485通訊幀格式介紹</p><p>  該協(xié)議的信息格式如下:</p><p>  (1)編碼格式;二進制代碼。</p><p>  (2)波特率:9600 b/s。</p><p>  (3)通信方式:半雙工。</p&

61、gt;<p>  (4)每個字符由u 位組成;</p><p>  1位:起始位(0);</p><p>  8位:數據位(1);</p><p>  1位:地址/數據識別位(1為地址,o為數據);</p><p>  l位:停止位(1)。</p><p>  (5)字符發(fā)送順序;低位在先</p&g

62、t;<p>  (6)幀結束標志:通信線路空閑3.5 ms以上</p><p>  (7)幀校驗方式:數據和(2字節(jié))</p><p>  (8)主機詢問的一般格式下圖:</p><p>  l從機地址碼I命令碼l數據個數數據l校驗和從機地址碼;兩字節(jié)二進制數,后一字節(jié)是前一字節(jié)的反碼。</p><p>  命令碼:一字節(jié)二進制

63、數,O1H代表主機讀,02H代表主機寫。</p><p>  數據個數:表示主機要寫的字節(jié)個數,一字節(jié)二進制數。</p><p>  校驗和:兩字節(jié)二進制數,是將從機地址碼、命令和數據按字節(jié)從頭依次相加,生成兩字節(jié)的校驗和。</p><p>  (9)從機應答的一般格式如下圖</p><p>  圖中信息段的定義同如上圖</p>

64、<p><b>  4.4通信軟件設計</b></p><p>  該系統(tǒng)主機的主要任務是循環(huán)讀取從機的檢測結果,并送終端顯示,其通信軟件由3部分組成:主程序中負責尋址從機的尋址模塊、通信中斷服務程序和TO中斷服務程序。尋址模塊程序流程圖見圖4-5。</p><p>  4.4.1 從機通信軟件設計</p><p>  在該系統(tǒng)中,

65、從機的主要任務是對被檢測設備進行故障檢測和故障定位,通信軟件的主要功能是接收主機的命令并將檢測的結果回送主機。從機通信軟件由2部分組成:串行中斷服務程序和定時器TO中斷服務程序。串行中斷服務程序用于接收或發(fā)送數據;TO中斷服務程序用于當從機接收完一幀信息后進行解釋并啟動通信向主機應答,另外也用于當從機發(fā)送超時后的一些處理。從機上電后處于偵聽狀態(tài),當主機尋址時,便進人中斷服務程序,其程序流程圖如下圖所示。</p><p

66、>  圖4-3 串行通信中斷服務程序流程圖</p><p>  首先判斷是接收中斷還是發(fā)送中斷,若是接收中斷,則清除RI,同時啟動字符間隔定時器TO,并置收發(fā)標志為收。當接收完第2個字節(jié)后,各從機立即判斷是否尋址本機,若是,則置SM2為‘0’,繼續(xù)接收主機送來的數據;若不是,則禁止T0定時,不在接收后面的數據。當被尋址從機接收完一幀信息后,字符間隔定時器會產生定時中斷,進入TO中斷服務程序</p>

67、;<p>  圖4-4 TO中斷服務程序流程圖</p><p>  4.4.2 主機通信軟件設計</p><p>  對從機尋址是按照從機的編號順序進行的,即從1號從機開始,主機發(fā)送該從機信息幀的第1個字節(jié)啟動尋址,同時啟動發(fā)送超時定時器TO,然后檢測通信結束標志.當主機成功的接收到該從機的應答信息后,便會置位該標志,完成與該從機的通信。接下來,尋址下一從機,直到所有從機都被

68、尋址。最后,主機完成其它功能后,又從1號從機開始下一循環(huán)的尋址。通信中斷服務程序和TO中斷服務程的設計方法與從機的大同小異,在此不再介紹。</p><p>  圖4-5 尋址模塊程序流程圖</p><p>  4.5 主機接收與發(fā)送</p><p>  本通信協(xié)議定時規(guī)定如下:</p><p>  (1)幀發(fā)送時限;70 ms.超過此時限結束

69、發(fā)送。</p><p>  (2)主機等待從機應答時限:7 ms,超過此時限,酌情重發(fā)。</p><p>  (3)主機重發(fā)次數:不超過4次,超過后,判通信失敗。</p><p>  一次完整的通信過程分為3個階段:主機詢問、從機應答和鏈路釋放。主機詢問階段,主機以幀的形式將從機地址碼、命令、數據和校驗碼傳送到指定從機;從機應答階段,從機解釋接收的命令碼,并組織相應

70、幀信息回送到主機;鏈路釋放階段,從機清除接收緩沖區(qū)及相關變量,準備與主機下次通信。任何一次完整的通信過程都是由主機方發(fā)起的,從機在被主機尋址前只能處于偵聽狀態(tài),從機在接收到地址碼的第2個字節(jié)后,立即判斷是否尋址自己,如果是,繼續(xù)接受下面的數據,否則不與理睬。</p><p><b>  4.6 本章小結</b></p><p>  本章主要寫了485網絡系統(tǒng)的通訊部分

71、,包括了網絡總線結構,485通訊的網絡協(xié)議,485總線的電氣特性。該系統(tǒng)主機的主要任務是循環(huán)讀取從機的檢測結果,并送終端顯示。本系統(tǒng)中通信軟件由3部分組成:主程序中負責尋址從機的尋址模塊、通信中斷服務程序和TO中斷服務程序。</p><p>  第五章 功能仿真與測試</p><p><b>  5.1 調試平臺</b></p><p>  P

72、roteus是由Lab center Electronics開發(fā)的功能強大的單片機仿真軟件。</p><p>  5.1.1 Proteus的簡介</p><p>  Proteus與其他的仿真軟件相比較,在下面的優(yōu)點:</p><p>  1.能仿真模擬電路、數字電路、數?;旌想娐?;</p><p>  2.能繪制原理圖、PCB圖;<

73、/p><p>  3.幾乎包括實際中所有使用的儀器;</p><p>  4.其最大的亮點在于能夠對單片機進行實物級的仿真。從程序的編寫,編譯到調試,目標版的仿真一應俱全。支持匯編語言和C語言的編程。還可配合Keil C實現程序的聯(lián)合調試,將Proteus中繪制的原理圖作為實際中的目標板,而用Keil C集成環(huán)境實現對目標板的控制,與實際中通過硬件仿真器對目標板的調試幾乎完全相同,并且支持多顯

74、示器的調試,即Proteus運行在一臺計算機上,而Keil C運行在另一臺計算機上,通過網絡連接實現遠程的調試。</p><p><b>  5.2調試及結果</b></p><p>  5.2.1 測試環(huán)境及工具</p><p>  測試溫度:0~100攝氏度(模擬多點不同溫度值環(huán)境)。</p><p>  測試儀器

75、及軟件:數字萬用表,溫度計0~100攝氏度,串口調試助手。</p><p><b>  測試方法:目測。</b></p><p>  5.2.2 測試方法</p><p>  使系統(tǒng)運行,觀察系統(tǒng)硬件檢測是否正常(包括單片機最小系統(tǒng),鍵盤電路,顯示電路,溫度測試電路等)。系統(tǒng)自帶測試表格數據,觀察顯示數據是否相符合即可。</p>

76、<p>  采用溫度傳感器和溫度計同時測量多點水溫變化情況(取溫度值不同的多點),目測顯示電路是否正常。并記錄各點溫度值,與實際溫度值比較,得出系統(tǒng)的溫度指標。</p><p>  使用串口調試助手與單片機通訊,觀察單片機與串口之間傳輸數據正確否。</p><p>  5.2.3 測試結果分析</p><p>  自檢正常,溫度濕度顯示正常,串口傳輸數

77、據正確。</p><p>  因為芯片是塑料封裝,所以對溫度的感應靈敏度不是相當高,要一個很短的時間才穩(wěn)定。</p><p>  系統(tǒng)仿真電路原理圖:</p><p><b>  圖5-1 結果圖</b></p><p><b>  總結</b></p><p>  本論文主

78、要研究了由485通信網絡構成的系統(tǒng),系統(tǒng)包括溫度采集模塊、濕度采集模塊、主機模塊、報警及顯示模塊。在溫度采集模塊中用到溫度傳感器DS18B20,其測量范圍為-55℃-125℃,在-10℃-85℃范圍內,精度為±0.5℃。在濕度采集模塊中將采集到的信號進行濾波,同步采樣等處理后,輸入A/D轉換為數字信號后由單片機采集,然后利用單片機與PC機的通信將數據送到PC機進行數據的存儲、后期處理與顯示,該系統(tǒng)的數據處理功能強大、顯示直觀。

79、主機主要是用來控制從機什么時候向主機發(fā)送數據,以及判斷接受到的數據是否超過預先設計的值,如果超過將報警。本系統(tǒng)還是一個不完善的系統(tǒng),還有許多需要改進的地方。設計中所采用的DS18B20搜索算法還存在不足,有時會發(fā)生重復或遺漏搜索。在通信協(xié)議不完整,沒有進行發(fā)送超時出錯處理。還有各種不足之處有待將來改進。</p><p><b>  參考文獻</b></p><p> 

80、 [1] 黃明強.51 單片機 C語言快速上手 [J].保定師范專科學校學報, 2004.2 </p><p>  [2] 四川、劉志勇.用DS1302+AT89C2051控制的紅外遙控LED電子鐘 [N]. 電子報, 2003.6</p><p>  [3] 李念強. 《單片機原理及應用》.北京機械工業(yè)出版社,2007.3</p><p>  [4] 李平等.單

81、片機入門與開發(fā)[M].機械工業(yè)出版社,2008</p><p>  [5] 陳海宴.51單片機原理及應用[M].北京航空航天大學出版社,2010</p><p>  [6] 王永軍、李景華.《數字邏輯與數字系統(tǒng)(第2版)》.電子工業(yè)出版社, 2001.7</p><p>  [7] 張靖武、周靈彬.《單片機系統(tǒng)的設計與仿真》.電子工業(yè)出版社,2006.2</p

82、><p>  [8] 馬忠梅、籍順心.《單片機的C語言應用程序設計(第4版)》.北京航空航天大學出版社,2007.4</p><p>  [9] 韋兆碧;劉曄;時德鋼.《電氣自動化》.西安交通大學電氣工程學院,西安710049</p><p><b>  2002 第4期</b></p><p><b>  致謝&

83、lt;/b></p><p>  本文的研究工作是在**老師的精心指導和大力支持下完成的。居老師平日里工作繁多,但在我做畢業(yè)設計的每個階段,從論文的資料查詢、編寫程序到定稿的過程中,都給予我大力的幫助和細心的指導。在整個編寫程序和撰寫論文的過程中,*老師總是不厭其煩地給我講解每一個問題。在跟*老師作畢業(yè)論文的過程中,學到的不僅是知識,更重要的是思考與解決問題的能力。*老師循循善誘的教導和獨具匠心的思路,給予

84、我無限的啟迪。他對知識的孜孜不倦的探索精神,必將激勵我今后的學習和生活。在此,**老師表示崇高的敬意和衷心的感謝!</p><p>  然后還要感謝大學四年來所有的老師,在所有老師的精心培育下,我打下了堅實的專業(yè)知識基礎;同時還要感謝所有的同學,正是因為有了大家互相支持和鼓勵,此次畢業(yè)設計才會順利完成。</p><p>  附錄 主要模塊的C語言</p><p> 

85、 485網絡與51單片機的通訊代碼:</p><p>  #include<reg52.h></p><p>  #include<string.h></p><p>  #define uchar unsigned char </p><p>  #define uint unsigned int</p>

86、;<p><b>  /*通信命令*/</b></p><p>  #define _ACTIVE_ 0x01 // 主機詢問從機是否存在</p><p>  #define _GETDATA_ 0x02 //主機發(fā)送讀設備請求</p><p>  #define _OK_ 0x03 //從機應答</p&g

87、t;<p>  #define _STATUS_ 0x04 //從機發(fā)送設備狀態(tài)信息</p><p>  #define _MAXSIZE 0x08 //緩沖區(qū)長度</p><p>  #define _ERRLEN 12 //任何通信幀長度超過12則表示出錯</p><p>  uchar dbuf[MAXSIZE] ;//該緩沖

88、區(qū)用于保存設備狀態(tài)信息</p><p>  uchar dev; //該字節(jié)用于保存本機設備號</p><p>  sbit M_DE = P1^0; //驅動器使能,1有效</p><p>  sbit M_RE = P1^1; //接收器使能,0 有效</p><p>  void

89、get_status(); //調用該函數獲得設備狀態(tài)信息,函數全碼未給出</p><p>  void send_data(uchar type,uchar len,uchar *buf); //發(fā)送數據幀</p><p>  bit recv_cmd(uchar *type); //接收主機命令,主機請求包含命令信息。</p><p> 

90、 void send_byte(uchar da); //該函數發(fā)送一幀數據中的一個字節(jié),由send_data()函數調用</p><p>  void main()</p><p><b>  {</b></p><p>  uchar type;</p><p>  uchar len;</p>&

91、lt;p><b>  /*系統(tǒng)初始化*/</b></p><p>  P1 = 0xff ; //讀取本機設備號</p><p>  dev = (P1>>2); </p><p>  TMOD = 0x20; //定時器T1使用方式2</p><p>  TH1 = 250;</p>

92、;<p>  TL1 = 250; </p><p>  TR1 = 1; //開始計時</p><p>  PCON = 0x80; //SMOD = 1;</p><p>  SCON = 0x50; //工作方式1,波特優(yōu)選法9600bps,允許接收</p><p>  ES = 0; // 關閉串品中斷&

93、lt;/p><p>  IT0 = 0; //外部中斷0使有電平觸發(fā)模式</p><p>  EX0 = 1; // 開啟外部中斷0</p><p>  EA = 0; //開啟總中斷</p><p><b>  /*主程序流程*/</b></p><p>  w

94、hile(1) </p><p><b>  {</b></p><p>  if(recv_cmd(&type) ==0) //發(fā)送幀錯誤或幀地址與本機地址不符,丟棄當前幀后返回</p><p><b>  continue;</b></p><p>  switch(t

95、ype)</p><p><b>  {</b></p><p>  case _ACTIVE_: //主機詢問從機是否存在</p><p>  send_data(_OK_,0,dbuf); // 發(fā)送應答信息,這里的buf 的內容并未用到</p><p><b>  break;</b>

96、;</p><p>  case _GETDATA_: //主機發(fā)送讀設備請求</p><p>  len = strlen(dbuf);</p><p>  snd_data(_STATUS_,len,dbuf) ; // 發(fā)送設備信息</p><p><b>  break;</b></p>

97、<p><b>  default:</b></p><p>  break; //命令類型錯誤,丟棄當前幀返回</p><p><b> ?。?lt;/b></p><p><b>  } </b></p><p><b>  }</b></

98、p><p><b>  }</b></p><p>  void READSTATUS() interrput 0 using 1 //產生外部中斷0時表示設備狀態(tài)發(fā)生改變,該函數使用寄存器組1</p><p><b>  {</b></p><p>  get_status(); //獲得設

99、備狀態(tài)信息,并將其存入dbuf指向的存儲區(qū),數據最后一個字節(jié)置0表示數據結束</p><p><b>  }</b></p><p><b> ?。?lt;/b></p><p>  /*該函數接收一幀數據度進行檢測,無論該幀是否錯誤,函數均會返回。</p><p>  *函數參數type保存接收到的命令

100、字</p><p>  *當接收的數扭幀錯誤或其地址位不為0時(非主機發(fā)送幀),快活數返回0,反之返回1</p><p><b>  */</b></p><p>  bit recv_cmd(uchar *type)</p><p><b>  {</b></p><p>

101、  bit db = 0; //當接收到的上一個字節(jié)為0xdb時,該位置位</p><p>  bit c0 = 0; //當接慢到的上一個字節(jié)為0xc0時,該位置位</p><p>  uchar data_buf[_ERRLEN]; //保存接收到的幀</p><p>  uchar tmp;</p><p>  uchar ecc

102、 = 0;</p><p><b>  uchar i;</b></p><p>  M_DE =0; //置發(fā)送禁止,接收允許</p><p><b>  M_RE = 0;</b></p><p>  /*接收一幀數據*/</p><p><b>  i =0

103、;</b></p><p>  while(!c0) //循環(huán)直至幀接收完畢</p><p><b> ?。?lt;/b></p><p><b>  RI = 0;</b></p><p>  while(RI);</p><p>  tmp = SBUF;<

104、/p><p><b>  RI = 0;</b></p><p>  if(db ==1) //接收到的上一個字節(jié)為0xdb</p><p><b>  {</b></p><p>  swithc(tmp)</p><p><b> ?。?lt;/b><

105、/p><p>  case 0xdd: </p><p>  data_buf[i] = 0xdb; //0xdbdd 表示0xdb</p><p>  ecc = ecc^0xdb;</p><p><b>  db = 0;</b></p><p><b>  break;</b&

106、gt;</p><p>  case 0xdc:</p><p>  data_buf[i] = 0xc0; //0xdbdc 表示0xc0</p><p><b>  ecc = 0;</b></p><p><b>  db = 0;</b></p><p><b

107、>  break;</b></p><p><b>  default: </b></p><p>  return 0 ; // 幀錯誤,返回 </p><p><b>  }</b></p><p><b>  i++;</b></p>

108、<p><b>  }</b></p><p>  switch(tmp) //正常 情況下</p><p><b>  {</b></p><p>  case 0xc0: //幀結束</p><p><b>  c0 = 1;</b></p>

109、<p><b>  break;</b></p><p>  case 0xdb:// 檢測到轉義字符</p><p><b>  db = 1;</b></p><p><b>  break;</b></p><p>  default : // 普通數

110、據</p><p>  data_buf[i] = tmp ; //保存數據</p><p>  ecc = ecc^tmp; // 計算校驗字節(jié)</p><p><b>  i ++;</b></p><p><b>  }</b></p><p>  if(i ==_

111、ERRLEN) //幀超長,錯誤,返回</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  /*判斷幀是否錯誤*/</p><p>  if(i<4) //幀過短,錯誤,返回</p><p><

112、b>  return 0;</b></p><p>  if(ecc!=0) //校驗錯誤,返回</p><p><b>  return 0;</b></p><p>  if(data_buf[i!= dev)//非訪問本機命令,錯誤,返回</p><p><b>  return

113、0;</b></p><p>  *type = data_buf[1]; //獲得命令字</p><p>  return 1; //函數成功返回</p><p><b>  }</b></p><p>  /*該函數發(fā)送一數據幀,參數type為命令字,len為數據長度,buf 為要發(fā)送的數據內容*/&

114、lt;/p><p>  void send_data(uchar type,uchar len,uchar *buf)</p><p><b>  {</b></p><p><b>  uchar i ;</b></p><p>  uchar ecc = 0;</p><p>

115、;  M_DE = 1 ;// 置發(fā)送允許,接收禁止</p><p><b>  M_RE = 1;</b></p><p>  send_byte(dev); //發(fā)送本機地址</p><p>  ecc = dev; </p><p>  send_byte(type); //發(fā)送命令字</p>&

116、lt;p>  ecc = ecc^type;</p><p>  send_byte(len); // 發(fā)送長度</p><p>  ecc = ecc^len;</p><p>  for(i =0;i<len;i++)</p><p><b>  { </b></p><p>

117、  send_byte(*buf);</p><p>  ecc = ecc^(*buf);</p><p><b>  buff++;</b></p><p><b>  }</b></p><p>  send_byte(ecc); // 發(fā)送校驗字節(jié)</p><p>

118、  TI = 0; //發(fā)送幀結束標志</p><p>  SBUF = 0xc0;</p><p>  while(!TI);</p><p><b>  TI = 0;</b></p><p><b>  }</b></p><p>  /*該函數發(fā)送一個數據字節(jié),若該

119、字節(jié)為0xdb,則發(fā)送0xdbdd,若該字節(jié)為0xc0,則發(fā)送0xdbdc*/</p><p>  void send_byte(uchar da)</p><p><b>  {</b></p><p>  switch(da)</p><p><b>  {</b></p><

溫馨提示

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

評論

0/150

提交評論