这是屏幕厂家提供的arduino 环境下对st7789的驱动代码,不同于使用tft_espi的驱动,这个代码就是最原始的操作,最高效的操作,也方便可以进行各种自定义扩展。
要知道tft_espi看起来很方便,其实很臃肿,稍微要做一点事情,编译后就很大,而且性能也很低。
这个代码的意义一定程度可以让人了解SPI的通信过程。
以前看着这种代码两眼一抹黑,看几排就看不下去了,现在就好很多了。
/********************金逸晨**************************
*****************2.0寸 7PIN SPI TFT FOR Arduino*************
*****3----3SCK, 4----4SDA, 5---5RST,
6---6DC, 7----7CS
*********ST7789V2
从左往右,从上往下 240*320 18bit 6 6 6 RGB 模式 高位模式
********************************************************/
#define SPI_SCK_0 digitalWrite(3, LOW)
#define SPI_SCK_1 digitalWrite(3, HIGH)
#define SPI_SDA_0 digitalWrite(4, LOW)
#define SPI_SDA_1 digitalWrite(4, HIGH)
#define SPI_RST_0 digitalWrite(5, LOW)
#define SPI_RST_1 digitalWrite(5, HIGH)
#define SPI_DC_0 digitalWrite(6, LOW)
#define SPI_DC_1 digitalWrite(6, HIGH)
#define SPI_CS_0 digitalWrite(7, LOW)
#define SPI_CS_1 digitalWrite(7, HIGH)
void IO_init(void) {
pinMode(3, OUTPUT); //设置数字脚为输出
pinMode(4, OUTPUT); //设置数字脚为输出
pinMode(5, OUTPUT); //设置数字脚为输出
pinMode(6, OUTPUT); //设置数字脚为输出
pinMode(7, OUTPUT); //设置数字脚为输出
}
#define OLED_COLUMN_NUMBER 240
#define OLED_LINE_NUMBER 320
#define OLED_COLUMN_OFFSET 0
#define RED 0XFF0000
#define GREEN 0X00FF00
#define BLUE 0X0000FF
const unsigned char china_char[][32] = //
{
{ 0x00, 0x00, 0xE4, 0x3F, 0x28, 0x20, 0x28, 0x25, 0x81, 0x08, 0x42, 0x10, 0x02, 0x02, 0x08, 0x02,
0xE8, 0x3F, 0x04, 0x02, 0x07, 0x07, 0x84, 0x0A, 0x44, 0x12, 0x34, 0x62, 0x04, 0x02, 0x00, 0x02 }, /*"深",0*/
{ 0x88, 0x20, 0x88, 0x24, 0x88, 0x24, 0x88, 0x24, 0x88, 0x24, 0xBF, 0x24, 0x88, 0x24, 0x88, 0x24,
0x88, 0x24, 0x88, 0x24, 0x88, 0x24, 0xB8, 0x24, 0x87, 0x24, 0x42, 0x24, 0x40, 0x20, 0x20, 0x20 }, /*"圳",1*/
{ 0x80, 0x00, 0x80, 0x00, 0x40, 0x01, 0x20, 0x02, 0x10, 0x04, 0x08, 0x08, 0xF4, 0x17, 0x83, 0x60,
0x80, 0x00, 0xFC, 0x1F, 0x80, 0x00, 0x88, 0x08, 0x90, 0x08, 0x90, 0x04, 0xFF, 0x7F, 0x00, 0x00 }, /*"金",2*/
{ 0x80, 0x00, 0x82, 0x00, 0x84, 0x0F, 0x44, 0x08, 0x20, 0x04, 0xF0, 0x3F, 0x27, 0x22, 0x24, 0x22,