请选择 进入手机版 | 继续访问电脑版
搜索
查看: 425|回复: 0

[分享] (转载)基于Arduino的示波器

[复制链接]
发表于 2018-1-20 11:16:38 | 显示全部楼层 |阅读模式
基于Arduino的示波器
可以接收0~5V的任意波形电压,将波形显示到12864液晶屏上。
关于示波器我就不多说了。
效果不错,不过波形复杂的话会有点闪,因为是串行连接。

先上图:
1.jpg
2.jpg
3.jpg


再上代码:

  • #include <U8glib.h>
  • U8GLIB_ST7920_128X64 u8g(3, 9, 8, U8G_PIN_NONE);
  • #define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
  • const int Input = A0;
  • int x, y = 128;
  • int ax, ay = 128;
  • int Status[128];
  • void setup()
  • {
  •   for ( int i = 0;i < 128;i++)
  •   {
  •    Status = 64;
  •   }
  • }
  • void draw()
  • {
  • y = map(analogRead(Input),0,1023,63,6);
  • for(x = 0;x < 128;x++)
  • {
  •   if (x < 127){Status[x] = Status[x+1];}else{Status[127] = y;}
  •   u8g.drawPixel(x,Status[x]);  //话波形
  •   if (ay != Status[x])
  •   {
  •     u8g.drawLine(x,ay,x,Status[x]);
  •     ax = x;ay = Status[x];
  •   }
  • }
  •   u8g.setFont(u8g_font_4x6);  //写文字
  •   u8g.drawStr(1,5,"APE Arduino Oscilloscope V0.1");
  •   u8g.drawLine(25.6,     6,   25.6,   64);   //画网格
  •   u8g.drawLine(25.6*2,   6,   25.6*2, 64);
  •   u8g.drawLine(25.6*3,   6,   25.6*3, 64);
  •   u8g.drawLine(25.6*4,   6,   25.6*4, 64);
  •   u8g.drawLine(25.6*5,   6,   25.6*5, 64);
  •   u8g.drawLine(0, 35 - 15, 128, 35 - 15);
  •   u8g.drawLine(0, 35,   128, 35);
  •   u8g.drawLine(0, 35 + 15, 128, 35 + 15);
  • }
  • void loop()
  • {
  •   u8g.firstPage();
  •   do {
  •     draw();
  •   } while( u8g.nextPage() );
  • }


#include <U8glib.h>

U8GLIB_ST7920_128X64 u8g(3, 9, 8, U8G_PIN_NONE);  
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )

const int Input = A0;
int x, y = 128;
int ax, ay = 128;
int Status[128];

void setup()
{
  for ( int i = 0;i < 128;i++)
  {
   Status = 64;
  }
}

void draw()
{
y = map(analogRead(Input),0,1023,63,6);
for(x = 0;x < 128;x++)
{
  if (x < 127){Status[x] = Status[x+1];}else{Status[127] = y;}
  u8g.drawPixel(x,Status[x]);  //话波形
  if (ay != Status[x])
  {
    u8g.drawLine(x,ay,x,Status[x]);
    ax = x;ay = Status[x];
  }
}
  u8g.setFont(u8g_font_4x6);  //写文字
  u8g.drawStr(1,5,"APE Arduino Oscilloscope V0.1");
  u8g.drawLine(25.6,     6,   25.6,   64);   //画网格
  u8g.drawLine(25.6*2,   6,   25.6*2, 64);
  u8g.drawLine(25.6*3,   6,   25.6*3, 64);
  u8g.drawLine(25.6*4,   6,   25.6*4, 64);
  u8g.drawLine(25.6*5,   6,   25.6*5, 64);
  
  u8g.drawLine(0, 35 - 15, 128, 35 - 15);
  u8g.drawLine(0, 35,   128, 35);
  u8g.drawLine(0, 35 + 15, 128, 35 + 15);
}

void loop()
{
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
}

先放Mulitisim的图
4.png


Fritizng连线图:
5.png





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

facebook google plus twitter linkedin youku weibo rss
©2018 Microchip Corporation

小黑屋|手机版|Archiver|Microchip技术社区

GMT+8, 2018-11-14 00:08 , Processed in 1.073250 second(s), 7 queries , MemCache On.

快速回复 返回顶部 返回列表