久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> Arduino >> 瀏覽文章

Arduino與LabVIEW互動應用01-基于Arduino+LabVIEW的串口控制LED亮滅

作者:我不是奔跑哥   來源:我不是奔跑哥的blog   點擊數:  更新時間:2014年06月08日   【字體:

本文將介紹使用proteus仿真環境,實現Arduino UNO與LabVIEW的串口通訊,LabVIEW通過RS-232串口控制Arduino UNO的LED燈,打開和關閉LED燈。

1、Arduino UNO部分
在proteus仿真仿真環境中,使用ATmega328P單片機實現基于Proteus的Arduino UNO的開發板,如下圖1所示。
圖1 基于Proteus的Arduino UNO的開發板
此處,還需要對ATmega328P的參數進行設置,初始的設置如圖2所示。需要更改的地方已在圖中用紅色框標注出來了。更改之后的設置如圖3所示,其中HEX文件與你自己所存放的地方一致即可。
圖2 ATmega328P單片機更改前的設置
圖3 ATmega328P單片機更改后的設置
另外,要實現與LabVIEW的串口通訊還需要對串口的參數進行設置,串口更改前的設置如圖4所示。需要更改的地方已在圖中用紅色框標注出來了。更改之后的設置如圖5所示,其中波特率與上位機的波特率相同即可。
   注意:波特率一定要相同,否則不能完成通訊。
圖4 串口更改前的設初始置
、
圖5 串口更改后的設置
Arduino的源代碼如下所示:

#define LED_ON_COMMAND  0x10   //打開LED命令字
#define LED_OFF_COMMAND 0x20   //關閉LED命令字

unsigned int comdata[3];      //定義數組數據,存放串口命令數據
int led = 13;                 //定義LED連接的管腳
int ON_mark=0;                //定義ON 的標志位
int OFF_mark=0;               //定義OFF的標志位

void receive_data(void);      //接受串口數據
void test_data(void);         //測試串口數據是否正確,并更新數據
void do_command(void);        //執行更新的數據

void setup()
{
  Serial.begin(9600);      
  pinMode(led, OUTPUT); 
}
void loop()
{
  while (Serial.available() > 0)   //不斷檢測串口是否有數據
   {
        receive_data();            //接受串口數據
        test_data();               //測試數據是否正確并更新數據
        do_command();              //執行更新的數據
   }
}
void receive_data(void)       
{
   int i ;
   for(i=0;i<3;i++)
   {
      comdata[i] =(unsigned char)(Serial.read());
      //延時一會,讓串口緩存準備好下一個字節,不延時可能會導致數據丟失,
       delay(2);
   }
}
void test_data(void) //驗證命令的正確性
{
  if(comdata[0] == 0x55)            //0x55和0xAA均為判斷是否為有效命令
   {
     if(comdata[1] == 0xAA)
     {
        switch(comdata[2])
        {
          case LED_ON_COMMAND:
          {   
              ON_mark=1;                //ON數據更新位置位
          }
          case LED_OFF_COMMAND:
         
              OFF_mark=1;               //OFF數據更新位置位
          }
      }
     }
   }
}
void do_command(void) //執行命令
{
  if(OFF_mark==1)
  {
    OFF_mark=0;                         //復位OFF更新位
    digitalWrite(led, LOW);             //關閉LED燈
  }
  if(ON_mark==1)
  {
     ON_mark=0;                        //復位ON 更新位
     digitalWrite(led, HIGH);           //打開LED燈
  }
}
2、LabVIEW部分
LabVIEW上位機部分擔任主機,Arduino UNO作為下位機接收上位機發送的命令,并執行命令。LabVIEW只需要完成命令的發送,此處僅使用了LabVIEW的串口數據發送功能。LabVIEW的串口設置見。
LabVIEW程序包括兩個部分:前面板和程序框圖,前面板如圖6所示,程序框圖如圖7、8、9所示。

圖6 LabVIEW前面板

圖7 LabVIEW程序框圖1

圖8 LabVIEW程序框圖2
圖9 LabVIEW程序框圖3
3、實驗與演示
利用虛擬串口技術,基于Proteus的Arduino UNO與LabVIEW串口通訊控制LED的視頻如下:
    
 基于Arduino Leonardo與LabVIEW的實物演示視頻如下:
4、結束語
利用虛擬串口技術,實現了Proteus仿真環境下的Arduino UNO與LabVIEW串口通訊,并自定義了通訊協議,以保證通訊的可靠性。
關閉窗口

相關文章

主站蜘蛛池模板: 高清一区二区三区 | 91精品国产91久久久久久最新 | 狠狠操电影 | 国内自拍视频在线观看 | 国产美女视频 | 免费在线观看一区二区 | 黄色片大全在线观看 | 国产午夜一级 | 国产精品久久久久久久久久久久冷 | 久久精品免费一区二区 | 国产精品国产a | 久久久综合精品 | 综合久久99 | 91不卡在线| 日韩av黄色 | 一区二区三区国产精品 | 高清亚洲| 成人午夜在线 | 国产精品资源在线观看 | 黑人中文字幕一区二区三区 | 一区二区福利视频 | 欧美日韩亚洲视频 | 草b视频| 国内自拍视频在线观看 | 99免费视频| 国产露脸对白88av | 欧美精品在线免费观看 | 国产目拍亚洲精品99久久精品 | 欧美一级大片免费观看 | 久久aⅴ乱码一区二区三区 91综合网 | 久久国产综合 | 日韩精品一区在线 | 伊人中文字幕 | 亚洲欧美自拍偷拍视频 | 91av免费看| 国产不卡一| 国产一级一片免费播放 | 精品视频www | 91在线观看| a级黄色毛片免费播放视频 国产精品视频在线观看 | 天天干天天爽 |