老五 0.6元LCD
驱动:ST7539
接口:I2C
数据地址:3F
命令地址: 3E
屏幕初始化:
void initLCD() {
// 初始化LCD指令序列
digitalWrite(LCD_REST,LOW);
delay(20);
digitalWrite(LCD_REST,HIGH);
delay(500);
sendCommand(0xE2); // 软复位
sendCommand(0xA3); // 刷新率0.76 1.95 2.132 3.168
sendCommand(0xEB); // 设置偏压比
sendCommand(0xC2); // 方向
sendCommand(0x81); // 对比度命令
sendCommand(0x2F); // 微调对比度
sendCommand(0xB0); // 显示起始行
sendCommand(0x10); //
sendCommand(0x00); //
sendCommand(0x40); //
sendCommand(0xAF); // 显示开
delay(100);
}
I2C数据&指令
#define LCD_I2C_ADDR_CMD 0x3E // 命令地址
#define LCD_I2C_ADDR_DATA 0x3F // 数据地址
void sendCommand(uint8_t command) {
Wire.beginTransmission(LCD_I2C_ADDR_CMD);
Wire.write(command);
delay(1);
Wire.endTransmission();
}
void sendData(uint8_t data) {
Wire.beginTransmission(LCD_I2C_ADDR_DATA);
Wire.write(data);
delay(1);
Wire.endTransmission();
}
坐标
void setAddress(uint8_t page, uint8_t column)
{
uint8_t Page, Column;
Page = page - 1;
Column = column;
sendCommand(0xB0 + Page);
sendCommand(((Column >> 4) & 0x0f) + 0x10); //列地址MSB
sendCommand(Column & 0x0f); //列地址LSB
}
816字符:阳码&列行式&逆向&3216
字符: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~
const uint8_t Ascii_8x16[][16]=
{
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*" ",0*/
{0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCC,0xFF,0xFF,0xFF,0xFF},/*"!",1*/
{0xFF,0xEF,0xF3,0xFD,0xEF,0xF3,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*""",2*/
{0xFF,0xBF,0x3F,0x87,0xBF,0x3F,0x87,0xFF,0xFF,0xFB,0xC0,0xFB,0xFB,0xC0,0xFB,0xFF},/*"#",3*/
{0xFF,0x8F,0x77,0x77,0x03,0xF7,0xCF,0xFF,0xFF,0xE7,0xDF,0xDF,0x00,0xDE,0xE1,0xFF},/*"$",4*/
{0x0F,0xF7,0x0F,0x7F,0x9F,0xE7,0xFF,0xFF,0xFF,0xCE,0xF3,0xFC,0xE1,0xDE,0xE1,0xFF},/*"%",5*/
{0xFF,0x0F,0xF7,0x77,0x8F,0xFF,0xFF,0xFF,0xE1,0xDE,0xDC,0xD3,0xE6,0xD8,0xDE,0xEF},/*"&",6*/
{0xFF,0xED,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"'",7*/
{0xFF,0xFF,0xFF,0x1F,0xE7,0xFB,0xFD,0xFF,0xFF,0xFF,0xFF,0xF8,0xE7,0xDF,0xBF,0xFF},/*"(",8*/
{0xFF,0xFD,0xFB,0xE7,0x1F,0xFF,0xFF,0xFF,0xFF,0xBF,0xDF,0xE7,0xF8,0xFF,0xFF,0xFF},/*")",9*/
{0xBF,0xBF,0x7F,0x0F,0x7F,0xBF,0xBF,0xFF,0xFD,0xFD,0xFE,0xF0,0xFE,0xFD,0xFD,0xFF},/*"*",10*/
{0xFF,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xF0,0xFE,0xFE,0xFE},/*"+",11*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x6F,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF},/*",",12*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF},/*"-",13*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xCF,0xFF,0xFF,0xFF,0xFF,0xFF},/*".",14*/
{0xFF,0xFF,0xFF,0xFF,0x3F,0xC7,0xFB,0xFF,0xFF,0x9F,0xE7,0xF8,0xFF,0xFF,0xFF,0xFF},/*"/",15*/
{0xFF,0x1F,0xEF,0xF7,0xF7,0xEF,0x1F,0xFF,0xFF,0xF0,0xEF,0xDF,0xDF,0xEF,0xF0,0xFF},/*"0",16*/
{0xFF,0xFF,0xEF,0xEF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xDF,0xC0,0xDF,0xDF,0xFF},/*"1",17*/
{0xFF,0x8F,0xF7,0xF7,0xF7,0xF7,0x0F,0xFF,0xFF,0xCF,0xD7,0xDB,0xDD,0xDE,0xCF,0xFF},/*"2",18*/
{0xFF,0xCF,0xF7,0xF7,0xF7,0x77,0x8F,0xFF,0xFF,0xE7,0xDF,0xDE,0xDE,0xDD,0xE3,0xFF},/*"3",19*/
{0xFF,0xFF,0x7F,0xBF,0xCF,0x07,0xFF,0xFF,0xFF,0xF9,0xFA,0xDB,0xDB,0xC0,0xDB,0xDB},/*"4",20*/
{0xFF,0x07,0x77,0x77,0x77,0xF7,0xF7,0xFF,0xFF,0xE6,0xDF,0xDF,0xDF,0xEE,0xF1,0xFF},/*"5",21*/
{0xFF,0x1F,0xEF,0x77,0x77,0x6F,0xFF,0xFF,0xFF,0xF0,0xEE,0xDF,0xDF,0xDF,0xE0,0xFF},/*"6",22*/
{0xFF,0xE7,0xF7,0xF7,0x77,0x97,0xE7,0xFF,0xFF,0xFF,0xFF,0xC1,0xFE,0xFF,0xFF,0xFF},/*"7",23*/
{0xFF,0x8F,0x77,0xF7,0xF7,0x77,0x8F,0xFF,0xFF,0xE3,0xDD,0xDE,0xDE,0xDD,0xE3,0xFF},/*"8",24*/
{0xFF,0x0F,0xF7,0xF7,0xF7,0xEF,0x1F,0xFF,0xFF,0xFE,0xED,0xDD,0xDD,0xEE,0xF0,0xFF},/*"9",25*/
{0xFF,0xFF,0xFF,0x3F,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xCF,0xFF,0xFF,0xFF},/*":",26*/
{0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xFF,0xFF},/*";",27*/
{0xFF,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFF,0xFF,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xFF},/*"<",28*/
{0xFF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xFF,0xFF,0xFD,0xFD,0xFD,0xFD,0xFD,0xFD,0xFF},/*"=",29*/
{0xFF,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF,0xFF,0xFF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF},/*">",30*/
{0xFF,0x8F,0xB7,0xF7,0xF7,0x77,0x8F,0xFF,0xFF,0xFF,0xFF,0xCF,0xC8,0xFF,0xFF,0xFF},/*"?",31*/
{0x3F,0xCF,0x37,0xD7,0x17,0xEF,0x1F,0xFF,0xF8,0xE7,0xD8,0xD7,0xD0,0xD7,0xE8,0xFF},/*"@",32*/
{0xFF,0xFF,0x3F,0xC7,0x1F,0xFF,0xFF,0xFF,0xDF,0xC3,0xDC,0xFD,0xFD,0xD8,0xC7,0xDF},/*"A",33*/
{0xF7,0x07,0x77,0x77,0x77,0x8F,0xFF,0xFF,0xDF,0xC0,0xDF,0xDF,0xDF,0xEE,0xF1,0xFF},/*"B",34*/
{0x3F,0xCF,0xF7,0xF7,0xF7,0xF7,0xC7,0xFF,0xF8,0xE7,0xDF,0xDF,0xDF,0xEF,0xF7,0xFF},/*"C",35*/
{0xF7,0x07,0xF7,0xF7,0xF7,0xEF,0x1F,0xFF,0xDF,0xC0,0xDF,0xDF,0xDF,0xEF,0xF0,0xFF},/*"D",36*/
{0xF7,0x07,0x77,0x77,0x17,0xF7,0xEF,0xFF,0xDF,0xC0,0xDF,0xDF,0xDC,0xDF,0xE7,0xFF},/*"E",37*/
{0xF7,0x07,0x77,0x77,0x17,0xF7,0xEF,0xFF,0xDF,0xC0,0xDF,0xFF,0xFC,0xFF,0xFF,0xFF},/*"F",38*/
{0x3F,0xCF,0xF7,0xF7,0xF7,0xC7,0xFF,0xFF,0xF8,0xE7,0xDF,0xDF,0xDD,0xE1,0xFD,0xFF},/*"G",39*/
{0xF7,0x07,0xF7,0xFF,0xFF,0xF7,0x07,0xF7,0xDF,0xC0,0xDE,0xFE,0xFE,0xDE,0xC0,0xDF},/*"H",40*/
{0xFF,0xF7,0xF7,0x07,0xF7,0xF7,0xFF,0xFF,0xFF,0xDF,0xDF,0xC0,0xDF,0xDF,0xFF,0xFF},/*"I",41*/
{0xFF,0xFF,0xF7,0xF7,0x07,0xF7,0xF7,0xFF,0x3F,0x7F,0x7F,0x7F,0x80,0xFF,0xFF,0xFF},/*"J",42*/
{0xF7,0x07,0x77,0x3F,0xD7,0xE7,0xF7,0xFF,0xDF,0xC0,0xDF,0xFE,0xD9,0xC7,0xDF,0xFF},/*"K",43*/
{0xF7,0x07,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xCF,0xFF},/*"L",44*/
{0xF7,0x07,0x07,0xFF,0x07,0x07,0xF7,0xFF,0xDF,0xC0,0xFE,0xC1,0xFE,0xC0,0xDF,0xFF},/*"M",45*/
{0xF7,0x07,0xCF,0x3F,0xFF,0xF7,0x07,0xF7,0xDF,0xC0,0xDF,0xFF,0xF8,0xE7,0xC0,0xFF},/*"N",46*/
{0x1F,0xEF,0xF7,0xF7,0xF7,0xEF,0x1F,0xFF,0xF0,0xEF,0xDF,0xDF,0xDF,0xEF,0xF0,0xFF},/*"O",47*/
{0xF7,0x07,0xF7,0xF7,0xF7,0xF7,0x0F,0xFF,0xDF,0xC0,0xDE,0xFE,0xFE,0xFE,0xFF,0xFF},/*"P",48*/
{0x1F,0xEF,0xF7,0xF7,0xF7,0xEF,0x1F,0xFF,0xF0,0xEF,0xD7,0xD7,0xCF,0xAF,0xB0,0xFF},/*"Q",49*/
{0xF7,0x07,0x77,0x77,0x77,0x77,0x8F,0xFF,0xDF,0xC0,0xDF,0xFF,0xFC,0xF3,0xCF,0xDF},/*"R",50*/
{0xFF,0x8F,0x77,0xF7,0xF7,0xF7,0xC7,0xFF,0xFF,0xC7,0xDF,0xDE,0xDE,0xDD,0xE3,0xFF},/*"S",51*/
{0xE7,0xF7,0xF7,0x07,0xF7,0xF7,0xE7,0xFF,0xFF,0xFF,0xDF,0xC0,0xDF,0xFF,0xFF,0xFF},/*"T",52*/
{0xF7,0x07,0xF7,0xFF,0xFF,0xF7,0x07,0xF7,0xFF,0xE0,0xDF,0xDF,0xDF,0xDF,0xE0,0xFF},/*"U",53*/
{0xF7,0x87,0x77,0xFF,0xFF,0x37,0xC7,0xF7,0xFF,0xFF,0xF8,0xC7,0xF1,0xFE,0xFF,0xFF},/*"V",54*/
{0xF7,0x07,0xFF,0x07,0xFF,0x07,0xF7,0xFF,0xFF,0xFC,0xC1,0xFE,0xC1,0xFC,0xFF,0xFF},/*"W",55*/
{0xF7,0xE7,0x97,0x7F,0x7F,0x97,0xE7,0xF7,0xDF,0xCF,0xD3,0xFC,0xFC,0xD3,0xCF,0xDF},/*"X",56*/
{0xF7,0xC7,0x37,0xFF,0x37,0xC7,0xF7,0xFF,0xFF,0xFF,0xDF,0xC0,0xDF,0xFF,0xFF,0xFF},/*"Y",57*/
{0xEF,0xF7,0xF7,0xF7,0x37,0xC7,0xF7,0xFF,0xDF,0xC7,0xD9,0xDE,0xDF,0xDF,0xE7,0xFF},/*"Z",58*/
{0xFF,0xFF,0xFF,0x01,0xFD,0xFD,0xFD,0xFF,0xFF,0xFF,0xFF,0x80,0xBF,0xBF,0xBF,0xFF},/*"[",59*/
{0xFF,0xFD,0xFD,0xFD,0x01,0xFF,0xFF,0xFF,0xFF,0xBF,0xBF,0xBF,0x80,0xFF,0xFF,0xFF},/*"]",60*/
{0xFF,0xFF,0xFB,0xFD,0xFD,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"^",61*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F},/*"_",62*/
{0xFF,0xFD,0xFD,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"`",63*/
{0xFF,0xFF,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xE6,0xDB,0xDB,0xED,0xC0,0xDF,0xFF},/*"a",64*/
{0xEF,0x0F,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xC0,0xEE,0xDF,0xDF,0xEE,0xF1,0xFF},/*"b",65*/
{0xFF,0xFF,0xFF,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xF1,0xEE,0xDF,0xDF,0xDF,0xEE,0xFF},/*"c",66*/
{0xFF,0xFF,0x7F,0x7F,0x7F,0x6F,0x0F,0xFF,0xFF,0xE0,0xDF,0xDF,0xDF,0xEF,0xC0,0xDF},/*"d",67*/
{0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xE0,0xDB,0xDB,0xDB,0xDB,0xE8,0xFF},/*"e",68*/
{0xFF,0x7F,0x7F,0x1F,0x6F,0x6F,0xDF,0xFF,0xFF,0xDF,0xDF,0xC0,0xDF,0xDF,0xFF,0xFF},/*"f",69*/
{0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0x94,0x6B,0x6B,0x6B,0x6C,0x9F,0xFF},/*"g",70*/
{0xEF,0x0F,0xFF,0x7F,0x7F,0x7F,0xFF,0xFF,0xDF,0xC0,0xDE,0xFF,0xFF,0xDF,0xC0,0xDF},/*"h",71*/
{0xFF,0x7F,0x67,0x67,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xDF,0xC0,0xDF,0xDF,0xFF,0xFF},/*"i",72*/
{0xFF,0xFF,0xFF,0x7F,0x67,0x67,0xFF,0xFF,0xFF,0x3F,0x7F,0x7F,0x7F,0x80,0xFF,0xFF},/*"j",73*/
{0xEF,0x0F,0xFF,0xFF,0x7F,0x7F,0x7F,0xFF,0xDF,0xC0,0xDB,0xF9,0xD6,0xCF,0xDF,0xFF},/*"k",74*/
{0xFF,0xEF,0xEF,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xDF,0xC0,0xDF,0xDF,0xFF,0xFF},/*"l",75*/
{0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xDF,0xC0,0xDF,0xFF,0xC0,0xDF,0xFF,0xC0},/*"m",76*/
{0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFF,0xFF,0xDF,0xC0,0xDE,0xFF,0xFF,0xDF,0xC0,0xDF},/*"n",77*/
{0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xFF,0xE0,0xDF,0xDF,0xDF,0xDF,0xE0,0xFF},/*"o",78*/
{0x7F,0x7F,0xFF,0x7F,0x7F,0xFF,0xFF,0xFF,0x7F,0x00,0x6E,0xDF,0xDF,0xEE,0xF1,0xFF},/*"p",79*/
{0xFF,0xFF,0xFF,0x7F,0x7F,0xFF,0x7F,0xFF,0xFF,0xF1,0xEE,0xDF,0xDF,0x6E,0x00,0x7F},/*"q",80*/
{0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFF,0xDF,0xDF,0xC0,0xDE,0xDF,0xFF,0xFE,0xFF},/*"r",81*/
{0xFF,0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xCC,0xDB,0xDB,0xDB,0xDB,0xE6,0xFF},/*"s",82*/
{0xFF,0x7F,0x7F,0x1F,0x7F,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0xDF,0xDF,0xEF,0xFF},/*"t",83*/
{0x7F,0x7F,0xFF,0xFF,0xFF,0x7F,0x7F,0xFF,0xFF,0xE0,0xDF,0xDF,0xDF,0xEF,0xC0,0xDF},/*"u",84*/
{0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0x7F,0xFF,0xFF,0xFC,0xF3,0xCF,0xF3,0xFC,0xFF,0xFF},/*"v",85*/
{0x7F,0x7F,0xFF,0x7F,0x7F,0xFF,0x7F,0x7F,0xFE,0xF1,0xCF,0xF3,0xF8,0xC7,0xF9,0xFE},/*"w",86*/
{0xFF,0x7F,0x7F,0x7F,0xFF,0x7F,0x7F,0xFF,0xFF,0xDF,0xCE,0xF1,0xD1,0xCE,0xDF,0xFF},/*"x",87*/
{0x7F,0x7F,0x7F,0xFF,0xFF,0x7F,0x7F,0x7F,0xFF,0x7E,0x79,0x87,0xE7,0xF9,0xFE,0xFF},/*"y",88*/
{0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0xFF,0xFF,0xDE,0xCF,0xD3,0xDD,0xDE,0xCF,0xFF},/*"z",89*/
{0xFF,0xFF,0xFF,0xFF,0xFF,0x03,0xFD,0xFD,0xFF,0xFF,0xFF,0xFF,0xFE,0xC1,0xBF,0xBF},/*"{",90*/
{0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF},/*"|",91*/
{0xFD,0xFD,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xBF,0xC1,0xFE,0xFF,0xFF,0xFF,0xFF},/*"}",92*/
{0xFF,0xFD,0xFE,0xFD,0xFD,0xFB,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"~",93*/
};
void LcdDispStr8x16(uint8_t reverse, uint8_t page, uint8_t column, const char* str) {
uint16_t i = 0, j = 0, k = 0;
while(str[i]!= '\0') {
if(str[i] >= 0x20 && str[i] <= 0x7e) {
j = str[i] - 0x20;
setAddress(page, column);
for(k = 0; k < 8; k++) {
if(reverse) {
sendData( Ascii_8x16[j][k]);
// sendData( Ascii_8x16[j][k]);
} else {
sendData( ~Ascii_8x16[j][k]);
// sendData( ~Ascii_8x16[j][k]);
}
}
setAddress(page +1, column);
for(k = 0; k < 8; k++) {
if(reverse) {
sendData(Ascii_8x16[j][k + 8]);
//sendData(Ascii_8x16[j][k + 8]);
} else {
sendData( ~Ascii_8x16[j][k + 8]);
//sendData( ~Ascii_8x16[j][k + 8]);
}
}
i++;
column += 8;
}
}
}