




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、.項目七 單片機通信實踐知識目標:1. 了解UARTUniversal Asynchronous Receive/Transmitter通用異步收發(fā)器。2了解MAX232通信原理及標準的通信協議。3. 了解MODBUS通信協議標準2. 采用通信芯片MAX485,及多機通信原理。技能目標:1,根據數據格式的協議,數據交換的協議要求硬件連接,實現串行通訊的硬環(huán)境。2. MCU與PC 機及多個單片機的硬件連接方法3. 應用PROTEUS仿真工具軟件繪制硬件連接圖4. 使用Keil C 完成程序的編寫和調試5. 使用最小系統(tǒng)板實現硬件調試任務一 基于RS232的點對點通信任務提出通過MAX232直接應
2、用UARTUniversal Asynchronous Receive/Transmitter通用異步收發(fā)器,實現單片機與單片機,或單片機與PC微機之間數據傳送。知識準備711串行與并行通信在實際工作中,計算機與外部設備之間常常要進行信息交換,計算機與計算機之間也要交換信息,所有這些信息交換可稱為通信。在我們前面所學的知識中所涉及的數據傳送都是采用并行方式,如單片機與存儲器,的數據傳送,存儲器與存儲器的數據傳送,單片機與并行打印機之間的數據傳送,CPU處理數據以8位數據并行方式同時一次傳送一字節(jié)的數據,這樣的傳送方式要求用8條數據線和若于條控制信號線,傳送距離較近。當計算機與計算機之間的距離較
3、遠時過多的電纜使這種方式不夠經濟。串行通信是用一位數據線傳送數據,只用幾條電纜線作控制信號線,串行通信適合遠距離數據傳送,處于兩地的計算機之間采用串行通信就非常的經濟,當然串行通信要求通信雙方具有相同的數據轉換格式,規(guī)定的時間控制,相等的邏輯電路,通一的通信協議。7111 串行與并行通信基本概念1.串行通信與并行通信通信方式有兩種:并行通信和串行通信。通常是根據信息傳送的距離決定采用哪種通信方式,如果距離小于30cm則可采用并行通信方式,當距離大于30cm時則要采用通信方式。并行通信方式是指數據的各位同時進行傳送的通信方式,其優(yōu)點是傳送速度高,缺點是數據有多少位,就需要多少根數據傳送線,單片機
4、與外部設備之間的數據傳送屬于并行通信圖7-1-1a所示為AT89C51系列單片機與外部設備間的8位數據并行通信的連接方法,并行通信方式在位數多、傳送距離遠的情況下就不太合適了。串行通信間數據是一位一位按順序傳送的通信方式,圖7-1-1b所示為單片機與外部設備間的串行通信連接方式,可以看出最單間的串行連接只需三條線,因此利用電話線就可作為傳輸線,這樣大大降低了成本,特別適用于遠距離通信;串行通信的缺點是傳送速度較低。假設并行傳送N位數據所需時間為T,那么串行傳送的時間至少為NT,實際上總是大于NT的。圖7-1-1兩種通信方式連接2. 單工、半雙工和全雙工串行通信的傳送方式通常有3種:單向,只允許
5、數據向一個方向傳送;半雙向或半雙工,允許數據向兩個方向中的任一方向傳送,但每次只能有一個站點發(fā)送;全雙向或全雙工,允許同時雙向傳送數據,全雙工配置是一對單向配置,它要求兩端的通信設置具有完整和獨立的發(fā)送和接收能力。7112 單片機串行口發(fā)送與接受數據1. 串行通信協議串行通信協議是通信雙方為保證通信成功而制定的一系列約定。包括數據格式定義和數據位定義等。通信雙方必須遵守統(tǒng)一的通信協議,串行通信協議包括同步協議的異步協議兩種。異步串行通信協議規(guī)定了字符的傳送格式和字符傳送的波特率。51系列單片機串行行口數據的發(fā)送的數據的接受采用異步通信方式,在MCU內部有一個UARTUniversal Asyn
6、chronous Receive/Transmitter通用異步收發(fā)器。在異步通信中數據是一幀一幀包括一個字符代碼或一字節(jié)數據傳送的,每一幀的數據格式如圖7-1-2所示。圖7-1-2串行異步通信的數據格式在幀格式中,一個字符由4部分組成:起始位、數據位、奇偶校驗位和停止位。首先是一個起始位0,起始位信號只占用一位,用來通知接收設備一個待接收的字符開始到達,線路上在不傳送字符時應保持為1。接收端不斷檢測線的狀態(tài),若連續(xù)為1以后又測到一個0,就知道發(fā)來一個新的字符,應馬上準備接收,字符的起始位還被用作同步接收端的的時鐘,以保證以后的接收能正確進行。然后是58位數據位規(guī)定低位在前,高位在后,它可以是
7、5位、7位或8位D0D7。其次是奇偶校驗位該位可省略,但在字符中也可以規(guī)定不用奇偶校驗位,則這一位就可省去。民可和這一位0/1來確定這一幀中的字符代表代表的性質地址/數據等。最后是停止位1,用來表征字符的結束,它一定是高電位邏輯1。停止位可以是1位、1.5位或2位。接收端收到停止位后,知道上一字符已傳送完畢,同時也為接收下一個字符作好準備,只要再接收藏夾0,就是新字符。2. 波特率通信線上傳送的所有位信號都保持一致的信號持續(xù)時間,每一位的信號持續(xù)時間都由數據傳送速度確定,而傳送速度是以每秒多少個二進制位來衡量的,這個速度叫波特率。波特率是串行通信中的一個重要指標,它反映了對傳輸通道的要求。波特
8、率越高,要求傳輸通道的頻帶越寬。一般異步通信的波特率為509600b/s7113 單片機串行口控制寄存器1串行口控制寄存器SCONSCON是串行口控制和狀態(tài)寄存器,其格式如下:D7 D6 D5 D4 D3 D2 D1 D0SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式控制位,具體工作方式見表。表7-1-1串行口工作方式控制SMOSM1工作方式說明波特串0 0方式0同步移位寄存器fosc120 1方式110位異步收發(fā)由定時器控制1 0方式211位異步收發(fā)fosc32或fosc6411方式311位異步收發(fā)由定時器控制SM2:多機通信控制位。1一只有接收到第9位為1,RI
9、才置位。0一接收到字符N就置位。REN:串行口接收允許位。1一允許串行口接收。0一禁止串行口接收。TB8:方式2和方式3時,為發(fā)送的第9位數據,也可以作奇偶校驗位。RB8:方式2和方式3時,為接收到的第9位數據;方式1時,為接收到的停止位TI:發(fā)送中斷標志。由硬件置位,必須由軟件清0。RI:接收中斷標志。由硬件置位,必須由軟件清0。2電源控制寄存器PCONPCON的第7位SMOD是與串行口的波特率設置有關的選擇位。D7 D6 D5 D4 D3 D2 D1 D0SMODGF1GF0PDIDLSMOD:串行口波特率加倍位。1方式1,3波特率定時器1溢出率16;方式2波特率為fosc32; 0方式1
10、,3波特率定時器1溢出率32;方式2波特率為fosc64。GF0、GF1:兩個通用標志位。PD、IDL:CHMOS器件的低功耗控制位。7114 串行口工作模式及波特率設置1串行通信的工作方式方式0方式0為移位寄存器輸入輸出方式。串行數據通過RXD輸入輸出,TXD則用于輸出移位時鐘脈沖。方式0時,收發(fā)的數據為8位,低位在前。波特率固定為fosc12,其中fosc為單片機外接晶振頻率。數據發(fā)送是以寫SBUF寄存器的指令開始的,8位輸出結束時TI被置位。方式0接收是在REN1和RI0同時滿足時開始的。接收的數據裝入SBUF中,結束時RI被置位。移位寄存器方式在用最小的硬件擴展接口時很有用。串行口外接
11、一片移位寄存器74LSl64可構成輸出接口電路;串行口外接一片移位寄存器74LSl65可構成輸入接口電路。在典型1MHz時鐘,8位加載大約用10 us。任何數目的移位寄存器可串接用于輸出和輸入,通過一系列的SBUF的寫和讀。若移位時的波動不重要或移位寄存器中包含并行加載鎖存,這可構成非常經濟的IO擴展小系統(tǒng)。移位寄存器方式的第二種用法是用于兩個單片機之間的通信。與通常波特率9600相比,以1MHz通信能力對短距離通信很吸引人。方式1方式1是10位異步通信方式,1位起始位,8位數據位和1位停止位。其中的起始位和停止位在發(fā)送時是自動插入的。任何一條以SBUF為目的寄存器的指令都啟動一次發(fā)送,發(fā)送的
12、條件是TI=0,發(fā)送完置位TI。方式1接收的前提條件是SCON中的REN為1,同時以下兩個條件都滿足,本次接收有效,將其裝入SBUF和RB8位。否則放棄接收結果。兩個條件是:1RI=0;2SM2=0或接收到的停止位為1。方式1的波特率是可變的,波特率可由以下計算公式計算得到:方式1波特率2SMOD32其中的SMOD為PCON的最高位。定時器1的方式0,1,2,都可以使用,其溢出率為定時時間的倒數值。方式2和方式3這兩種方式都是11位異步接收發(fā)送方式,它們的操作過程完全一樣,所不同的是波特率:方式2波特率振蕩器頻率fosc方式3波特率同方式1。方式2和方式3的發(fā)送起始于任何一條寫SBUF指令。當
13、第9位數據輸出之后,置位TI。方式2和方式3的前提條件也是REN為1。在第9位數據接收到后,如果下列條件同時滿足:1RI0;2SM20或接收到的第9位為1則將已接收的數據裝入SBUF和RB8,并置位RI;如果條件不滿足,則接收無效。51系列單片機串行口的不同尋常的特征是包括第九位方式。這允許在串行口通信增加的第九位用于標志特殊字節(jié)的接收。對簡單網絡,第九位方案允許接收單片機僅當字節(jié)具有一個第九位時才能被中斷。用這種方法,發(fā)送器可以廣播一個字節(jié)讓第九位為高作為每個人請注意字節(jié)。字節(jié)可以為節(jié)點地址,地址相同的節(jié)點可以打開接收接下來的字符。所接續(xù)字節(jié)不能引起其它單片機中斷,因為未送它們的地址。用這種
14、方式。一個單片機可以和大量的其它單片機對話而不打擾不尋址的單片機。這種系統(tǒng)必須工作在嚴格的主從方式,由軟件進行取舍安排。2通信波特率設置 在異步通信中,收、發(fā)雙方各用自己的的時鐘源,要保證捕捉到的信號正確,最好采用較高頻率的時鐘,一般選擇時鐘頻率比波特率16倍或64倍,若時鐘頻率等于波特率,則頻率稍有偏差便會產生接收錯誤。各方式波特率的取值方法如下:方式0狀態(tài): 當軟件設置SCON的SM0、SM1為00時串行通信則以方式0工作,串行通信工作在同步移位寄存器方式下。其波特率固定為fosc。方式1狀態(tài):當軟件設置SCON的SM0、SM1為01時串行通信則以方式1工作,串行通信的波特率由定時器T1的
15、溢出率獲得:串行通信方式1波特率= 定時器/計數器1的溢出率定時器/計數器1 的溢出率定義為:單位時間秒內定時器/計數器回0溢出的次數,即定時器/計數器1的溢出率=定時器/計數器1的溢出次數/秒。定時器/計數器1的溢出率=當T1工作于方式2其初始值為:初值N=256-串行通信方式2波特率=振蕩器頻率通常情況下,使用單片機的串行口時,選用的晶振比較固定6MHz,12MHz,110592MHz。常用于和微機的通信;選用的波特率也相對固定。串行口常用的波特率及相應的設置見表7-1-1串行口常用波特率表。 表7-1-1串行口常用波特率串行口工作方式波特率Fosc=6MHzFosc=12MHzFosc=
16、11.0592MHzSMOD TMOD TH1SMOD TMOD TH1SMOD TMOD TH1方式01MHzX X X方式2375k187.5k1 X X1 X X0 X X方式1或方式362.5k0 20 FFH19.2k1 20 FDH9.6k0 20 FDH4.8k1 20 F3H0 20 FAH2.4k0 20 FFH1 20 F3H0 20 F4H1.2k1 20 E6H0 20 E6H0 20 E8H6001 20 CCH0 20 CCH0 20 D0H3000 20 CCH0 20 98H0 20 A0H137.51 20 1DH0 20 1DH0 20 2EH1100 20
17、 72H0 10 FEEBH0 10 FEFFH7115單片機之間的通信波特率查詢表51系列單片機內部集成有一個功能很強的全雙工串行通信口,屬UART方式。設有2個互相獨立的接收、發(fā)送緩沖器,可以同時發(fā)送和接收數據。發(fā)送緩沖器只能寫入而不能讀出,接收緩沖器只能讀出而不能寫入,因而兩個緩沖器可以用一個地址碼99H。兩個緩沖器統(tǒng)稱串行通信特殊功能寄存器SBUF。51系列單片機的串行通信根據應用可分為雙機通信和多機通信兩種,又可分為單片機與單片機間的通信和單片機與微機通信。1單片機雙機通信技術如果兩個AT89S52系列單片機相距很近距離的機間通信可使用UART的TTL電平,可將它們的串行端口直接相連
18、TXDRXD,RXDTXD,GNDGNDGND,即可實現雙機通信。2單片機與微機通信為了增加通信距離,減少通道及電源干擾,可采用RS-232C或RS-422、RS-485標準進行雙機通信。RS-232是串行數據接口標準,最初都是美國EIA電子工業(yè)聯合會制訂并發(fā)布的,1969年公布的通信協議。國際上規(guī)定了一個標準波特率系列,標準波特率也是最常用的波特率,標準波特率系列為110、300、600、1200、4800、9600和19200。在通信為保證通信正確,必須通信雙方必須同一波特率。RS-232-C標準:RS-232-C標準對邏輯電平的各種信號線的功能作了規(guī)定,即信號電平標準和控制信號線的定義。
19、RS-232C采用負邏輯規(guī)定邏輯電平,信號電平與通常的TTL電平不兼容,邏輯1=-3V-15V邏輯0=+3V+15V與TTL電平不一樣可用TTL/EIA轉換器進行轉換。RS232接口芯片實現了TTL標準和RS-232-C標準之間的電平轉換。使用驅動芯片可接成RS232C和通用微機進行通信。任務實施712 通信系統(tǒng)設計應用MCU內部的增強型全雙工UART功能,實現智能開發(fā)板與智能開發(fā)板的通訊,可以用智能開發(fā)板上的4個鍵每個鍵發(fā)送一串不同的字符串,另一個智能開發(fā)板接收字符串,并顯示。實現與PC機通訊。將從智能開發(fā)板鍵盤上鍵入的數字,字母顯示到PC機顯示器上,將PC機鍵盤輸入的字符0-F顯示到實驗機
20、的數碼管上。1. 單片機與微機通信的接口電路設計利用微機配置的異步通信適配器,可以很方便地完成微系列與AT89C51單片機的數據通信。微機與單片機的連接是零調制3線經濟型,這是進行全雙工通信所必須的最少數目的線路。由于AT89C52單片機輸入、輸出電平為TTL電平,而微機配置的RS-232C標準串行接口二的電氣規(guī)范不一致,因此,要完成微機與單片機的數據通信,必須進行電平轉換?,F在采用MAX232單芯片實現AT89C51單片機與微機的RS-232標準接口通信電路。MAX232芯片的接口連接如圖7-1-2所示。圖7-1-3 MAX232接口芯片連接圖2單片機與PC微機通信接口硬件連接:PC端口是9
21、針插口單片機板上是9針插頭1腳 DCD 1腳2腳發(fā)出數據 -3腳T1OUT3腳接受數據 -2腳R1IN 4腳 DRT 4腳5腳 GND - 5腳地GND6腳 DSR7腳 RTS8腳 CTS9腳 RI現從MAX232芯片中兩路發(fā)送接收中任選一路作為接口,應注意發(fā)送、接收的引腳要對應。實現與PC機通訊。將從智能開發(fā)板鍵盤上鍵入的數字,字母顯示到PC機顯示器上,將PC機鍵盤輸入的字符1-8顯示到單片機的數碼管上。3.單片機和單片機通信連接單片機與單片機通信連接如圖7-1-4所示,P3.0-P3.1、P3.1- P3.0、GND-GND。要注意的是這樣的連接不能遠距離。P3.1TXDP3.0RXDP3
22、.1TXDP3.0RXDGND2#單片機P3.0RXDP3.1TXDGND1#單片機圖示7-1-4單片機與單片機通信連接圖4. 通信程序設計流程圖通信程序中在使用串行口之前,應對它進行編程初始化,主要是設置產生波特率的定時器1、串行口控制和中斷控制。具體步驟如下:確定定時器1的工作方式編程TMOD寄存器;計算定時器1的初值裝載TH1、TL1;啟動定時器1編程TCON中的TR1位;確定串行口的控制編程SCON和PCON;串行口在中斷方式工作時,須開CPU和源中斷編程IE寄存器。 圖7-1-5通信程序設計流程圖5. 編程舉例匯編程序例子ORG30HSTART:MOVSP,#60HMOVSCON,#
23、01010000B ;設定串行方式: ;8位異步,允許接收MOVTMOD,#20H ;設定計數器1為模式2ORLPCON,#10000000B ;波特率加倍MOVTH1,#0FDH ;設定波特率為9600MOVTL1,#0FDHSETBTR1 ;計數器1開始計時AGAIN:JNBRI,$ ;等待接收完成CLRRI ;清接收標志MOVA,SBUF ;接收數據送緩沖區(qū)MOVSBUF,A ;發(fā)送收到的數據JNBTI,$ ;等待發(fā)送完成CLRTI ;清發(fā)送標志SJMPAGAINENDC51 初始化串口程序i=0;/初值 flag=0 x00;/ aa=0 xfe;/位碼初值 TMOD=0 x20;/方
24、式寄存器初值TH1=0 xfd;TL1=0 xfd;PCON=0 x00;TR1=1;SCON=0 x50; 單片機串行口發(fā)送程序,每發(fā)送一串字符MCS51后延時一段時間重復發(fā)送,和微機相接后,微機運行BASIC程序即可在屏幕上顯示接收到的字符串,此程序證明單片機串行口發(fā)送正常。程序tetrc如下:#includereg51h#define uchar unsigned char#define uint unsigned intuchar idata trdata10=M,C,S,-,5,1,0 x0d,0 x0a,0 x00;main uchar i;uint j;TMOD=0 x20; /
25、*設置9600波特串的定時器1方式*/TL1=0 xfd;TH1=0 xfd;/*設置初始值SCON0 xd8;PCON0 x00;/*設置串行口方式*/TR1=1;/*起動定時器1whilei=0;while/*發(fā)送字符串*/SBUF=trdatai;while;TI0;i+;forj=0;j12500;j+;*延時*單片機串行口發(fā)送/接收程序,每接收到字節(jié)即刻發(fā)送出去;和微機相接后微機鍵人的字符回顯在屏幕上,此程序證明單片機串行口發(fā)送/接收都正常??上扔么顺绦驕y試,若不正常,再使用單獨的發(fā)送程序測試以判斷是單片機串行口發(fā)送還是接收不正常。程序trrevc如下:#includereg51hv
26、oid main unsigned char a;TMOD0 x20; *在110592MHz下,設置串行口9600波特率,方式3* TL1=oxfd;TH1=0 xfd;SCON=0 xd8;PCON=0 x00;TR11;while while:RI0;a=SBUF;/*接收到的字節(jié),立即發(fā)送出去*SBUFa ;while;TI0;713 系統(tǒng)仿真1. 在PROTEUS中畫好通信電路原理圖如圖7-1-6所示。 圖7-1-6 在PROTEUS中繪制智能系統(tǒng)通信原理圖2. 在KEIL或WF中編寫單片機C51通訊程序。編好后調試產生HEX文件。3. 在PROTEUS中鏈接HEX文件并仿真調試。4
27、. PROTEUS仿真調試功能正確后,在最小系統(tǒng)板的擴展部分按照PROTEUS中的電路原理圖安裝并焊接。5. 利用Easy ISP在線下載軟件將HEX文件燒入51系列單片機芯片中寫入電路圖中的單片機,實現用單片機通訊。714 安裝與調試1硬件安裝單片機與單片機間通信線連接,在硬件連線時要注意2、3腳對換,但用購買的串口線不用對換。單片機與單片機間通信線通信線不易太長,最好小于50CM。在焊接時要注意斷開5V電源,焊接時間不要太長,如果太長會使焊盤脫落。2系統(tǒng)調試單片機的串行口主要用于和通用微機的通信、單片機間的通信和主從結構的分布式控制系統(tǒng)機間通信。串行口通信常使用緩沖區(qū)。單片機和通用微機進行
28、通信時,要求使用的波特率、傳送的位數等相同。要能夠進行數據傳送也必須首先測試雙方是否可以可靠通信。可在微機和單片機上各編制非常短小的程序,具體可分成微機串行口發(fā)送接收程序、單片機串行口發(fā)送程序和單片機串行口發(fā)送接收程序。這三個程序能運行通過,即可證明串行口工作正常。通信程序接收程序盡量采用中斷程序,通信中斷函數不要太長,會影響接收數據。微機串行口發(fā)送接收程序設置串行口為波特率9600、8位數據、1位停止位、無奇偶校驗的簡單設置。從鍵盤接收的字符可從串行口發(fā)送出去,從串行口接收的字符在屏幕上顯示。通過讓串行口發(fā)送線和接收線短接可測試微機串行口,通過讓串行口和單片機系統(tǒng)相接,使用此程序可進一步測試
29、單片機的串行通信狀況。具體程序用VB編制,簡單易懂。直接輸入即可運行。思考與練習:用中斷方式數據接收程序的練習。任務二 基于RS485的點對多點通信任務提出:MAX485芯片與51系列單片機的仿硬件連接,PC機與多個站點智能單機的硬件連接,通信程序的編寫,熟悉Keil、偉福、AEDK系列實驗機開發(fā)工具。VB程序學習。實現任務如圖7-2-1:圖7-2-1 多機機通信原理圖如上圖PC通過RS232與485轉換接口與多個站點的智能機相連接,每個站點有一MAX485連接一個溫度傳感DS18B20??蓪⒚總€站點的溫度傳送到PC 微機屏幕顯示。知識準備:721 點對多點通信7211 基于RS485的芯片1
30、MAX485芯片介紹 在工業(yè)控制及測量領域較為常用的網絡之一就是物理層采用MAX485通信接口所組成的工控設備網絡。這種通信接口可以十分方便地將許多設備組成一個控制網絡。從目前解決單片機之間中長距離通信的諸多方案分析來看,MAX485總線通信模式由于具有結構簡單、價格低廉、通信距離和數據傳輸速率適當等特點而被廣泛應用于儀器儀表、智能化傳感器集散控制、樓宇控制、監(jiān)控報警等領域。MAX485是芯片接口的一種類型 ,MAX485接口芯片是Maxim公司的一種RS485芯片。采用單一電源+5V工作,額定電流為300A,采用半雙工通訊方式。它完成將TTL電平轉換為RS485電平的功能。MAX485芯片的
31、結構和引腳都非常簡單,內部含有一個驅動器和接收器。RO和DI端分別為接收器的輸出和驅動器的輸入端,與單片機連接時只需分別與單片機的RXD和TXD相連即可;/RE和DE端分別為接收和發(fā)送的使能端,當/RE為邏輯0時,器件處于接收狀態(tài);當DE為邏輯1時,器件處于發(fā)送狀態(tài),因為MAX485工作在半雙工狀態(tài),所以只需用單片機的一個管腳控制這兩個引腳即可;A端和B端分別為接收和發(fā)送的差分信號端,當A引腳的電平高于B時,代表發(fā)送的數據為1;當A的電平低于B端時,代表發(fā)送的數據為0。在與單片機連接時接線非常簡單。只需要一個信號控制MAX485的接收和發(fā)送即可。同時將A和B端之間加匹配電阻,一般可選100的電
32、阻。 可以串行口取電,可以驅動max232與max485實現通信。沒加負載時電壓有5.16V,加負載后降制3V左右。MAX485的特性、封裝及特性300A低靜態(tài)電流 共模輸入電壓范圍為-7V到+12V 三態(tài)輸出 30ns傳輸延遲時間,5ns的的沿變化時間 半雙工模式 5V電源 總線最大允許負載32個收發(fā)器 2,5 Mbps數據傳輸速率 過流保護、過熱保護 15kV ESD保護MAX485的框圖與電路圖圖7-2-2 MAX485引腳管腳圖及工作電路7212 通信方式 微機和智能儀器間基于RS485總線的主從方式點對多點通信,各為主/從屬設備,被呼叫到時響應,或主發(fā);主設備可單獨和從設備通信,也能
33、以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以廣播方式查詢的,則不作任何回應。微機和智能儀器可作為主從設備,主從設備中建立了主設備查詢和從設備回應消息的格式;在通信接收過程中如果發(fā)生一錯誤,或從設備不能執(zhí)行其命令,從設備將建立一錯誤命令并把它作為回應發(fā)送出去。盡管網絡通信方法是對等。如果一設備發(fā)送一消息,它只是作為主設備,并期望從從設備得到回應。同樣,當主設備接收到一消息,它將建立一從設備回應格式并返回給發(fā)送的控制器通訊方式全兼容,采用異步通信,起始位1位,數據位8位,停止位1位,無校驗。數據傳輸速率為1.2 kbps、2.4kbps、4.8kbps、9.6kbp
34、s、19.2kbps。7213 MODBUS協議的基本格式在協議中建立了主設備查詢的格式,和從設備回應消息格式。協議的基本格式如表7-2-1,其格式如下: 表7-2.1 MODBUS協議的基本格式注解表序號12345678字節(jié)數11111N21格式SOIADR特征碼長度查詢/回應信息CRC16EOI基本格式的注解見表7-2-1。SOI為起始位標志START OF INFORMATION當值為F1H時為主發(fā)標志,值為F3H時為響應標志;ADR是信息幀的第一字節(jié)設備地址描述,在一個485總線上可以掛接多個設備,此處的設備地址表示想和哪一個設備1254,0為廣播地址、255保留通訊,從0到255。它
35、表明由用戶設置地址的從機將接收由主機發(fā)送來的信息。每個從機都必須有唯一的地址碼,并且只有符合地址碼的從機才能響應回送。當從機回送信息時,相當的地址碼表明該信息來自于何處。特征碼是設備特征描述代碼;長度是該整條指令的總字節(jié)數包括起始位標志、結束碼; 查詢/回應是控制標識碼, 也稱功能碼:查詢消息中的功能代碼告之被選中的從設備要執(zhí)行何種功能。數據段包含了從設備要執(zhí)行功能的任何附加信息。例如功能代碼03 是要求從設備讀保持寄存器并返回它們的內容。數據段必須包含要告之從設備的信息:從何寄存器開始讀及要讀的寄存器數量。錯誤檢測域為從設備提供了一種驗證消息內容是否正確的方法。如果從設備產生一正常的回應,在
36、回應消息中的功能代碼是在查詢消息中的功能代碼的回應。數據段包括了從設備收集的數據:象寄存器值或狀態(tài)。如果有錯誤發(fā)生,功能代碼將被修改以用于指出回應消息是錯誤的,同時數據段包含了描述此錯誤信息的代碼。錯誤檢測域允許主設備確認消息內容是否可用。CRC16是冗余循環(huán)碼包含2個字節(jié),即16位二進制。CRC碼由發(fā)送設備計算,放置于發(fā)送信息SOI、ADR、特征碼、長度、命令、的尾部。接收信息的設備再重新計算接收到信息的CRC碼,比較計算得到的CRC碼是否與接收到的相符,如果兩者不相符,則表明出錯。主機或從機可用校驗碼進行判別接收信息是否出錯。有時,由于電子噪聲或其它一些干擾,信息在傳輸過程中會發(fā)生細微的變
37、化,錯誤校驗碼保證了主機或從機對在傳送過程中出錯的信息不起作用。這樣增加了系統(tǒng)的安全和效率。EOI為結束碼當值為F2H是為主發(fā)結束,值為F4H時為響應結束。7214單片機與計算機的通信PC機通過串行口COM1或COM2來實現與通信MCU之間的通信。由于PC機的COM口輸入/輸出的是RS-232電平,往往只能用于實現單點通信,且傳送距離有限,為了對其進行擴展,我們采用RS-232/RS-485接口轉換器,將其轉換為RS-485電平,從而通過RS-485總線實現與16個通信MCU之間的通信。由于單片機的通用同步/異步收發(fā)器USART采用TTL電平,與標準RS-485電平不匹配,我們采用MAXIM公
38、司生產的MAX485芯片將其轉換為RS-485標準電平,通過RS485總線實現與PC機的對接。MAX485通訊程序與MAX232通訊程序在本質上是一樣的,只是MAX485通訊程序需要加上通訊方向控制。下面通信程序,調試通過,晶振為外部11.0592M ,MAX485的DE和RE短接連PC0口, 圖7-2-3 單片機與MAX485連接圖任務分析:分析1: 硬件設計如下圖7-2-4有多個智能開發(fā)板每個開發(fā)板上安裝DS18B20溫度傳感器并顯示當前檢測溫度值,板上的MAX485和RS232與485轉換接口與PC機連接。在PC微機上用VB建立一界面顯示多個智能板上所測的溫度。圖7-2-4智能溫度檢測系
39、統(tǒng)分析2:編制VB界面, 在VB軟件中編制界面如下圖7-2-6智能溫度檢測系統(tǒng)VB界面任務實施:1.準備微機二個智能開發(fā)板極,二個DS18B20,二個MAX485一個RS232485轉接口2.實施過程在PROTEUS中畫好電路原理圖并完成硬件設計按照原理圖正確焊接線路,用萬用表簡單測試線路是否有短路開路現象。在KEIL或WF中編寫多機通訊程序。編好后調試產生HEX文件。利用STC- ISP在線下載軟件將HEX文件燒入51系列單片機芯片中VB界面下設計多個窗口,通信接收,編寫VB程序,根據各站的數據顯示在指定指定窗口。系統(tǒng)調試實現多機通訊,在PC機上VB界面顯示溫度值,然后用數碼管顯示出通信信息
40、用C語言編寫程序。注意事項:各智能系統(tǒng)站的上的MAX485輸出A端連接在一起,B端連接在一起,一個工程項目的完成要經過長時間的調試才能成功,本任務的完成有一定的難度,技術性較強。思考與練習:1. 根據MX485與單片機的連接圖和微機的連接圖,制作硬件。2. 編制溫度檢測通信發(fā)送接收C51程序,編譯通過并用ISP下載到單片機中。3. 在VB界面下編制數據檢測及顯示程序知識拓展:1.VB界面程序設計Public fsStr As StringPublic sqm$Public sqm1$Dim zh As Byte使用命令按鈕控件關閉通信端口結束系統(tǒng)Private Sub CmdExit_Clic
41、k Comm1.PortOpen = False EndEnd Sub使用命令按鈕控件使用Input屬性讀取串行端口的傳入值并將結果顯示在Label控制的Caption屬性里Private Sub CmdReceive_Click Dim buf$ buf = Trim If Len = 0 Then lblReceive.Caption = Empty Else lblReceive.Caption = buf End IfEnd Sub使用命令按鈕控件使用Output屬性將用戶欲發(fā)送的字符串送出Private Sub CmdSend_Click Comm1.Output = TrimEnd
42、 SubMSComm的OnComm事件程序由CommEvent屬性值的不同,將各別的程序代碼寫入相關的子程序中在此例中,只要RThresold中的設置字符數到達時便會使得CommEvent屬性值變成comEvReceive因此接收的子程序便被執(zhí)行Private Sub Comm1_OnCommDim buf$Select Case Comm1.CommEvent 借著取代底下每一個 case 語句來處理每個事件與錯誤 事件 Case comEvCD CD 線的狀態(tài)發(fā)生變化. Case comEvCTS CTS 線的狀態(tài)發(fā)生變化. Case comEvDSR DSR 線的狀態(tài)發(fā)生變化. Case
43、 comEvRing Ring Indicator 變化. Case comEvReceive 收到 RThreshold # of buf = buf + Trim sqm = sqm + buf Case comEvSend 傳輸緩沖區(qū)有 Sthreshold 個字符 End SelectEnd Sub使用命令按鈕控件將接收區(qū)的顯示范圍清空Private Sub Command1_Click lblReceive.Caption = End Sub窗體的加載事件打開串行通信端口,參數亦可在打開之前先行指定,指定完后,再打開該通信端口Private Sub Form_Load Comm1.P
44、ortOpen = Truezh = 0End SubSub SJCL End SubPrivate Sub Timer1_TimerTimer1.Enabled = False zh = zh + 1 站號記數器 If zh 4 Then zh = 0 Else zh = 0 + zh fsStr = zh F2 & zh & FD Label2.Caption = fsStr Comm1.Output = fsStr Timer2.Enabled = True End If Timer1.Enabled = True End SubPrivate Sub Timer2_Timer處理數據
45、Dim swzl As Integer Dim si As Integer Dim qh As String Dim xqls As String Dim wdz As IntegerKS: Label4.Caption = sqmxqls = Trimswzl = 1F2,X,XXXXX,FD結束標志swzl = InStr 搜索 FFF2 出現的位置swz1 = swz1 + 2sqm = Mid 取出 F2 開始的字符wdz = ValMidIf wdz 0 Then For si = 1 To 4 qh = Mid Select Case qh Case 1 Text1.Text =
46、wdz Case 2 Text2.Text = wdz Case 3 Text3.Text = wdz Case 4 Text4.Text = wdz End Select Next si sqm = End If Timer2.Enabled = False Timer1.Enabled = True End SubPrivate Sub txtSend_ChangeEnd Sub2. 智能儀器程序#include #include unsigned char code;displaycode=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0
47、 x80,0 x90,0 xbf,0 x9c,0 xc6,0 xf;unsigned char code dotcode32=0,3,6,9,12,16,19,22 25,28,31,34,38,41,44,48,50,53,56,59,63,66,69,72,75,78,81,84,88,91,94,97;unsigned char displaycount;unsigned char displaybuf8=16,16,16,16,12,11,16,16;unsigned char timecount,aa=0 xfe,n;unsigned char readdata8,dd;sbit D
48、Q=P10;sbit CON_485=P11;bit sflag;bit reflag1,reflag2,reflag3,reflag4,reflag5,reflag6,reflag7,reflag8;/接收標志void fsdata;void delay_50us ;void Serial_int interrupt 4 using 2 /串行中斷接收 ES=0;RI=0; dd=SBUF; if reflag6=1; ES=1; void fsdata ES=0; CON_485=1;REN=0; TI=0; for0;n-; SBUF=0 x46; /發(fā)送ACK 0 x06while;T
49、I=0; for0;n-; SBUF=0 x32; /發(fā)送ACK 0 x06while;TI=0; for0;n-; SBUF=0 x32; /發(fā)送ACK 0 x06while;TI=0; for0;n-; SBUF=displaybuf0 x01&0 x0f|0 x30; /發(fā)送ACK 0 x06while;TI=0; for0;n-; SBUF=displaybuf0 x00&0 x0f|0 x30; /發(fā)送ACK 0 x06while;TI=0; for0;n-; SBUF=0 x46; /發(fā)送ACK 0 x06while;TI=0; for0;n-; SBUF=0 x44; /發(fā)送ACK 0 x06while;CON_485=0;REN=1;ES=1; bit resetpulse unsigned char i; DQ=0; for0;i-; DQ=1; for0;i-; return; for0;i-;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/IEC 21122-4:2025 EN Information technology - JPEG XS low-latency lightweight image coding system - Part 4: Conformance testing
- 【正版授權】 ISO 80000-8:2020/Amd 1:2025 EN Quantities and units - Part 8: Acoustics - Amendment 1
- 【正版授權】 ISO 502:2025 EN Hard coal - Determination of caking power - Gray-King coke test
- 【正版授權】 ISO 16625:2025 EN Cranes and hoists - Selection of wire ropes,drums and sheaves
- 【正版授權】 IEC 63380-2:2025 FR Standard interface for connecting charging stations to local energy management systems - Part 2: Specific data model mapping
- 【正版授權】 IEC 60598-2-1:1979 FR-D Luminaires. Part 2: Particular requirements. Section One: Fixed general purpose luminaires
- 【正版授權】 IEC 60269-2:1986 FR-D Low-voltage fuses. Part 2: Supplementary requirements for fuses for use by authorized persons (fuses mainly for industrial application)
- 校園防盜防火安全知識培訓課件
- 公孫策面試題及答案
- 煤分析考試題及答案
- 手術室安全細節(jié)管理
- 繼發(fā)性顱腦損傷的護理
- 《保角變換法在求解電勢中的應用研究》7500字(論文)
- TCHIA 47-2024 智慧重癥病房建設規(guī)范
- 多模態(tài)技術在智能養(yǎng)雞工廠中的研究現狀與展望
- 征信知識專項培訓課件
- 《基于深度強化學習在游戲上的應用》
- 中建給排水工程施工方案
- 電力建設工程施工合同(合同版本)
- 糖尿病飲食的健康宣教
- 《公務員錄用體檢操作手冊(試行)》
評論
0/150
提交評論