日照市东港区创新电子技术中心
ndfweb.cn

用arduino做的数字示波器,只要16行代码


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


采用先把所有一屏所需数据全采集好再作处理的方法,明显提高了工作速度,最简洁的代码如下:



     #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网站建设淘宝店 | 实用工具 | 外貿網站建設 | 联系我们
鲁公网安备 37110202000336号 Sitemap - RSSRSS订阅