找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17118|回复: 10
打印 上一主题 下一主题
收起左侧

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);
}
视频效果:


评分

参与人数 2黑币 +53 收起 理由
Arvin0011 + 3 共享资料的黑币奖励!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:138707 发表于 2018-12-30 22:51 | 只看该作者
发个压缩包,多好,,,
回复

使用道具 举报

板凳
ID:462258 发表于 2019-1-5 10:26 | 只看该作者
用字符(中文字库)的12864能做么?
回复

使用道具 举报

地板
ID:586710 发表于 2019-7-19 09:35 | 只看该作者
请问有驱动的库文件吗
回复

使用道具 举报

5#
ID:294401 发表于 2019-7-20 15:32 | 只看该作者
请问有驱动的库文件吗
回复

使用道具 举报

6#
ID:79544 发表于 2019-8-26 09:50 | 只看该作者
感谢分享!学习啦!!!!!!!
回复

使用道具 举报

7#
ID:373684 发表于 2019-10-10 18:41 | 只看该作者
Arduino DUE板可以做吗????有没有详细的资料啊/
回复

使用道具 举报

8#
ID:630908 发表于 2019-10-27 15:11 | 只看该作者
有电路图吗?
回复

使用道具 举报

9#
ID:163044 发表于 2023-2-16 19:23 | 只看该作者
请问有驱动的库文件吗..
回复

使用道具 举报

10#
ID:1083556 发表于 2023-7-23 01:27 | 只看该作者
用字符(中文字库)的12864能做么?
回复

使用道具 举报

11#
ID:1083556 发表于 2023-7-23 11:52 来自手机 | 只看该作者
内容很深刻,支持
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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