<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于RS485單片機多機串行通信的電子開關設計

          基于RS485單片機多機串行通信的電子開關設計

          作者: 時間:2012-06-04 來源:網(wǎng)絡 收藏

          0 引言

          目前是通信控制領域的主流通信方式,數(shù)據(jù)通信、計算機網(wǎng)絡、分布式工業(yè)控制系統(tǒng)及其測控領域中,經(jīng)常采用串行通信來達到信息交換的目的。控制網(wǎng)絡是物理層采用RS 485通信接口所組成的工控設備網(wǎng)絡,RS 485既是物理層的協(xié)議標準,也是串行通信接口的電氣標準。這種通信接口可以十分方便地將許多設備組成一個控制網(wǎng)絡。RS 485通信方式有很多優(yōu)點,首先它的通信距離比較遠,通??梢宰龅綌?shù)百米甚至千米以上,而且還可以實現(xiàn)多點通信方式,從而可以建立一個小范圍內(nèi)的局域網(wǎng),因而更有實用價值。RS 485采用差模信號傳輸方式,與地電平關系不大,因而它抗干擾的能力比較好,即便在信號電壓比較小的情況下也能獲得穩(wěn)定的傳輸。

          1 總體方案及硬件設計

          系統(tǒng)的設計要求主機能夠與從機之間進行地址確認并相互通信,從機能夠準確檢測到被測信號,主機能夠接收從機傳來的數(shù)據(jù)信號,并通過液晶顯示器和發(fā)光二極管顯示,同時采用RS 485總線主從機可以實現(xiàn)長距離通信。主從機采用的主要核心芯片均為單片機,考慮單片機性能及實際運行環(huán)境的需要,選用AT89S51單片機,串行通信網(wǎng)絡結構如圖1所示。

          基于RS485單片機多機串行通信的電子開關設計

          (1)主機使用主要器件:AT89S51 MAX4851602LCD LED RESISTORS CAP CRYSTAL;

          (2)從機使用主要器件:AT89S51 MAX485 RESISTORS CAP CRYSTAL

          主機主要功能:

          (1)與從機之間進行地址確認。

          (2)查詢從機是否有信號(從機檢測被測量時產(chǎn)生的相應的數(shù)據(jù)信號)發(fā)送到主機。

          (3)通過液晶顯示發(fā)送信號的從機地址,同時可以通過發(fā)光二極管顯示信號的級別(這里兩個發(fā)光二極管分別代表兩個行程開關的亮滅)。

          從機主要功能:

          (1)與主機之間進行地址確認。

          (2)檢測被測量,并將被測信號數(shù)據(jù)發(fā)送給主機。

          主機主要有兩大功能模塊:液晶顯示模塊用來顯示從機地址編號,所使用的器件為1602LCD,RS 485串行通信模塊用來實現(xiàn)與從機之間的遠距離串行通信,使用MAX485芯片來實現(xiàn)。

          從機的主要功能模塊為RS 485串行通信模塊用來完成與主機之間數(shù)據(jù)的發(fā)送和接收。

          2設計實現(xiàn)原理

          主從機均采用的是AT89S51單片機,它是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4 KB的可反復擦寫1 000次的FLASH只讀程序存儲器。單片機的XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。XTAL2:來自反向振蕩器的輸出。本設計外接12MHz晶振。

          主從機均使用單片機2個全雙工串行通信口外接MAX485芯片來完成與從機之間的串行通信,由串行口控制寄存器SCON設置串行口的工作方式、監(jiān)視串行口工作狀態(tài)、發(fā)送與接收的狀態(tài)控制等。P3.0/RXD為串行通信接收端,P3.1/TXD為串行通信發(fā)送端。

          主機端口P0.0~P0.7作為液晶顯示器的數(shù)據(jù)線,P0口上拉10 kΩ電阻與1602液晶的D0~D7數(shù)據(jù)端相連,P3.7與使能端E相連,P3.6與讀/寫信號線RW相連,P3.5與寄存器選擇端RS相連。P1.0和P1.1引腳接兩個發(fā)光二極管,用來顯示從機發(fā)送信號的級別。

          從機P1.0和P1.1引腳分別接到一級行程開關和二級行程開關,用來檢測兩個開關的狀態(tài),最終由從機P1.0和P1.1這兩個引腳將行程開關的狀態(tài)發(fā)送到主機,主機讀取狀態(tài)值并且顯示。

          主機通過輪詢的方式,當主機查詢n號從機時,與n號從機進行地址確認,并判斷n號從機是否有信號產(chǎn)生,如果沒有,主機將查詢n-1號從機,如果有信號產(chǎn)生,主機接收到信號并存儲該從機的主機編號,分別通過發(fā)光二極管和液晶顯示出來,如果n-1號從機繼續(xù)有信號產(chǎn)生,主機繼續(xù)接收,直到接收完畢,主機將查詢n-2號從機,如此往復。從機的個數(shù)可以在主機程序中對從機個數(shù)n值進行設定.

          2.1 多機串行通信及通信協(xié)議

          的設計核心主要通過單片機的多機串行通信來實現(xiàn)。

          2.1.1 發(fā)送器和接收器

          AT89S51串行口主要由發(fā)送器、接收器和串行控制寄存器組成。發(fā)送器主要由發(fā)送緩沖寄存器SBUF和發(fā)送控制器組成。接收器主要由接收緩沖寄存器SBUF,接收移位寄存器和接收控制器組成。

          2.1.2 串行口控制寄存器

          串行口控制寄存器SCON用于設置串行口的工作方式、監(jiān)視串行口工作狀態(tài)、發(fā)送與接收的狀態(tài)控制等。它是一個既可字節(jié)尋址又可位尋址的特殊功能寄存器??刂萍拇嫫鱏CON的格式如下:

          基于RS485單片機多機串行通信的電子開關設計

          電子開關中單片機串行口控制寄存器SCON各位設置如下:

          主機SCON設置:1 0 0 1 1 0 0 0 =#98H

          從機SCON設置:1 0 1 1 0 0 0 0 =#0B0H

          2.1.3 工作方式的選擇

          本電子開關單片機串行通信工作方式選擇為工作方式2,在方式2下,串行口工作在11位異步通信方式。一幀信息包含一個起始位“0”,八個數(shù)據(jù)位,一個可編程第九數(shù)據(jù)位和一個停止位“1”。其中可編程位是SCON中的TB8位,在八個數(shù)據(jù)位之后,可作奇偶校驗位或地址/數(shù)據(jù)幀的標志位使用,由使用者確定。

          波特率的選擇:方式2的波特率是固定的。

          若PCON中SMOD=0,速率=fosc/32

          若PCON中SMOD=1,速率=fosc/64

          該設計中:波特率為9 600 b/s。

          2.1.4 實現(xiàn)原理及流程

          多機通信主要靠主、從機之間正確地設置與判斷多機通信控制位SM2和發(fā)送或接收的第9數(shù)據(jù)位(D8)。

          電子開關多機串行通信的實現(xiàn)流程:

          (1)主從機均初始化工作方式2,主機置SM2=0,允許中斷,從機置SM2=1,REN=1。

          (2)主機置REN=1,TB8=1,將地址信息發(fā)送給從機,并等待是否發(fā)送完畢,從機等待主機發(fā)送地址。

          (3)從機接收到地址與本機地址核對,核對正確,置SM2=0,向主機發(fā)送應答地址并等待發(fā)送完畢,主機接收之后進行地址確認,并置TB8=0。

          (4)從機地址發(fā)送完畢后,接著發(fā)送信號數(shù)據(jù)并等待發(fā)送完畢。

          (5)主機接收到數(shù)據(jù)將從機編號發(fā)送到液晶顯示,將信號數(shù)據(jù)發(fā)到發(fā)光二極管顯示信號級別。

          行程開關相關文章:行程開關原理

          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();