PC機和多個單片機也可以組成多級控制系統(tǒng),一般以PC機為后級,多個單片機最小系統(tǒng)為前級。其通信一般由兩個獨立的模塊組成,即單片機通信模塊和PC機通信模塊。
1.單片機通信模塊的設(shè)計
51單片機內(nèi)串行口部分有兩個物理上相互獨立的數(shù)據(jù)緩沖器SBUF,但兩個緩沖器的地址是一個(99H)。該緩沖器用來發(fā)送和接收數(shù)據(jù)。專用寄存器SCON和PCON控制串行口的工作方式和通信的波特率設(shè)定。定時器作為波特率發(fā)生器。CPU和SBUF寫數(shù)據(jù)即是發(fā)送數(shù)據(jù),CPU從SBUF讀數(shù)據(jù)就是接收數(shù)據(jù)。
單片機51串行口是全雙工串行通信口。0串行口控制寄存器是SCON。
SMO和SMl:工作方式選擇位,如表所列。
表中UART是異步串行通信。
SM2:允許方式2和方式3多機通信。
REN:允許串行接收。
TB8:在方式2和方式3時是發(fā)送數(shù)據(jù)的第9位。
RB8:在方式2和方式3時接收數(shù)據(jù)的第9位;在方式1時,若SM2=0,則RB8為接收到數(shù)據(jù)的停止位。
TI和RI:發(fā)送和接收中斷標志,表示是否已發(fā)送完或接收到數(shù)據(jù),由硬件置位,軟件清O。因為PC機的RS - 232接口是由8250芯片控制的,所以一般PC/XT和PC/AT機用RS - 232與其他設(shè)備通信時所使用的是8位數(shù)據(jù)位(可少于8位數(shù)據(jù)),由此決定單片機必須設(shè)置方式1。
工作方式1:當(dāng)SMO和SM1一0時,串行接口被選擇為工作方式1,此時為可變波特率的8位異步通信方式。
發(fā)送數(shù)據(jù)以TxD端輸出,每幀信息為10位:一位起始標志位0、8位數(shù)據(jù)位和一位停止位1。發(fā)送時數(shù)據(jù)先送到緩沖器SBUF,然后啟動發(fā)送。數(shù)據(jù)發(fā)送完后,將中斷標志TI置1。
接收時(BEN-1),數(shù)據(jù)從RxD輸入,當(dāng)采樣到第一個1到O的下跳沿時,啟動接收器;確認起始位后,接收一幀信息;當(dāng)RI=O,停止位為1或SM2 =0時,停止位進入RB8,中斷標志位RI置1,接收了一幀數(shù)據(jù)。
波特率的設(shè)定 單片機定時器作為波特率發(fā)生器。為此定時器1須是工作方式2,即自動重裝載模式。TL1作為8位計數(shù)器,TH1作為常數(shù)緩沖器。當(dāng)TL1計數(shù)溢出時,將TH1中常數(shù)送到TLO中,使TL1再次從初值開始重新計數(shù)。定時器1產(chǎn)生固定頻率占空比是1:1的脈沖,波特率可由設(shè)定時間常數(shù)確定。
式中:fosc是主振蕩頻率,選用6 MHz。
當(dāng)波特率為1 200時,TH1=TLl=OF3H。
通信所用線是一般雙絞電源線。通信距離一般在30 m以內(nèi)。如果通信距離比較遠,則須考慮用光電隔離或電流環(huán)來驅(qū)動,這時距離可達1000 m。波特率為300時問題不大,通信是可靠的,對通信線也無特殊要求。
2.PC/XT機通信模塊
PC/XT機RS - 232接口輸入/輸出使用MC1488和MC1489。用9013和9012兩只晶體管把RS - 232的標準電平-12 V表示1,+12 V表示0,轉(zhuǎn)變成0~5 V的電平,以便和單片機最小系統(tǒng)中8031進行連接。D是發(fā)光二極管,PC機和單片機通信時,D有明暗變化,表示正在傳送數(shù)據(jù)。這種電路是準RS - 232接口電路。
單片機通信模塊包含3個子模塊:
●初始化模塊置定時器1的工作方式,置計數(shù)初值,定義波特率,定義串行口的工作模式等。
●發(fā)送模塊將累加器ACC中的內(nèi)容發(fā)送到串行口。
●接收模塊接收串行口上的數(shù)據(jù),送到累加器ACC中。是返回DOS。先選擇1,把ABC. OBJ文件傳到開發(fā)機(或最小系統(tǒng))的以2100H開始的地址處。PC機傳送完ABC. OBJ后,又返回到(1~3)通信的提示狀態(tài)。這時選擇2,即把單片機的外存RAM中2100H處的16個(十進制數(shù))字節(jié)內(nèi)容傳回PC機,并形成另一個文件,文件名是ABCI. OBJ。最后再返回DOS,這時用DOS的TYPE命令分別顯示ABC. OBJ和ABCLOBJ兩個文件的內(nèi)容,從而比較是否一致,以便證明通信過程是否正常。
如果通信不在開發(fā)機上進行,只須把單片機的通信程序?qū)懭隕PROM中,并通過按鍵或啟動復(fù)位執(zhí)行通信程序。其他步驟同上,即可完成相應(yīng)通信。
這個PC機和單片機的通信模塊應(yīng)用是很廣的。如果再增加一些控制命令,將是一個很好的控制系統(tǒng)。KDC -Ⅲ型開發(fā)機的在線仿真機通信程序就是在此基礎(chǔ)上擴充的。