• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于VB的PC機(jī)與單片機(jī)串口通信技術(shù)研究

    2011-10-27 06:50:52山西魯能晉北鋁業(yè)檢修分廠
    河南科技 2011年5期
    關(guān)鍵詞:波特率PC機(jī)控件

    山西魯能晉北鋁業(yè)檢修分廠 張 乾

    基于VB的PC機(jī)與單片機(jī)串口通信技術(shù)研究

    山西魯能晉北鋁業(yè)檢修分廠 張 乾

    一、系統(tǒng)介紹

    在功能較復(fù)雜的控制系統(tǒng)中,通常以PC機(jī)為主機(jī),單片機(jī)為從機(jī),由單片機(jī)完成數(shù)據(jù)的采集和對裝置的控制,而由主機(jī)完成各種復(fù)雜的數(shù)據(jù)處理和對單片機(jī)進(jìn)行控制。所以計算機(jī)與單片機(jī)之間的數(shù)據(jù)通信顯得越來越重要。串行通信是指按照逐位順序傳遞數(shù)據(jù)的通信方式,由于僅需3根傳輸線傳送信息且通信距離相對較遠(yuǎn),所以在控制領(lǐng)域的現(xiàn)場監(jiān)測、分布控制等場合都有著十分重要的應(yīng)用價值。

    本文,筆者設(shè)計了單片機(jī)與PC機(jī)串口通信系統(tǒng),以VB為開發(fā)工具,設(shè)計界面簡單明了,詳細(xì)介紹了程序的主要功能。

    二、硬件部分的設(shè)計

    1.單片機(jī)選擇。在測控系統(tǒng)和工程應(yīng)用中,經(jīng)常遇到多項任務(wù)同時執(zhí)行的情況,因而主從式多機(jī)分布式系統(tǒng)已成為現(xiàn)代工業(yè)廣泛應(yīng)用的模式。它們大多由PC機(jī)和MCS-51單片機(jī)組成。AT89C52是一個低電壓、高性能的CMOS 8位單片機(jī),有40個引腳,32個外部雙向輸入/輸出端口,同時內(nèi)含2個外中斷口,3個16位可編程定時計數(shù)器,2個全雙工串行通信口,AT89C52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。

    AT89C52單片機(jī)通過引腳RXD(P3.0)和引腳TXD(P3.1)與外界進(jìn)行通信。AT89C52的串行口是可編程接口,通過對2個特殊功能寄存器SCON和PCON進(jìn)行編程可控制串行口的工作方式和波特率。SCON用于控制串行口的工作方式,同時還包含要發(fā)送或接收到的第9位數(shù)據(jù)位以及串行口中斷標(biāo)志位。該寄存器的字節(jié)地址為98H,并可進(jìn)行位尋址。PCON中只有最高位SMOD與串行口工作有關(guān),該位用于控制串行口工作于方式1、2、3時的波特率。PCON的字節(jié)地址為87H,沒有位尋址功能。單片機(jī)復(fù)位時,SMOD=0。

    2.PC機(jī)與單片機(jī)的連接。目前的PC機(jī)都有至少一個串行通訊端口RS-232,RS-232端口可用于2臺計算機(jī)之間進(jìn)行通訊,RS-232的邏輯電平用正負(fù)電壓來表示,且信號使用負(fù)邏輯,邏輯0的電壓范圍是+5V~+15V,而邏輯1的電壓范圍是-5V~-15V,RS-232端口是計算機(jī)與其他設(shè)備溝通的最常用的接口,不但操作簡單,而且價格便宜。在AT89C52單片機(jī)的內(nèi)部有一個全雙工的異步串行I/O口,它的輸入和輸出使用5V而不是RS-232電壓,由于本次設(shè)計使用的是便攜式PC機(jī)(無串行通信接口),故使用了一根USB轉(zhuǎn)串口的數(shù)據(jù)線,然后再用MAX232芯片進(jìn)行轉(zhuǎn)換。電路結(jié)構(gòu)如圖1所示。

    圖1 PC機(jī)與單片機(jī)連接結(jié)構(gòu)

    3.下位機(jī)(單片機(jī)端)的程序設(shè)計。本次設(shè)計采用定時1的模式1,為與上位機(jī)配合,串行口選擇工作方式1,無奇偶校驗位,有8位數(shù)據(jù)位和1個停止位,波特率為9600。所以(TMOD)=20H,(SCON)=50H。方式1和方式3的移位時鐘脈沖由定時器T1的溢出率來決定,AT89C52串行口方式1和方式3的波特率由定時器T1的溢出率和SMOD值同時決定。單片機(jī)程序流程圖如圖2所示。

    圖2 單片機(jī)程序流程

    4.下位機(jī)的原理圖及仿真結(jié)果。原理圖如圖3所示。

    仿真結(jié)果如圖4所示。

    三、軟件部分設(shè)計

    本系統(tǒng)的設(shè)計任務(wù)是上位機(jī)通過串行口向下位機(jī)發(fā)送字符,下位機(jī)接收到字符后返回原字符。上位機(jī)用VB編寫程序界面。

    1.上位機(jī)(及PC端)的軟件設(shè)計。

    (1)建立新工程。運(yùn)行VB6.0程序,選擇“新建工程”對話框,選擇“標(biāo)準(zhǔn)EXE”,單擊“打開”命令按鈕,進(jìn)入VB工程集成開發(fā)環(huán)境,窗體設(shè)計器中自動出現(xiàn)一個名為Form1的空白窗體。

    圖3 單片機(jī)接線原理

    圖4 仿真結(jié)果

    (2)程序界面設(shè)計。添加串口通信控件MSComm。由于VB的串行通信組件不會主動出現(xiàn)在工具箱中,當(dāng)我們需要MSComm控件時,首先要把它加入到工具箱中。具體步驟如下:選擇“工程”菜單下的“部件”,在彈出的對話框選中“Microsoft Comm Control6.0”復(fù)選框,單擊“確定”后,在工具箱中就會出現(xiàn)一個類似“電話”的圖標(biāo),它就是MSComm控件。如果在控件屬性中沒有“Microsoft Comm Control6.0”選項,可在“部件”對話框“控件”屬性中單擊“瀏覽”按鈕,在Windowssystem32目錄下選擇MSCOMM32.OCX項。單擊“打開”按鈕即可在“部件”對話框中看到“Microsoft Comm Control6.0”的可選項目。

    添加2個文本框控件:Text1和Text2,用于輸入要發(fā)送的字符和顯示要接收的字符。添加2個標(biāo)簽控件:Label1和Label2,作為發(fā)送和接收字符區(qū)的標(biāo)簽。

    添加4個按鈕控件:Command1、Command2、Command3和Command4,分別執(zhí)行發(fā)送字符、關(guān)閉程序、清空發(fā)送字符區(qū)和清空接收字符區(qū)等命令。添加完所有的控件后調(diào)整控件的位置和大小,使界面美觀。

    (3)屬性設(shè)置。對界面中的各控件設(shè)計屬性,設(shè)置完控件屬性的程序界面如圖5所示。

    圖5 VB程序窗體界面

    2.程序代碼設(shè)計。程序流程圖如圖6所示。

    圖6 上位機(jī)程序流程

    程序如果要實現(xiàn)自動發(fā)送或讀取,在VB中有2種方式可以實現(xiàn):一個是使用計時器控件(Timer),該控件中的Interval可以控制計時器被啟動的時間間隔,當(dāng)時間間隔一到,便會執(zhí)行原先發(fā)在計時器中的程序代碼;另一個則是使用循環(huán)語句不斷的執(zhí)行程序代碼。本次設(shè)計使用手動發(fā)送,用VB編寫的部分源程序如下:

    Option Explicit

    Dim OutputAscii As Boolean

    Dim InputString As String

    Dim OutputString As String

    Dim i As Long

    Private Sub Cmdquit_Click()

    Unload Me

    End Sub

    Private Sub Form_Unload(Cancel As Integer)

    MSComm1.PortOpen=False

    End Sub

    四、結(jié)論

    目前串行通信仍是使用最為普遍的一種外部總線方式。本文,筆者從硬件和軟件2個方面討論了單片機(jī)和PC機(jī)的串行通信方式。

    本文中筆者主要完成了以下工作。

    1.在點(diǎn)對點(diǎn)串行通信的硬件討論中,涉及到RS-232與TTL電平之間的轉(zhuǎn)換問題,給出了實際的硬件電路。軟件設(shè)計以一個簡單的通信協(xié)議為核心,實現(xiàn)了單片機(jī)與PC機(jī)點(diǎn)對點(diǎn)可靠的串行通信,并給出了PC機(jī)部分的源程序。

    2.文章最后結(jié)合前面的討論,介紹了在一臺PC機(jī)為上位機(jī),一臺單片機(jī)作為下位機(jī)組成的字符通信。利用VB6.0的通信控件與一臺下位機(jī)進(jìn)行數(shù)據(jù)通信。本文,筆者所用的串行通信的方法只是實現(xiàn)了基本的功能,所以還可以進(jìn)一步的改進(jìn)和完善。

    猜你喜歡
    波特率PC機(jī)控件
    CAN 總線波特率自適應(yīng)程序設(shè)計
    智能制造(2020年5期)2020-07-03 06:24:00
    關(guān)于.net控件數(shù)組的探討
    軟件(2018年7期)2018-08-13 09:44:42
    基于FPGA的異步串行通信波特率容錯設(shè)計
    電子測試(2018年7期)2018-05-16 06:27:18
    基于PC機(jī)與單片機(jī)的多機(jī)通信技術(shù)及抗干擾方法
    基于三菱FXPLC的感應(yīng)淬火機(jī)床與PC機(jī)的串行通信實現(xiàn)
    VC.NET下實現(xiàn)dsPIC單片機(jī)與PC機(jī)的通信
    電子制作(2017年23期)2017-02-02 07:16:47
    C*Core芯片SCI串口波特率容限優(yōu)化
    就這樣玩會VBA中常見的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    計算機(jī)多設(shè)備接口波特率不匹配的研究
    在PowerBuUder中利用WinSock控件制作簡單的Web服務(wù)器
    沧州市| 张家口市| 岢岚县| 商水县| 麻江县| 儋州市| 都昌县| 阳曲县| 武城县| 华宁县| 古丈县| 竹山县| 宁晋县| 泌阳县| 石台县| 四会市| 白玉县| 小金县| 定兴县| 红桥区| 涞水县| 常宁市| 平昌县| 长葛市| 柯坪县| 竹北市| 泰来县| 石首市| 宁城县| 上林县| 建瓯市| 鄂伦春自治旗| 蒲城县| 报价| 尖扎县| 五大连池市| 靖边县| 碌曲县| 霍林郭勒市| 潮安县| 木里|