<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al

        運用Visual Basic實現PC與89C51單片機之間的串行通信

        沈 飆 夏海燕

          摘要 在Visual Basic開發環境下,運用VB提供的通信控件,實現PC機與89C51單片機之間的串行通信。
          關鍵詞 Visual Basic 89C51單片機 串行通信 A/D D/A轉換

        Serial Communication between PC
        and 89C51 with Visual Basic

          Abstract:Serial communication between PC and 89C51 single-chip-computer by MSCOMM control box of Visual Basic is introduced.
          Key Words:Visual Basic 89C51 Serial communication A/D D/A

        1 系統簡介
          在中科院等離子體物理研究所受控核聚變物理實驗裝置控制系統中,我們開發設計了以計算機控制為基礎的各種信號予置系統,系統原理如圖1所示。

        15-1.gif (3308 bytes)

        圖1 系統原理圖

          系統上位機由一臺(PC586)微機構成,軟件采用Visual Basic編程,作出十分直觀的人機界面,并通過串行口將所需的各種予置信號(數字信號)傳給單片機系統,再由單片機系統產生實際的模擬信號經線性光電隔離器送到現場。予置數值可以分別顯示在PC機軟件窗口和單片機系統的予置數字表頭上。同時,現場實測信號經過線性光電隔離器,也可以實時顯示在本系統的檢測數字表頭上和PC機的界面上。如此設計界面直觀,而且利于對現場信號進行實時監測。因此,采用本系統,大大提高了現場信號予置精度,對實驗操作人員來說人機界面良好,簡單易懂。我們將分硬件和軟件兩方面分別介紹該系統的情況。

        2 硬件介紹
          從系統原理圖上可見,本系統關鍵的硬件部分是單片機系統的設計,上位機PC機則直接利用它的RS232串行口即可。系統硬件原理如圖2所示。

        15-2.gif (8048 bytes)

        圖2 系統硬件原理圖

          本系統采用CPU為89C51的單片微機,89C51本身帶有2K的內存儲器,可以在編程器上實現閃爍式的電擦寫達幾萬次以上,比以往慣用的8031CPU外加EPROM為核心的單片機系統在硬件上具有更加簡單、方便等優點,而且完全兼容MCS 51系列單片機的所有功能。該單片機系統的工作流程是這樣的:89C51單片機利用自身具有的串行通信口,直接接收PC機傳送下來的串行數據,然后將所接收的各組數據通過并行口輸出,經過數字光隔,送到數據鎖存器74LS373,最后將鎖存的數據送到D/A轉換器進行數模轉換并通過運放將模擬信號輸出,同時顯示在相應的予置數字表上。現場返回的信號通過隔離,經過A/D轉換器和數據鎖存器變成單片機所需的并行數字信號送到單片機的數據存儲單元中,再由串行口返送到PC機上,同時顯示在PC機界面和本系統相對應的檢測數字表上以便于予置和實際情況相對比。利用89C51輸出口對不同數據鎖存器74LS373和A/D、D/A的片選輸出可以實現一臺單片機同時對多路不同信號進行予置和檢測。

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

        Global comm_time As Integer //定義一些全局變量
        Global data(1000)As Integer
        Global Receive(1000)As Integer
        Private Sub Form_Load()’ //串口初始化
          Comml.CommPort=1 //設置串口1
          Comml.Settings=“9600,N,8,1” //波特率:9600 奇校驗,8位數據,1位停止位
          Comml.InputLen=0 //讀取接收緩沖區的所有字符
          Comml.InBufferSize=256 //設置接收緩沖區為256字節
          Comml.OutBufferSize=256 //設置發送緩沖區為256字節
          Comml.PortOpen=True //打開串口1
          Comml.SThreshold=1 //發送緩沖區空觸發發送事件
          Comml.RThreshold=1 //每一個字符到接收緩沖區都觸發接收事件
        End Sub
        Public Sub send-data() //發送n個數據
          For i=0 To n
          Comml.Output=Chr(data(i))
          Next i
        End Sub
        Public Sub Comml_OnComm() //接收數據觸發OnComm()事件
          Select Case Comml.CommEvent //在CommEvent中接收數據
          Case comEvReceive
          Receive(comm_time)=Asc(Comml.Input) //將接收數據放在Receive(comm-time)數組中  Comm_time=comm_time+1
         End Select
        End Sub

        3.2 單片機部分
          單片機89C51采用MCS51系列的匯編語言編程。它有一個標準的串行口,有4種工作方式,其中方式1是標準的10位異步通信方式,10位數據和PC機的標準串口相對應,由串行口控制寄存器SCON設置狀態,其字節地址為98H。如下式所示:

        SM0 SM1 SM2 REN TB8 RB8 T1 R1

          本系統中89C51串口控制器SCON設置為50H,SM0、SM1為0、1,即為串行工作方式1,REN為1,即允許串口接收。另外,還應使89C51的中斷允許寄存器IE的開放或禁止所有中斷位EA為1,開放或禁止串行通道中斷位ES為1,即允許串行口中斷。89C51的并行口P0和P2分別作為八位數據的輸入和輸出口。P3口的輸出作為數據鎖存器和D/A、A/D的禁止和允許。程序流程如圖4所示。
        單片機程序清單簡介:
        (1)主程序
           MOV SP,#07
           ACALL INIT //調串口初始化子程序
        STRAT:CLR EA 清中斷
           MOV R0,#DATA1 存放接收數據首地址#DATA1
           MOV R1,#DATA2 存放發送數據首地址#DATA2
           MOV R2,#N 數據個數
           SETB EA 開中斷
           ACALL D/A 調延時并啟動D/A轉換子程序
           ACALL SEND 啟動A/D轉換子程序并串口發送
           SJMP START 返回
        (2)串口初始化程序
        INIT:MOV TH1,#FD 設置波特率
           MOV TL1,#00
           MOV TMOD,#20 定時器2為工作方式2
           MOV TCON,#40 啟動定時器
           SETB ES 允許串口中斷
           MOV SCON,#50 置串行口工作方式1
           MOV P2,#0F
           RET
        (3)中斷服務程序
        0023 PUSH ACC 保護堆棧
           PUSH PSW
           MOV DPH,#00
           JB TI,TEMP1 判斷是否為發送,是則跳轉
        WAIT:JNB RI,WAIT 判斷是否為接收,否則循環
           MOV A,SBUF 將接收的數據送到數據地址內
           MOV @R0,A
           CLR 98 清接收中斷
           INC R0
           DJNZ R1,TEMP1 數據若送完則將標志置1
           SETB 00
        TEMP1:CLR  99 清發送中斷
           POP PSW
           POP ACC
           RETI
        (4)延時及調D/A轉換子程序
        D/A:INC DPTR 延時
           MOV A,DPH
           CJNE A,#FF,D/A
           JNB 00,D/A 數據未送完,返回
           CLR 00 送完則將送完標志清零
           ACALL OUT
           RET
        OUT:CLR A
           MOV A,@R0 將接收的串行口數據送到P2口
           MOV P2,A
           SETB 90 封鎖數據鎖存器
           MOV R3,#00
        WAIT1:DJNZ R3,WAIT1 延時
           CLR 90  解除封鎖數據鎖存器
           RET
        (5)A/D轉換及串口發送子程序
        SEND:MOV DPTR,#ADRESS IN0通道地址首址
           MOV R7,#08H 從IN0-IN7依次采集的通道個數
        LOOP1:MOVX @DPTR,A 啟動A/D轉換
           MOV R6 #0AH 延時100μs
        DELAY:NOP
           NOP
           NOP
           DJNZ R6,DELAY
           MOVX A,@DPTR 將轉換結果送到指定地址R1
           MOV @R1 A
           MOVX A,@R1
           MOV SBUF,A 將指定地址數據從串口輸出
           INC DPTR   INC R1
           DJNZ R7,LOOP1
           RET

        15-3.gif (8298 bytes)

        圖3 程序流程圖

        4 結束語
          該系統目前已成功地應用在中科院等離子體物理研究所的HT-7超導托卡馬克受控核聚變物理實驗裝置上,運行良好。對于目前廣泛應用的Windows環境下實現PC機與單片機之間的通信問題,希望本文能夠提供一點有用的參考價值。

        作者單位中科院等離子體物理研究所 合肥 230031

         

        主站蜘蛛池模板: 同性男男黄gay片免费| 宝贝腿开大点我添添公口述视频| AV国内高清啪啪| 天天躁夜夜躁天干天干2020| 一本色道久久东京热| 成人午夜免费无码视频在线观看| 国产精品无码无卡在线播放| 国产福利酱国产一区二区| 国产av剧情亚洲精品| 日韩午夜福利片段在线观看 | 91中文字幕在线一区| 99re6在线视频精品免费下载| 另类国产精品一区二区| 日韩在线观看 一区二区| 久久久久亚洲AV成人片一区| 亚洲国产精品一区二区视频| 亚洲国产美女精品久久久| 亚洲AV无码成人精品区一本二本 | 无码国产精成人午夜视频不卡| 日韩av一区二区不卡在线| 亚洲第一区二区快射影院| 精品久久综合一区二区| 国产亚洲精品AA片在线播放天| 中文字幕日韩有码av| 国产精品高清视亚洲精品| 国产欧美日韩免费看AⅤ视频| 国产高清在线精品一区二区三区| 加勒比在线中文字幕一区二区| 国产极品精品自在线不卡| 日本一道一区二区视频| 秋霞国产av一区二区三区| 久久香蕉国产亚洲av麻豆| 四虎精品永久在线视频| 另类 专区 欧美 制服丝袜| 午夜国产小视频| 中文字幕人妻精品在线| 国产不卡一区二区在线| 亚洲欧美综合中文| 另类 专区 欧美 制服丝袜| 无码一级视频在线| 精品人妻少妇嫩草av专区|