LabVIEW與STC89C54單片機(jī)串口通信實(shí)現(xiàn)
1.概述
在現(xiàn)代測(cè)控系統(tǒng)中,我們經(jīng)常會(huì)采用上位機(jī)和下位機(jī)的開(kāi)發(fā)控制模式。下位機(jī)主要是用來(lái)采集數(shù)據(jù),可以通過(guò)嵌入式控制器、單片機(jī)控制器、PLC等來(lái)實(shí)現(xiàn)。上位機(jī)主要是圖形界面,用來(lái)實(shí)時(shí)顯示采集數(shù)據(jù),并進(jìn)行數(shù)據(jù)分析及處理,同時(shí)可以控制下位機(jī)。上位機(jī)的實(shí)現(xiàn)可以通過(guò)各種高級(jí)語(yǔ)言,比如VB、Delphi等以及NI公司的圖形化虛擬儀器軟件開(kāi)發(fā)環(huán)境LabVIEW.由于LabVIEW采用的是圖形化的編程方法,所以無(wú)論你是否有過(guò)編程經(jīng)驗(yàn),都可以快速、高效地設(shè)計(jì)用戶界面,實(shí)現(xiàn)與控制硬件的通信,并進(jìn)行數(shù)據(jù)分析和處理。如今LabVIEW已經(jīng)滲透到工業(yè)測(cè)量的各個(gè)領(lǐng)域,與此同時(shí)在嵌入式、FPGA、DSP、實(shí)時(shí)控制等領(lǐng)域也發(fā)揮著巨大的作用。
2.本實(shí)例實(shí)現(xiàn)的功能
首先利用單片機(jī)STC89C54通過(guò)串口發(fā)送“你好,LabVIEW”,LabVIEW將單片機(jī)發(fā)送到數(shù)據(jù)進(jìn)行顯示。通過(guò)這個(gè)實(shí)例來(lái)了解LabVIEW的串口通信設(shè)計(jì)。
3.下位機(jī)硬件設(shè)計(jì)與軟件設(shè)計(jì)
(1)硬件設(shè)計(jì)
單片機(jī)串口通信硬件電路設(shè)計(jì)比較簡(jiǎn)單,主要包括單片機(jī)STC89C54最小系統(tǒng)以及MAX232和九針串口。
(2)軟件設(shè)計(jì)
設(shè)計(jì)源碼如下:
#include
#define uchar unsigned char
#define uint unsigned int
void SendStr(unsigned char *s);//發(fā)送
字符串
void DelayMs(uint xms)//延時(shí)子函數(shù)
{
uint i,j;
for(i=xms;i>0;i-)
for(j=110;j>0;j-);
}
void InitUART(void) //串口初始化
{
SCON=0×50; //SCON:模式
1,8-bitUART,使能接收
TMOD|=0×20; //TMOD:timer 1,mode
2,8-bit重裝
TH1=0xFD; // TH1:重裝值9600波
特率 晶振11.0592MHz
TR1=1; //TR1:timer 1打開(kāi)
EA=1; //打開(kāi)總中斷
}
void main(void)
{
InitUART();
while(1)
{
SendStr(“你好!LabVIEW!”);
DelayMs(240);
DelayMs(240);
}
}
void SendByte(unsigned char dat)
{
SBUF=dat;
while(!TI);
TI=0;
}
void SendStr(unsigned char *s)
{
while(*s!='\0‘)//\0表示字符串結(jié)束
標(biāo)志,//通過(guò)檢測(cè)是否字符串末尾
{
SendByte(*s);
s++;
}[!--empirenews.page--]
4.上位機(jī)LabVIEW前面板與程序框圖
(1)相關(guān)函數(shù)介紹
在做LabVIEW串口通信的時(shí)候首先要安裝VISA驅(qū)動(dòng),驅(qū)動(dòng)可以從網(wǎng)上下載。LabVIEW對(duì)串口的操作主要是讀操作和寫(xiě)操作。本實(shí)例主要是接受數(shù)據(jù),也就是讀操作,在這里首先介紹一下與此實(shí)例相關(guān)控件和函數(shù)。
①VISA資源名稱
在“新式”控件選項(xiàng)卡下“I/O”子選項(xiàng)卡下有“VISA資源名稱”控件。安裝好VISA驅(qū)動(dòng)后,與硬件連接好后,該控件下可以列出相應(yīng)的COM口,可以選擇合適的COM口。
②VISA配置串口函數(shù)
該函數(shù)位于函數(shù)選項(xiàng)卡下的“儀器I/O”
子選項(xiàng)卡下,主要用來(lái)對(duì)串口進(jìn)行參數(shù)配置,包括波特率、數(shù)據(jù)比特、奇偶校驗(yàn)等。
③VISA讀取和VISA關(guān)閉函數(shù)
VISA讀取函數(shù)的功能是從VISA資源名稱所指定的設(shè)備或接口中讀取指定數(shù)量的字節(jié),并將數(shù)據(jù)返回至讀取緩沖區(qū)。VISA關(guān)閉函數(shù)的功能是關(guān)閉VISA資源名稱指定的設(shè)備會(huì)話句柄或事件對(duì)象。
(2)程序框圖設(shè)計(jì)
程序框圖設(shè)計(jì)如圖1所示。
5.測(cè)試
將硬件連接好后,上電,下載程序,運(yùn)行l(wèi)abVIEW,我們可以看到在讀取緩沖區(qū)里接收到了單片機(jī)發(fā)送來(lái)的字符串“你好!LavVIEW”.如圖2所示。
6.總結(jié)
利用LabVIEW進(jìn)行上位機(jī)設(shè)計(jì),其界面美觀,實(shí)現(xiàn)起來(lái)較容易,可以很方便的運(yùn)用于各種測(cè)量監(jiān)控系統(tǒng)中。