ndfweb.cn

用arduino做的數字示波器,隻要16行代碼


2019-11-26 01:36:31 (5866)



采用先把所有一屏所需數據全采集好再作處理的方法,明顯提高了工作速度,最簡潔的代碼如下:



     #include <U8glib.h> //聲明庫
     U8GLIB_ST7920_128X64_4X u8g(13, 12, 11); // 聲明液晶屏  13=SCLK, 12=SID, 11=CS
     int x,y; int Buffer[128];//
     void setup( ) {  }
     void loop( )
     {
       for(x = 0;x < 128;x++)    //信號采樣
       Buffer[x] = 63-(analogRead(A0)>>4);
       u8g.firstPage();  //清屏
     do               //顯示
      {
       for(x = 0;x < 127;x++)
       u8g.drawLine(x,Buffer[x],x,Buffer[x+1]);  //畫相鄰兩點連線
      }
     while(u8g.nextPage( ));
    }

     用arduino代碼,完成一次AD轉換約需112微秒,這樣顯示頻率在1500Hz以下的輸入信號的波形。

如果想在程序上加坐標軸和邊框,代碼如下:

 


 #include <U8glib.h> //聲明庫
  U8GLIB_ST7920_128X64_4X u8g(13, 12, 11); // 聲明液晶屏  13=SCLK, 12=SID, 11=CS
  int x,y; int Buffer[128];
  void setup( )
  {
     analogReference(INTERNAL); //ADC使用單片機內部1.1V基準
  } 
  void loop( )
  {
     for(x = 0;x < 128;x++)    //信號采樣
     Buffer[x] = 63-(analogRead(A0)>>4);
     u8g.firstPage();  //清屏
     do               //顯示
     {
       for(x = 0;x < 127;x++)  
       u8g.drawLine(x,Buffer[x],x,Buffer[x+1]);  //畫相鄰兩點連線
       u8g.drawLine(64,0,64,63);  // 畫坐標軸
       u8g.drawLine(0,32,128,32);
       for(x=0;x<128;x+=8)        //畫坐標軸刻度
       u8g.drawLine(x,31,x,33);
       for(x=0;x<64;x+=8)
       u8g.drawLine(63,x,65,x);    
       u8g.drawFrame(0,0,128,64); //畫邊框  
    }
   while( u8g.nextPage( ));
}

本文版权:http://www.ndfweb.cn/news-738.html
  NDF俱乐部
  国际域名注册
  建站咨询
简体中文 NDF网站建设淘宝店 | ICO图标在线生成 | 外贸网站建设 | 联系我们
©2007-2024 NDF Corporation 鲁ICP备08005967号 Sitemap - RSSRSS订阅