标题: Arduino示波器制作 (LCD12864显示) [打印本页]

作者: 探索软件    时间: 2018-12-21 20:49
标题: Arduino示波器制作 (LCD12864显示)
Arduino 示波器 (LCD12864)制作出来的实物图如下:


实验目的:显示变化频率的正弦波
硬件:Arduino UNO,LCD12864
代码:
#include <U8glib.h> //声明库
U8GLIB_ST7920_128X64_4X u8g(13, 12, 11); // 声明液晶屏 SPI Com: SCK =13, MOSI = 12, CS =  11
int x,y; //绘点坐标
int Buffer[128]; //缓存值储存数组
const  uint8_t grap []   U8G_PROGMEM  ={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0x80,0x0C,0xE0,0x00,0x08,
0x40,0x00,0x00,0x60,0x00,0x00,0x00,0x00,
0x07,0x80,0x30,0x80,0x7F,0x60,0x00,0x08,
0x40,0x00,0x01,0xC0,0x08,0x00,0x00,0x00,
0x07,0x80,0x10,0xC0,0x2D,0xC0,0x00,0x08,
0x40,0x00,0x02,0xC0,0x18,0x01,0x00,0x00,
0x06,0x00,0x15,0xE0,0x3D,0xC0,0x00,0x08,
0x40,0x00,0x04,0x80,0x10,0x02,0x00,0x00,
0x1B,0xE0,0x07,0x20,0x0E,0xC0,0x00,0x08,
0x40,0x00,0x09,0x80,0x70,0x20,0x00,0x80,
0x7F,0xF0,0x45,0x40,0x07,0xF0,0x00,0x08,
0x40,0x00,0x7F,0xBD,0xE3,0x6C,0xDB,0xC0,
0x73,0x00,0x45,0x80,0xFD,0x80,0x00,0x08,
0x40,0x00,0xFF,0xAB,0x22,0xD8,0xB6,0x80,
0x0B,0x00,0x4D,0xC0,0xC8,0x80,0x00,0x08,
0x40,0x00,0x42,0x52,0x45,0x51,0x64,0x80,
0x33,0x60,0x67,0x40,0x30,0xE0,0x00,0x08,
0x40,0x00,0x85,0x1E,0xD7,0xB5,0xBC,0xC0,
0x6A,0x20,0x68,0x80,0x4F,0xE0,0x00,0x08,
0x40,0x01,0x06,0x1B,0x62,0xD9,0x23,0x00,
0x06,0x00,0x4B,0x70,0x3D,0x60,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x02,0x00,0x40,0x3C,0x39,0xE0,0x00,0x08,
0x40,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFD,0xFF,0xBF,0xC3,0xC7,0x1F,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x18,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x00,0x00,0x10,0x02,0x20,0x08,
0x40,0x00,0x24,0x00,0x00,0x00,0x00,0x02,
0x30,0x18,0x0F,0x00,0x90,0x0A,0x60,0x08,
0x40,0x00,0x42,0x00,0x00,0x00,0x00,0x02,
0x40,0x20,0x1D,0x81,0x58,0x0F,0xA0,0x08,
0x40,0x00,0x81,0x00,0x00,0x00,0x00,0x07,
0xC0,0x3C,0x13,0x83,0xF0,0x07,0x60,0x08,
0x40,0x01,0x00,0x80,0x00,0x40,0x00,0x0F,
0x40,0xDC,0x1E,0x43,0x3C,0x0F,0x60,0x08,
0x40,0x02,0x00,0x40,0x00,0x80,0x00,0x07,
0xE0,0xE0,0x39,0x81,0x70,0x3A,0xA0,0x08,
0x40,0x3F,0xFF,0xFF,0xFF,0xF0,0x00,0x0B,
0x70,0x30,0x1B,0x01,0x10,0x06,0xA0,0x08,
0x40,0x08,0x00,0x10,0x02,0x00,0x00,0x04,
0xC0,0x2C,0x2E,0xC1,0x10,0x0B,0xA0,0x08,
0x40,0x10,0x00,0x08,0x04,0x00,0x00,0x02,
0x00,0x60,0x18,0x00,0x10,0x02,0x60,0x08,
0x40,0x00,0x00,0x04,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x10,0x00,0x20,0x08,
0x40,0x00,0x00,0x02,0x10,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x01,0x20,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};//首页图片
void setup( ){
Serial.begin(9600);
u8g.firstPage();  //清屏
do  draw1( );      //显示
while( u8g.nextPage( ));
delay(1000);
}
//采样
void sample(int j){
for(x = 0;x < 128;x++)
//Buffer[x] = analogRead(A0);  //信号采样
//Buffer[x] =0;  //信号采样
Buffer[x]=int(sin(x*(j*3.1412/180))*208-j);
for(x = 0;x < 128;x++)
//Buffer[x] = 32-(Buffer[x]); //计算纵坐标值
//Serial.println(Buffer[x]);
Buffer[x] = 32-(Buffer[x]>>4); //计算纵坐标值
}
//显示
void draw( ){
for(x = 0;x < 128;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); //画边框
}
void loop( ){
for(int j=8;j<32;j++){
sample(j);         //采样
u8g.firstPage();  //清屏
do  draw( );      //显示
while( u8g.nextPage( ));
delay(500);
}
u8g.firstPage();  //清屏
do  draw1( );      //显示
while( u8g.nextPage( ));
delay(3000);
}
void draw1(void) {
u8g.setColorIndex(1);
u8g.drawBitmapP ( 0 , 0 , 16 , 64 , grap);
}
视频效果:
https://pan.baidu.com/s/1SFgjV0RD5vMiA3RliHfpiA



作者: ziba108    时间: 2018-12-30 22:51
发个压缩包,多好,,,
作者: 441044696    时间: 2019-1-5 10:26
用字符(中文字库)的12864能做么?
作者: 15927495612    时间: 2019-7-19 09:35
请问有驱动的库文件吗
作者: hellod    时间: 2019-7-20 15:32
请问有驱动的库文件吗
作者: 腾飞的龙    时间: 2019-8-26 09:50
感谢分享!学习啦!!!!!!!
作者: cr8526    时间: 2019-10-10 18:41
Arduino DUE板可以做吗????有没有详细的资料啊/
作者: xiaochums    时间: 2019-10-27 15:11
有电路图吗?
作者: jms209    时间: 2023-2-16 19:23
请问有驱动的库文件吗..
作者: 15699183053    时间: 2023-7-23 01:27
用字符(中文字库)的12864能做么?
作者: 15699183053    时间: 2023-7-23 11:52
内容很深刻,支持




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1