Ardunio学习笔记三————图形显示器u8glib库的使用(数字显示、文字显示、自制图像显示)

上一篇博客写的是LCD的控制,其实严格起来并不能算是LCD的控制,因为所描述的只是字符型LCD,现在呢,就使用u8glib库对图形显示器进行控制。

连接到Ardunio

这次使用的是 拥有SPI 串行接口的 MINI 12864 型号的lcd显示器,引脚和连接如下:

引脚 说明 Ardunio引脚
A0 数据/指令选择 D9
RST 复位 D8
CS 设备选择 D10
SCK 时钟引脚 D13
MOSI 数据输入 D11
GND GND
VCC 电源引脚3.3~5V 5V
LED 背光引脚,低电平亮 GND

该硬件有两种通信方式

1.硬件SPI驱动构造的函数

UBGLIB_MINI12864(cs,a0,reset)

这种SPI通讯方式响应速度较快,但需要将显示屏上的SCK、MOSI的接口连接至Ardunio的对应接口,其他端口可以任意指定。

2.模拟SPI驱动构造函数

UBGLIB_MINI2864(sck,mosi,cs,a0,reset)

模拟SPI的通信速度比较慢,但好在所有引脚都可以随意连接(然并卵)

显示部分

纯文本显示

在让LCD显示文本前,需要先运行较为特殊的图片循环结构

viod loop(void){
u8g.firstpage();
do
{
draw();
}
while(u8g.nextpage()){
delay(1000);
}

此外,将用到两个字符显示函数:

setFont(font);

字体设置函数,设置需要显示出来的字体 点击查看支持的字体.

drawStr(x,y,string);

x,y为需要显示的位置,左上角为坐标原点,具体如下:

drawStr(0,20,“ABC”);

显示如图所示
Ardunio学习笔记三————图形显示器u8glib库的使用(数字显示、文字显示、自制图像显示)_第1张图片

drawStr90(x,y,string);
drawStr180(x,y,string);
drawStr270(x,y,string);

进行输出字符旋转显示方向。

数字显示

drawStr函数只能显示字符串,如果需要输出数字,则需要将数字转化为字符串再进行输出。
因此,数字显示采用别的函数:

setPrintPos(x,y);

x,y用来确定需要显示的位置

print(data);

print函数可以输出任意类型的数据,但输出前需要先使用setFont() 函数确定字体,再使用 setFont(); 确定显示位置

#include <U8g2lib.h>
#include <U8x8lib.h>

#include "U8glib.h"
String t1 = "OpenJumper";
String t2 = "MINI";
int t3 = 12864;
void draw(void) {
  u8g.setFont(u8g_font_ncenB14);//设置字体
  u8g.setPrintPos(0, 20);//字体出现位置,输出信息。(u8g2库中,该函数没有关键字,怀疑已经删除该函数)
  u8g.print(t1);
  u8g.setPrintPos(50, 40);
  u8g.print(t2);
  u8g.setPrintPos(45, 60);
  u8g.print(t3);
}

void setup(void) {
}

void loop(void) {
  u8g.firstpage();//图片循环模块
  do
  {
    draw();
  }
  while (u8g.nextpage()) {
    delay(1000);
  }

具体显示情况如下:
Ardunio学习笔记三————图形显示器u8glib库的使用(数字显示、文字显示、自制图像显示)_第2张图片

自制图形

可以使用字模提取软件进行提取文件,提取时需要提前建立一个专用数组数组bitmap[ ],用来存储提取的文件

static unsigned char bitmap[] UBG_PROGMEM()=

数据获取()
}

且在使用该函数之前需要提前使用函数:

drawXBMP(x,y,width,height,bitmap);

x,y均为从左上角开始做标记,width长、height高、的图像,bitmap为参数数组。


好了,显示篇也到此结束了,接下来要开始无线(WiFi)模块了,正式进入物联网!!!

你可能感兴趣的:(Ardunio学习笔记)