PC機(jī)與51系列單片機(jī)實現(xiàn)通信的一般方法和步驟
隨著單片機(jī)和微機(jī)技術(shù)的不斷發(fā)展,特別是網(wǎng)絡(luò)技術(shù)在測控領(lǐng)域的廣泛應(yīng)用,由PC機(jī)和多臺單片機(jī)構(gòu)成的多機(jī)網(wǎng)絡(luò)測控系統(tǒng)已成為單片機(jī)技術(shù)發(fā)展的一個方向。它結(jié)合了單片機(jī)在實時數(shù)據(jù)采集和微機(jī)對圖形處理、顯示的優(yōu)點。同時,Windows環(huán)境下后臺微機(jī)在數(shù)據(jù)庫管理上具有明顯的優(yōu)勢。二者結(jié)合,使得單片機(jī)的應(yīng)用已不僅僅局限于傳統(tǒng)意義上的自動監(jiān)測或控制,而形成了向以網(wǎng)絡(luò)為核心的分布式多點系統(tǒng)發(fā)展的趨勢。本文主要介紹PC機(jī)與51系列單片機(jī)實現(xiàn)通信的一般方法和步驟。
硬件結(jié)構(gòu)和單片機(jī)的通1S程序設(shè)計
單片機(jī)和PC機(jī)的串行通信一般采用RS-232、RS-422或B3-485總線標(biāo)準(zhǔn)接口,也有采用非標(biāo)準(zhǔn)的20nnJL電流環(huán)的。為保證通信的可靠,在選擇接口時必須注意:(1)通信的速率;(2)通信距離:(3)抗干擾能力;(4)組網(wǎng)方式。本文主要介紹采用RS-232接口與單片機(jī)通信的方法。
1、 RS-232電平轉(zhuǎn)換和PC機(jī)的接口電路
RS-232是早期為公用電話網(wǎng)絡(luò)數(shù)據(jù)通信而制定的標(biāo)準(zhǔn),其邏輯電平與ITLCMOS電乎完全不同。邏輯"0"規(guī)定為+5- +15V之間,邏輯"1,,規(guī)定為-5~-15V之間。由于RS-232發(fā)送和接收之間有公共地,傳輸采用非平衡模式,因此共模噪聲會耦合到信號系統(tǒng)中,其標(biāo)準(zhǔn)建議的最大通信距離為15米.但實際應(yīng)用中我們在300bi:/s的速率下可以達(dá)到300米。
RS-232規(guī)定的電平和一般微處理器的邏輯電平不一致,必須進(jìn)行電平轉(zhuǎn)換,實現(xiàn)邏輯電平轉(zhuǎn)換可以采用以下三種方式。
采用 MCl488和MCl489芯片的轉(zhuǎn)換接口 MCl488和MCl489芯片為早期的RS-232至TTL邏輯電平的轉(zhuǎn)換芯片,上圖為實際電路。該電路的不便之處是需要±12V電壓,并且功耗較大,不適合用于低功耗的系統(tǒng)。圖中TXD、RXD分別接單片機(jī)的發(fā)送和接收端。
采用MAX232芯片的轉(zhuǎn)換接口 MAX232是MAXIM公司生產(chǎn)的,包含兩路驅(qū)動器和接收器的RS-232轉(zhuǎn)換芯片。上圖為實際電路。芯片內(nèi)部有一個電壓轉(zhuǎn)換器,可以把輸入的+5v電壓轉(zhuǎn)換為RS-232接口所需的±10V電壓,尤其適用于沒有±12V的單電源系統(tǒng)。與此原理相同的芯片還有MAx202、AD公司的ADDtl01以及 INl2只SIL公司的ICl232芯片。
采用分立元件實現(xiàn)的轉(zhuǎn)換接口上圖為采用分立元件實現(xiàn)的RS-232-TTL電平的轉(zhuǎn)換接口電路,其特點是利用PC機(jī)的BS-232接口的③腳信號出(也可用④、⑦腳)來供給負(fù)電源,F(xiàn)C機(jī)的③、④、⑦腳在非發(fā)送邏輯"0"電平時均為1電平(-10V左右),其驅(qū)動能力為20mA,利用這個特性,用一個二極管和電解電容,即在電解電容上獲取了RS-232通信所需的負(fù)電源。該電路簡單、功耗小,在沒有專用芯片時不失為一種替代方法。
上述介紹的RS。232至TTL電平轉(zhuǎn)換的方法可以適用于大多數(shù)通信系統(tǒng),在一些特殊應(yīng)用場合需要諸如靜電保護(hù)、多收發(fā)器(如與MODEM連接)時可采用MAX238(4驅(qū)動、4接收)或MAX3221t t15Kv靜電保護(hù))等芯片。
2、單片機(jī)通信程康設(shè)計
單片機(jī)串工作方式目前廣泛應(yīng)用的51系列單片機(jī)的串行通信可工作于同步或異步方式,多數(shù)與8031兼容的51系列單片機(jī)都有一個或多個UART異步串行接口,這就為用戶設(shè)計通信程序提供了很好的便利條件。當(dāng)應(yīng)用系統(tǒng)中需要多個串行通信接口時,可采用以下幾種方法:(1)采用多串口的單片機(jī),如華邦的WW77E58就有2個串行接口;(2)采用通用異步串口擴(kuò)展芯片,如TLl6c552(2路)、LCl6C554(4路);(3)采用普通I/O 模擬實現(xiàn)通信。這是最簡單經(jīng)濟(jì)的方法,并且可以實現(xiàn)高速串通信,本文僅討論采用一個異步串行通信的設(shè)計方法,單片機(jī)串口的控制方式MCS-51系列單片機(jī)對串口的控制是通過對串行口控制寄存器SCON和功率控制寄存器PCON的設(shè)置來實現(xiàn)的。SCON是一個可位尋址的特殊功能寄存器,通過設(shè)置SGON的SM0和SMI,可以使單片機(jī)有四種不同的工作方式。SCON的格式可參見有關(guān)手冊說明。在用于和PC機(jī)實現(xiàn)串行通信時,一般設(shè)置為方式1或方式3,主要區(qū)別是方式1的數(shù)據(jù)格式為8位,方式3的數(shù)據(jù)格式為9位,其中第9位SM2為多機(jī)通信位,"可實現(xiàn)單片機(jī)的多點通信。功率控制寄存器PCON的SMOD為串行口波特串倍率控制位,當(dāng)單片機(jī)的品振為整數(shù)時(如6M),設(shè)置5MOD為1通常可獲得更高的通信速串,但 SMOD不能位尋址。
單片機(jī)串口的速率設(shè)置單片機(jī)和PC機(jī)通信時,其通信速率由定時器T1或定時器T2產(chǎn)生(52系列),在T1工作在方式2時的通信速率的計算公式為:波特串=(SMOD× Fosc)/(32×12×[256-TH1])。其中Fosc晶振頻率,為獲得準(zhǔn)確的通信速率,F(xiàn)osc通常為11.0592MH2。采用T1定時器通信的系統(tǒng),速率不可能過高,一般情況下最高為19200bit/s。如為了獲得更高的通信速率可利用52系列單片機(jī)的定時器T2,最高速率可達(dá) 115200bjt/s。實際應(yīng)用中我們曾經(jīng)在6MH2晶振的單片機(jī)系統(tǒng)中實現(xiàn)了38400bit/s的高速通信。
單片機(jī)串口通信程序的實現(xiàn)方法實際應(yīng)用中,單片機(jī)通信程序一般采用中斷方式與微機(jī)通信,微機(jī)做為主控方。當(dāng)單片機(jī)收到微機(jī)發(fā)送的地址信號時,便轉(zhuǎn)入中斷服務(wù)程序,向微機(jī)發(fā)送數(shù)據(jù)。其中斷服務(wù)于程序流程見圖4,該中斷服務(wù)于程序也適用于多機(jī)通信的系統(tǒng)。詳細(xì)的程序清單請參見本刊網(wǎng)站 COMMON.ASM,單片機(jī)的晶振為11. 0592MHz,通信速率為9600bit/s,幀格式為N.8.1。