80C51單片機(jī)多機(jī)通信原理_多機(jī)通信硬件連接圖
雙機(jī)通信時(shí),兩臺(tái)單片機(jī)是平等的,而在多機(jī)通信中,有主機(jī)從機(jī)之分,多機(jī)通信是指一臺(tái)主機(jī)和多臺(tái)從機(jī)之間的通信。多機(jī)通信硬件連接圖,如圖1所示。
圖1 多機(jī)通信硬件連接圖
① 主機(jī)向各從機(jī)發(fā)送地址,此時(shí)TB8=1(表示發(fā)送的是地址),由于各從機(jī)在初始化時(shí)SM2=1,所以此時(shí)SM2=1,RB8=1(從機(jī)接的第9位數(shù)據(jù),即主機(jī)的TB8),從而各從機(jī)都會(huì)把接收到的地址送入SBUF。
② 各從機(jī)把接收到的地址與本機(jī)地址比較:
不相等,則SM2=1(保持不變);相等,則SM2=0,并把接收到的地址返回主機(jī)。
③ 主機(jī)接收到返回地址后,與發(fā)送的地址進(jìn)行比較(即核對),不相等,則重新從①開始;相等轉(zhuǎn)④。
④ 主機(jī)向各從機(jī)發(fā)送數(shù)據(jù),此時(shí)TB8=0,由于相等的那一臺(tái)從機(jī)的SM2=0,從而會(huì)把接收的數(shù)據(jù)送入SBUF,除此以外的各從機(jī),由于SM2=1,TB8=0,從而不會(huì)把接收到的數(shù)據(jù)送入SBUF。即相當(dāng)于主機(jī)只與地址相符的那一臺(tái)從機(jī)通信。
在工控系統(tǒng)(尤其是多點(diǎn)現(xiàn)場工控系統(tǒng))設(shè)計(jì)實(shí)踐中,單片機(jī)與PC機(jī)組合構(gòu)成分布式控制系統(tǒng)是一個(gè)重要的發(fā)展方向。子系統(tǒng)與子系統(tǒng)可以平等信息交換,也可以有主從關(guān)系。
分布式控制系統(tǒng)結(jié)構(gòu)圖如圖2所示。
圖2 分布式控制系統(tǒng)結(jié)構(gòu)
在分布式系統(tǒng)的各子系統(tǒng)中,控制器可完全由計(jì)算機(jī)代替。子系統(tǒng)中單片機(jī)是分布式控制系統(tǒng)的優(yōu)選機(jī)型。這樣計(jì)算機(jī)與單片機(jī)的通信就顯得愈來愈重要,利用PC機(jī)配置的異步通信適配器,可以方便地完成PC與80C51單片機(jī)的數(shù)據(jù)通信。PC機(jī)和單片機(jī)串行通信硬件連接如圖1所示。
近年來,采用微機(jī)與多臺(tái)單片機(jī)構(gòu)成的小型測控系統(tǒng)越來越多。它既利用了單片機(jī)的價(jià)格低、功能強(qiáng)、抗干擾能力強(qiáng)、靈活性好和面向控制等優(yōu)點(diǎn),又利用操作系統(tǒng)Windows的高級用戶界面、多任務(wù)、自動(dòng)內(nèi)存管理等特點(diǎn)。①單片機(jī)主要進(jìn)行實(shí)時(shí)數(shù)據(jù)采集和預(yù)處理,然后通過串口將數(shù)據(jù)傳給微機(jī)。②微機(jī)對這些數(shù)據(jù)進(jìn)行進(jìn)一步處理。例如,求方差、均值、動(dòng)態(tài)曲線與計(jì)算給定、打印輸出的各種參數(shù)等。這里以1臺(tái)PC機(jī)和1臺(tái)單片機(jī)為例給出單片機(jī)與微機(jī)的通信過程。微機(jī)通過發(fā)送字符,單片機(jī)接收到數(shù)據(jù)后立即通過串口發(fā)回此數(shù)據(jù)并在微機(jī)的CRT上顯示該字符。計(jì)算機(jī)軟件可以利用VB、VC、Delphi等開發(fā)平臺(tái)。
如果用戶要進(jìn)行串行通信,可以調(diào)用Windows的API應(yīng)用程序接口函數(shù),但其使用較為復(fù)雜。而使用Microsoft Visual Basic通信控件(MSComm)卻可以很容易的解決這一問題。VB提供一個(gè)名為MSComm32.OCX的通信控件,
例,將例改用C語言編程,流程圖如圖,參考程序如下:
1號(hào)、2號(hào)機(jī)T1初始化子程序如下:
一號(hào)機(jī)發(fā)送子程序如下:
二號(hào)機(jī)接收子程序如下:
編輯:admin 最后修改時(shí)間:2018-06-27