在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PC機與多單片機串行通信的實現(xiàn)

            PC機與多單片機串行通信的實現(xiàn)

            作者: 時間:2012-02-02 來源:網(wǎng)絡 收藏

            引言

            本文引用地址:http://www.biyoush.com/article/172212.htm

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

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

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

            2.1 機的RS-232口接口設計

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

            2.2 AT89C51單片機的接口設計

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

            15.jpg

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

            3 軟件部分的設計

            3.1 PC機的通信程序的設計

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

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

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

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

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

            4 結束語

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



            評論


            相關推薦

            技術專區(qū)

            關閉