當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]引言在實(shí)際工程應(yīng)用中,經(jīng)常會(huì)遇到將一臺(tái)PC機(jī)與多個(gè)單片機(jī)或多個(gè)智能儀表相連接進(jìn)行實(shí)時(shí)監(jiān)測與管理的情況。這就要考慮通信方案的選擇問題,如果采用多個(gè)串行口或采用網(wǎng)絡(luò)通信的方法,則會(huì)增加成本,同時(shí),軟件的編寫也

引言

在實(shí)際工程應(yīng)用中,經(jīng)常會(huì)遇到將一臺(tái)PC機(jī)與多個(gè)單片機(jī)或多個(gè)智能儀表相連接進(jìn)行實(shí)時(shí)監(jiān)測與管理的情況。這就要考慮通信方案的選擇問題,如果采用多個(gè)串行口或采用網(wǎng)絡(luò)通信的方法,則會(huì)增加成本,同時(shí),軟件的編寫也不容易。下面介紹一種簡單易行,成本低廉的通信方法—用PC機(jī)的一個(gè)串行口對(duì)多個(gè)AT89C51單片機(jī)的通信。

2  通信硬件系統(tǒng)的構(gòu)成

整個(gè)系統(tǒng)如圖1。

2.1  PC機(jī)的RS-232串行口接口設(shè)計(jì)

通常,PC機(jī)提供一個(gè)打印機(jī)輸出的并行口(LPT),兩個(gè)串行口(COM1,COM2),采用PC機(jī)的RS-232串行口時(shí),在PC機(jī)與單片機(jī)間通信必須有相同的通信協(xié)議,由于AT89C51單片機(jī)采用的電平為TTL邏輯電平,在PC機(jī)側(cè)的RS-232串行口采用+12V和-12V的電平方式,為使兩者的連接,在PC機(jī)的RS-232側(cè)用MAX202CP進(jìn)行電平轉(zhuǎn)換。

2.2  AT89C51單片機(jī)的接口設(shè)計(jì)

AT89C51芯片內(nèi)部有一個(gè)全雙工的串行口,其與外部交換數(shù)據(jù)用兩線即可,該引腳與P3.0(RXD)、P3.1(TXD)共用,在本方法中要對(duì)于多個(gè)AT89C51進(jìn)行串行通信,考慮到多個(gè)AT89C51共用一個(gè)RS-232轉(zhuǎn)換后的電平,在單片機(jī)向PC機(jī)傳送數(shù)據(jù)時(shí)不受其它的AT89C51單片機(jī)的影響,就在AT89C51的 RXD端串入一個(gè)二極管,如上圖1所示:

圖1     通信硬件系統(tǒng)

3  軟件部分的設(shè)計(jì)

3.1  PC機(jī)的通信程序的設(shè)計(jì)

由于PC機(jī)側(cè)的開發(fā)環(huán)境較多,如:VC++、DELPHI、VB等等,在此主要敘述用VB來進(jìn)行程序設(shè)計(jì)。

目前,VB(Visual Basic)編程已成為WINDOWS系統(tǒng)開發(fā)的主要語言之一,以其高效、簡單易學(xué)及功能強(qiáng)大的特點(diǎn)越來越為廣大程序設(shè)計(jì)人員及用戶所喜愛。VB支持面向?qū)ο蟮某绦蛟O(shè)計(jì),具有結(jié)構(gòu)化的事件驅(qū)動(dòng)編程模式并可以使用無限擴(kuò)增的控件,而且可以十分簡便地作出良好的人機(jī)界面。在標(biāo)準(zhǔn)串口通信方面,VB提供了具有強(qiáng)大功能的通信控件MSCOMM,文件名為MSCOMM.VBX。該控件可設(shè)置串行通信的數(shù)據(jù)發(fā)送和接收,對(duì)串口狀態(tài)及串口通信的信息格式和協(xié)議進(jìn)行設(shè)置。這是一個(gè)標(biāo)準(zhǔn)的十位串口通信,包括8位標(biāo)準(zhǔn)數(shù)據(jù)和數(shù)據(jù)的起始位和停止位。在發(fā)送或接收數(shù)據(jù)過程中觸發(fā)OnComm事件,通過編程訪問CommEvent屬性了解通信事件的類型,分別進(jìn)行各自的處理。每個(gè)通信控件對(duì)應(yīng)一個(gè)串口,可以設(shè)計(jì)多個(gè)通信控件來訪問多個(gè)通信口。VB通信控件設(shè)計(jì)軟件如下:

定義一些變量
Dim Rec(512)As Integer ‘接受字節(jié)數(shù)組定義
Dim Sent() As byte ‘發(fā)送的可變數(shù)組定義
Private Sub Form_Load() ‘串口初始化
Comml.CommPort=1 ‘設(shè)置串口1
MSComml.Settings=600,N,8,1波特率:9600 奇校驗(yàn),8位數(shù)據(jù),1位停止位
MSComml.InputLen=0 ‘讀取接收緩沖區(qū)的所有字符
MSComm1.InputMode= 1  '以二進(jìn)制形式從輸入緩沖區(qū)中讀數(shù)據(jù)
MSComml.InBufferSize=1024 ‘設(shè)置接收緩沖區(qū)為1024字節(jié)
MSComml.OutBufferSize=512 ‘設(shè)置發(fā)送緩沖區(qū)為512字節(jié)
MSComml.PortOpen=True ‘打開串口1
MSComml.SThreshold=0 ‘使用查詢方式發(fā)送數(shù)據(jù)
MSComml.RThreshold=1 ‘使用中斷方式接受數(shù)據(jù)
End Sub
Public Sub send-data() ‘發(fā)送n個(gè)數(shù)據(jù)
Dim I As Integer
MSComm1.RTSEnable =1 ‘請(qǐng)求發(fā)送數(shù)據(jù)
For I=0 To n
MSComml.Output=data(i)
Next I
MSComm1.RTSEnable =False ‘數(shù)據(jù)發(fā)送完畢,撤消請(qǐng)求發(fā)送信號(hào)
End Sub
Public Sub MSComml_OnComm() ‘中斷事件
Select Case MSComml.CommEvent 
Case comEvReceive  ‘在發(fā)生接受到數(shù)據(jù)事件時(shí)執(zhí)行以下命令:
MSComm1.Rthreshold=0 ‘不準(zhǔn)后續(xù)接受字節(jié)引起中斷事件
…… ‘可以根據(jù)具體的問題,在此處添加相應(yīng)的處理程序
End Select
End Sub
3.2  AT89C51單片機(jī)通信程序的設(shè)計(jì)
AT89C51 采用匯編語言編程。AT89C51內(nèi)有一個(gè)標(biāo)準(zhǔn)的串行口,有4種工作方式,其中方式1是標(biāo)準(zhǔn)的10位異步通信方式,1位啟始位,8位數(shù)據(jù)位,1位停止位, 10位數(shù)據(jù)和PC機(jī)的標(biāo)準(zhǔn)串口相對(duì)應(yīng),由串行口控制寄存器SCON設(shè)置狀態(tài),其字節(jié)地址為98H。如下式所示:
SM0  SM1  SM2  REN  TB8  RB8  T1  R1

本系統(tǒng)中AT89C51串口控制器SCON設(shè)置為50H,SM0、SM1為0、1,即為串行工作方式1,REN為1,即允許串口接收。另外,使 AT89C51的中斷允許寄存器IE的開放或禁止所有中斷位EA為1,開放或禁止串行通道中斷位ES為1,即允許串行口中斷。程序簡介如下:

串行口初始化
MOV TH1,# XXH ,設(shè)定波特率
MOV TL1, #XXH
MOV SCON, #50H ,串行工作方式為1
MOV PCON, #80H
SETB TR1   ,允許定時(shí)器1計(jì)數(shù)
SETB   EA   ,允許所有中斷
SETB   ES   ,允許串行中斷
串口中斷入口
PUSH  ACC
PUSH  PSW
CLR  EA
CLR  RI
MOV  A, SBUF
MOV  R0,A
CJNE  R0, #0FEH, LH1 ,判斷是否為本AT89C51的標(biāo)志,不是則跳出串行中斷,是則處理相應(yīng)的程序
……     ,可以根據(jù)具體的問題,在此處添加相應(yīng)的處理程序
LH1: POP    PSW
POP    ACC
SETB   EA
RETI

4  結(jié)束語

該系統(tǒng)目前已成功地應(yīng)用在山東風(fēng)光電子有限公司的JD-BP37系列高壓變頻調(diào)速系統(tǒng)中對(duì)23個(gè)AT89C51的串行通信,運(yùn)行良好。對(duì)于目前廣泛應(yīng)用的Windows環(huán)境下實(shí)現(xiàn)PC機(jī)與多個(gè)單片機(jī)之間的通信問題,希望本文能夠提供一點(diǎn)有用的參考價(jià)值。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉