本教程使用的是SSD1306芯片的屏幕,同理也可使用其他屏幕
一、安装库U8glib.h
众所周知U8g是个万能库,我们就用此库来点亮一块12864oled屏
二、安装完库后选择hello world示例,将示例代码复制到新的工程中修改
选择这个芯片:
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
三、学会使用取模软件
有很多款取模软件,操作大同小异具体百度,再通过u8g.drawXBMP这条函数显示出来
四、按键判断:
这里只使用了一个按键
void button_State()
{
//A
if(digitalRead(button1)){ //检测按键是否按下
delay(20); //延时去抖动
if(digitalRead(button1)){//判断长短键
openState++;
}
while(digitalRead(button1));
}
}
最后,附上完整代码:
#include "U8glib.h"
#define button1 13 //触摸按键接口定义
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);
uint8_t openState = 0;
uint8_t c = 0;
static unsigned char deng[] U8G_PROGMEM = {0x00,0x00,0x7E,0x3E,0x40,0x22,0x40,0x12,0x42,0x12,0x24,0x0A,0x28,0x12,0x10,0x12,
0x10,0x22,0x28,0x22,0x28,0x22,0x44,0x16,0x42,0x0A,0x01,0x02,0x00,0x02,0x00,0x02,/*"邓",0*/};
static unsigned char zhao[] U8G_PROGMEM = {0x00,0x00,0xBE,0x3F,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x29,0xBE,0x10,0x22,0x3F,
0x22,0x21,0x22,0x21,0x22,0x21,0x3E,0x3F,0x00,0x00,0x12,0x11,0x22,0x22,0x21,0x22,/*"照",1*/};
static unsigned char quan[] U8G_PROGMEM = {0x08,0x00,0xC8,0x3F,0x88,0x20,0x88,0x20,0xBF,0x20,0x08,0x11,0x0C,0x11,0x1C,0x11,
0x2A,0x0A,0x2A,0x0A,0x09,0x04,0x08,0x04,0x08,0x0A,0x08,0x11,0x88,0x20,0x68,0x40,/*"权",2*/};
static unsigned char bmp[] U8G_PROGMEM = {
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0xC4,0xF0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x02,0x41,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x25,0x88,0xC0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x13,0x00,0x0F,0xA4,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x29,0xFC,0x27,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x80,0xFF,0x03,0x02,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x14,0xFE,0x43,0x23,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0xFC,0x81,0x47,0xFC,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0xF9,0xE3,0x03,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x17,0x20,0xF4,0x47,0x0F,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x38,0xF0,0xB7,0xBF,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x23,0x7C,0xE0,0xDF,0x7F,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x09,0x7E,0xFA,0xFF,0x7F,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x11,0x07,0xFC,0xFF,0xFF,0xD7,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xF3,0xF7,0xFF,0xD6,0xFF,0xFB,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xE7,0xF7,0xE0,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0xC4,0xFE,0xCF,0x37,0x80,0x27,0xFC,0xF5,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x6E,0xFF,0xDF,0x3F,0x00,0xFF,0xFB,0xFF,0xF3,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x3F,0x7E,0xFF,0xFD,0x1F,0x50,0xFF,0xF7,0xCF,0xEF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x3F,0xBE,0x3F,0xE0,0x5F,0x0F,0xFF,0xDF,0xFD,0xFB,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x3F,0xBE,0x1F,0xE0,0x0F,0x1F,0xFE,0xFF,0xFD,0xF9,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0xFE,0x0F,0x8A,0x0F,0x1F,0xFE,0xBF,0xFF,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0xFE,0x07,0x17,0x0F,0x2F,0xFE,0x7F,0xFE,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0xFE,0x87,0x0F,0x0F,0x0E,0xFE,0xFF,0xFF,0xFB,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0xFE,0x83,0x0F,0x1F,0x40,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x9F,0xFC,0x83,0x9F,0x1F,0x00,0xFF,0xFF,0xF1,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0xFD,0x8B,0x0F,0x3F,0xD1,0xFF,0xFF,0x7B,0xFE,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xAF,0xFE,0x23,0x4D,0xFF,0xF8,0xFF,0xFF,0x39,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0xFC,0x57,0xA0,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x7F,0xFC,0x07,0xC8,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFD,0xFC,0x0F,0xE0,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0x1F,0xF9,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,
0xFF,0xFF,0x7F,0xFF,0xFE,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,
0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
0xFF,0xFF,0x3F,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
0xFF,0xFF,0x3F,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,
0xFF,0xFF,0xBD,0xDB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xF4,0x7F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xEF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xE2,0xBF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xEF,0x4F,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xC0,0x9F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x2F,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xCA,0xCF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFB,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x84,0xE7,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xD3,0x11,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x80,0xF1,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xAF,0x67,0xFE,0x03,0x00,0x04,0x00,0x1F,0x06,0xF8,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xEF,0xAF,0xFC,0x51,0x02,0x00,0x00,0x11,0x04,0xF8,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xBF,0x1F,0x00,0x20,0x00,0x02,0x00,0x42,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xBF,0x3F,0x02,0x00,0x40,0x01,0x00,0x00,0x08,0xFC,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x7F,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x87,0x10,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x0F,0x08,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x1F,0xA8,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x3F,0x10,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xBF,0x01,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x23,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0xFE,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xFC,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0xFA,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0xD8,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x5F,0x00,0x00,0x00,0x00,0x00,0x80,0xFF,0xFF,0xFF,0xFF,};
void button_State()
{
//A
if(digitalRead(button1)){ //检测按键是否按下
delay(20); //延时去抖动
if(digitalRead(button1)){//判断长短键
openState++;
}
while(digitalRead(button1));
}
}
void draw0(void) {
u8g.drawXBMP( 0, 16, 16, 16, deng);
u8g.drawXBMP( 16, 16, 16, 16, zhao);
u8g.drawXBMP( 32, 16, 16, 16, quan);
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 0, 45, "DengZhaoquan:");
u8g.drawStr( 0, 12, "190306238");
// u8g.setPrintPos(42,45);
// u8g.print(c++);
}
void draw1(void) {
// u8g.drawXBMP( 0, 16, 16, 16, deng);
// u8g.drawXBMP( 16, 16, 16, 16, zhao);
// u8g.drawXBMP( 32, 16, 16, 16, quan);
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 0, 45, "Numb:");
u8g.setPrintPos(42,45);
u8g.print(c++);
}
void draw2(void) {
u8g.drawXBMP( 0, 0, 128, 64, bmp);
// u8g.drawXBMP( 16, 16, 16, 16, zhao);
// u8g.drawXBMP( 32, 16, 16, 16, quan);
u8g.setFont(u8g_font_unifont);
// u8g.drawStr( 0, 45, "190306238:");
u8g.setPrintPos(42,45);
// u8g.print(c++);
}
void mode_0()
{
u8g.firstPage();
do {
draw0();
} while( u8g.nextPage() );
}
void mode_1()
{
u8g.firstPage();
do {
draw1();
} while( u8g.nextPage() );
}
void mode_2()
{
u8g.firstPage();
do {
draw2();
} while( u8g.nextPage() );
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(button1, INPUT);
pinMode(12, OUTPUT);
digitalWrite(12, HIGH);
}
void loop() {
button_State();
// put your main code here, to run repeatedly:
switch (openState)
{
case 0:
// openState = 0;
mode_0(); //
break;
case 1:
mode_1(); //
break;
case 2:
mode_2(); //
break;
case 3:
// mode_3(); //
break;
default:
break;
}
if(openState == 3) openState = 0;
Serial.println(openState);
}