RS-485總線教學(xué)提綱_第1頁
RS-485總線教學(xué)提綱_第2頁
RS-485總線教學(xué)提綱_第3頁
RS-485總線教學(xué)提綱_第4頁
RS-485總線教學(xué)提綱_第5頁
已閱讀5頁,還剩93頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。RS-485總線-目錄摘要2第一部分RS485總線應(yīng)用綜述3RS-485標(biāo)準(zhǔn)規(guī)范3RS-485可靠性設(shè)計(jì)問題4RS-485多機(jī)通訊網(wǎng)絡(luò)實(shí)現(xiàn)8第二部分會議表決系統(tǒng)的485網(wǎng)絡(luò)硬件實(shí)現(xiàn)101系統(tǒng)總體設(shè)計(jì)方案論證10211系統(tǒng)框圖設(shè)計(jì)112.2芯片選擇考慮122.2.1單片機(jī)89C2051及通訊接口芯片MAX3085/30821223電路設(shè)計(jì)13PCB板的制作14電路調(diào)試15第三部分基于485總線的會議系統(tǒng)多機(jī)通訊編程163.1AT89C2051的串口通訊原理163.2PC和單片機(jī)的多機(jī)通訊測試213.3會議

2、系統(tǒng)軟件設(shè)計(jì)思路23331分層管理軟件模式和通訊協(xié)議2334主機(jī)部分編程實(shí)現(xiàn)273.5分機(jī)部分編程實(shí)現(xiàn)296MicrowireEEPROM編程317PC用戶軟件的實(shí)現(xiàn)34附錄35小結(jié)與致謝36參考文獻(xiàn)36RS-485總線多機(jī)通訊實(shí)現(xiàn)會議表決系統(tǒng)研制論文作者:潘劍鋒指導(dǎo)老師:陳耀和摘要RS-485總線作為一種允許多點(diǎn)、差分?jǐn)?shù)據(jù)傳輸?shù)耐ㄓ嶋姎庖?guī)范,定義了一個極為堅(jiān)固可靠的通信鏈路,具有長傳輸距離、寬共模范圍、信號沖突保護(hù)和良好的抑制高噪聲等特性。本文在研究討論RS-485總線的特點(diǎn)及組網(wǎng)技術(shù)的基礎(chǔ)上,對RS-485總線多機(jī)通訊能力在一個會議表決系統(tǒng)上的實(shí)現(xiàn)進(jìn)行了設(shè)計(jì)總結(jié),較為詳細(xì)地闡述了設(shè)計(jì)要點(diǎn)和

3、關(guān)鍵技術(shù)。此外對系統(tǒng)中應(yīng)用的Microwire總線93CXX系列串行CMOSEEPROM的讀寫編程也作了一個較為深入的討論,并給出了一個通用的讀寫程序。關(guān)鍵字RS-485總線、多機(jī)通訊、Microwire總線、93CXX系列串行CMOSEEPROMImplementofmultiplecommunicationbyRS-485standardbusandapplicationinmeetingvotesystemauthor:PanJianfengadviser:ChenYaoheAbstractRS-485,isacommunicationelectricalstandardwhichall

4、owsmultipoint,differentiatedatatransmission.Itsperfectspecialtiesoflongdistancetransmission,widecommonmodebound,fail-safeforsignalclashandgoodnoisecontroldefinedastronglylinkforserialcommunication.ThisarticlestudybaseonthefeatureofRS-485anditsimplementationofmultiplecommunication,andcallabouttheappl

5、icationinameetingvotesystem.Additionally,wealsomakeadiscussionaboutthe93CXXfamilyofserialCMOSEEPROMwhicharebasedontheMicrowirebus.Auniversalprogramisgivenout.KeywordRS-485bus、multiplecommunication、Microwirebus93CXXfamilyofserialCMOSEEPROM第一部分RS-485總線應(yīng)用綜述1.1RS-485標(biāo)準(zhǔn)規(guī)范RS-485由來RS-485標(biāo)準(zhǔn)是由兩個行業(yè)協(xié)會于1983年共同制

6、訂合開發(fā)的,即EIA電子工業(yè)協(xié)會和TIA通訊工業(yè)協(xié)會。EIA開始時在它所有的標(biāo)準(zhǔn)前加上“RS”前綴(推薦標(biāo)準(zhǔn)Recommendedstandard的縮寫)。這個名稱一直延用至今,現(xiàn)在EIA-TIA已正式用“EIA/TIA”取代“RS”以明確其來源。修訂后命名為TIA/EIA-485-A。不過我們還是習(xí)慣地稱之為RS-485。RS-485由RS-422發(fā)展而來。兩者是工業(yè)應(yīng)用中最成功的標(biāo)準(zhǔn)。而RS-422是一個差分標(biāo)準(zhǔn),是為了彌補(bǔ)RS232的不足提出來的,改進(jìn)了RS-232通訊距離短和速率低的缺點(diǎn),RS-422定義了一種平衡通信接口,將傳輸速率提高到了10Mbps,在速率低于1000Kbps時傳

7、輸距離延長到4000英尺,并且允許在一條平衡線上連接最多10個接收器,可以說RS-422是一種單機(jī)發(fā)送、多機(jī)接收的單向傳輸規(guī)范。RS-485是在RS-422的基礎(chǔ)上,為了擴(kuò)展應(yīng)用范圍和通訊能力,增加了多點(diǎn)、雙向通信能力,也就是說,允許多個發(fā)送器連接到同一條總線上,同時,增加了發(fā)送器的驅(qū)動能力和通訊沖突的保護(hù)特性,通過差分傳輸擴(kuò)展總線的共模范圍。RS-485滿足了所有的RS-422規(guī)范,但反之則不成立。RS-485規(guī)范RS-485實(shí)質(zhì)上是一個電氣接口規(guī)范,它只規(guī)定了平衡驅(qū)動器合接收器的電特性,而沒有規(guī)定插件、傳輸電纜與及通信協(xié)議。只是對應(yīng)于七層模型中的物理層。RS-485的接口規(guī)范特點(diǎn):平衡傳輸

8、、差動工作模式多點(diǎn)通信驅(qū)動器帶載最小輸入電壓:1.5V驅(qū)動器帶載最大輸入電壓:5V最大輸出短路電流:250mA驅(qū)動器輸出阻抗:54接收器輸入門限:200mV接收器最小輸入阻抗:12K7V至12V總線共模范圍最大輸入電流1.0mA/-0.8mA(12Vin/-7Vin)接收器輸出邏輯高:200mV接收器輸出邏輯低:200mV最大總線負(fù)載:32個單位負(fù)載允許收發(fā)器數(shù)目:32Tx、32Rx最大傳輸速率:10Mbps最大電纜長度:4000英尺(約1.2千米)RS-485標(biāo)準(zhǔn)定義了一個基于單對平衡線的多點(diǎn)、雙向(半雙工)的通訊鏈路,提供了高噪聲抑制、高的傳輸速率、長傳輸距離、寬共模范圍和低成本的通信平臺

9、。RS-485可靠性設(shè)計(jì)問題涉及到RS-485的可靠性設(shè)計(jì)的問題很多。在整個設(shè)計(jì)的過程中,我收集整理了關(guān)于這些方面的資料并且在設(shè)計(jì)中注意到了這些問題,通過設(shè)計(jì)實(shí)驗(yàn)的觀察和思考,基本弄清了其產(chǎn)生的原因及原理和解決方案。RS-485網(wǎng)絡(luò)連接和節(jié)點(diǎn)配置事實(shí)上,雖然RS-485規(guī)范的定義里只定義了一個雙線通訊鏈路,但是在實(shí)際使用中,我們可以利用一條或者兩條這樣的鏈路來建立實(shí)用的通訊網(wǎng)絡(luò),也就是說,RS-485可以很好的支持半雙工和全雙工的通訊模式。一般的,對于一條這樣的鏈路,網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)采用終端匹配的總線型結(jié)構(gòu)。而不支持常見的星型或者環(huán)形結(jié)構(gòu)。485總線的網(wǎng)絡(luò)配置實(shí)際上對通訊的可靠性是影響巨大的,特

10、別是在通信距離的延長和通信數(shù)據(jù)傳送速率或者說通信所用波特率的提高之后,不良影響會越來越嚴(yán)重。以下(1)、(2)、(3)是一些常見的錯誤的連接方案,其中的小圓圈代表一個接收/發(fā)圖1常見錯誤連接及改正方案送器單元。連線表示連接總線的電纜,一般我們采用雙絞線作為這個連接介質(zhì)。在(4)、(5)、(6)里,我給出了對應(yīng)于(1)、(2)、(3)的連接改正方案。(1)、(2)、(3)連接方案,雖然在某些情況下,比如很短的距離,對通信速率要求不高,可以采用低速率,而且收發(fā)單元也很少等場合,可能可以實(shí)現(xiàn)通信。但一旦這些方案用于通信距離長,和通信速率要求高的現(xiàn)場,就可能出現(xiàn)不能通信。主要的原因就是信號在各個支路會

11、發(fā)生信號反射,和原信號疊加,造成了信號的不穩(wěn)定性。另外,由電磁學(xué)理論我們知道,反射還可能發(fā)生在線路阻抗不連續(xù)或者起伏較大的地方,比如不同線路段采用了不同的電纜,某個段連接了很多收發(fā)器而另一段卻很少,又或者某收發(fā)單元到主干總線的連線太長,都可能出現(xiàn)阻抗的不連續(xù),發(fā)生信號反射??偩€的配置還涉及到連接的收發(fā)器數(shù)目問題,RS-485總線沒有給出一個允許連接的收發(fā)器數(shù)目的標(biāo)準(zhǔn)規(guī)定,但是規(guī)定了最大的總線負(fù)載容量,那就是最多接32個單位負(fù)載,每個單位負(fù)載的最大輸入電流是1.0mA/-0.8mA,也就是相當(dāng)于12K。這就給接口芯片一個擴(kuò)充收發(fā)器的可能性,器件生產(chǎn)商通過增大收發(fā)器的輸入電阻從而達(dá)到增加節(jié)點(diǎn)數(shù)的目

12、的。在我們的這個系統(tǒng)的設(shè)計(jì)中,因?yàn)橐蟮墓?jié)點(diǎn)(分機(jī))很多,采用的就是現(xiàn)在可以達(dá)到的最大允許限度,接256個的收發(fā)器。對于這個問題,在EIA485中給出了說明,即所謂的UNITLOAD定義,一個UNITLOAD的標(biāo)準(zhǔn)收發(fā)單元的輸入電阻就是12k。當(dāng)使用的是這種標(biāo)準(zhǔn)收發(fā)單元時,總線上只可以接32個收發(fā)器?,F(xiàn)在有些收發(fā)器為1/4UNITLOAD或者1/8UNITLOAD,這就是說輸入電阻分別是48K和96K,這樣,總線上的節(jié)點(diǎn)數(shù)就可以增大到128個或者256個??偩€匹配和節(jié)點(diǎn)引出線為了解決總線上的發(fā)射和干擾,有時候就需要對總線進(jìn)行終端匹配,由于RS-485一般是用UART(UniversalAsyn

13、chronousReceiver/Transmitter通用異步接收/傳送器)方式進(jìn)行通訊,而UART是在每個數(shù)據(jù)的中點(diǎn)采樣數(shù)據(jù)的,只要反射信號在采樣開始時已經(jīng)衰減到可以忽略,那就不用考慮總線匹配問題??偩€匹配問題和數(shù)據(jù)傳輸速率、電纜長度、與及信號轉(zhuǎn)換速率等都有關(guān)系,判斷在什么樣的情況下需要加匹配有一個經(jīng)驗(yàn)性的原則:當(dāng)信號的轉(zhuǎn)換時間(上升或者下降時間)超過電信號沿總線單向傳輸所需的時間的3倍以上時就可以不加匹配。當(dāng)要求考慮匹配時,一般的我們采用在總線兩端各接一個阻值等于電纜特性阻抗的電阻,例如雙絞線的這個特性阻抗是100至120之間。這個電阻就可以選擇在這個訪問范圍,如圖2(a)。另外還可以用

14、RC匹配,如圖2(b);或者使用一種加二極管的方案,如圖2(c)。這幾種方案都有不同的特點(diǎn):(a)有一個缺點(diǎn),即匹配電阻要消耗電流,不適用于那些需要低功耗的系統(tǒng)。(b)的RC網(wǎng)絡(luò)很省電,但C值很難確定,要在功耗和匹配效率間折衷考慮。另外這種方法對信號的質(zhì)量也產(chǎn)生破壞。(c)實(shí)際上沒真正實(shí)現(xiàn)匹配,但利用了二極管的鉗位作用削弱了反射,改善了信號質(zhì)量,而且節(jié)能效果很好。在上面已經(jīng)提了一下,在節(jié)點(diǎn)支路最容易產(chǎn)生反射,其中節(jié)點(diǎn)引出線是個最大的影響因素,在圖1中我們也看到,其錯誤連接就是因?yàn)楣?jié)點(diǎn)的引出線太長了。幾乎可以比擬主干線。事實(shí)上,一個485系統(tǒng)可以允許的引出線長度和信號的轉(zhuǎn)換時間、數(shù)據(jù)速率很有關(guān)系

15、,有個經(jīng)驗(yàn)公式可以粗略計(jì)算這個最大長度:Lmax(rise0.2m/ns)/10Lmax=(rise0.2m/ns)/10(rise可以是上升或者下降時間)在設(shè)計(jì)中我們選擇了MAX3085/3082作為接口芯片,對應(yīng)于它們的250ns的上升/下降時間,節(jié)點(diǎn)單元(分機(jī))的最大引出線由上式算得約為5米。擺率限制(Slew-ratelimited)其實(shí)在上面的分析我們也可以看到,如果增大信號的上升或者下降時間,也就是減緩信號的前后沿斜率,對降低總線匹配和引出線長度的要求,改善信號的質(zhì)量,都是很有利的,另外對于信號中的高頻成分還可以有抑制作用,減少了電磁輻射。這就是所謂的擺率限制措施。但是這種做法也限

16、制了數(shù)據(jù)的傳輸速率。失效保護(hù)(Fail-safe)RS-485標(biāo)準(zhǔn)規(guī)定接收器門限為200mV。這樣能夠提供較高的噪聲抑制能力。但是,也會有一個問題:當(dāng)總線上的信號處于-200mV+200mV之間時,接收器接收到的信號狀態(tài)無法確定,注意到UART是以一個“0”電位作為起始位開始一個數(shù)據(jù)幀的傳遞的,所以這個不定態(tài)可能會使UART錯誤的接收一些數(shù)據(jù),從而導(dǎo)致系統(tǒng)進(jìn)行錯誤動作。這個問題是不容忽視的,特別是對于實(shí)時性要求很高和控制要求高的場合,誤操作的后果是很嚴(yán)重的。而當(dāng)系統(tǒng)總線空閑、開路、或者短路時都有可能出現(xiàn)兩線電壓低于200mV的情況。故必須采用有效的措施來避免接收器處于不定態(tài)。傳統(tǒng)的做法是給總線

17、加偏置電阻。這樣在空閑或者開路是把總線偏置到一個確定態(tài)。但是這種方法不能解決總線短路問題。在我們設(shè)計(jì)過程中,考慮了這個問題,采用的MAX3085/3085芯片是有失效保護(hù)的。它采用的方法很巧妙,也是現(xiàn)在解決這個問題的最好方法:將接收門限移到200mV/-50mV,這樣就解決了在總線短路下的失效問題。因?yàn)檫@樣規(guī)定的門限,對于大于50mV我們就確定為“1”態(tài),對于短路狀態(tài)下的“0V”當(dāng)然就是確定的“1”態(tài)。總線接地問題對于電子系統(tǒng)的設(shè)計(jì)。我們知道電源和接地問題是一個非常關(guān)鍵的問題,如果處理不好,經(jīng)常導(dǎo)致不能穩(wěn)定的工作甚至危及系統(tǒng)安全。對于一個可靠的RS-485系統(tǒng)也是這樣。因?yàn)樵赗S-485的規(guī)范

18、中只是強(qiáng)調(diào)了用兩根雙絞線實(shí)現(xiàn)系統(tǒng)的通訊線路A(+)和B(-),受此影響。一個錯誤的觀點(diǎn)是認(rèn)為RS-485鏈路不需要信號地,只要把A和B線路用兩個雙絞線連起來就行了,因?yàn)镽S-485接口是用差分方式傳輸信號的,并不需要相對于某個參照地來檢測信號,系統(tǒng)只需要檢測兩線間的電位差就可以了。無可否認(rèn)在某些情況下這是可以工作的,但是也給系統(tǒng)留下了很大的隱患。一個問題就是共模干擾,注意到收發(fā)器只有在共模電壓不超過一定的范圍(-7V+12V)條件下才能正常工作,所以當(dāng)共模電壓超出這個范圍時通訊的可靠性就受到考驗(yàn)了。嚴(yán)重的話還可能燒毀接口。圖3共模干擾模型VCM=VosVGPD如圖3給出的模型,發(fā)送器A對發(fā)送器

19、B發(fā)數(shù)據(jù)時,A輸出的共模電壓為Vos,如果A、B是不共地的話。那么就可能存在地電位差VGPD。那么接收器B輸入的共模電壓就會達(dá)到VCM=VosVGPD。RS-485標(biāo)準(zhǔn)規(guī)定Vos3V,但是注意到VGPD可能會有很大的幅度(甚至幾十伏特)且可能伴有強(qiáng)的干擾信號,這樣B接收端輸入VCM就有可能超出正常范圍,在信號線上引入干擾電流,影響通信甚至燒毀電纜。除了共模干擾,還有一個就是電磁輻射(EMI)對總線的影響,驅(qū)動器輸出信號中的共模部分需要一個返回通路,如果系統(tǒng)沒有接地的回路,共模信號沒有一個低阻的回路,就會以電磁輻射的方式返回源端,整個總線就像一個長天線一樣向外輻射電磁波。這樣造成的信號損失和信息

20、泄漏是很嚴(yán)重的。接地的措施其實(shí)很多,不過這些措施與共模干擾的頻率和干擾源的內(nèi)阻有關(guān),圖4給出了一些不同情況下可考慮的措施:圖4接地方案(1):干擾源內(nèi)阻大,直接加一低阻信號地線;(2):干擾源內(nèi)阻小,在(1)的基礎(chǔ)上可以在信號地回路中加電阻,不過注意到這可能會增大共模電壓,R1、R2的取值要控制好,不能影響通信;(3):浮地接法,當(dāng)干擾源內(nèi)阻實(shí)在太小,這種方法是可行的,因?yàn)楦魯嗔私拥鼗芈?,形成的環(huán)路電流不會很大;(4):如果在(3)情況下,信號地和大地或機(jī)殼不能隔斷,那這種電氣隔離的方法是可行的。當(dāng)然,以上所述的各種情況都是在低頻率的情況下適用,如果是高頻瞬態(tài)干擾就不能這樣考慮了。因?yàn)橐€有電

21、感,這個接地回路對瞬態(tài)干擾等于開路,瞬態(tài)干擾的產(chǎn)生我們可以想象得到,系統(tǒng)周邊的別的大功率感性器件,如電機(jī)、變壓器、繼電器等等,甚至最平常的就是閃電了。采用的措施可以類似圖4中的(4)的電氣隔離方法?;蛘哂梅烹姽艿人矐B(tài)抑制器件,總之最終目的就是將瞬態(tài)放出的能量引到大地上去。靜電放電保護(hù)(ESD)對于一個工作在實(shí)際的環(huán)境中的系統(tǒng),所受到的外界影響是多種多樣的,靜電放電(ElectrostaticDischarge)就是一個很關(guān)鍵的問題。國際工業(yè)標(biāo)準(zhǔn)規(guī)定的靜電放電有關(guān)規(guī)定主要有:IEC(1000-4-2)規(guī)定:15KV氣隙放電;8KV接觸放電;15KV人體模型IEC(1000-4-4)規(guī)定:4KV電

22、快速瞬變(鑒定中)放電現(xiàn)象是很普遍存在的,上面給出的人體模型等就給出了一個標(biāo)準(zhǔn)。這些都會損壞總線收發(fā)器的端口,從而破壞通信。對于設(shè)計(jì)RS-485總線系統(tǒng)而已,可以通過選擇提供了ESD保護(hù)的芯片來解決。RS-485多機(jī)通訊網(wǎng)絡(luò)實(shí)現(xiàn)因?yàn)镽S-485標(biāo)準(zhǔn)只是提供了一個電氣上的一個規(guī)定,實(shí)際上硬件上的實(shí)現(xiàn)方案可以有很多不同的設(shè)想。RS-485接口可連接成半雙工和全雙工兩種通信方式。如下圖5(a)、(b)所示。圖5(a)RS-485半雙工通信電路圖5(b)全雙工通信電路注意到(a)、(b)中收發(fā)器的不同之處,其中(a)中的是半雙工的接口芯片,(b)中的是全雙工的接口芯片,DI是發(fā)送數(shù)據(jù)到總線,RO是接收

23、總線上的數(shù)據(jù),DE是發(fā)送允許,/RE是接收允許。對于全雙工芯片,這兩個控制線可以同時有效,但對于半雙工的芯片,同一時間只能一個有效。在下面將在MAX4082的說明中詳述其意義。事實(shí)上,當(dāng)傳輸?shù)木嚯x很長時,而雙方信息的交換又不是很頻繁時都是采用半雙工方式,這樣可以節(jié)省一對傳輸用線。在會議系統(tǒng)中,我們在設(shè)計(jì)過程中考慮過傳統(tǒng)的網(wǎng)絡(luò)設(shè)計(jì)方案。并且考慮了分機(jī)數(shù)目多,總線長的特點(diǎn)采用了半雙工網(wǎng)絡(luò)??紤]的一個典型的半雙工485網(wǎng)絡(luò)如圖6所示。圖6RS-485網(wǎng)絡(luò)方案之一其中的unitload概念是EIA的新提法。表示一個標(biāo)準(zhǔn)單元,參見1.2節(jié)的描述。我們知道實(shí)際上unitload(標(biāo)準(zhǔn)收發(fā)單元)的關(guān)鍵是輸入

24、電阻,即12K。當(dāng)這個輸入電阻變化時,總線可以帶動的負(fù)載收發(fā)器數(shù)目也要改變,這個和采用的芯片很有關(guān)系。上圖5中的R1、R2是總線匹配電阻,R3和R4是失效保護(hù)電阻。根據(jù)我們的系統(tǒng)設(shè)計(jì)要求,在收集通訊接口芯片的資料過程中了解到美國MAXIM公司的485系列芯片在有效的進(jìn)行485網(wǎng)絡(luò)配置方面有很大的優(yōu)越性,我們采用了其中的MAX4080系列芯片來進(jìn)行設(shè)計(jì)。采用的網(wǎng)絡(luò)方案和圖6所示有了很大的改進(jìn)。這個在下面對芯片的說明中再來說明其優(yōu)點(diǎn)。網(wǎng)絡(luò)圖如下圖7。圖7會議系統(tǒng)采用的485網(wǎng)絡(luò)方案第二部分會議表決系統(tǒng)的485網(wǎng)絡(luò)硬件實(shí)現(xiàn)21系統(tǒng)總體設(shè)計(jì)方案論證隨著社會的進(jìn)步,人們需要共同來決定的事情越來越多,開會

25、投票表決是大家公認(rèn)的公平嚴(yán)肅的好方法。而過去那種人工手工點(diǎn)票的方法,隨著人數(shù)增多越來越顯出其不足:慢,而且容易出錯。能不能有一個簡單易用而且準(zhǔn)確的系統(tǒng)可以代替呢?會議表決系統(tǒng)就是為了迎合這種需要而設(shè)計(jì)的,由于采用了簡單而可靠的RS-485網(wǎng)絡(luò)來實(shí)現(xiàn),只需要兩條線就可以實(shí)現(xiàn)上千甚至上萬臺分機(jī)的連接通信。很好的解決多人表決和低成本的要求。系統(tǒng)的硬件設(shè)計(jì)要求硬件上要求實(shí)現(xiàn)簡單,各個分機(jī)硬件上是可互換的,各分機(jī)有各自獨(dú)一的分機(jī)號,通過軟件來實(shí)現(xiàn)。表決按鍵功能全且使用簡單,有指示燈直觀顯示。直接或間接和PC串口通信,要求PC上有WINDOWS圖形界面的軟件,可以通過軟件操作控制整個表決過程,另外設(shè)定一個

26、主席分機(jī),表決過程也可以由主席分機(jī)控制。在我們設(shè)計(jì)的這個表決系統(tǒng)里。包括了:主機(jī)箱,內(nèi)含四臺主機(jī),分別控制四條RS-485線路,每條線路下最多可以帶250臺代表分機(jī)單元。主機(jī)帶可擴(kuò)展接口。代表分機(jī)單元。提供6個按鍵,和9個紅色LED顯示燈。其中按鍵里5個用于表決,一個是簽到和確定鍵。LED里一個是簽到/確認(rèn)指示,其余8個是表決燈。用于建立RS-485網(wǎng)絡(luò)的連接電纜和連接盒。與及和PC通信的RS-232接口。系統(tǒng)框圖設(shè)計(jì)考慮到會議系統(tǒng)的特殊性,即分機(jī)數(shù)目很大,連線長且多,所以采用了半雙工的RS-485網(wǎng)絡(luò)來實(shí)現(xiàn)。另外,考慮到如果代表分機(jī)直接和PC機(jī)進(jìn)行通信,PC機(jī)需處理的信息量很大,PC機(jī)串口的

27、多機(jī)通訊能力有限,此外485總線上的節(jié)點(diǎn)數(shù)目也不能很多。所以采用了分層管理的間接方法,那就是最多每250臺分機(jī)就用一個主機(jī)來管理,分機(jī)的信息只和主機(jī)交換。各主機(jī)收集完信息并初步處理后才發(fā)給PC機(jī),這樣,PC機(jī)對通信部分就不需要進(jìn)行繁復(fù)的切換處理,處理上主要集中于后臺對信息數(shù)據(jù)的數(shù)據(jù)庫處理和對用戶界面的結(jié)果顯示處理了。對于具體的線路配置,我們也做了一些考慮,首先是主機(jī)的數(shù)目定為4臺,裝在主機(jī)箱里,主機(jī)和屬下代表分機(jī)是通過RS-485半雙工網(wǎng)絡(luò)來實(shí)現(xiàn)通信的。這樣一共可以帶1000臺分機(jī)。此外,對于主機(jī)和PC機(jī)的通信,可以有兩種選擇,一種是用RS-232C總線來實(shí)現(xiàn)通信,一種還是用RS-485總線,

28、考慮到系統(tǒng)的可擴(kuò)展性,將來還可以進(jìn)行主機(jī)擴(kuò)展,最多可以擴(kuò)展到250臺主機(jī),而RS-232C的多機(jī)通信能力和傳輸距離都很有限,故還是采用RS-485總線。對于主機(jī)的通信軟件編寫也帶來了方便。系統(tǒng)總體框圖見下頁圖8。其中的3082是RS-485總線接口芯片。圖中的主機(jī)分機(jī)框是單片機(jī)89C2051。MAX232是RS-485和RS-232C的電平轉(zhuǎn)換接口芯片。幾個接口:“TOPC”是系統(tǒng)和PC機(jī)的RS-232接口。實(shí)際中一共用了4根線:GND(地)、TXD(發(fā)送)、RXD(接收)、RTS(PC機(jī)請求發(fā)送。用作控制485芯片的接收發(fā)送切換)。“EXTOPC”是為了系統(tǒng)擴(kuò)展主機(jī)和PC的通信連接?!爸鳈C(jī)擴(kuò)

29、展1”和“主機(jī)擴(kuò)展2”都是為了把擴(kuò)展的主機(jī)連到與PC通信的RS-485總線上來。EEPROM是主機(jī)用來存儲收集到的分機(jī)發(fā)來的信息而擴(kuò)展的外存儲器件。圖8會議系統(tǒng)總體框圖2.2芯片選擇考慮要很好的達(dá)到系統(tǒng)所要求的通信能力,所選用的單片機(jī)和通迅接口芯片都很關(guān)鍵,一開始我們曾想用德州儀器(TI)公司的MSP430系列單片機(jī),因?yàn)榭紤]到系統(tǒng)的功耗。后來因?yàn)樵O(shè)計(jì)時間緊和通訊能力考慮還是決定用我們熟悉的MCS51系列的單片機(jī),首先功耗上也不會很大,而且最重要的是其完善的UART通信能力,特有的第九位多機(jī)通信位方式為我們這個系統(tǒng)的多機(jī)通信編程提供很好的硬件支持。2.2.1單片機(jī)89C2051及通訊接口芯片M

30、AX3082單片機(jī)選用的是Atmel公司的20腳帶2K字節(jié)閃速存儲器的8位單片機(jī)AT89C2051。AT80C2051是一種帶2K字節(jié)閃速可編程可擦除只讀存儲器(FLASHROM)的低電壓、高性能CMOS8位微控制器,該器件采用ATMEL高密度、非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51TH指令集和輸出管腳相兼容,由于將多功能8位CPU和閃速存儲器組合在單個芯片中,ATMEL的AT89C2051是一種高效微控制器。AT89C2051具有以下一些標(biāo)準(zhǔn)特性:2K字節(jié)的FROM、128字節(jié)RAM,15個I/O線,2個16位定時器/計(jì)數(shù)器,5個兩級中斷源結(jié)構(gòu),一個全雙工串行口,一個精確的模擬比

31、較器,片內(nèi)振蕩器和時鐘電路。此外,AT89C2051設(shè)計(jì)穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的省電模式,在閑置模式下,CPU停止工作,但RAM,定時器/計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作,在掉電模式下,保存RAM中的內(nèi)容并且凍結(jié)振蕩器,禁止所有其他芯片功能,直到下一個硬件復(fù)位為止。AT89C2051的可編程串行UART通道,和51系列單片機(jī)完全兼容的通信硬件:功能強(qiáng)大的全雙工串行通訊口,4種方式可供選擇,通訊波特率可軟件設(shè)置,串行接收、發(fā)送均可觸發(fā)中斷系統(tǒng)。其中的通信方式3為9位數(shù)據(jù)異步通訊UART方式,可程控的第九位數(shù)據(jù)為我們的設(shè)計(jì)提供了一個很好的進(jìn)行串行異步多機(jī)通信的實(shí)

32、現(xiàn)方案。MAX3082MAX3082是MAXIM公司的新一代RS-485通訊MAX30803089系列產(chǎn)品。是我們經(jīng)過大量信息收集比較后決定采用的。這一系列的RS-485芯片結(jié)合了許多MAXIM的最有價(jià)值得特性和創(chuàng)新:真正的失效保護(hù)操作,軟件可選的半/全雙工操作,1/8單位負(fù)載(允許接256個總線節(jié)點(diǎn)),三種級別的擺率限制等等。它們可以說是第一個滿足RS-485規(guī)范同時又提供真正的失效保護(hù)輸出的器件。整個系列的芯片分成3個不同速度級別。沒級別里又分三種不同的器件。根據(jù)選用通訊芯片的數(shù)據(jù)傳輸速度應(yīng)該比設(shè)計(jì)的系統(tǒng)所用的數(shù)據(jù)傳輸速度略高的原則我們選用了MAX3082,它是一種8引腳的半雙工器件,滿足

33、工業(yè)標(biāo)準(zhǔn)75176引腳排列。和該系列的其他芯片一樣,在4.5V到5.5V的電源中僅吸收600uA的工作電流。并且有接收發(fā)送使能端,傳輸速率為115Kbps。我們也采用過MAX3085來實(shí)驗(yàn),也很好,這兩種芯片的區(qū)別僅僅在于MAX3085的傳輸速率是500Kbps,比MAX3082略大。AT89C2051和MAX3082引腳如圖9,詳細(xì)功能在電路設(shè)計(jì)部分說明。圖9AT89C2051和MAX3082引腳排列23電路設(shè)計(jì)根據(jù)總體的系統(tǒng)框圖。整個系統(tǒng)的硬件分為主機(jī)板和分機(jī)板兩部分。主機(jī)板包括了四臺主機(jī)單元、主機(jī)和分機(jī)的通訊接口,主機(jī)和PC的通訊接口、系統(tǒng)擴(kuò)展接口和提供給主機(jī)以及各線路分機(jī)工作的整流電源

34、部分。分機(jī)板包括了分機(jī)單片機(jī)一片89C2051、通信芯片MAX3082、6個按鍵,9個LED指示燈和提供分機(jī)電路工作的TL431穩(wěn)壓單元電路。詳細(xì)的電路設(shè)計(jì)原理圖見附錄。本系統(tǒng)的關(guān)鍵在于通訊,對于PC機(jī)只需向下對主機(jī)通訊;對于主機(jī),則需要對上接收PC的命令,對下分機(jī)發(fā)送命令和接收數(shù)據(jù);對于分機(jī),則需要對主機(jī)接收命令,對代表接收其簽到/表決信息并發(fā)送給主機(jī)。由于我們采用低成本的半雙工網(wǎng)絡(luò)。這些都由單片機(jī)對MAX3082芯片的通訊方向切換來完成。首先簡要說明一下MAX3082的發(fā)送接收狀態(tài)的切換,見下圖表10,其中DE腳是輸入允許,/RE腳是輸出允許,DI是輸入,RO是輸出。由表可見,當(dāng)DE=1時

35、不管/RE是什么狀態(tài),芯片處于發(fā)送狀態(tài),將數(shù)據(jù)發(fā)送到總線上;當(dāng)/RE0時,不管DE狀態(tài)如何,芯片處于接收狀態(tài),A-B間差分電壓-50mV時接收到數(shù)據(jù)“1”,-200mV時接收到數(shù)據(jù)“0”。圖10MAX3082/3085功能描述根據(jù)以上對MAX3082特點(diǎn)的考慮,主機(jī)單片機(jī)AT89C2051和兩片MAX3082連接分別對PC和屬下分機(jī)的兩條RS485總線線路接口,如圖11(a)。分機(jī)和一片MAX3082連接如圖11(b)。圖11主機(jī)分機(jī)通訊連接圖此外,由于PC機(jī)的串行口COM是全雙工的RS-232接口,在系統(tǒng)框圖描述部分已經(jīng)提及,為了能很好的擴(kuò)展主機(jī)(最多到250臺),不直接用RS-232總線,

36、而采用PC和各主機(jī)都連接到同一條RS-485總線上進(jìn)行通訊的設(shè)計(jì)。這樣PC機(jī)就需要一個RS-232到RS-485的電平轉(zhuǎn)換接口電路來實(shí)現(xiàn)通迅的連接。我們采用了一片MAX232和一片MAX4082來完成這個電路,圖12給出了我們的設(shè)計(jì)中所采用的這個電路的實(shí)現(xiàn)方案。圖12PC機(jī)RS-232到RS485的轉(zhuǎn)換電路至于分機(jī)按鍵和LED等電路,參見附錄的電路圖。24PCB板的制作PCB板是設(shè)計(jì)電路的關(guān)鍵。PCB板的制作涉及到的技術(shù)知識很多,累積的經(jīng)驗(yàn)也很重要。在這幾個月的畢業(yè)設(shè)計(jì)過程中,經(jīng)過同學(xué)們大家一起學(xué)習(xí)討論,從失敗和成功的例子里研究學(xué)習(xí),特別是仔細(xì)研究學(xué)習(xí)指導(dǎo)老師陳耀和老師的對會議系統(tǒng)板的設(shè)計(jì),對

37、PCB板的設(shè)計(jì)經(jīng)驗(yàn)得到了很大提高。如下頁圖13,整個主機(jī)板的設(shè)計(jì),電源和數(shù)據(jù)傳送部分放在板上的不同部分,避免了電磁干擾(EMI)和電磁兼容(EMC)等問題。滿足了本系統(tǒng)對通訊的高可靠性要求的設(shè)計(jì)原則。圖14的分機(jī)板設(shè)計(jì)爺充分考慮了通訊和電源之間的隔離問題?!耙凰摹保焊髦鳈C(jī)單片機(jī)14:74HC14反相器“R1R4”:EEPROM“M1M9”:MAX3082M10:MAX232J1、J2:RS-232接口,J2是擴(kuò)展“J3J6”:對分機(jī)485總線接口J7,J8:主機(jī)擴(kuò)展圖13主機(jī)板PCB圖模型分機(jī)電路板布局如圖14,其中的措施也是將通信芯片遠(yuǎn)離電源POWER部分,而分機(jī)單片機(jī)靠近電源有利于更好的供

38、電,對板上各元件說明如下:L1:分機(jī)指示燈。K1:簽到和確認(rèn)鍵L2L9:表決選擇指示燈K2K6:表決按鍵圖14分機(jī)板PCB圖模型25電路調(diào)試PCB板設(shè)計(jì)并做板出來后,就要進(jìn)行線路檢查和硬件的調(diào)試。調(diào)試的方向和目的是:第一,電源電路要求能很好的供電和提供足夠的功率。并且要求穩(wěn)定,對數(shù)字電路部分沒有干擾。不影響通信。第二、數(shù)字電路的邏輯線路沒有因?yàn)橹瓢瀹a(chǎn)生的錯誤,各個部分連線正確。第三、通信部分線路能正常且穩(wěn)定地工作。對于第一條,在用示波器觀察電源輸出端波形,發(fā)現(xiàn)產(chǎn)生的紋波都很小,由于PCB上和數(shù)字部分的隔離做得很好也沒有產(chǎn)生任何干擾。對于第二條,調(diào)試結(jié)果:數(shù)字部分的PCB板沒有錯誤,邏輯連線上沒

39、有干擾。對于第三條,通信線路從電氣上是連通的,至于數(shù)據(jù)傳送是否正確,沒有受干擾,將用軟件調(diào)試來完成測試。關(guān)鍵的電路軟件調(diào)試在下一部分給出。第三部分基于485總線的會議系統(tǒng)多機(jī)通訊編程3.1AT89C2051的串口通訊原理和MCS51系列兼容的AT89C2051單片機(jī),其串口是一個功能強(qiáng)大的全雙工的串行通訊口。有4中工作方式可供選擇,通訊波特率可以用軟件設(shè)置,串行接收、發(fā)送均可觸發(fā)中斷系統(tǒng),可實(shí)現(xiàn)機(jī)與機(jī)之間的數(shù)據(jù)通訊和擴(kuò)展串行外設(shè)。串行通訊是將構(gòu)成數(shù)據(jù)或字符的每個二進(jìn)制碼位,按照一定的順序逐位進(jìn)行傳輸?shù)耐ㄓ嵎椒?,其傳輸有兩種基本的方式:同步通訊方式:此方式基本特征是發(fā)送和接收時鐘始終保持嚴(yán)格的同

40、步。通常設(shè)定了12個字符的起始同步字符SYNC來指示傳輸數(shù)據(jù)流的開始,然后收發(fā)雙方開始同步計(jì)數(shù)和數(shù)據(jù)傳輸。異步通訊方式:基本的特征是按照一幀一幀的數(shù)據(jù)流進(jìn)行傳送數(shù)據(jù)。不需要同步字符SYNC,也不需要保持?jǐn)?shù)據(jù)流的連續(xù)性,而是發(fā)送和接收雙方按照規(guī)定的傳輸格式來進(jìn)行通訊。串行數(shù)據(jù)傳輸方向:一般情況下,串行通訊中數(shù)據(jù)的傳輸是在兩個通訊端口之間進(jìn)行的,根據(jù)數(shù)據(jù)傳輸?shù)姆较蚩头譃橐韵聨追N方式。單工方式:此種方式下,只用一根通訊線,一端聯(lián)接發(fā)送方,另一端聯(lián)接接收方,形成單向聯(lián)接,數(shù)據(jù)只允許按照一個固定的方向傳送。半雙工方式:此種方式下的系統(tǒng)中每個通訊設(shè)備均有發(fā)送器和接收器,由電子開關(guān)切換,兩個通訊設(shè)備之間只用

41、一根通訊線相連接,通訊雙方都可以接收或者發(fā)送,但同一時刻只能單向傳輸。全雙工方式:此種方式采用信道劃分技術(shù),即一方的發(fā)送端和另一方的接收端用專用的通訊線相聯(lián)。也就是說,全雙工就是用兩根通訊線各自聯(lián)接發(fā)送/接收端,由兩根單方向線組成雙向傳輸。半雙工方式,盡管通訊效率比全雙工要低,不適用于敏感的交互式應(yīng)用系統(tǒng)。但一般情況下已經(jīng)能很好的使用在實(shí)時性不是很強(qiáng)的系統(tǒng)中了。這樣在實(shí)際的應(yīng)用中可以大大地降低成本。我們的會議系統(tǒng)采用的就是半雙工的方式。串行通訊接口電路:串行接口電路(接口芯片)很多,能完成異步通訊的硬件電路稱為UART(UniversalAsynchronousReceiverTransmit

42、ter),即通用異步收發(fā)器;能夠完成同步通訊的硬件電路稱為USRT(UniversalSynchronousReceiverTransmitter)通用同步接收器/發(fā)送器;既能同步又能異步通訊的硬件電路稱為USART。從本質(zhì)上說,所有的串行通訊接口電路都是以并行數(shù)據(jù)形式與計(jì)算機(jī)CPU接口,而以串行數(shù)據(jù)形式和外部通訊邏輯接口的。其基本的功能就是從外部通訊邏輯接收串行數(shù)據(jù)信息,轉(zhuǎn)換成并行數(shù)據(jù)后傳送給CPU;或者由CPU接收到的并行數(shù)據(jù)信息轉(zhuǎn)換成串行數(shù)據(jù)信息輸出給外部通訊邏輯進(jìn)行串行通訊。異步通訊說明:由于在我們的設(shè)計(jì)中進(jìn)行的是多機(jī)異步通訊,所以這里對異步通訊再作些說明,詳細(xì)的技術(shù)資料可以參考后面參

43、考書目里列出的書籍文獻(xiàn)。幀格式:在異步通訊里是一個很重要的概念。它是由起始位、數(shù)據(jù)位、奇偶校驗(yàn)位和停止位組成。異步傳輸中幀與幀之間用高電平分隔。起始位:在通訊線上當(dāng)沒有數(shù)據(jù)傳送時總線呈高電平(邏輯“1”)。發(fā)送端當(dāng)需要發(fā)送一幀數(shù)據(jù)時,首先發(fā)送一位邏輯0(低電平),這就是起始位。接收端檢測到由高到低的一位跳變信號(起始位)后,就開始接收數(shù)據(jù)位信號的準(zhǔn)備。所以,起始位就是表示一幀數(shù)據(jù)傳輸?shù)拈_始。數(shù)據(jù)位:緊接起始位之后的即是數(shù)據(jù)位。數(shù)據(jù)位可以是5、6、7或8位。一般在傳送中從數(shù)據(jù)的最低位(D0)開始,順序發(fā)送和接收,具體的數(shù)據(jù)位應(yīng)該在通訊協(xié)議里預(yù)先定好。奇偶校驗(yàn)位:緊跟著數(shù)據(jù)位之后的是奇偶校驗(yàn)位,用

44、于對數(shù)據(jù)檢錯。通訊雙方應(yīng)事先約定一致的奇、偶校驗(yàn)方式。停止位:在校驗(yàn)位后是停止位,用以表示一幀的結(jié)束。停止位可以是1、1.5、2位,用邏輯1(高電平)表示。11/2#¥#,#0;(¥#,#0)異步通訊是一幀一幀進(jìn)行傳輸?shù)?,幀與幀之間的間隙不固定,間隙處用空閑位(高電平)填補(bǔ),每幀傳輸總是以邏輯0(低電平)狀態(tài)的起始位開始,停止位結(jié)束。信息傳輸可隨時地或間斷地進(jìn)行,不受時間的限制。另外對同步時鐘要求也低些。因此,異步通訊簡單、靈活,對傳輸信息量的不大場合是個很好的通訊選擇。有關(guān)異步通訊的約定問題:異步通訊中接收和發(fā)送之間必須有兩項(xiàng)設(shè)定:幀格式設(shè)定:即幀的字符長度:起始位、數(shù)據(jù)位及停止位,奇偶校驗(yàn)

45、形式等的設(shè)定。例如本系統(tǒng)關(guān)于幀格式的一個設(shè)定是:1位起始位、8位數(shù)據(jù)位,一位第九位數(shù)據(jù)/地址位(這是51系列的特殊功能,見后說明)、1位停止位。波特率的設(shè)定:串行通訊是按位傳送的,每位信息寬度(持續(xù)時間)由數(shù)據(jù)的傳輸速率確定。波特率即數(shù)據(jù)傳輸?shù)乃俾剩簡挝粫r間內(nèi)傳輸?shù)奈恍畔⒘浚悦棵雮鬏數(shù)奈唬╞it)數(shù)表示,單位為波特(baud),即1波特1位/秒(1bps)。只有收發(fā)雙方都進(jìn)行了相同的設(shè)定,才能成功地傳輸數(shù)據(jù)。AT89C2051的串行通訊接口和MCS51系列的單片機(jī)一樣,AT89C2051內(nèi)部集成了一個功能強(qiáng)大的全雙工串行通訊口,屬于UART方式。設(shè)有兩個相互獨(dú)立的接收、發(fā)送緩沖器,可以同時發(fā)

46、送和接收數(shù)據(jù)。發(fā)送緩沖器只能寫入而不能讀出,接收緩沖器只能讀出而不能寫入,因而兩個緩沖器共用了一個地址(99H)而沒有沖突。統(tǒng)稱為串行通訊特殊功能寄存器SBUF。有4種工作方式,其中兩種方式的波特率是可變的,另兩種是固定的。波特率由內(nèi)部定時/計(jì)時器產(chǎn)生,用軟件設(shè)置不同的波特率和選擇不同的工作方式。可以通過查詢或中斷方式對接收發(fā)送進(jìn)行程序處理。當(dāng)然附帶說明一下,51系列的這種串行通訊口,除了用于數(shù)據(jù)通訊外,還可以方便地構(gòu)成一個或多個并行I/O口,或作串并轉(zhuǎn)換,或用于擴(kuò)展串行外設(shè)等等。AT89C2051中關(guān)系到串口通訊的硬件資源,或者說有關(guān)的寄存器有:串行控制寄存器SCON,波特率選擇特殊寄存器P

47、CON,一般地在方式1和3產(chǎn)生波特率用到定時器1,這樣有關(guān)的寄存器還包括了定時/計(jì)數(shù)器控制與狀態(tài)寄存器TMOD,啟停與中斷控制寄存器TCON里的啟停位TR1與及定時器T1的計(jì)數(shù)器寄存器TH1和TL1。用單片機(jī)進(jìn)行串口通訊,首先是硬件上的基礎(chǔ),比如我們采用了RS-485總線。另一個重要的方面就是通訊軟件了。在上面有關(guān)異步通訊的約定問題里,我們知道了軟件里要做的串口初始化設(shè)定就是兩個主要的方面:幀格式和波特率設(shè)定。在AT89C2051里,寄存器SCON就是用來設(shè)定通訊方式和幀格式的。其對應(yīng)的字節(jié)地址:98H八位寄存器SCON的各位含義如下:(位):76543210SM0SM1SM0RENTB8RB

48、8TIRI各位的說明:其中SM0,SM1按下列組合確定串行通訊的工作方式:SM0SM1工作方式功能說明波特率00方式0移位寄存器方式1/12fosc01方式18位UART方式可變10方式29位UART方式1/64或1/32fosc11方式39位UART方式可變SM2:允許方式2或方式3多機(jī)通訊控制位。在方式2或方式3時,如SM21,REN=1,則從機(jī)處于只有接收到RB8=1(地址幀)才激發(fā)中斷請求標(biāo)志位RI=1,向主機(jī)請求中斷處理。被確認(rèn)為尋址的從機(jī)復(fù)位SM2=0,才能接收RB8=0的數(shù)據(jù)幀;在方式1時,如果SM2=1,則只有在接收到有效停止位時才置位中斷請求標(biāo)志位RI=1;在方式0時,SM2

49、應(yīng)該設(shè)為0。REN:允許/禁止串行接收控制位,由軟件置位REN=1為允許串行接收狀態(tài),可啟動串行接收接收器RXD,開始接收信息。軟件復(fù)位REN=0,則禁止接收。TB8:在方式2或方式3,它為要發(fā)送的第9位數(shù)據(jù),按需要由軟件置位或清0,例如,可用作數(shù)據(jù)的校驗(yàn)位或多機(jī)通訊中表示地址幀/數(shù)據(jù)幀的標(biāo)志位。RB8:在方式2或方式3,是接收到的第9位數(shù)據(jù)。在方式1,若SM2=0,則RB8是接收到的停止位。方式0不用RB8。TI:發(fā)送中斷請求標(biāo)志位。在方式0,當(dāng)串行發(fā)送數(shù)據(jù)第8位結(jié)束時,由內(nèi)部硬件自動置位TI=1,向主機(jī)請求中斷,響應(yīng)中斷后必須由軟件復(fù)位TI=0。在其他方式里,則在停止位開始發(fā)送時由內(nèi)部硬件

50、置位,必須用軟件復(fù)位。RI:接收中斷請求標(biāo)準(zhǔn)位,在方式0,當(dāng)串行接收到第8位結(jié)束時由內(nèi)部硬件自動置位RI=1,向主機(jī)請求中斷,響應(yīng)中斷后必須用軟件復(fù)位RI=0。在其他方式中,串行接收到停止位的中間時刻由內(nèi)部硬件置位RI=1,(例外情況見上SM2說明),必須由軟件復(fù)位RI=0。SCON可位尋址,所有位在單片機(jī)上電復(fù)位時為全0。主機(jī)程序初始化時應(yīng)該設(shè)置SCON以適合相應(yīng)的通訊幀格式,即通訊方式。例如本系統(tǒng)主機(jī)和分機(jī)是用多機(jī)通訊方式3來實(shí)現(xiàn)通訊的,程序開始初始化時送初始化字0F0H,表示SM0=1,SM1=1,方式3;SM2=1多機(jī)通訊方式;REN1接收允許;TB8=0,RB8=0,RI=0,TI=

51、0。波特率設(shè)置:至于波特率設(shè)定,每種方式都可以根據(jù)一定的式子計(jì)算出來并進(jìn)行相應(yīng)的設(shè)置:其中的SMOD叫波特率加倍位。當(dāng)SMOD=1時波特率加倍。SMOD在PCON(節(jié)點(diǎn)控制寄存器)的最高位,一般的我們采用下列語句來設(shè)定需要加倍波特率(SMOD=1)或者不需要(SMOD=0)MOVPCON,#00H;SMOD=0MOVPCON,#80H;SMOD=1由上也可見,方式1和方式3的波特率主要還是要通過軟件對定時/計(jì)數(shù)器1的設(shè)置進(jìn)行選擇。并取決于定時器1的溢出率。定時器的溢出率定義:單位時間(秒)內(nèi)定時器回0溢出的次數(shù)。也就是:定時器1溢出率定時器1的溢出次數(shù)/秒。51系列單片機(jī)有兩個定時/計(jì)數(shù)器,常

52、選用定時器1(T1)工作在方式2(8位自動再裝入)作為波特率的溢出率。T1設(shè)置為工作于方式2(8位自動再裝入),這時TH1和TL1寫入的數(shù)據(jù)是一致的。TL1的計(jì)數(shù)輸入來自于fosc經(jīng)12分頻的脈沖,一個機(jī)器周期加1計(jì)數(shù)一次??梢?,定時/計(jì)數(shù)器1的溢出與fosc和自動再裝初值N有關(guān),fosc大,特別是N越大,溢出率也就高。例如,N=FFH,則每隔一個機(jī)器周期即溢出一次(極限情況);如果N=00H,則需每個256個機(jī)器周期才溢出一次。一般地,定時/計(jì)數(shù)器1溢出一次所需的時間為:于是得到定時/計(jì)數(shù)器1每秒溢出的次數(shù):串口一般工作于方式1或3時,波特率由下式?jīng)Q定:圖表15給出了我在設(shè)計(jì)過程中學(xué)習(xí)研究整

53、理的常用波特率和定時/計(jì)數(shù)器1設(shè)置。圖表15常用波特率與定時/計(jì)數(shù)器1各參數(shù)關(guān)系常用波特率(bps)振蕩頻率SMODC/TT1方式重新裝值f方式0MAX:1M12MHZXXXX方式2MAX:375K12MHZ1XXX方式1或3:62.5K12MHZ102FFH57.6K11.0592MHZ102FFH28.8K11.0592MHZ102FEH19.2K11.0592MHZ102FDH9.6K11.0592MHZ002FDH4.8K11.0592MHZ002FAH2.4K11.0592MHZ002F8H1.2K11.0592MHZ002F4H137.511.986MHZ0021DH1106MHZ

54、00272H11012MHZ001FFFBH一般地,在用51單片機(jī)的匯編語言編寫通訊程序時,串口初始化程序段如下:以會議系統(tǒng)為例,采用串口方式3,11.0592MHZ振蕩頻率,波特率為57.6KHZ。MOVSCON,#0F0H;串口工作于方式3,SM2=1,REN=1MOVPCON,#80H;設(shè)置SMOD=1MOVTMOD,#21H;設(shè)置T1定時、工作方式2MOVTH1,#0FFH;設(shè)置定時常數(shù)MOVTL1,#0FFHSETBTR1;啟動T1,產(chǎn)生波特率在開始軟件部分的說明前,先說說我們采用的通訊處理模式:在這里我們把它叫做地址位多處理機(jī)模式。1)、串口方式3的幀格式如圖16:圖16串口方式3

55、幀格式2)、地址位多處理機(jī)模式要點(diǎn):數(shù)據(jù)以幀的格式發(fā)送和接收(如圖16),附加的第9位是地址/數(shù)據(jù)幀控制。第9位為1,該幀是地址幀,單片機(jī)在SM2=1,REN=1時接收到該幀有RB8=1,則進(jìn)行相應(yīng)的中斷處理,接著使SM2=0,則可以接收第9位為0的數(shù)據(jù)幀。第9位為0,該幀是數(shù)據(jù)幀,單片機(jī)若SM2=1,則丟棄不理。只有SM2=0.REN=1時才進(jìn)行相應(yīng)處理。發(fā)送時,若是發(fā)送數(shù)據(jù)幀,則置TB8=0,若是發(fā)送地址幀,則置TB8=1。3.2PC和單片機(jī)的多機(jī)通訊測試在電路硬件測試完成后,接著就要做軟件上的調(diào)試,事實(shí)上,在做這個調(diào)試的過程中,我試圖作一個完整一點(diǎn)的測試,來搞清楚PC機(jī)和單片機(jī)通訊的設(shè)置

56、和原理。由于PC機(jī)的通訊編程不是現(xiàn)在要說的重點(diǎn)。這里只是簡單說一下。對于現(xiàn)在的windows系統(tǒng)而言,不用再像從前DOS一樣,對編程者要求熟悉底層硬件,直接調(diào)用BIOS或者對硬件直接編程?,F(xiàn)在一般我們采用的是VB、VC+或者DELPHI等高級語言來設(shè)計(jì)圖形化的界面和通訊軟件,比如會議系統(tǒng)的PC部分通訊軟件和用戶界面就是一位研究生師兄用DELPHI來編寫的?,F(xiàn)在結(jié)合學(xué)習(xí)了解到的一些知識說明一下,比如用DELPHI,一般的可以有三種實(shí)現(xiàn)串行通信的編程方法:調(diào)用Windows95下的API函數(shù)來完成通信:在windows里提供了用于通訊的API函數(shù)可以調(diào)用。API函數(shù)是Windows程序開發(fā)使用的主

57、要函數(shù)集,其中提供了十幾個專門的通信函數(shù)。對應(yīng)Windows3.x和Win95及NT開發(fā)環(huán)境,有16位和32位通信API函數(shù),不過現(xiàn)在一般的操作系統(tǒng)都是WIN98以上的版本,很多軟件只支持32位應(yīng)用程序的開發(fā)。32位通信函數(shù)與16位函數(shù)的主要區(qū)別在于,32位API函數(shù)把對通信口的操作當(dāng)作一個普通文件。這是因?yàn)樵赪indows95和NT下,WM桟OMMNOTIFY消息已被取消,操作系統(tǒng)已將通信設(shè)備封裝起來了,系統(tǒng)為每個通信設(shè)備定義了用戶可定義大小的讀/寫緩沖區(qū),應(yīng)用程序只對讀/寫緩沖區(qū)操作,而不用和通信驅(qū)動程序打交道。使用VB的通信構(gòu)件MSComm或者用OLE(ObjectLinkingandE

58、mbedding對象鏈接與嵌入)通訊控件:MSComm控件提供了一系列標(biāo)準(zhǔn)通訊屬性和方法。使用它可以建立起應(yīng)用程序與串行端口的聯(lián)接;象所有其他OLE控件一樣,通信控件也是用一系列的屬性和用戶接口,用戶用GetSet函數(shù)得到屬性的當(dāng)前值,用Set函數(shù)設(shè)置屬性值。熟悉C/C+或其它語言,則可以將自己的程序編譯鏈接為DLL(動態(tài)鏈接庫),這樣就可以調(diào)用DLL里的函數(shù)來通信。至于更詳細(xì)的PC編程,這里不再說明,以下著重說明PC對串口多機(jī)通信的設(shè)置問題。事實(shí)上PC機(jī)也和單片機(jī)一樣,要求設(shè)置通訊方式(包括幀格式)和波特率,這些都可以在DELPHI的控件里很容易的設(shè)定,對于多機(jī)通訊,我們是通過在奇偶校驗(yàn)位的

59、設(shè)置來實(shí)現(xiàn)的,PC串口提供了以下五種奇偶校驗(yàn)位設(shè)置:1、None(無奇偶校驗(yàn))2、Odd(奇校驗(yàn))3、Even(偶校驗(yàn))4、Mark(奇偶校驗(yàn)位恒為1)5、Space(奇偶校驗(yàn)位恒為0)注意到數(shù)據(jù)位數(shù)的設(shè)定可以是5、6、7或8位。幀格式和圖16類似,低位先出,高位最后發(fā)送,奇偶校驗(yàn)位是緊接在數(shù)據(jù)位后,在停止位前的。在PC里設(shè)置串口通訊就是具體的數(shù)據(jù)格式要求來設(shè)定的。例如在控件里常見的:Comml.Settings=57600,N,8,1/波特率:57.6K,無奇偶校驗(yàn),8位數(shù)據(jù),1位停止位為了弄清PC機(jī)和單片機(jī)的地址位多處理機(jī)通信模式的具體實(shí)現(xiàn),我編寫了幾個單片機(jī)的測試程序。使用一個串口調(diào)試軟

60、件來進(jìn)行實(shí)驗(yàn)。首先我借用一下PC機(jī)的串口設(shè)置說法,把通訊方式3的第9位為1(地址幀)的發(fā)送幀方式叫MARK方式,把第9位為0(數(shù)據(jù)幀)的發(fā)送幀的方式叫SPACE方式。測試程序里單片機(jī)是用MARK方式接收PC機(jī)的數(shù)據(jù),為了后面的具體通信編程,寫成接收后判斷是否是00H、01H、FFH、FEH、FDH、FCH或者FBH(這些都是以后PC機(jī)可能發(fā)給單片機(jī)主機(jī)的命令或查詢幀),如果是則將相同內(nèi)容用SPACE方式不斷地發(fā)回給PC接收在調(diào)試軟件上顯示出來。如圖17是發(fā)“00H”,單片機(jī)回送給PC顯示的實(shí)驗(yàn)結(jié)果。圖17PC串口調(diào)試結(jié)果簡單的查詢方式調(diào)試程序:ORG0000HLJMPSTART;ORG0023

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論