OLED 屏幕的使用

OLED 屏幕的使用(arduino)

oled有两种接线方式:SPI和IIc,本文采用的OLED连接方式为SPI四线
使用的设备为:Arduino UNO 0.96寸 OLED-128X64 SPI 接口

oled的原理与LCD相同,点亮每个像素点组成图形.
对于特殊字符图形(如汉字)需要使用文字取模软件生成相应字模,以数组形式写入程序,最后扫描在oled上显示.

取模软件:链接:https://pan.baidu.com/s/1vWB0sEvODR9X5cWlBBQArg 密码:sepr

对于常用字符(数字,英文字母等)可以直接使用库函数,方便省事.
U8glib是一个在ARM,C51,Arduino等常用MCU上都可以得到支持的图形绘制库,用途广泛,兼容性优秀,功能也十分强大,U8glib可以直接从arduino编译环境中的库管理下载

U8glib显示字符/图形的常用三种方法

drawStr 显示字符

注意:使用drawStr函数之前,需要使用setFont函数来设置一下要画出的字符的显示字体

1)方法定义
    u8g_uint_t U8GLIB::drawStr(u8g_uint_t x, u8g_uint_t y, const char *s)
2)功能
    显示字符,使用前要使用setFont函数设置要显示字符的字体(详见七楼 设置)
    另外还有 drawStr90(); drawStr180(); drawStr270(); 使字符顺时针旋转响应的角度。
    //注意:使用drawStr函数之前,需要使用setFont函数来设置一下要画出的字符的显示字体。
3)参数
     x:字符左下角的横坐标
     y:字符左下角的纵坐标
     *s:要显示的字符

例子

u8g.setFont(u8g_font_osb18);    //设置字体
u8g.drawStr(0, 20, "ABC");      //画出字符在(0,20)的位置

print 显示字符

print()函数可以打印字符,字符串,变量值等。但是用之前需要用setPrintPos()来设置位置

print(...)
//参数为要打印的内容

例子

u8g.setPrintPos(0,15);          //设置位置
u8g.print("Error Code: ");      //打印内容

drawXBMP 打印位图

1)方法定义
	void U8GLIB::drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap)
2)功能
     此函数是一个显示一个位图的方法。
3)参数
     x:位图左上角的横坐标
     y:位图左上角的纵坐标
     w:位图的宽
     h:位图的高
     *bitmap:位图对象

例子

const uint8_t rook_bitmap[] U8G_PROGMEM = {
  0x00,         // 00000000
  0x55,         // 01010101
  0x7f,         // 01111111
  0x3e,         // 00111110
  0x3e,         // 00111110
  0x3e,         // 00111110
  0x3e,         // 00111110
  0x7f          // 01111111
};
u8g.drawBitmapP(0,0, 1, 8, rook_bitmap);

其他函数

firstPage 图像显示
nextPage
drawPixe 点
drawLine 线
drawHLine 水平线
drawVLine 垂直线
drawTriangle 三角(实心)
drawFrame 矩形框
drawRFrame 圆角矩形框
drawBox 矩形(实心)
drawRBox 圆角矩形(实心)
drawCircle 圆
drawDisc 圆形(实心)
drawEllipse 圆弧
drawFilledEllipse 扇形(实心)
drawStr 显示字符串
print 输出
drawBitmapP 画位图
drawXMBP 画大尺寸位图
getHeight 获得显示器高度
getWidth 获得显示器宽度
getStrWidth 获得字符串宽度
setFont 设置字体
setPrintPos 设置输出位置
setColorIndex 设置显示与否
setRot90 /180 /270 显示内容旋转
setFontPosTop

具体使用方法可参考

常用函数使用方法
u8glib库资料整理
使用规格方法参考


基本运行框架

绘图过程,必须依照下面的框架执行,将绘图显示的代码,放在firstPage和nextPage组成的循环内执行。

  u8g.firstPage();  
  do {
		// 此处放置显示代码
  } while( u8g.nextPage() );

息屏方式

u8g.drawStr(0,0, “”);
###位图数据制作方法
打开软件 进行设置
设置选项界面不能关闭!否则会恢复初始状态!

输入汉字,选择字体和大小,点击生成字模,拷贝到程序即可


硬件接线

OLED屏arduino开发板
GNDGND
VCC3.3V 或 5V
SCL /D010
GNDGND
SDA/D19
RES13
DC11
CS12 七针模块有cs脚;直接连接就好了;如果是用六针的CS默认已经接地;不接就可以了

显示Hello World

#include <U8glib.h>

#include "stdio.h"
#include "stdlib.h"
#include "U8glib.h"

//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);        // I2C / TWI 
U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11);  // SW SPI Com: SCL = 10, SDA = 9, CS = 12, DC = 11,RES=RESET

void draw(void) 
{
  u8g.setFont(u8g_font_osb18);//设置要显示字符的字体
  u8g.drawStr(0, 20, "Hello");//显示字符
  u8g.drawStr(0, 50, "World");
  u8g.setColorIndex(1);//显示对象为不透明
}

void setup(void)
{

}

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

}

效果

在这里插入图片描述


显示汉字

#include "stdio.h"
#include "stdlib.h"
#include "U8glib.h"

//U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);        // I2C / TWI 
U8GLIB_SSD1306_128X64 u8g(10, 9, 12, 11);  // SW SPI Com: SCL = 10, SDA = 9, CS = 12, DC = 11,RES=RESET

static const unsigned char sudu[2][32] PROGMEM={
{0x00,0x02,0x04,0x02,0xE8,0x3F,0x08,0x02,0xC0,0x1F,0x40,0x12,0x4F,0x12,0xC8,0x1F,
0x08,0x07,0x88,0x0A,0x48,0x12,0x28,0x22,0x08,0x02,0x14,0x00,0xE2,0x7F,0x00,0x00},/*"速",0*/
/* (16 X 16 , 宋体 )*/


{0x80,0x00,0x00,0x01,0xFC,0x7F,0x44,0x04,0x44,0x04,0xFC,0x3F,0x44,0x04,0x44,0x04,
0xC4,0x07,0x04,0x00,0xF4,0x0F,0x24,0x08,0x42,0x04,0x82,0x03,0x61,0x0C,0x1C,0x70},/*"度",1*/
/* (16 X 16 , 宋体 )*/
};
void draw(void) {
//画出速度16*16
 u8g.drawXBMP( 0, 0,16, 16, sudu[0]);
 u8g.drawXBMP( 16, 0,16, 16, sudu[1]);
}

void setup(void) {

}

void loop(void) {

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

}

效果

在这里插入图片描述

  • 16
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值