第1篇:Arduino与ESP32开发板的安装方法
第2篇:ESP32 helloword第一个程序示范点亮板载LED
第3篇:vscode搭建esp32 arduino开发环境
第4篇:vscode+platformio搭建esp32 arduino开发环境
第5篇:doit_esp32_devkit_v1使用pmw呼吸灯实验
第6篇:ESP32连接无源喇叭播放音乐《涛声依旧》
第7篇:ESP32连接按钮点亮LED无源喇叭播放声音
第8篇:ESP32连接超声波HC-SR04测距点亮LED无源喇叭播放声音
第9篇:ESP32超声波HC-SR04Arduino类库编写
第10篇:ESP32外部中断功能的使用
第11篇:ESP32vscode_platformio_idf框架helloworld点亮LED
连接方法:
cpp文件
//Demo LCD12864 spi
//www.dfrobot.com
#include "LCD12864RSPI.h"
extern "C"
{
#include "Arduino.h"
#include <wire.h>
#include <inttypes.h>
#include <stdio.h> //not needed yet
#include <string.h> //needed for strlen()
//#include <avr/pgmspace.h>
#include <pgmspace.h>
}
LCD12864RSPI::LCD12864RSPI()
{
this->DEFAULTTIME = 80; // 80 ms default time
this->delaytime = DEFAULTTIME;
}
//*********************延时函数************************//
void LCD12864RSPI::delayns(void)
{
delayMicroseconds(delaytime);
}
void LCD12864RSPI::WriteByte(int dat)
{
digitalWrite(latchPin, HIGH);
delayns();
shiftOut(dataPin, clockPin, MSBFIRST, dat);
digitalWrite(latchPin, LOW);
}
void LCD12864RSPI::WriteCommand(int CMD)
{
int H_data,L_data;
H_data = CMD;
H_data &= 0xf0; //屏蔽低4位的数据
L_data = CMD; //xxxx0000格式
L_data &= 0x0f; //屏蔽高4位的数据
L_data <<= 4; //xxxx0000格式
WriteByte(0xf8); //RS=0,写入的是指令;
WriteByte(H_data);
WriteByte(L_data);
}
void LCD12864RSPI::WriteData(int CMD)
{
int H_data,L_data;
H_data = CMD;
H_data &= 0xf0; //屏蔽低4位的数据
L_data = CMD; //xxxx0000格式
L_data &= 0x0f; //屏蔽高4位的数据
L_data <<= 4; //xxxx0000格式
WriteByte(0xfa); //RS=1,写入的是数据
WriteByte(H_data);
WriteByte(L_data);
}
void LCD12864RSPI::Initialise()
{
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
delayns();
WriteCommand(0x30); //功能设定控制字
WriteCommand(0x0c); //显示开关控制字
WriteCommand(0x01); //清除屏幕控制字
WriteCommand(0x06); //进入设定点控制字
}
void LCD12864RSPI::CLEAR(void)
{
WriteCommand(0x30);//
WriteCommand(0x01);//清除显示
}
void LCD12864RSPI::DisplayString(int X,int Y,uchar *ptr,int dat)
{
int i;
switch(X)
{
case 0: Y|=0x80;break;
case 1: Y|=0x90;break;
case 2: Y|=0x88;break;
case 3: Y|=0x98;break;
default: break;
}
WriteCommand(Y); // 定位显示起始地址
for(i=0;i<dat;i++)
{
WriteData(ptr[i]);//显示汉字时注意码值,连续两个码表示一个汉字
}
}
void LCD12864RSPI::DisplaySig(int M,int N,int sig)
{
switch(M)
{
case 0: N|=0x80;break;
case 1: N|=0x90;break;
case 2: N|=0x88;break;
case 3: N|=0x98;break;
default: break;
}
WriteCommand(N); // 定位显示起始地址
WriteData(sig); //输出单个字符
}
void LCD12864RSPI::DrawFullScreen(uchar *p)
{
int ygroup,x,y,i;
int temp;
int tmp;
for(ygroup=0;ygroup<64;ygroup++) //写入液晶上半图象部分
{ //写入坐标
if(ygroup<32)
{
x=0x80;
y=ygroup+0x80;
}
else
{
x=0x88;
y=ygroup-32+0x80;
}
WriteCommand(0x34); //写入扩充指令命令
WriteCommand(y); //写入y轴坐标
WriteCommand(x); //写入x轴坐标
WriteCommand(0x30); //写入基本指令命令
tmp=ygroup*16;
for(i=0;i<16;i++)
{
temp=p[tmp++];
WriteData(temp);
}
}
WriteCommand(0x34); //写入扩充指令命令
WriteCommand(0x36); //显示图象
}
LCD12864RSPI LCDA = LCD12864RSPI();
头文件
//Demo LCD12864 spi
//www.dfrobot.com
#include <Arduino.h>
#ifndef LCD12864RSPI_h
#define LCD12864RSPI_h
//#include <avr/pgmspace.h>
#include <pgmspace.h>
#include <inttypes.h>
class LCD12864RSPI {
typedef unsigned char uchar;
public:
LCD12864RSPI();
void Initialise(void);
void delayns(void);
void WriteByte(int dat);
void WriteCommand(int CMD);
void WriteData(int CMD);
void CLEAR(void);
void DisplayString(int X,int Y,uchar *ptr,int dat);
void DisplaySig(int M,int N,int sig);
void DrawFullScreen(uchar *p);
int delaytime;
int DEFAULTTIME;
//UNO
// static const int latchPin = 8;
// static const int clockPin = 3;
// static const int dataPin = 9;
//ESP32
static const int latchPin = 16; //RS
static const int clockPin = 17; //E
static const int dataPin = 5; //R/W
};
extern LCD12864RSPI LCDA;
#endif
platformio_arduino_主程序
#include <Arduino.h>
// put function declarations here:
int myFunction(int, int);
/*
LCD Arduino
PIN1 = GND
PIN2 = 5V
RS(CS) = 8;
RW(SID)= 9;
EN(CLK) = 3;
PIN15 PSB = GND;
*/
#include <LCD12864RSPI.h>
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
unsigned char show0[]={0xB0,0xA2,0xCE,0xE4,0xBF,0xC6,0xBC,0xBC};//阿武科技
//阿 B0A2 1002
// 武 CEE4 2E44
// 科 BFC6 1F26
// 技 BCBC 1C1C
unsigned char show1[]="From:txwtech";
unsigned char logo0[]={ //笑脸
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,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,
0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,
0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,
0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x00,0x40,0x00,
0x00,0x80,0x1C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x78,0x03,0xF8,0x00,
0x07,0xF0,0x1E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x70,0x07,0xFE,0x00,
0x0F,0xFC,0x0E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF0,0x1F,0xBF,0x00,
0x3F,0x7E,0x0F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x3E,0x0F,0x80,
0x7C,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x7C,0x07,0xC0,
0xF8,0x0F,0x87,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xE0,0xF8,0x01,0xE1,
0xF0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0xF0,0x01,0xE1,
0xE0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0xE0,0x00,0xE1,
0xC0,0x01,0xC3,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF0,0x00,0x0C,0x00,
0x0C,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x70,0x00,0x1E,0x00,
0x1E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x78,0x00,0x1F,0x00,
0x3E,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x00,0x07,0x80,
0xF8,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0x00,0x03,0xE1,
0xF0,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1E,0x00,0x01,0xFF,
0xE0,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0xFF,
0x80,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x3F,
0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,
0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0x80,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
void setup()
{
LCDA.Initialise(); // 屏幕初始化
delay(100);
}
void loop()
{
LCDA.CLEAR();//清屏
delay(100);
LCDA.DisplayString(0,2,show0,AR_SIZE(show0));//第一行第三格开始,显示文字//阿武科技
delay(100);
LCDA.DisplayString(3,1,show1,AR_SIZE(show1));;//第三行第二格开始,显示文字//txwtech
delay(2000);
LCDA.CLEAR();//清屏
delay(100);
LCDA.DrawFullScreen(logo0);
delay(2000);
}
演示效果:
第12篇ESP32模拟SPI驱动12864LCD_ST7920显示屏_哔哩哔哩_bilibili
第12篇ESP32模拟SPI驱动12864LCD