• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種基于C語言和LabVIEW的串口通訊程序的設(shè)計

      2018-12-10 06:08:24李雪妍
      海外文摘·藝術(shù) 2018年16期
      關(guān)鍵詞:波特率PC機下位

      李雪妍

      (淄博職業(yè)學(xué)院,山東淄博 255314)

      在工業(yè)控制與信息采集等領(lǐng)域,經(jīng)常需要單片機和PC機的共同完成指定工作。PC機運算速度快、容量大,單片機控制能力強。很多工作需要單片機采集數(shù)據(jù),PC機處理數(shù)據(jù)。所以單片機與PC機之間的數(shù)據(jù)通訊必不可少,多數(shù)情況是單片機向PC機傳輸數(shù)據(jù)。

      本文設(shè)計的串口通訊程序包括下位機、上位機以及數(shù)據(jù)傳輸通道。軟件設(shè)計中下位機以Keil uVision4作為開發(fā)平臺,采用C語言對單片機進行編程,C語言在功能上、可讀性、可維護性上優(yōu)勢明顯,易學(xué)易用。上位機以LabVIEW作為開發(fā)平臺,在工業(yè)和學(xué)術(shù)中LabVIEW是被應(yīng)用最廣泛的虛擬儀器開發(fā)平臺。其編程簡單,只需要通過交互式圖形前面板進行系統(tǒng)控制和結(jié)果顯示,再通過程序框圖進行功能模塊的組合和操作來制定各種功能。

      1 串行通訊的實現(xiàn)方法

      串口是計算機上一種通信協(xié)議,大多是計算機包含兩個基于RS-232的串口。單片機與上位機一般用RS-232串口通訊,RS-232(ANSI/EIA-232)是IBM-PC及兼容機上的串行連接標準,是PC機與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。其接口示意圖如圖1所示。

      RS-232九芯接口共有9個接口。本設(shè)計只需連接三線:TXD、RXD和地線GND即可。TXD(pin 2):串口數(shù)據(jù)輸出(Transmit Data);RXD(pin 3):串口數(shù)據(jù)輸入(Receive Data);GND(pin 5):地線。

      圖1 RS-232九芯接口

      圖2 串口通訊流程圖

      圖3 VISA配置串口函數(shù)模塊

      圖4 VISA寫入函數(shù)模塊

      圖5 VISA讀取函數(shù)模塊

      圖6 VISA關(guān)閉函數(shù)模塊

      圖7 數(shù)據(jù)通訊流程圖

      波特率是衡量計算機串口通信速度的指標,它表示每秒傳送位的個數(shù),其單位是b/s(位/秒),例如500波特率表示每秒發(fā)送500個bit;數(shù)據(jù)位是衡量計算機串口通信中時間數(shù)據(jù)位的指標。在RS-232通信協(xié)議中,實際傳送數(shù)據(jù)順序是:1位起始位、數(shù)據(jù)0、...、數(shù)據(jù)7、1位奇偶校驗、1位停止位;停止位用于標志單個信息包的最后一位,停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供了矯正時鐘同步的機會;奇偶校驗位是在串口通信中一種簡單的檢錯方式。當然沒有校驗位也是可以的。

      圖8 VISA連線圖

      圖9 上位機人機界面

      2 下位機通訊程序設(shè)計

      下位機基于ADuC845單片機通過Keil開發(fā)平臺進行編寫,下位機串口通訊程序?qū)?yīng)的流程圖如圖2所示。

      2.1 串口初始化

      串口初始化是數(shù)據(jù)通信程序中十分重要的一部分,初始化設(shè)置正確與否,將直接決定數(shù)據(jù)發(fā)送是否正確。串口初始化主要是對串口波特率的選擇。由于串口的觸發(fā)是由定時器3控制的,即通過定時器3設(shè)定波特率,設(shè)定好發(fā)送頻率,當達到定時間隔時,程序就會進入發(fā)送狀態(tài)。兩個專用寄存器T3CON和T3FD用于設(shè)置定時器3。

      T3CON是波特率控制寄存器,用于設(shè)置UART(通用串口)的波特率和二進制分頻器(DIV)的分頻數(shù)。寫入DIV2~DIV0的數(shù)可用式(1)計算:

      其中,

      f

      是由專用寄存器PLLCON所定義的內(nèi)核頻率,計算得到的DIV值需要取整。T3FD是所需波特率的一個分數(shù)分頻,其值由式(2)計算:

      計算得到的T3FD的值需要取最接近他的整數(shù)。波特率可由式(3)計算:

      2.2 發(fā)送數(shù)據(jù)

      當完成串口初始化,并到達定時間隔后,就可以將數(shù)據(jù)傳送給串行數(shù)據(jù)緩沖器(SBUF)。然后數(shù)據(jù)就會按照RS-232串口通信協(xié)議傳遞到計算機中,從而被上位機接收處理。

      由于串口是按位發(fā)送的,所以程序在數(shù)據(jù)發(fā)送前要先進行拆分處理,方便串口傳輸。發(fā)送數(shù)據(jù)是數(shù)據(jù)通信程序最重要的部分,只有完整有序的將數(shù)據(jù)發(fā)往上位機,才能得到正確的數(shù)值。

      (1)記錄兩組手術(shù)指標:手術(shù)用時、術(shù)中出血量和住院時間;(2)觀察兩組并發(fā)癥:粘連性腸梗阻、低營養(yǎng)癥、腹壁切口裂開與應(yīng)激性潰瘍;(3)檢測兩組治療前后的體溫、凝血酶原時間(PT)值以及血氧飽和度指標。

      2.3 清除標志位

      由于每次發(fā)完一次數(shù)據(jù),硬件會自動將TI標志位置1,所以需要軟件在每次發(fā)完后將其清零,否則將無法進行下一次的數(shù)據(jù)發(fā)送。此操作雖然簡單,但是在串口程序中很重要,很多時候就是因為對其處理不當,導(dǎo)致數(shù)據(jù)發(fā)送有誤。所以,準確及時地清除TI標志位十分重要。

      對于以上設(shè)置部分程序代碼如下:

      T3CON=0x85; //初始化設(shè)置,串口通訊 9600

      T3FD=0X12;

      SCON=0X52; //8位UART,波特率可變,接收

      SBUF=data; //發(fā)送數(shù)據(jù)

      while(TI==0); //清除標志位

      TI=0;

      通過下位機程序?qū)崿F(xiàn)了對數(shù)據(jù)的實時發(fā)送,接下來就需要上位機程序?qū)?shù)據(jù)進行接收。

      3 上位機通訊程序設(shè)計

      為使下位機采集的信息能上傳到上位機,必須設(shè)計通訊接口程序。由于計算機和下位機采用的RS-232串口通信協(xié)議,所以上位機也要采用串口通信。其大致結(jié)構(gòu)與下位機數(shù)據(jù)通信程序相同,其不同在于下位機是發(fā)送數(shù)據(jù),上位機是接收數(shù)據(jù)。

      上位機編程所用的軟件是LabVIEW,其采用的是圖形化編程,要編制串口通訊程序就需要對串口功能模塊VISA進行配置和連接。VISA是虛擬儀器軟件結(jié)構(gòu)框架(virtual instrumentation software architecture)的簡稱,是一個調(diào)用底層代碼來控制硬件的高層API(應(yīng)用程序接口)。VISA常用的函數(shù)由以下四個:

      (1)VISA配置串口,如圖3所示。

      功能:設(shè)定波特率、數(shù)據(jù)位、停止位、奇偶校驗位等參數(shù),將VISA資源名稱指定的串口按特定設(shè)置初始化。

      (2)VISA寫入,如圖4所示。

      功能:將“寫入緩沖區(qū)”的數(shù)據(jù)寫入VISA資源名稱指定的串口。

      (3)VISA讀取,如圖5所示。

      功能:從VISA資源名稱指定的串口中讀取指定字節(jié)的數(shù)據(jù),并將數(shù)據(jù)返回至讀取緩沖區(qū)。

      (4)VISA關(guān)閉,如圖6所示。

      功能:關(guān)閉VISA資源名稱指定的串口會話或事件對象。

      上位機通訊接口程序流程圖如圖7所示。

      按照流程圖,利用VISA函數(shù)模塊,將對應(yīng)的數(shù)據(jù)線進行連接設(shè)置,圖8為部分VISA接線圖,圖9為LabVIEW的前面板,也就是上位機的人機界面。

      4 結(jié)語

      單片機與計算機通訊在工業(yè)和日常生活中發(fā)揮著巨大作用,本文設(shè)計了一種利用C語言和LabVIEW實現(xiàn)單片機與計算機串口通訊方法。軟件設(shè)計遵循模塊化設(shè)計方法,提高了程序的執(zhí)行效率和易讀性,運行簡單方便。在上位機中只要對LabVIEW稍加擴展便可實現(xiàn)計算機對數(shù)據(jù)的轉(zhuǎn)換、存儲等數(shù)據(jù)處理操作。

      猜你喜歡
      波特率PC機下位
      CAN 總線波特率自適應(yīng)程序設(shè)計
      智能制造(2020年5期)2020-07-03 06:24:00
      發(fā)射機房監(jiān)控系統(tǒng)之下位機
      基于FPGA的異步串行通信波特率容錯設(shè)計
      電子測試(2018年7期)2018-05-16 06:27:18
      基于PC機與單片機的多機通信技術(shù)及抗干擾方法
      基于三菱FXPLC的感應(yīng)淬火機床與PC機的串行通信實現(xiàn)
      VC.NET下實現(xiàn)dsPIC單片機與PC機的通信
      電子制作(2017年23期)2017-02-02 07:16:47
      景洪電廠監(jiān)控系統(tǒng)下位機數(shù)據(jù)傳輸網(wǎng)絡(luò)改造
      圍觀黨“下位”,吐槽帝“登基”
      北京紀事(2016年5期)2016-05-07 13:17:02
      CAN總線并發(fā)通信時下位機應(yīng)用軟件設(shè)計
      C*Core芯片SCI串口波特率容限優(yōu)化
      滦南县| 逊克县| 商洛市| 灵川县| 长治市| 于田县| 左权县| 枣庄市| 福清市| 德昌县| 吉安市| 南澳县| 哈巴河县| 偃师市| 晋州市| 北票市| 中西区| 镇康县| 浑源县| 原阳县| 金华市| 麟游县| 丹东市| 桂林市| 清新县| 巢湖市| 施秉县| 清丰县| 呼和浩特市| 黄梅县| 安龙县| 太白县| 芜湖县| 上饶市| 都江堰市| 航空| 黄冈市| 阳城县| 怀宁县| 恭城| 襄汾县|