摘要:設計了一種基于LabVIEW語言的單片機與PC機的串口通信。從軟件實現(xiàn)方案、程序結(jié)構、結(jié)果檢測等方面介紹了串口通信電路的實現(xiàn)。能精確地再現(xiàn)單片機采集的低頻信號。
  串行通信是一種常用的數(shù)據(jù)傳輸方法,雖然它的傳輸速度慢,但它占用的通信線路少,成本低,在工程的通信方式上仍有重要地位。
  目前,串口通信程序的開發(fā),在Windows操作系統(tǒng)">

      技術頻道

      基于LabVIEW語言的PC機與單片機的串口通信

      摘要:設計了一種基于LabVIEW語言的單片機與PC機的串口通信。從軟件實現(xiàn)方案、程序結(jié)構、結(jié)果檢測等方面介紹了串口通信電路的實現(xiàn)。能精確地再現(xiàn)單片機采集的低頻信號。
        串行通信是一種常用的數(shù)據(jù)傳輸方法,雖然它的傳輸速度慢,但它占用的通信線路少,成本低,在工程的通信方式上仍有重要地位。
        目前,串口通信程序的開發(fā),在Windows操作系統(tǒng)下一般用VB、VC、Delphi等編寫。當用VB、VC開發(fā)串行通信程序時,開發(fā)人員不得不面對非常煩瑣的API函數(shù)編程;而Delphi沒有自帶的串口通信控件,在它的幫助文檔里也沒有提及串口通信,這也給編程人員帶來許多不便。
        可見,用上述三種文本語言編串口通信程序較為復雜,花費的時間較長。筆者試圖找到一種實現(xiàn)PC機與單片機的串口通信更為簡捷的方法:利用LabVIEW進行開發(fā)。
      1 軟件實現(xiàn)方案
      1.1 應用軟件概述
        LabVIEW語言是美國國家儀器(NI)公司開發(fā)的一種基于圖形程序的編程語言,利用該語言編寫的模塊化程序,具有良好的界面,簡單、直觀,且易于理解、調(diào)試和維護。做成的虛擬儀表可以當作許多儀器設備來使用,其功能完全由用戶編程定義。另外,LabVIEW內(nèi)還含豐富的數(shù)據(jù)采集、數(shù)據(jù)信號分析以及控制等子程序,特別適用于數(shù)據(jù)采集、通信處理系統(tǒng)。它在信號處理的強大功能方面也是組態(tài)軟件不可比擬的(它比用基于文本的語言開發(fā)效率可以提高10-15倍)。
        虛擬儀器系統(tǒng)中串口通信一般用于傳統(tǒng)儀器控制和緩慢變化信號的采集。而本項目涉及到的紅外探測器所探測的斬波信號僅12Hz,故采用LabVIEW進行串口通信,既經(jīng)濟實惠又能達到預期目的。
      1.2 通信模塊的引入
        在LabVIEW中,對串行口進行控制的方式通常有兩種:一是利用LabVIEW功能模塊的Instrument I/O-〉VISA子模塊;二是直接利用LabVIEW功能模塊Instrument I/O-〉Serial子模塊,該程序庫中包含進行串行通信操作的一些功能模塊。這正符合本軟件開發(fā)的需要。
      1.3 通信模塊的屬性
        表1給出了本系統(tǒng)用到的幾個通信模塊的基本屬性的描述。


      2 程序結(jié)構
        本程序主要采用順序結(jié)構實現(xiàn),具體流程如圖1所示:

        首先,初始化串口。據(jù)實際需要選擇并打開com口,打開串口時根據(jù)雙方協(xié)議設置波特率、數(shù)據(jù)位、奇偶校驗位、停止位、緩沖區(qū)大小等。如果打開串口無誤,指示燈亮;否則提示串口出錯,并關閉串口。初始化成功后,退出第一楨,進入第二楨。
        其次,輸入命令字到串口。因雙方約定單片機輸入的命令字為十六進制的55(ASCⅡ碼字符表示為U),故在程序框圖中輸入的字串若用ASCⅡ碼字符表示為U,用HEX進制表示為55。若寫入的命令字有誤,或?qū)懭氪谀K打不開,出現(xiàn)出錯提示,重新要求打開串口。
        第三,延時。因涉及在操作系統(tǒng)的幾層間傳遞信息,加之從主機發(fā)送命令到單片機,單片機判斷為正確命令后返回數(shù)據(jù)給主機是需要一定的時間的,故這一步進行延時等待。延時時間可視情況而定,只要大于單片機回送給主機的時間就行。具體執(zhí)行時間可由LabVIEW工具菜單欄下的advanced下的profile來確定程序運行時間。若不加以延時程序會有出錯提示。
        最后,顯示部分,主要程序代碼如圖2所示。根據(jù)需要進行圖形及表格顯示。為能準確計算被測信號的頻率值,使前面板橫軸表示的時間盡可能準確,在顯示圖形Graph前用bundle進行處理。實踐表明:通過這種處理方式,可使被測信號的頻率值誤差在百分之三以內(nèi)。在數(shù)組顯示前用一個重構數(shù)組函數(shù)將單片機送來的數(shù)據(jù)構建成一個10行8列的數(shù)組,后利用兩層for循環(huán)實現(xiàn)數(shù)組的行列顯示。


      3 結(jié)果檢測
        該程序經(jīng)實際運行證明具有較高的運行速度和測量精度。在此筆者僅給出了f=12Hz時的前面板結(jié)果顯示圖(圖3):在波形圖中橫軸表示時間(ms),縱軸為實測的單片機的采樣電壓值(單位:v)。因在程序代碼4中進入波形圖的數(shù)據(jù)本身已經(jīng)過綁定處理,故得到的為我們熟悉的十進制數(shù)據(jù)。又因單片機發(fā)送數(shù)據(jù)一般為八位,為檢驗數(shù)據(jù)的正確性,本文采用另一種顯示方式---表格顯示。表格中的數(shù)據(jù)是用無符號的八位整形表示,范圍在0到255之間,與波形圖縱軸表示方法不同,必須將之進行換算才可得如波形圖表示的電壓值,其換算方法為:
      U = X *2.7/255
        式中:X為表格中數(shù)據(jù);U為實際電壓值。
        從該顯示圖上可推出,實測頻率約為12.195Hz,示波器顯示正確頻率為12Hz,誤差僅為1.625%,實測結(jié)果非常接近于理想輸出,符合設計要求。
      4 結(jié)束語
        該通信方式簡單、可靠、穩(wěn)定,具有很好的可移植性、實時性,可供其它串口通信系統(tǒng)參考。該程序現(xiàn)已用于筆者的實際工作。

      文章版權歸西部工控xbgk所有,未經(jīng)許可不得轉(zhuǎn)載。

      主站蜘蛛池模板: 亚洲蜜芽在线精品一区| 亚洲字幕AV一区二区三区四区| 日韩精品乱码AV一区二区| 一色一伦一区二区三区| 久久国产精品最新一区| 亚洲av高清在线观看一区二区| 亚洲欧洲精品一区二区三区| 亚洲精品精华液一区二区 | 国产韩国精品一区二区三区久久| 亚洲午夜在线一区| 狠狠爱无码一区二区三区| 亚洲第一区在线观看| 亚洲一区二区三区无码中文字幕| 曰韩精品无码一区二区三区| 加勒比精品久久一区二区三区| 亚洲一区在线观看视频| 奇米精品一区二区三区在| 国产福利91精品一区二区| 日韩在线一区二区| 久久国产午夜精品一区二区三区 | 国产手机精品一区二区| 狠狠做深爱婷婷综合一区| 国产精品女同一区二区| 国精产品一区一区三区有限公司| 日本一区二区三区在线看| 亚洲国产成人久久综合一区77| 久久AAAA片一区二区| 无码日韩精品一区二区免费暖暖| 国产成人精品一区二三区| 国产人妖视频一区二区破除 | 亚洲乱码国产一区网址| 精品无码AV一区二区三区不卡 | 无码一区二区三区| 国产精品久久亚洲一区二区| 91久久精一区二区三区大全| 日本激情一区二区三区| 丰满爆乳一区二区三区| 亚洲一区二区三区高清在线观看| 久久久久久免费一区二区三区| 黑人大战亚洲人精品一区| 天天视频一区二区三区|