freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于rs485多機通信的軟件編程與系統(tǒng)調(diào)試(參考版)

2024-11-11 21:41本頁面
  

【正文】 這里給出 8051 主程序完成串行口和中斷的初始化后,則等待中斷,以及單片機中斷方式接收。采用中斷方式發(fā)送和接收數(shù)據(jù),定時器 TI 設(shè)置為工作模式 2,串行口設(shè)置為工作方式 3,由第 9位判斷地址碼或數(shù)據(jù)。 80C51單片機通信 程序 設(shè)計 單片機的數(shù)據(jù)通信 由 串行口完成,定時器 TI作為波特率發(fā)生器,其波特率要與 PC 機一致。 PC 機發(fā)送子程序流程圖如圖 43( b)所示。若輸入的是 R命令,則表示主機要求從機準備接收信息,因此, PC 機調(diào)用 sendf 子程序?qū)斍? 盤 上的指定文件發(fā)送給從機。 然后根據(jù)鍵入的地址碼,呼叫從機,發(fā)出聯(lián)絡信號。 PC 機通信 程序 設(shè)計 PC 機通信程序采用 C 語言編程。 } } 該函數(shù)不斷查詢“數(shù)據(jù)準備就緒”位,若為 1,說明串口收到了一個字符的數(shù)據(jù);否則,用按下任一鍵退出程序的方法避免程序陷入死循環(huán)。0x00ff。 exit( 1)。 while (!(bios (3, 0, 0)amp。 exit (1)。0x2020)){ if (bios (1, ch, 0)amp。 cmd=1 時,低 8 位返回值是原發(fā)送的字符; cmd=2 時,低 8位返回的是由串行口收的字符;其他情況下, cmd 分別為 0, 3 時低 8 位含義如表 43 所示。 注意, bios() 總是返回一個 16 位的二進制數(shù)值,它通常反映了串行口某些重要的狀態(tài)信 息。 說明:在使用串行口進行通行之前,必須對它初始化。這種方法很好地解決了通信過程數(shù)據(jù)存儲出錯、丟失的問題,使得通信的可靠性得到很大的提高 [5]。要傳送的新數(shù)據(jù)先放在原來的緩沖區(qū),檢測舊的數(shù)據(jù)是否發(fā)送成功,如果發(fā)送成功,則將新的數(shù)據(jù)復制到擴展緩沖區(qū);如果未發(fā)送成功,則繼續(xù)發(fā)送,發(fā)送成功后再備份新的數(shù)據(jù)。本系統(tǒng)約定最大重發(fā)數(shù)為 3次,超過 3 次系統(tǒng)就認為串行通信出現(xiàn)故障,主機進行故障報警。如果傳輸中幀完全丟失,則發(fā)送方進行超時處理。當主機發(fā)出呼叫幀,如果在規(guī)定的時間內(nèi)沒 有收到從機的應答幀,則主機認為幀丟失并重發(fā)呼叫幀;如果發(fā)送 3次仍沒有收到應答幀,則系統(tǒng)認為該從機處于關(guān)機狀態(tài),開始執(zhí)行其他任務。 22 總之,發(fā)送和接收控制信號應該足夠?qū)?,以保證完整地接收一幀數(shù)據(jù),任意兩個單機的發(fā)送控制信號在時間上完全分開,避免總線爭端 [7]。 ( 3) 總線上所連接的各從機的發(fā)送控制信號在時序上完全隔開。接收數(shù)據(jù)時也同樣如此,單片機在接收完 8 個數(shù)據(jù)位后就建立起 RXC 信號,但此時還未接收到第九位數(shù)據(jù)位(若接收地址幀時)和停止位。如果單片機多機通訊采用較高的波特率,幾條操作指令的延時就可能超過 2位(或 1位)數(shù)據(jù)的發(fā)送時間,問題或許不會出現(xiàn)。 因為單片機在串行口發(fā)送數(shù)據(jù)時,只要將 8 位數(shù)據(jù)位傳送完畢, TXC 標志即建立,但此時應發(fā)送的第九位數(shù)據(jù)位(若發(fā)送地址幀時)和停止位尚未發(fā)出。發(fā)送時,檢測 TXC 是否建立起來,當 TXC為高電平后關(guān)閉發(fā)送功能轉(zhuǎn)為接收功能 ;接收時,檢測 RXC 是否建立起來,當 RXC為高電平后,接收完畢,又可以轉(zhuǎn)為發(fā)送。在 RS485 半雙工通訊中,由于 MAX485 的發(fā)送和接收都由同一器件完成,并且發(fā)送和接收使用同一物理鏈路,必須對控制信號進行切換。 21 234V C C81 67GND5DRABUM A X 48 5Q2N 39 0410KR1R210KR310KR4V C CV C C V C C接單片機 IO 端口R X DT X DV C C 圖 42 下位機 RS485通信接口電路 ( 2) 控制端 RE*, DE 的信號有效脈寬應該大于發(fā)送或接收一幀信號的寬度。因此,如果用一根口線作發(fā)送和接收控制信號,應 該將口線反向后接入 MAX485 的控制端,使上電時 MAX485 處于接收狀態(tài)。一般使用單片機的一根口線連接 RE* , DE 端。 MAX485 芯片的發(fā)送和接收功能轉(zhuǎn)換是由芯片的 RE*, DE 端控制的。在 RS485 總線通信網(wǎng)絡中 ,必須控制好每個站點的“聽、說”狀態(tài) ,即收、發(fā)狀態(tài) ,對總線的使用權(quán)必須進行分配 ,以使各從機的發(fā)送控制信號在時間上完全隔離 ,保證能及時、正確地傳輸數(shù)據(jù)。 多機發(fā)送時的分時說、聽 多機傳送時 ,通信協(xié)議要合理 地協(xié)調(diào)總線的分時共用 ,通信波特率的計算要有冗余,采用 RS485 總線連接的多個站點 ,由于 485 總線是異步半雙工的通信總線 ,在某一個時刻 ,總線只可能呈現(xiàn)一種狀態(tài) ,即任一時刻只有一個站點在“說” ,其他站點只能處于“聽”狀態(tài)。每發(fā)送一數(shù)據(jù)塊,僅當數(shù)據(jù)接收正確時,才會發(fā) 20 送一個響應幀,否則回送出錯信息,要求重發(fā)數(shù)據(jù)塊,直到正確為止 。 綜上可知,通信協(xié)議分為三段,即主機與從機的連接掛鉤與握手階段、發(fā)送 (接收 )階段、結(jié)束階段。將第 9 位設(shè)定為“地址 /數(shù)據(jù)位”,用來支持 PC 機和 8051 單片機的相互通信,當?shù)?9位為 0,表示主機發(fā)送的是“數(shù)據(jù) /命令幀”,當?shù)?9位為 1,表示主機發(fā)送的是“地址幀”。通信協(xié)議中,幀格式和波特率的選擇,它關(guān)系到通信的效率,傳輸?shù)木嚯x和通信的可靠性,是串行通信中的一個關(guān)鍵參數(shù)。 (8) 從機收到復位命令后回到監(jiān)聽地址狀態(tài),即 SM2=1,否則開始接收數(shù)據(jù)。 (7) PC 機收到從機的應答地址后,確認地址是否相符。作為應答之后才能收到 PC機發(fā)送來的數(shù)據(jù)。若接收幀的 RB8=0,則原數(shù)據(jù)到緩沖區(qū),并準備接收下幀信息。 (5) PC 機接收數(shù)據(jù)時,先判斷數(shù)據(jù)結(jié)束標志 (RB8 ),若 RB8=1,表示數(shù)據(jù)傳輸完畢,并比較此幀校驗和。 (3) 各從機接收到地址后,判斷 PC 機發(fā)來的地址信息是否與本從機地址相同,相同者則置 SM2=0,打開通信通道,以接收 PC 機隨后發(fā)來的所有信息;對于其他從機由于地址不符,保持 SM2=1,仍然處于監(jiān)聽狀態(tài),對于 PC 機隨后發(fā)來的數(shù)據(jù)不予理睬,直至發(fā)送新的地址幀。通信協(xié)議如下: (1) 首先使所有從機的 SM2 位置 1,處于只接收地址幀的監(jiān)聽狀態(tài)。呼叫幀由主機發(fā)出,應答幀只能由從機發(fā)出。如果是多點通信 ,每個從機要分配一個地址碼。根據(jù) 8250 線路控寄存器( LCR)的結(jié)構(gòu)特點,可以在編程中作如下選擇: 若要求 8250 發(fā)送幀的奇偶校驗位為 1,只需執(zhí)行 MOV DX, 3FBH MOV AL, 2BH OUT DX, AL 這 3條語句,此時的幀格式為: 起始位 D0 D1 D2 D3 D4 D5 D6 D7 1 停止位 若要求 8250 的奇偶校驗位為 0,只需執(zhí)行 MOV DX, 3FBH MOV AL, 3BH OUT DX, AL 這 3條語句,此時的幀格式為: 起始位 D0 D1 D2 D3 D4 D5 D6 D7 0 停止位 前者可作為多機通信中的地址幀,而后者可作為數(shù)據(jù)幀 [3]。 通過對 8250 的線控制寄存器( LCR)的設(shè)置,可使 8250 具有很大的靈活性。 仔細研究串行卡的通信線控制器 3FB 的 D5 位功能可發(fā)現(xiàn),在 串行口初始化時設(shè) 3FB的 D5=1, D3=1;而在發(fā)送地址時置 D4=0,在發(fā)送數(shù)據(jù)時置 D4=1,這樣便實現(xiàn)了 80C51 中TB8 的功能,不必每次都進行調(diào)整。如果我們通過軟件方法編程控制奇偶校驗位,使得在發(fā)送地址時為“ 1”,發(fā)送數(shù)據(jù)時為“ 0,則奇偶校 18 驗位可完全模擬單片機多機通信的 TB8 位。因為每次將欲發(fā)送的數(shù)據(jù)送往串行口發(fā)送之前,先要經(jīng)軟件調(diào)整奇偶情況,花費一定的時間,而且有效傳送位數(shù)由 8位降為 7位。對 PC機來說,奇偶位通常是自動產(chǎn)生的,它根據(jù) 8位數(shù)據(jù)的奇偶情況而定;因而大多數(shù)設(shè)計者均采用人為控制 8位數(shù)據(jù)的奇偶;將 8 位數(shù)據(jù)的某一位(一般是第 D7位)作為奇偶控制位,以達到間接控制奇偶位的 目的。 80C51 多機通信信息幀的格式如下圖所示 : 起始位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 其中第 9 位為下位機 SCON 中的 TB8,是多機通 信時下位機發(fā)送地址 /數(shù)據(jù)的標志。波特率因子與波特率的關(guān)系示于表 42中 [5]。 線路控制寄存器:用來設(shè)置串行通訊的數(shù)據(jù)格式和校驗方式,各位含義如圖 41 所示。表 41是 UART 中 10 個內(nèi)部寄存器的名稱,端 口地址及操作特點與使用條件。它并不具備多機通信功能,也不能產(chǎn)生 TB8或者 RB8,但可以靈活使用 8250,用軟件完成上述功能 [3]。在接收端,一幀數(shù)據(jù)的第 9 位 信息被裝入 SCON 的 RB8 中,接收機根據(jù) RB8 及 SM2 的狀態(tài)確定是否產(chǎn)生串行中斷標志,從而可以響應或不響應串行中斷,這樣就實現(xiàn)了多機通信。 在多機通信時, 8051 發(fā)送的幀格式是 11 位,其中第 9 位是 SCON 中的 TB8,它是多機通信時發(fā)送地址( TB8=1)或發(fā)送數(shù)據(jù)( TB8=0)的標志。 TB8 為方式 3中要發(fā)送數(shù)據(jù)第 9位, RB8 為方式 3 中接收數(shù)據(jù)第 9位,TI 為發(fā)送中斷標志位, RI 為接收中斷標志位。 80C51 單片機的串行通道是一個全雙工的串行通信口,既可以實現(xiàn)雙機通信,也可以實現(xiàn)多機通信。 ( 3) 在通信時 ,只允許主機和一臺下位機進行通信,而不允許多個下位機和一臺主機同時進行通信。 系統(tǒng)主從通信的基本條件 為了確保主從機能夠?qū)崿F(xiàn)安全的通信,在通信過程中必須 滿足三個基本條件: ( 1) 系統(tǒng)中每個下位機都有一個唯一的地址碼。 ( 6) 下位單片機部分 每個下位機是由 8051 單片機為核心,再配上必要的時鐘電路,復位電路以及鍵盤和顯示器等而構(gòu)成的一個單片機系統(tǒng)。 ( 4) RS485 通信網(wǎng)絡 由 MAX485 收發(fā)器組成的差分平衡系統(tǒng),其通信采用平衡發(fā)送和差分接收的方式,使得傳輸距離長、抗干擾能力強,因而適用 于 遠距離通信。 ( 2) RS232 接口電路 串行通信中,只有通信雙方采用相同的接口標準,才能進行正常的通信,由于上位PC 機的串行通信口采用的 RS232 電平和下位單片機的 TTL 邏輯電平不一致,所以我們必須進行電平轉(zhuǎn)換;為實現(xiàn)邏輯電平的轉(zhuǎn)換 使用 MAX232 轉(zhuǎn)換芯片。 從結(jié)構(gòu)上 系統(tǒng) 可以分為:上位 PC 機部分、 RS232 接口電路部分、 RS232/485 轉(zhuǎn)換電路、RS485 通信網(wǎng)絡部分 、 RS485接口電路 部分 和 下位單片機部分。當總線上沒有信號傳輸時,門端 A+的電平大約為 ,負端 B的電平大約為 。在總線上沒有信號傳輸時 , 總線處于懸浮狀態(tài),容易受干擾信號的影響。 其系統(tǒng)的原理框圖如圖 31 所示: S 2 4 8 5T X DR X DR X DT X DR110KAB BBAAROROREREDEDEDIDIRXDRXDTXDTXDPiPiPC機MAX485MAX48580518051R210KR310KR410K+ 5V 圖 31 多機通信原理框圖 13 在總線末端接一個匹配電阻,吸收總線上的反射信號,使得正常傳輸信號無毛刺。 其實質(zhì)是先用 MAX232 轉(zhuǎn)換芯片將 RS232 電平轉(zhuǎn)換為 TTL電平,再用 MAX485 芯片將 TTL電平轉(zhuǎn)換為 RS485 電平 , 然后采用 RS485 總線進行長距離、高速的串行異步通信。 通過 此 過程 來達到上位機與下位機之間數(shù)據(jù)的傳輸 ,并將接收到 的數(shù)據(jù)用顯示器進行顯示。 本系統(tǒng)通信過程如下:上位 PC 機 作為主機 經(jīng)過一定的程序后,先向下位機發(fā)出地址信號,各個下位機收到信息后,開中斷去執(zhí)行程序,與上位機發(fā)過來的地址相比較。只需要一個信號控制 MAX485 的接收和發(fā)送即可 [2]。 RO 和 DI 端分別為接收器的輸出和驅(qū)動器的輸入端,與單片機連接時只需分別與單片機的 RXD 和 TXD 相連即可; RE 和 DE端分別為接收和發(fā)送的使能端,當 RE 為邏輯 0 時,器件處于接收狀態(tài);當 DE 為 邏輯 1時,器件處于發(fā)送狀態(tài),因為 MAX485工作在半雙工狀態(tài),所以只需用單片機的一個管腳控制這兩個引腳即可; A端和 B 端分別為接收和發(fā)送的差分信號端,當 A 引腳的電平高于B 時,代表發(fā)送的數(shù)據(jù)為 1;當 A 的電平低于 B 端時,代表發(fā)送的數(shù)據(jù)為 0。它完成將 TTL電平轉(zhuǎn)換為 RS485 電平的功能,將輸入的 TTL 電平轉(zhuǎn)換成差分電平輸出。該芯片具有低功耗,單電源供電等優(yōu)點,主要應用于低功耗 RS485 收發(fā)器、低功耗 RS422 收發(fā)器、 RS232485電平轉(zhuǎn)換器和工業(yè)控制局域網(wǎng)等 [4]。所以在進行 RS485 通訊芯片設(shè)計之前,有必要選擇一款成功在市場上 應用的相關(guān)芯片進行分析研究,以確保設(shè)計的成功性。 MAX232 芯片的引腳結(jié)構(gòu)如圖 25 所示 : 10 C 1+1VDD2C 13C 2+4C 25V E E6T 2O U T7R 2I N8R 2O U T9T 2I N10T
點擊復制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1