版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 PAGE16 / NUMPAGES26 單片機技術(shù)課程設(shè)計說明書基于RS485接口的數(shù)據(jù)傳輸電路設(shè)計專業(yè)電氣工程與其自動化學(xué)生周琪班級BM電氣101學(xué)號1051402115指導(dǎo)教師周云龍完成日期2013年 6 月 18 日目 錄 TOC o 1-2 h z u HYPERLINK l _Toc1056690741. 概述 PAGEREF _Toc105669074 h 1HYPERLINK l _Toc1056690792. RS485硬件問題6 2.1 問題的提出HYPERLINK l _Toc1056690806 2.2 電路基本原理HYPERLINK l _Toc1056690816H
2、YPERLINK l _Toc1056690812.3 RS-485的DE控制端設(shè)計8HYPERLINK l _Toc1056690812.4 避免總線沖突的設(shè)計8HYPERLINK l _Toc1056690812.5 RS-485輸出電路部分的設(shè)計8HYPERLINK l _Toc1056690802.6 系統(tǒng)的電源選擇6HYPERLINK l _Toc1056690812.7軟件的編程6HYPERLINK l _Toc1056690812.8 結(jié)論6HYPERLINK l _Toc1056690792. 硬件設(shè)計6HYPERLINK l _Toc1056690802.1 RS4856HY
3、PERLINK l _Toc1056690812.2 多通機原理6HYPERLINK l _Toc1056690812.3單片機通信原理8HYPERLINK l _Toc1056690812.4MX4858HYPERLINK l _Toc1056690812.5整題電路設(shè)計8HYPERLINK l _Toc1056690823. 軟件設(shè)計11HYPERLINK l _Toc1056690843.1通信軟件實現(xiàn)11HYPERLINK l _Toc1056690843.2 程序流程圖12HYPERLINK l _Toc1056690854. 聯(lián)合調(diào)試145HYPERLINK l _Toc10566
4、9086設(shè)計小結(jié)16HYPERLINK l _Toc105669086參考文獻16HYPERLINK l _Toc105669088附錄17HYPERLINK l _Toc105669089附錄1:程序清單17HYPERLINK l _Toc105669090附錄2:系統(tǒng)電路圖211.概 述 單片機是一種采用超大規(guī)模集成電路技術(shù)把多種功能集成到一塊硅片上構(gòu)成的一個小而完善的計算機系統(tǒng)。它廣泛應(yīng)用于儀器儀表、家用電器、醫(yī)用設(shè)備、航空航天、專用設(shè)備的智能化管理與過程控制等領(lǐng)域隨著計算機技術(shù)的發(fā)展與工業(yè)自動化水平的提高, 在許場合采用單機控制已不能滿足現(xiàn)場要求,因而必須采用多機控制的形式,而多機控制
5、主要通過多個單片機之間的串行通信實現(xiàn)。串行通信作為單片機之間常用的通信方法之一, 由于其通信編程靈活、硬件簡潔并遵循統(tǒng)一的標(biāo)準(zhǔn), 因此其在工業(yè)控制領(lǐng)域得到了廣泛的應(yīng)用。本次課程設(shè)計就是利用單片機,基于RS-485芯片,設(shè)計一種簡單的多機通信一主兩從。RS一485接口是一種基于平衡發(fā)送和差分接收的串行總線,具有很強的抗共模干擾能力,在適當(dāng)?shù)牟ㄌ芈氏聜鬏斁嚯x遠;同時易于進行網(wǎng)絡(luò)擴展,被廣泛的應(yīng)用在很多工業(yè)現(xiàn)場。節(jié)能燈壽命檢測環(huán)境中,主要干擾來自開關(guān)和壽命檢測的強電干擾、開關(guān)產(chǎn)生的電磁干擾、空氣循環(huán)設(shè)備的干擾等等;同時由于壽命檢測環(huán)境溫度高,強電系統(tǒng)復(fù)雜,也給系統(tǒng)的運行提出更高的要求。壽命檢測系統(tǒng)要
6、時報告每一盞節(jié)能燈的運行狀態(tài)、環(huán)境溫度、電壓等,并在壽終計算出節(jié)能燈壽命、光通等參數(shù)。可見系統(tǒng)的傳輸數(shù)據(jù)量大,實時性強,因此物理總線的拓撲結(jié)構(gòu)和通信協(xié)議尤為關(guān)鍵。1.1 總設(shè)計方案在多機通信中,最重要的是保證通信有條不紊地進行,因此需要嚴格的通信協(xié)議和完善的通信軟件,本次課程設(shè)計就是利用RS485電氣特性和簡單的結(jié)構(gòu)方式,基于RS-485的多機通信系統(tǒng),采用自定義串行通信協(xié)議,實現(xiàn)2個通信終端之間互相通信的功能該設(shè)計方案通信距離遠、抗干擾能力強也可實現(xiàn)主機與從機的通信,但不能實現(xiàn)從機之間的通信。RS-485方式構(gòu)成的多機通信系統(tǒng)采用主從式結(jié)構(gòu):主機控制多個從機,作為從機的單片機不主動發(fā)送命令或
7、數(shù)據(jù),一切都由主機單片機控制;并且在一個多機系統(tǒng)中,只有一臺主機,各臺從機之間不能相互通信,即使有信息交換也必須通過主機轉(zhuǎn)發(fā)。采用RS-485構(gòu)成的多機通信系統(tǒng)原理。在總線末端接一個匹配電阻,吸收總線上的反射信號,使得正常傳輸信號無毛刺。匹配電阻的取值應(yīng)該與總線的特性阻抗相當(dāng)。在總線上沒有信號傳輸時,總線處于懸浮狀態(tài),容易受干擾信號的影響。將總線上的差分信號的正端A+和負端B-之間接一個10K的電阻;負端B-和地間接一個10K的電阻,形成一個電阻網(wǎng)路。當(dāng)總線上沒有信號傳輸時,正端A+的電平大約為3.2V,負端B-的電平大約為1.6V,即使有干擾信號,也很難產(chǎn)生串行通信的起始信號0,從而增加了總
8、線抗干擾的能力。1.2設(shè)計要求:設(shè)計一個RS485接口并能實現(xiàn)雙機通訊的單片機應(yīng)用系統(tǒng)。1.3設(shè)計方案:本次設(shè)計,對于兩片89C51,采用RS485進行雙機通信。發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX485將TTL電平轉(zhuǎn)換為RS485電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX485芯片進行電平轉(zhuǎn)換后,信號到達接收方串行口的接收端。接受方接收后,在數(shù)碼管上顯示接收的信息。為提高抗干擾能力,還可以在輸入輸出端加光耦合進行光電隔離。軟件部分,通過通信協(xié)議進行發(fā)送接收,主機先送AAH給從機,當(dāng)從機接收到AAH后,向主機回答B(yǎng)BH。主機收到BBH后就把數(shù)碼表TAB16中
9、的10個數(shù)據(jù)送給從機,并發(fā)送檢驗和。從機收到16個數(shù)據(jù)并計算接收到數(shù)據(jù)的檢驗和,與主機發(fā)送來的檢驗和進行比較,若檢驗和一樣則發(fā)送00H給主機;否則發(fā)送FFH給主機,重新接受。從機收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。選擇STC單片機作為控制MCU,用6N137高速光耦進行隔離,其結(jié)構(gòu)圖如圖所示。51單片機RS485總線光電隔離隔離電源51單片機RS485總線光電隔離隔離電源1.4設(shè)計系統(tǒng)流程圖首先判斷是接收中斷還是發(fā)送中斷,若是接收中斷,則清除RI,同時啟動字符間隔定時器TO,并置收發(fā)標(biāo)志為收。當(dāng)接收完第2個字節(jié)后,各從機立即判斷是否尋址本機,若是,則置SM2為0,繼續(xù)接收主機送來的數(shù)據(jù);若
10、不是,則禁止T0定時,不在接收后面的數(shù)據(jù)。當(dāng)被尋址從機接收完一幀信息后,字符間隔定時器會產(chǎn)生定時中斷,進入TO中斷服務(wù)程序。下圖是TO中斷服務(wù)程序流程圖。進入TO中斷服務(wù)程序后,首先清除TO中斷請求標(biāo)志,停止TO定時器,接著判斷是接收完成還是發(fā)送超時,若是接收完成,再判斷校驗和是否正確,若正確,對接收的命令進行解釋,看是主機讀還是主機寫操作,若是主機讀,則將數(shù)據(jù)打包,送到專門用于通信的數(shù)組,接著,禁止接收,置本機為應(yīng)答工作方式,最后啟動發(fā)送,發(fā)送第一個字節(jié),同時啟動發(fā)送時限定時器TO。當(dāng)一個字節(jié)發(fā)送完后,便進入通信中斷服務(wù)程序,繼續(xù)發(fā)送余下數(shù)據(jù)。如果在上邊判校驗和時,發(fā)現(xiàn)不正確,則置SM2為1
11、,恢復(fù)本機的偵聽狀態(tài),以便接收主機的重發(fā)信息2 RS485硬件問題2.1問題的提出在工業(yè)控制與測量領(lǐng)域較為常用的網(wǎng)絡(luò)之一就是物理層采用RS-485通信接口所組成的工控設(shè)備網(wǎng)絡(luò)。這種通信接口可以十分方便地將許多設(shè)備組成一個控制網(wǎng)絡(luò)。從目前解決單片機之間中長距離通信的諸多方案分析來看,RS-485總線通信模式由于具有結(jié)構(gòu)簡單、價格低廉、通信距離和數(shù)據(jù)傳輸速率適當(dāng)?shù)忍攸c而被廣泛應(yīng)用于儀器儀表、智能化傳感器集散控制、樓宇控制、監(jiān)控報警等領(lǐng)域。但RS485總線存在自適應(yīng)、自保護功能脆弱等缺點,如不注意一些細節(jié)的處理,常出現(xiàn)通信失敗甚至系統(tǒng)癱瘓等故障,因此提高RS-485總線運行可靠性至關(guān)重要。2.2 電
12、路基本原理某節(jié)點的硬件電路設(shè)計如圖1所示,在該電路中,使用了一種RS-485接口芯片SN75LBC184,它采用單一電源Vcc,電壓在35.5 V圍都能正常工作。與普通的RS-485芯片相比,它不但能抗雷電的沖擊而且能承受高達8 kV的靜電放電沖擊,片集成4個瞬時過壓保護管,可承受高達400 V的瞬態(tài)脈沖電壓。因此,它能顯著提高防止雷電損壞器件的可靠性。對一些環(huán)境比較惡劣的現(xiàn)場,可直接與傳輸線相接而不需要任何外加保護元件。該芯片還有一個獨特的設(shè)計,當(dāng)輸入端開路時,其輸出為高電平,這樣可保證接收器輸入端電纜有開路故障時,不影響系統(tǒng)的正常工作。另外,它的輸入阻抗為RS485標(biāo)準(zhǔn)輸入阻抗的2倍(24
13、 k),故可以在總線上連接64個收發(fā)器。芯片部設(shè)計了限斜率驅(qū)動,使輸出信號邊沿不會過陡,使傳輸線上不會產(chǎn)生過多的高頻分量,從而有效扼制電磁干擾。在圖1中,四位一體的光電耦合器TLP521讓單片機與SN75LBC184之間完全沒有了電的聯(lián)系,提高了工作的可靠性?;驹頌椋寒?dāng)單片機P1.6=0時,光電耦合器的發(fā)光二極管發(fā)光,光敏三極管導(dǎo)通,輸出高電壓(5 V),選中RS485接口芯片的DE端,允許發(fā)送。當(dāng)單片機P1.6=1時,光電耦合器的發(fā)光二極管不發(fā)光,光敏三極管不導(dǎo)通,輸出低電壓(0 V),選中RS485接口芯片的RE端,允許接收。SN75LBC184的R端(接收端)和D端(發(fā)送端)的原理與
14、上述類似。2.3 RS-485的DE控制端設(shè)計在RS-485總線構(gòu)筑的半雙工通信系統(tǒng)中,在整個網(wǎng)絡(luò)中任一時刻只能有一個節(jié)點處于發(fā)送狀態(tài)并向總線發(fā)送數(shù)據(jù),其他所有節(jié)點都必須處于接收狀態(tài)。如果有2個節(jié)點或2個以上節(jié)點同時向總線發(fā)送數(shù)據(jù),將會導(dǎo)致所有發(fā)送方的數(shù)據(jù)發(fā)送失敗。因此,在系統(tǒng)各個節(jié)點的硬件設(shè)計中,應(yīng)首先力求避免因異常情況而引起本節(jié)點向總線發(fā)送數(shù)據(jù)而導(dǎo)致總線數(shù)據(jù)沖突。以MCS51系列的單片機為例,因其在系統(tǒng)復(fù)位時,I/O口都輸出高電平,如果把I/O口直接與RS-485接口芯片的驅(qū)動器使能端DE相連,會在CPU復(fù)位期間使DE為高,從而使本節(jié)點處于發(fā)送狀態(tài)。如果此時總線上有其他節(jié)點正在發(fā)送數(shù)據(jù),則
15、此次數(shù)據(jù)傳輸將被打斷而告失敗,甚至引起整個總線因某一節(jié)點的故障而通信阻塞,繼而影響整個系統(tǒng)的正常運行。考慮到通信的穩(wěn)定性和可靠性,在每個節(jié)點的設(shè)計中應(yīng)將控制RS485總線接口芯片的發(fā)送引腳設(shè)計成DE端的反邏輯,即控制引腳為邏輯“1”時,DE端為“0”;控制引腳為邏輯“0”時,DE端為“1”。在圖1中,將CPU的引腳P1.6通過光電耦合器驅(qū)動DE端,這樣就可以使控制引腳為高或者異常復(fù)位時使SN75LBC184始終處于接收狀態(tài),從而從硬件上有效避免節(jié)點因異常情況而對整個系統(tǒng)造成的影響。這就為整個系統(tǒng)的通信可靠奠定了基礎(chǔ)。此外,電路中還有1片看門狗MAX813L,能在節(jié)點發(fā)生死循環(huán)或其他故障時,自動
16、復(fù)位程序,交出RS-485總線控制權(quán)。這樣就能保證整個系統(tǒng)不會因某一節(jié)點發(fā)生故障而獨占總線,導(dǎo)致整個系統(tǒng)癱瘓。2.4 避免總線沖突的設(shè)計當(dāng)一個節(jié)點需要使用總線時,為了實現(xiàn)總線通信可靠,在有數(shù)據(jù)需要發(fā)送的情況下先偵聽總線。在硬件接口上,首先將RS-485接口芯片的數(shù)據(jù)接收引腳反相后接至CPU的中斷引腳INT0。在圖1中,INT0是連至光電耦合器的輸出端。當(dāng)總線上有數(shù)據(jù)正在傳輸時,SN75LBC184的數(shù)據(jù)接收端(R端)表現(xiàn)為變化的高低電平,利用其產(chǎn)生的CPU下降沿中斷(也可采用查詢方式),能得知此時總線是否正“忙”,即總線上是否有節(jié)點正在通信。如果“空閑”,則可以得到對總線的使用權(quán)限,這樣就較好
17、地解決了總線沖突的問題。在此基礎(chǔ)上,還可以定義各種消息的優(yōu)先級,使高優(yōu)先級的消息得以優(yōu)先發(fā)送,從而進一步提高系統(tǒng)的實時性。采用這種工作方式后,系統(tǒng)中已經(jīng)沒有主、從節(jié)點之分,各個節(jié)點對總線的使用權(quán)限是平等的,從而有效避免了個別節(jié)點通信負擔(dān)較重的情況??偩€的利用率和系統(tǒng)的通信效率都得以大大提高,從而也使系統(tǒng)響應(yīng)的實時性得到改善,而且即使系統(tǒng)中個別節(jié)點發(fā)生故障,也不會影響其他節(jié)點的正常通信和正常工作。這樣使得系統(tǒng)的“危險”分散了,從某種程度上來說增強了系統(tǒng)的工作可靠性和穩(wěn)定性。2.5 RS-485輸出電路部分的設(shè)計在圖1中,VD1VD4為信號限幅二極管,其穩(wěn)壓值應(yīng)保證符合RS-485標(biāo)準(zhǔn),VD1和V
18、D3取12 V,VD2 和VD4取7 V,以保證將信號幅度限定在-7+12 V之間,進一步提高抗過壓的能力。考慮到線路的特殊情況(如某一節(jié)點的RS-485芯片被擊穿短路),為防止總線中其他分機的通信受到影響,在SN75LBC184的信號輸出端串聯(lián)了2個20 的電阻R1和R2,這樣本機的硬件故障就不會使整個總線的通信受到影響。在應(yīng)用系統(tǒng)工程的現(xiàn)場施工中,由于通信載體是雙絞線,它的特性阻抗為120 左右,所以線路設(shè)計時,在RS485網(wǎng)絡(luò)傳輸線的始端和末端應(yīng)各接1個120 的匹配電阻(如圖1中的R3),以減少線路上傳輸信號的反射。2.6系統(tǒng)的電源選擇對于由單片機結(jié)合RS-485組建的測控網(wǎng)絡(luò),應(yīng)優(yōu)先
19、采用各節(jié)點獨立供電的方案,同時電源線不能與RS-485信號線共用同一股多芯電纜。RS-485信號線宜選用截面積0.75 mm2以上的雙絞線而不是平直線,并且選用線性電源TL750L05比選用開關(guān)電源更合適。TL750L05必須有輸出電容,若沒有輸出電容,則其輸出端的電壓為鋸齒波形狀,鋸齒波的上升沿隨輸入電壓變化而變化,加輸出電容后,可以抑制該現(xiàn)象。2.7 軟件的編程SN75LBC184在接收方式時,A、B為輸入,R為輸出;在發(fā)送方式時,D為輸入,A、B為輸出。當(dāng)傳送方向改變一次后,如果輸入未變化,則此時輸出為隨機狀態(tài),直至輸入狀態(tài)變化一次,輸出狀態(tài)才確定。顯然,在由發(fā)送方式轉(zhuǎn)入接收方式后,如果
20、A、B狀態(tài)變化前,R為低電平,在第一個數(shù)據(jù)起始位時,R仍為低電平,CPU認為此時無起始位,直到出現(xiàn)第一個下降沿,CPU才開始接收第一個數(shù)據(jù),這將導(dǎo)致接收錯誤。由接收方式轉(zhuǎn)入發(fā)送方式后,D變化前,若A與B之間為低電壓,發(fā)送第一個數(shù)據(jù)起始位時,A與B之間仍為低電壓,A、B引腳無起始位,同樣會導(dǎo)致發(fā)送錯誤??朔@種后果的方案是:主機連續(xù)發(fā)送兩個同步字,同步字要包含多次邊沿變化(如55H ,0AAH),并發(fā)送兩次(第一次可能接收錯誤而忽略) ,接收端收到同步字后,就可以傳送數(shù)據(jù)了,從而保證正確通信。為了更可靠地工作,在RS485總線狀態(tài)切換時需要適當(dāng)延時,再進行數(shù)據(jù)的收發(fā)。具體的做法是在數(shù)據(jù)發(fā)送狀態(tài)下
21、,先將控制端置“1”,延時0.5 ms左右的時間,再發(fā)送有效的數(shù)據(jù),數(shù)據(jù)發(fā)送結(jié)束后,再延時0.5 ms,將控制端置“0”。這樣的處理會使總線在狀態(tài)切換時,有一個穩(wěn)定的工作過程。單片機通信節(jié)點的程序基本上可以分為6個主要部分,分別為預(yù)定義部分、初始化部分、主程序部分、設(shè)備狀態(tài)檢測部分、幀接收部分和幀發(fā)送部分。預(yù)定義部分主要定義了通信中使用的握手信號,用于保存設(shè)備信息的緩沖區(qū)和保存本節(jié)點設(shè)備號的變量。設(shè)備狀態(tài)檢測部分應(yīng)能在程序初始化后,當(dāng)硬件發(fā)生故障時,作出相應(yīng)的反應(yīng)。主程序部分應(yīng)能接收命令幀,并根據(jù)命令的容作出相應(yīng)的回應(yīng)。為縮短篇幅,這里僅給出主程序部分的代碼。如下所示:/* 主程序流程*/wh
22、ile(1) /主循環(huán)if(recv_cmd(&type)=0) /發(fā)生幀錯誤或幀地址與本機 /地址不符,丟棄當(dāng)前幀后返回continue;switch(type) case _ACTIVE_:/主機詢問從機是否存在send_data(_OK_, 0,dbuf);/發(fā)送應(yīng)答信息break;case _GETDATA_:len = strlen(dbuf);send_data(_STATUS_, len,dbuf);/發(fā)送狀態(tài)信息break;default:break;/命令類型錯誤,丟棄當(dāng)前幀后返回2.8 結(jié)論RS-485由于使用了差分電平傳輸信號,傳輸距離比RS-232更長,最多可以達到30
23、00 m,因此很適合工業(yè)環(huán)境下的應(yīng)用。但與CAN總線等更為先進的現(xiàn)場工業(yè)總線相比,其處理錯誤的能力還稍顯遜色,所以在軟件部分還需要進行特別的設(shè)計,以避免數(shù)據(jù)錯誤等情況發(fā)生。另外,系統(tǒng)的數(shù)據(jù)冗余量較大,對于速度要求高的應(yīng)用場所不適宜用RS-485總線。雖然RS-485總線存在一些缺點,但由于它的線路設(shè)計簡單、價格低廉、控制方便,只要處理好細節(jié),在某些工程應(yīng)用中仍然能發(fā)揮良好的作用??傊?,解決可靠性的關(guān)鍵在于工程開始施工前就要全盤考慮可采取的措施,這樣才能從根本上解決問題,而不要等到工程后期再去亡羊補牢。硬件設(shè)計2.1 RS-485 RS485標(biāo)準(zhǔn)接口是單片機系統(tǒng)種常用的一種串行總線之一。RS-4
24、85通信方式RS-485標(biāo)準(zhǔn)是由EIA(電子工業(yè)協(xié)會)和TIA(通訊工業(yè)協(xié)會)共同制訂和開發(fā)的。RS-485作為一種多點差分數(shù)據(jù)傳輸?shù)碾姎庖?guī),已成為業(yè)界最廣泛應(yīng)用的標(biāo)準(zhǔn)通信接口之一。理論上,RS-485標(biāo)準(zhǔn)最多接入32個設(shè)備(受芯片驅(qū)動能力的影響),可以工作在半雙工或全雙工模式下,最大傳輸距離約為1219米,最大傳輸速率約為10Mbps1。然而通常RS-485網(wǎng)絡(luò)采用平衡雙絞線作為傳輸媒體,平衡雙絞線的長度與傳輸速率成反比,只有在20Kbps的傳輸速率下,才可能達到最大傳輸距離。一般15米長的雙絞線最大傳輸速率僅為1Mbps。不過對于速率要求不是很高的控制系統(tǒng)來說已經(jīng)足夠了。RS-485采用平
25、衡發(fā)送和差分接收方式來實現(xiàn)通信:在發(fā)送端TXD將串行口的TTL電平信號轉(zhuǎn)換成差分信號A、B兩路輸出,經(jīng)傳輸后在接收端將差分信號還原成TTL電平信號。兩條傳輸線通常使用雙絞線,又是差分傳輸,因此有極強的抗共模干擾的能力,接收靈敏度也相當(dāng)高。同時,最大傳輸速率和最大傳輸距離也大大提高。如果以10Kbps速率傳輸數(shù)據(jù)時傳輸距離可達12m,而用100Kbps時傳輸距離可達1.2km。如果降低波特率,傳輸距離還可進一步提高。另外RS-485實現(xiàn)了多點互連,最多可達256臺驅(qū)動器和256臺接收器,非常便于多器件的連接。不僅可以實現(xiàn)半雙工通信,而且可以實現(xiàn)全雙工通信。2.2 多機通原理 在多機通信中,每臺從
26、機均分配有一個從機地址,主機與從機之間進行串行通信時,通常是主機先呼叫某從機地址,喚醒被叫從機后,主、從兩機之間進行數(shù)據(jù)交換。而未被呼叫的從機則繼續(xù)進行各自的工作??墒?,如果在主機與某被呼叫從機進行數(shù)據(jù)交換過程中,其他從機如果不采取相應(yīng)的數(shù)據(jù)識別技術(shù),則這些從機就會因為串行通信線上有數(shù)據(jù)傳輸而時時被打斷,影響正常的工作。利用單片機的串口工作方式2、方式3可以很好解決上述問題。在多機通信過程中,從機首先要解決的是如何識別主機發(fā)送的是地址信息還是數(shù)據(jù)信息。當(dāng)發(fā)送的是地址信息時,各從機都響應(yīng)串口中斷,接收主機下發(fā)的一幀地址數(shù)據(jù)。而當(dāng)主機發(fā)送數(shù)據(jù)幀時,無關(guān)從機可不響應(yīng)串口中斷。解決的方法是:當(dāng)主機發(fā)送
27、一幀地址信息時,應(yīng)保持這幀數(shù)據(jù)的第9位為1(即TB8=1)。從機按照工作方式2或工作方式3運行時,將串口寄存器SCON中的控制位SM2置為1,當(dāng)所接收的一幀數(shù)據(jù)的第9位為1,所有從機都產(chǎn)生串口中斷,接收這一幀地址數(shù)據(jù)并與各自的從機地址進行比較,以判斷主機是否要與本機通信。接收到的地址數(shù)據(jù)與從機地址相等達到為被呼叫從機,該從機將串口控制寄存器SCON中的控制位SM2清為0,去接收主機發(fā)送來的數(shù)據(jù)幀(數(shù)據(jù)幀的第9位為0),此時不管接收到的第9位數(shù)據(jù)是否為1或0,都要產(chǎn)生串口中斷,這就保證了主機與被呼叫從機間的正常數(shù)據(jù)通信。數(shù)據(jù)通信結(jié)束后,該從機又重新將串行口控制寄存器SCON中的控制位SM2置為1
28、,為下一次與主機進行通信做好準(zhǔn)備。其他從機則一直在SM2=1下繼續(xù)自己的工作,不會因為主、從機之間的數(shù)據(jù)通信而被打斷。多機通信的實現(xiàn),主要靠主、從機正確地設(shè)置與判斷多機通信控制位SM2和發(fā)送或接收的第9位數(shù)據(jù)(TB8或RB8)。當(dāng)主機給從機發(fā)送信息時,要根據(jù)發(fā)送信息的性質(zhì)來設(shè)置TB8,發(fā)送地址信號時,設(shè)置TB8=1;發(fā)送數(shù)據(jù)或命令時,設(shè)置TB8=0。當(dāng)從機的SM2為1時,該從機只接收地址幀(RB8位為1),對數(shù)據(jù)幀(RB8位為0)將不予理睬。而當(dāng)SM2為0時,該從機接收所有發(fā)送來的信息。多機通信過程如下:使所有從機的SM2置1,處于只接收地址幀的狀態(tài)(即從機復(fù)位);主機發(fā)送一地址幀信息,其中包
29、含8位地址,第9位為地址、數(shù)據(jù)標(biāo)志位,第9位置1表示發(fā)送的是地址;從機接收到地址幀后,各自中斷CPU,把接收到的地址與本地址作比較;地址相符的從機,使SM2清零以接收主機隨后發(fā)來的所有信息,對于地址不相符的從機,仍保持SM2=1狀態(tài),對主機隨后發(fā)送的數(shù)據(jù)不予理睬,直到主機發(fā)送來新的地址幀;主機發(fā)送數(shù)據(jù)或控制信息給被尋址的從機;被尋址的從機,因SM2=0,可以接收主機發(fā)送過來的所有數(shù)據(jù),當(dāng)從機接收數(shù)據(jù)結(jié)束時,置位SM2,返回接收地址幀狀態(tài)(復(fù)位狀態(tài));當(dāng)主機改為與另外從機聯(lián)系時,可再發(fā)地址幀尋址其從機,而先前被尋址過的從機恢復(fù)SM2=1。2.3單片機通信功能單片機計算機與外界的信息交換稱為通信,
30、常用的通信方式有兩種:并行通信和串行通信。51單片機用4個接口與外界進行數(shù)據(jù)輸入與數(shù)據(jù)輸出就是并行通信,并行通信的特點是傳輸信號的速度快,但所用的信號線較多,成本高,傳輸?shù)木嚯x較近。串行通信的特點是只用兩條信號線(一條信號線,再加一條地線作為信號回路)即可完成通信,成本低,傳輸?shù)木嚯x較遠。51單片機的串行接口是一個全雙工的接口,它可以作為UART(通用異步接受和發(fā)送器)用,也可以作為同步移位寄存器用。51單片機串行接口的結(jié)構(gòu)如下:(1)數(shù)據(jù)緩沖器(SBUF)接受或發(fā)送的數(shù)據(jù)都要先送到SBUF緩存。有兩個,一個緩存,另一個接受,用同一直接地址99H,發(fā)送時用指令將數(shù)據(jù)送到SBUF即可啟動發(fā)送;接
31、收時用指令將SBUF中接收到的數(shù)據(jù)取出。(2)串行控制寄存器(PCON)SCON用于串行通信方式的選擇,收發(fā)控制與狀態(tài)指示,各位含義如下:SM0SM1SM2RENTB8RB8TIRISM0,SM1:串行接口工作方式選擇位,這兩位組合成00,01,10,11對應(yīng)于工作方式0、1、2、3。串行接口工作方式特點見下表SM0SM1工作方式功能波特率 0008位同步移位寄存器(用于I/O擴展)fORC/1201110位異步串行通信(UART)可變(T1溢出率*2SMOD/32)10211位異步串行通信(UART)fORC/64或fORC/3211311位異步串行通信(UART)可變(T1溢出率*2SMO
32、D/32)SM2:多機通信控制位。REN:接收允許控制位。軟件置1允許接收;軟件置0禁止接收。TB8:方式2或3時,TB8為要發(fā)送的第9位數(shù)據(jù),根據(jù)需要由軟件置1或清0。RB9:在方式2或3時,RB8位接收到的第9位數(shù)據(jù),實際為主機發(fā)送的第9位數(shù)據(jù)TB8,使從機根據(jù)這一位來判斷主機發(fā)送的時呼叫地址還是要傳送的數(shù)據(jù)。TI:發(fā)送中斷標(biāo)志。發(fā)送完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)發(fā)送。RI:接收中斷標(biāo)志。接收完一幀數(shù)據(jù)后由硬件自動置位,并申請中斷。必須要軟件清零后才能繼續(xù)接收。(3)輸入移位寄存器接收的數(shù)據(jù)先串行進入輸入移位寄存器,8位數(shù)據(jù)全移入后,再并行送入接收SBUF
33、中。(4)波特率發(fā)生器波特率發(fā)生器用來控制串行通信的數(shù)據(jù)傳輸速率的,51系列單片機用定時器T1作為波特率發(fā)生器,T1設(shè)置在定時方式。波特率時用來表示串行通信數(shù)據(jù)傳輸快慢程度的物理量,定義為每秒鐘傳送的數(shù)據(jù)位數(shù)。(5)電源控制寄存器PCON其最高位為SMOD。(6)波特率計算當(dāng)定時器T1工作在定時方式的時候,定時器T1溢出率=(T1計數(shù)率)/(產(chǎn)生溢出所需機器周期)。由于是定時方式,T1計數(shù)率= fORC/12。產(chǎn)生溢出所需機器周期數(shù)=模M-計數(shù)初值X。 2.4MAX485芯片 MAX485是芯片接口的一種類型。MAX485接口芯片是Maxim公司的一種RS485芯片。 MAX485、MAX48
34、7-MAX491以與MAX1487是用于RS-485與RS-422通信的低功耗收發(fā)器,每個器件中都具有一個驅(qū)動器和一個接收器。MAX483、MAX487、MAX488以與MAX489具有限擺率驅(qū)動器,可以減小EMI,并降低由不恰當(dāng)?shù)慕K端匹配電纜引起的反射,實現(xiàn)最高250kbps的無差錯數(shù)據(jù)傳輸。MAX481、MAX485、MAX490、MAX491、MAX1487的驅(qū)動器擺率不受限制,可以實現(xiàn)最高2.5Mbps的傳輸速率。這些收發(fā)器在驅(qū)動器禁用的空載或滿載狀態(tài)下,吸取的電源電流在120A至500A之間。另外,MAX481、MAX483與MAX487具有低電流關(guān)斷模式,僅消耗0.1A。所有器件都
35、工作在5V單電源下。采用單一電源+5 V工作,額定電流為300 A,采用半雙工通訊方式。它完成將TTL電平轉(zhuǎn)換為RS485電平的功能。MAX485芯片的結(jié)構(gòu)和引腳都非常簡單,部含有一個驅(qū)動器和接收器。RO和DI端分別為接收器的輸出和驅(qū)動器的輸入端,與單片機連接時只需分別與單片機的RXD和TXD相連即可;/RE和DE端分別為接收和發(fā)送的使能端,當(dāng)/RE為邏輯0時,器件處于接收狀態(tài);當(dāng)DE為邏輯1時,器件處于發(fā)送狀態(tài),因為MAX485工作在半雙工狀態(tài),所以只需用單片機的一個管腳控制這兩個引腳即可;A端和B端分別為接收和發(fā)送的差分信號端,當(dāng)A引腳的電平高于B時,代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端
36、時,代表發(fā)送的數(shù)據(jù)為0。在與單片機連接時接線非常簡單。只需要一個信號控制MAX485的接收和發(fā)送即可。同時將A和B端之間加匹配電阻,一般可選100的電阻。用8051串行接口通信,如果兩臺8051單片機之間的距離很近(不超過1.5m),可以采用直接將兩臺8051單片機的串行接口直接相連,利用其自身的TTL電平(0-5V)直接傳輸數(shù)據(jù)信息。如果傳輸距離較遠(超過1.5m),由于傳輸線的阻抗與分布電容,會產(chǎn)生電平損耗和波形畸變,以至于檢測不出數(shù)據(jù)或數(shù)據(jù)出錯。此時可利用 RS485標(biāo)準(zhǔn)總線接口,將單片機輸出的TTL電平轉(zhuǎn)換為RS485標(biāo)準(zhǔn)電平(邏輯1為-15-5V;邏輯0為+5-+15V)。用RS48
37、5可將傳輸距離提高到15m,如果想遠距離傳輸,可以采用RS422或者RS485。電平轉(zhuǎn)換芯片MAX485是美信公司(MAXIM)生產(chǎn),專用于進行將TTL電平轉(zhuǎn)換為RS485電平的芯片,MAX485部有泵電源,能將+5V電源電壓在芯片提高到RS485電平所需的+10V或者-10V電平。MAX485是用于RS-485與RS-422通信的低功耗收發(fā)器。MAX485的驅(qū)動器擺率不受限制, 可以實現(xiàn)最高2.5Mbps的傳輸速率。這些收發(fā)器在驅(qū)動器禁用的空載或滿載狀態(tài)下,吸取的電源電流在120A至500A之間。所有器件都工作在5V單電源下。驅(qū)動器具有短路電流限制,并可以通過熱關(guān)斷電路將驅(qū)動器輸出置為高阻狀
38、態(tài)。接收器輸入具有失效保護特性,當(dāng)輸入開路時,可以確保邏輯高電平輸出。具有較高的抗干擾性能。MAX485是市面上最為常見的RS422芯片,亦是用量最大的RS422芯片,性價比高,優(yōu)質(zhì),供貨穩(wěn)定是大部分廠家采用它的主要原因。圖2.電平轉(zhuǎn)換芯片MAX4852.5整體電路設(shè)計最終設(shè)計電路如下圖3所示,發(fā)送方的數(shù)據(jù)由串行口TXD段輸出,經(jīng)過電平轉(zhuǎn)換芯片MAX485將TTL電平轉(zhuǎn)換為RS485電平輸出,經(jīng)過傳輸線將信號傳送到接收端。接收方也使用MAX485芯片進行電平轉(zhuǎn)換后,信號到達接收方串行口的接收端。接受方接收后,通過P1口在數(shù)碼管上顯示接收的信息。圖3.串行通信電路三、軟件設(shè)計通過通信協(xié)議進行發(fā)送
39、接收,主機先送AAH給從機,當(dāng)從機接收到AAH后,向主機回答B(yǎng)BH。主機收到BBH后就把數(shù)碼表TAB16中的10個數(shù)據(jù)送給從機,并發(fā)送檢驗和。從機收到16個數(shù)據(jù)并計算接收到數(shù)據(jù)的檢驗和,與主機發(fā)送來的檢驗和進行比較,若檢驗和一樣則發(fā)送00H給主機;否則發(fā)送FFH給主機,重新接受。從機收到16個正確數(shù)據(jù)后送到一個數(shù)碼管顯示。3.1.通信軟件實現(xiàn)(1)串行口工作于方式1;用定時器1產(chǎn)生9600bit/s的波特率,工作于方式2。(2)功能:將本機ROM中數(shù)碼表TAB16中的16個數(shù)發(fā)送到從機,并保存在從機部ROM中,從機收到這16個數(shù)據(jù)后送到一個數(shù)碼管循環(huán)顯示。(3)通信協(xié)議:主機首先發(fā)送連絡(luò)信號(
40、AAH),從機接收到之后返回一個連絡(luò)信號(BBH)表示從機已準(zhǔn)備好接收。(4)通信過程使用第九位發(fā)送奇偶校驗位。(5)從機接收到一個數(shù)據(jù)后,立即進行奇偶校驗,若數(shù)據(jù)沒有錯誤,則返回00H,否則返回FFH。(6)主機發(fā)送一個數(shù)據(jù)后,等待從機返回數(shù)據(jù);若為00H,則繼續(xù)發(fā)送下一個數(shù)據(jù),若為FFH,則重新發(fā)送數(shù)據(jù)。3.2程序流程圖(1)發(fā)送端程序流程圖主程序開始從機是否回答B(yǎng)BH?程序初始化主機發(fā)送AAHN主機發(fā)送數(shù)據(jù),檢驗和輸出完成?N清除標(biāo)志位(2)接收方程序流程圖主程序開始檢驗和相等?程序初始化接收數(shù)據(jù),計算檢驗和N發(fā)送00H至主機接收完成?N清除標(biāo)志位發(fā)送FFH,重新接收顯示4.聯(lián)合調(diào)試在p
41、rotues上進行仿真實驗。首先使用KeilC將編寫完成的程序編譯生成HEX文件,將HEX文件燒錄到兩片單片機中,進行仿真實驗,結(jié)果如下圖4所示,可以看到,接收端已將接受到的數(shù)據(jù)完整的顯示了出來。圖4.仿真圖5設(shè)計小結(jié)在整個課程項目的設(shè)計過程中,我們遇到了許多困難和問題,但是憑著良好的心態(tài)和不放棄的精神,我們最終順利完成了作品的設(shè)計和制作。1、編程基礎(chǔ)不扎實。由于大一時沒有打下扎實的編程基礎(chǔ),在編寫這次的項目程序時,我們總是干道無處下手。最后我們通過查資料,并師兄的指導(dǎo)下,找準(zhǔn)了方向。2、硬件連接原理在某些方面存在誤解。由于是第一次在沒有老師的情況下做作品,有些時候就會想當(dāng)然,缺少實戰(zhàn)經(jīng)驗的我
42、們?nèi)鄙倮碚摰綄嵺`的經(jīng)驗,不過實驗室的兩位學(xué)長在這方面幫了我們很多。單片機的課程項目設(shè)計給了我們一次團隊合作的機會,對于我們這一代來說,團隊合作精神是我們身上所缺少但卻必須要具備的。在這次的團隊合作中我們有以下幾點感悟:心要齊作為同一個團隊的成員,大家都是為了同一個目標(biāo)奮斗,所以要以積極的態(tài)度朝著好的方向努力。就比如做這個課程設(shè)計,首先大家在做什么作品上面要達成認同,目標(biāo)統(tǒng)一了之后才能團結(jié)起來去為之奮斗。在奮斗的時候,每個人的態(tài)度都要端正,不能有的人很積極的在準(zhǔn)備,而有的人卻在消極的應(yīng)付差事,這樣不僅不利于團隊的發(fā)展,更會影響到隊員之間的感情,最后很可能導(dǎo)致團隊的解散,不僅作品完成不了,同學(xué)之間
43、的友誼也多了裂痕。心要寬雖然大家在一個團隊,為了同一個目標(biāo)在奮斗,但是每個人依舊是個獨立的個體,不可能在每一個方面大家都是想的一樣的,當(dāng)某個隊員自己有一些想法時,我們要個他一個寬松的環(huán)境讓他坦誠的說出心里的話,作為聽眾的我們,要耐心的聽取他的意見,認真思考,然后用合適的方式進行討論,不能別人一說什么就否定人家,這樣一來,以后隊里就不會再有人說話了,好的創(chuàng)意和想法也不會有被挖掘的機會。如果我們自己心里有什么想法,也要大膽的說出來,但是要注意語氣和措辭,畢竟這是大家的團隊,不是以自己為領(lǐng)導(dǎo)的工作班子。要聽得進別人的意見。這次單片機課程設(shè)計,在我們看來不僅僅是單純的一個單片機的應(yīng)用,而是多學(xué)科多領(lǐng)域
44、的綜合設(shè)計。做完這次設(shè)計,我們有以下幾點心得體會:做這個設(shè)計不是光靠學(xué)好單片機這一門課就可以的。在這個課程項目的設(shè)計過程中,我們充分體會到了要全面發(fā)展,各個學(xué)科都要學(xué)好,知識的全面性很重要。比如在編寫程序時,我們就明顯感覺到了C語言的基礎(chǔ)不夠扎實,當(dāng)初學(xué)C語言的時候并沒有意識到它的重要性,而當(dāng)我們真正開始做設(shè)計的時候才發(fā)現(xiàn)一個課程的項目設(shè)計是需要其他許多項目來給它做基礎(chǔ)的。做這個設(shè)計不是光靠學(xué)好書本上的知識就夠的。設(shè)計的靈魂便在于它的理念,要做出一個好的設(shè)計作品來,需要你平時對生活有足夠的觀察和了解,古話說,學(xué)以致用,與時你設(shè)計出來的東西原理再高深,但在實際生活中卻無處可用,那也是沒有任何價值
45、的。所以在刻苦學(xué)習(xí)的同時,也要關(guān)注社會動態(tài),了解人民生活所需,有一個正確的設(shè)計理念才能使自己走對第一步棋。6參考文獻1 光飛,良兒,樓然苗等.單片機C程序設(shè)計實例指導(dǎo).: 航空航天大學(xué),2005:47-512 梅麗鳳,王艷秋,汪毓鐸,軍. 單片機原理與接口技術(shù)(修訂本). : 清華大學(xué);交通大學(xué),2006:329-3403 軍.單片機原理與接口技術(shù).:華東理工大學(xué).2006:88-924 毛德平,凌有濤.一種基于RS 485總線的溫度、濕度測控系統(tǒng).工程科技學(xué)院,2006:168-1705 胡漢才.單片機原理與其接口技術(shù).第一版.:清華大學(xué),2003:424-4796 葉帆工作室 7 科技.單片機典型模塊設(shè)計實例導(dǎo)航.:人民郵電,2004:418-4208 龔健偉技術(shù)(串口通信技術(shù)).gjwtech.9 凌陽科技教育推廣中心 凌陽科技教育推廣中心 倪繼烈,新
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版跨境電商園區(qū)企業(yè)入駐合作合同書3篇
- 二零二五版購房合同中合同解除后的爭議解決3篇
- 二零二五版房屋買賣合同公證操作規(guī)范及法律效力研究3篇
- 二零二五年度高級家教專業(yè)能力認證聘用合同集錦3篇
- 二零二五年度電子商務(wù)網(wǎng)絡(luò)安全監(jiān)測與應(yīng)急響應(yīng)合同3篇
- 二零二五年度高端精密鈑金件加工服務(wù)合同2篇
- 二零二五年鋼材加工損耗賠償合同標(biāo)準(zhǔn)3篇
- 2025年度農(nóng)業(yè)現(xiàn)代化合作雙邊合同3篇
- 二零二五年度酒店客房預(yù)訂與客房管理服務(wù)合同3篇
- 二零二五年度金正茂集團管理體制實施合同9篇
- 高考詩歌鑒賞專題復(fù)習(xí):題畫抒懷詩、干謁言志詩
- 2023年遼寧省交通高等??茖W(xué)校高職單招(英語)試題庫含答案解析
- GB/T 33688-2017選煤磁選設(shè)備工藝效果評定方法
- GB/T 304.3-2002關(guān)節(jié)軸承配合
- 漆畫漆藝 第三章
- CB/T 615-1995船底吸入格柵
- 光伏逆變器一課件
- 貨物供應(yīng)、運輸、包裝說明方案
- (完整版)英語高頻詞匯800詞
- 《基礎(chǔ)馬來語》課程標(biāo)準(zhǔn)(高職)
- IEC61850研討交流之四-服務(wù)影射
評論
0/150
提交評論