新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 利用RS-485通訊協(xié)議實(shí)現(xiàn)PC機(jī)與單片機(jī)的多點(diǎn)通訊

        利用RS-485通訊協(xié)議實(shí)現(xiàn)PC機(jī)與單片機(jī)的多點(diǎn)通訊

        作者: 時(shí)間:2012-02-09 來(lái)源:網(wǎng)絡(luò) 收藏

        隨著數(shù)據(jù)采集系統(tǒng)的廣泛應(yīng)用,通常由構(gòu)成的應(yīng)用系統(tǒng),如儀器儀表、智能設(shè)備等,都需要與機(jī)之間交換數(shù)據(jù),機(jī)之間的功能,以充分發(fā)揮之間的功能互補(bǔ),資源共享的優(yōu)勢(shì)。以往常用的RS-232在很大程度上已不能滿(mǎn)足設(shè)計(jì)的要求,如傳輸速率慢,傳輸距離短,傳輸信號(hào)易受外界的干擾等缺點(diǎn)。本文介紹一種性能優(yōu)越的RS-485接口芯片,以及如何此芯片與PC機(jī)之間的遠(yuǎn)程,并討論將其功能進(jìn)行擴(kuò)充, PC機(jī)管理單片機(jī)陣列的功能。

        本文引用地址:http://www.104case.com/article/172144.htm

        1 RS-485簡(jiǎn)介及MAX485芯片介紹

        由于RS-232的種種缺點(diǎn),新的串行接口標(biāo)準(zhǔn)RS-449被制定出來(lái),與之相對(duì)應(yīng)的是RS-485的電氣標(biāo)準(zhǔn)。RS-485是美國(guó)電氣工業(yè)聯(lián)合會(huì) (EIA)制定的平衡雙絞線(xiàn)作傳輸線(xiàn)的多點(diǎn)通訊標(biāo)準(zhǔn)。它采用差分信號(hào)進(jìn)行傳輸;最大傳輸距離可以達(dá)到1.2 km;最大可連接32個(gè)驅(qū)動(dòng)器和收發(fā)器;接收器最小靈敏度可達(dá)±200 mV;最大傳輸速率可達(dá)2.5 Mb/s。由此可見(jiàn),RS-485正是針對(duì)遠(yuǎn)距離、高靈敏度、多點(diǎn)通訊制定的標(biāo)準(zhǔn)。

        35.jpg
        MAX485接口芯片是Maxim公司的一種RS-485芯片。

        采用單一電源+5 V工作,額定電流為300 μA,采用半雙工通訊方式。它完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。其引腳結(jié)構(gòu)圖如圖1所示。從圖中可以看出,MAX485芯片的結(jié)構(gòu)和引腳都非常簡(jiǎn)單,內(nèi)部含有一個(gè)驅(qū)動(dòng)器和接收器。RO和DI端分別為接收器的輸出和驅(qū)動(dòng)器的輸入端,與單片機(jī)連接時(shí)只需分別與單片機(jī)的RXD和TXD相連即可;/RE和DE端分別為接收和發(fā)送的使能端,當(dāng)/RE為邏輯0時(shí),器件處于接收狀態(tài);當(dāng)DE為邏輯1時(shí),器件處于發(fā)送狀態(tài),因?yàn)镸AX485工作在半雙工狀態(tài),所以只需用單片機(jī)的一個(gè)管腳控制這兩個(gè)引腳即可;A端和B端分別為接收和發(fā)送的差分信號(hào)端,當(dāng)A引腳的電平高于B時(shí),代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端時(shí),代表發(fā)送的數(shù)據(jù)為0。在與單片機(jī)連接時(shí)接線(xiàn)非常簡(jiǎn)單。只需要一個(gè)信號(hào)控制MAX485的接收和發(fā)送即可。同時(shí)將A和B端之間加匹配電阻,一般可選100Ω的電阻。

        2用PC機(jī)實(shí)現(xiàn)與8031單片機(jī)的多點(diǎn)通訊

        用8031單片機(jī)實(shí)現(xiàn)與PC機(jī)之間的通訊時(shí),必須使用電平轉(zhuǎn)換接口芯片,因?yàn)閱纹瑱C(jī)輸出的是TTL電平,必須經(jīng)過(guò)電平轉(zhuǎn)換才能和PC機(jī)的一致。本文中采用的是RS-485協(xié)議,所以單片機(jī)需要采用RS-485接口;而在PC機(jī)側(cè)使用的是RS-232與RS-485的電平轉(zhuǎn)換接口。在本文中采用的是武漢新特電子公司的電平轉(zhuǎn)換接口,該接口使用簡(jiǎn)便、無(wú)需外加電源、數(shù)據(jù)傳輸速率最高可達(dá)10 Mb/s,而且不用任何軟件初始化和修改。另外實(shí)現(xiàn)多點(diǎn)通訊還需要了解器件的驅(qū)動(dòng)能力,當(dāng)器件的驅(qū)動(dòng)能力足夠大時(shí),我們就可以根據(jù)需要加入所需要的節(jié)點(diǎn)。

        本文中所舉的例子就是一臺(tái)PC控制64塊單片機(jī)的工作,采用多點(diǎn)通訊形式。通過(guò)發(fā)送控制字和工作方式字給相應(yīng)的單片機(jī),使其進(jìn)行相應(yīng)的操作。單片機(jī)在接收到數(shù)據(jù)后,進(jìn)行數(shù)據(jù)的采集工作,等到PC機(jī)再發(fā)指令,將采集到的數(shù)據(jù)反饋給PC機(jī),PC機(jī)對(duì)數(shù)據(jù)進(jìn)行分析和計(jì)算。
         

        36.jpg

        PC機(jī)的程序可以采用Windows下任何一種面向?qū)ο蟮母呒?jí)語(yǔ)言來(lái)編寫(xiě),它比在DOS下的利用串口中斷的方式進(jìn)行更加簡(jiǎn)便,應(yīng)用程序?qū)⒖刂茩?quán)交向串口的驅(qū)動(dòng)程序,接收和發(fā)送的中斷完全由串口驅(qū)動(dòng)程序來(lái)控制,減輕了編寫(xiě)過(guò)程中的很多麻煩。本程序中選用的是Delphi的串口通訊控件Spcomm來(lái)實(shí)現(xiàn)。參數(shù)的設(shè)置可以自動(dòng)完成。單片機(jī)采用中斷工作方式,用匯編語(yǔ)言編寫(xiě),通訊波特率為12 kb/s,由于要和PC機(jī)進(jìn)行通訊,選用110592 MHz的晶振,保證和PC機(jī)的波特率完全一致,避免由于波特率不同引起的收發(fā)錯(cuò)誤。為了配合多機(jī)工作方式,選用工作方式3。單片機(jī)的通訊流程圖如圖3所示。

        下面給出用Delphi編制的通訊程序和單片機(jī)的接收和發(fā)送程序。

        37.jpg

        38.jpg

        39.jpg

        單片機(jī)初始化子程序:

        40.jpg

        單片機(jī)接收子程序:
        REPT:CLRRI
        MOVA,SBUF
        MOV@R0,A
        RET

        在程序編寫(xiě)過(guò)程中,為了保證接收和發(fā)送數(shù)據(jù)的正確性,我們加入了CRC校驗(yàn)程序,另外PC機(jī)發(fā)送給單片機(jī)的是ASCII碼形式的數(shù)據(jù),同樣需要經(jīng)過(guò)簡(jiǎn)單的變換,在此均作了省略。ダ用RS-485協(xié)議進(jìn)行串行通訊,可以保證快速、穩(wěn)定遠(yuǎn)距離地傳輸數(shù)據(jù)。在目前以及以后的工業(yè)控制和其他方面必將得到越來(lái)越多的應(yīng)用。

        參考文獻(xiàn)
        1武自芳, 虞鶴松.微機(jī)控制系統(tǒng)及其應(yīng)用蔽靼玻 西安交通大學(xué)出版社,1998
        2Maxim的產(chǎn)品資料
        3李朝青編著. PC機(jī)及單片機(jī)數(shù)據(jù)通信技術(shù).北京:北京航空航天大學(xué)出版社, 1999

        單片機(jī)相關(guān)文章:單片機(jī)教程


        單片機(jī)相關(guān)文章:單片機(jī)視頻教程


        單片機(jī)相關(guān)文章:單片機(jī)工作原理


        數(shù)字通信相關(guān)文章:數(shù)字通信原理


        通信相關(guān)文章:通信原理


        雙絞線(xiàn)傳輸器相關(guān)文章:雙絞線(xiàn)傳輸器原理


        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 清丰县| 黑龙江省| 宁阳县| 赫章县| 东乡县| 周至县| 青浦区| 达州市| 康保县| 河间市| 乾安县| 泰兴市| 抚松县| 梅河口市| 辽中县| 宜黄县| 虹口区| 汤原县| 邵武市| 河西区| 贡山| 平远县| 金华市| 汉沽区| 上林县| 锦州市| 惠东县| 阜平县| 沈丘县| 任丘市| 莱阳市| 贵州省| 彰化市| 东明县| 都兰县| 苗栗县| 泊头市| 抚松县| 扬中市| 镇江市| 汪清县|