DataScope v1.0 多功能串口虛擬示波器使用介紹


DataScope v1.0 特性

1、無需安裝,啟動即用;2、支持同時刷新多達10個通道的單精度浮點型數據;3、支持多種格式的通道數據導入、導出及回放;4、支持全屏瀏覽;5、支持圖表數據統計、測量及縮放;6、支持藍牙適配器;7、支持各通道獨立刷新;8、支持3D軌跡顯示;9、3D立方體顯示;10、航空儀表;11、靈活可屏蔽的快捷鍵支持。

--- 軟件下載見原網站---

准備工作

在使用時我們要先引入頭文件“ #include "DataScope_DP.h" ”,這個頭文件中定義了我們需要用的2個函數和一個數組,分別是:

extern unsigned char DataScope_OutPut_Buffer[42];       //待發送幀數據緩沖區
void DataScope_Get_Channel_Data(float Data,unsigned char Channel);    // 寫通道數據至 待發送幀數據緩沖區
unsigned char DataScope_Data_Generate(unsigned char Channel_Number);  //發送幀數據生成函數

庫文件(v1.0)的ROM和RAM占用情況參考

226 bytes of CODE memory ( At Cortex-M3 ) 
44 bytes of DATA memory ( At Cortex-M3 )

使用系統提供的庫文件將會占用系統226個字節存儲空間以及44個隨機存儲空間。

 

庫文件說明

函數1:void DataScope_Get_Channel_Data(float Data,unsigned char Channel); 

函數無返回值。

功能:將制定通道的待發送的單精度浮點數據轉化為字節數據,存儲在 DataScope_OutPut_Buffer[42](待發送幀數據緩沖區)

參數: Channel 單字節無符號整形,識別范圍 1-10,制定本次數據的通道。

Data:單精度浮點型,傳遞待轉換的浮點數據

函數2:DataScope_Data_Generate(unsigned char Channel_Number)

返回一個單字節無符號整形。返串口需要發送的字節數目,返回0表示本次轉換失敗。

功能:返回制定通道個數的要發送的幀數據,並存放至 DataScope_OutPut_Buffer。

Channel_Number:單字節無符號整形,識別范圍 1-10,要發送的通道數目。

 

下面是軟件的設置者給出的截圖:

 

實驗過程

目的:在單片機端隨機生成0-20之間的數據,通過USART串口進行傳輸,在上位機軟件(DataScope)中進行顯示波形。

軟件打開如圖所示:

我們可以在軟件的下面選擇打開制定串口:這里是端口10。

我們現在重要的是程序的配置

對於隨機函數,我采取的是C語言中的rand()函數,為了得到對應區間的數,我使用rand()/100000000。此處我只使用了通道1進行顯示。

現在我們分析數據傳輸及解析的過程,整個過程分三部分:

1、數據輸入:

DataScope_Get_Channel_Data( rand()/100000000 , 1 ); 

實現的是將數據寫入通道,這里選擇的是通道1,如果選擇多個通道,可以寫成如下形式:

DataScope_Get_Channel_Data( 1.0 , 1 );  //將數據 1.0  寫入通道 1
DataScope_Get_Channel_Data( 2.0 , 2 );  //將數據 2.0  寫入通道 2
DataScope_Get_Channel_Data( 3.0 , 3 );  //將數據 3.0  寫入通道 3
DataScope_Get_Channel_Data( 4.0 , 4 );  //將數據 4.0  寫入通道 4
DataScope_Get_Channel_Data( 5.0 , 5 );  //將數據 5.0  寫入通道 5
DataScope_Get_Channel_Data( 6.0 , 6 );  //將數據 6.0  寫入通道 6
DataScope_Get_Channel_Data( 7.0 , 7 );  //將數據 7.0  寫入通道 7
DataScope_Get_Channel_Data( 8.0 , 8 );  //將數據 8.0  寫入通道 8
DataScope_Get_Channel_Data( 9.0 , 9 );  //將數據 9.0  寫入通道 9
DataScope_Get_Channel_Data( 10.0 , 10); //將數據 10.0 寫入通道 10

2、數據轉換(轉換為上位機可以理解的數據格式):

Send_Count = DataScope_Data_Generate(1); 

實現 生成1個通道的 格式化幀數據,返回幀數據長度,如果上一步你選擇了10個通道,則寫成:

Send_Count = DataScope_Data_Generate(10); 

3、傳輸數據到電腦(上位機):

for( i = 0 ; i < Send_Count; i++)  
{
    while((USART1->SR&0X40)==0);  
    USART1->DR = DataScope_OutPut_Buffer[i];
}
Delay(0xFFFFFF);

其中for( i = 0 ; i < Send_Count; i++)語句實現數據的循環發送,直至第二步中生成的所有數據發送完成。USART1->DR = DataScope_OutPut_Buffer[i];語句是丟一個數據出去;Delay(0xFFFFFF);是發送完一次轉換的數據之后進行簡單的延時等待。至於延時函數,我們使用的是簡單的如下程序:

void Delay(__IO uint32_t nCount)
{
    for(; nCount != 0; nCount--);
}

現在發送配置就完成了,main()函數的全部內容是:

int main(void)
{
    unsigned char i;         
    unsigned char Send_Count;
    int x=0;
    USART1_Config();
    NVIC_Configuration();
while(1){ DataScope_Get_Channel_Data( rand()/100000000 , 1 ); Send_Count = DataScope_Data_Generate(1); for( i = 0 ; i < Send_Count; i++) { while((USART1->SR&0X40)==0);   USART1->DR = DataScope_OutPut_Buffer[i]; } Delay(0xFFFFFF); } }

 

實驗結果

實驗現象如下:右上角顯示實時的數據值。

我們可以對波形圖的顯示方式進行設置,默認是顯示圖形的當前一部分,接下來來超出屏幕的將看不見,我們可以設置成刷新(顯示完一屏之后清空再顯示),移動(波形滑動,總顯示最新部分),設置如下所示:

 

軟件下載見原網站

選自:http://www.ciast.net/post/20151224.html  CIAST.NET


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM