写在前面
备战2024电赛,使用到了TI开发板,型号MSPM0G3507,该开发板除文档外,网上资料稀少。
现在为大家提供spi连接tft180屏幕的代码,以促共同进步。
该代码由逐飞seekfree仓库移植而来,如有侵权请私信联系我删除,谢谢。
代码亲测成功,如有bug欢迎评论区指正。
头文件
#ifndef COMMON_H
#define COMMON_H
#include "ti_msp_dl_config.h"
#include ""
#define system_delay_ms(m) delay_cycles((m*32000))
#endif
2.
#ifndef TFT_180_H
#define TFT_180_H
#include ""
typedef enum
{
WHITE = (0xFFFF), // 白色
BLACK = (0x0000), // 黑色
BLUE = (0x001F), // 蓝色
PURPLE = (0xF81F), // 紫色
PINK = (0xFE19), // 粉色
RED = (0xF800), // 红色
MAGENTA = (0xF81F), // 品红
GREEN = (0x07E0), // 绿色
CYAN = (0x07FF), // 青色
YELLOW = (0xFFE0), // 黄色
BROWN = (0xBC40), // 棕色
GRAY = (0x8430), // 灰色
}color_enum;
static uint16_t tft180_pencolor = BLACK;
static uint16_t tft180_bgcolor = WHITE;
static uint8_t tft180_x_max = 160;
static uint8_t tft180_y_max = 128;
void tft180_init (void);
void tft180_clear_color (uint16_t tft180_bgcolor);
void tft180_show_string_color (uint8_t x, uint8_t y, const char dat[],uint16_t tft180_bgcolor,uint16_t tft180_pencolor);
void tft180_show_num_color (uint8_t x, uint8_t y, const float dat, uint8_t num, uint8_t pointnum,uint16_t tft180_bgcolor,uint16_t tft180_pencolor);
#define tft180_clear() (tft180_clear_color(tft180_bgcolor))
#define tft180_show_string(x,y,dat) (tft180_show_string_color((x),(y),(dat),tft180_bgcolor,tft180_pencolor))
#define tft180_show_float(x,y,dat,num,pointnum) (tft180_show_num_color((x),(y),(dat),(num),(pointnum),tft180_bgcolor,tft180_pencolor))
#define tft180_show_int(x,y,dat,num) (tft180_show_num_color((x),(y),(dat),(num),0,tft180_bgcolor,tft180_pencolor))
#endif
源文件
1.
#include ""
#define TFT180_DC(x) ((x) ? (DL_GPIO_setPins(TFT_PORT, TFT_DC_PIN)) : (DL_GPIO_clearPins(TFT_PORT, TFT_DC_PIN)))
#define TFT180_RST(x) ((x) ? (DL_GPIO_setPins(TFT_PORT, TFT_RES_PIN)) : (DL_GPIO_clearPins(TFT_PORT, TFT_RES_PIN)))
#define TFT180_CS(x) ((x) ? (DL_GPIO_setPins(TFT_PORT, TFT_CS_PIN)) : (DL_GPIO_clearPins(TFT_PORT, TFT_CS_PIN)))
#define TFT180_BL(x) ((x) ? (DL_GPIO_setPins(TFT_PORT, TFT_BL_PIN)) : (DL_GPIO_clearPins(TFT_PORT, TFT_BL_PIN)))
const uint8_t ascii_font_8x16[][16]=
{
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // 0
{0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00}, // ! 1
{0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // " 2
{0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00}, // # 3
{0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00}, // $ 4
{0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00}, // % 5
{0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10}, // & 6
{0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // ' 7
{0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00}, // ( 8
{0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00}, // ) 9
{0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00}, // * 10
{0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00}, // + 11
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00}, // , 12
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01}, // - 13
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00}, // . 14
{0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00}, // / 15
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00}, // 0 16
{0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}, // 1 17
{0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00}, // 2 18
{0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00}, // 3 19
{0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00}, // 4 20
{0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00}, // 5 21
{0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00}, // 6 22
{0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00}, // 7 23
{0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00}, // 8 24
{0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00}, // 9 25
{0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00}, // : 26
{0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00}, // ; 27
{0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00}, // < 28
{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00}, // = 29
{0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00}, // > 30
{0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00}, // ? 31
{0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00}, // @ 32
{0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20}, // A 33
{0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00}, // B 34
{0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00}, // C 35
{0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00}, // D 36
{0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00}, // E 37
{0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00}, // F 38
{0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00}, // G 39
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20}, // H 40
{0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}, // I 41
{0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00}, // J 42
{0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00}, // K 43
{0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00}, // L 44
{0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00}, // M 45
{0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00}, // N 46
{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00}, // O 47
{0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00}, // P 48
{0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00}, // Q 49
{0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20}, // R 50
{0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00}, // S 51
{0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00}, // T 52
{0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00}, // U 53
{0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00}, // V 54
{0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00}, // W 55
{0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20}, // X 56
{0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00}, // Y 57
{0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00}, // Z 58
{0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00}, // [ 59
{0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00}, // \ 60
{0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00}, // ] 61
{0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // ^ 62
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80}, // _ 63
{0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, // ` 64
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20}, // a 65
{0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00}, // b 66
{0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00}, // c 67
{0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20}, // d 68
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00}, // e 69
{0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}, // f 70
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00}, // g 71
{0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20}, // h 72
{0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}, // i 73
{0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00}, // j 74
{0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00}, // k 75
{0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00}, // l 76
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F}, // m 77
{0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20}, // n 78
{0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00}, // o 79
{0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00}, // p 80
{0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80}, // q 81
{0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00}, // r 82
{0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00}, // s 83
{0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00}, // t 84
{0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20}, // u 85
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00}, // v 86
{0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00}, // w 87
{0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00}, // x 88
{0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00}, // y 89
{0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00}, // z 90
{0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40}, // { 91
{0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00}, // | 92
{0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00}, // } 93
{0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00} // ~ 94
};
void tft180_write_8bit_data (uint8_t data){
DL_SPI_transmitData8 (TFT_SPI_INST, data);while (DL_SPI_isBusy(TFT_SPI_INST));
}
void tft180_write_16bit_data (uint16_t data){
DL_SPI_transmitData8(TFT_SPI_INST, (uint8_t)((data & 0xFF00) >> 8));while (DL_SPI_isBusy(TFT_SPI_INST));
DL_SPI_transmitData8(TFT_SPI_INST, (uint8_t)(data & 0x00FF));while (DL_SPI_isBusy(TFT_SPI_INST));
}
static void tft180_write_index (uint8_t dat)
{
TFT180_DC(0);
tft180_write_8bit_data(dat);
TFT180_DC(1);
}
static void tft180_set_region (uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2)
{
tft180_write_index(0x2a);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(x1 + 1);
tft180_write_8bit_data(0x0);
tft180_write_8bit_data(x2 + 1);
tft180_write_index(0x2b);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y1 + 2);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(y2 + 2);
tft180_write_index(0x2c);
}
void tft180_clear_color (uint16_t tft180_bgcolor)
{
uint16_t i = tft180_x_max * tft180_y_max;
TFT180_CS(0);
tft180_set_region(0, 0, tft180_x_max - 1, tft180_y_max - 1);
for( ; i!= 0; i --)
{
tft180_write_16bit_data(tft180_bgcolor);
}
TFT180_CS(1);
}
void tft180_init (void)
{
TFT180_RST(0);
system_delay_ms(10);
TFT180_RST(1);
system_delay_ms(120);
TFT180_CS(0);
tft180_write_index(0x11);
system_delay_ms(120);
tft180_write_index(0xB1);
tft180_write_8bit_data(0x01);
tft180_write_8bit_data(0x2C);
tft180_write_8bit_data(0x2D);
tft180_write_index(0xB2);
tft180_write_8bit_data(0x01);
tft180_write_8bit_data(0x2C);
tft180_write_8bit_data(0x2D);
tft180_write_index(0xB3);
tft180_write_8bit_data(0x01);
tft180_write_8bit_data(0x2C);
tft180_write_8bit_data(0x2D);
tft180_write_8bit_data(0x01);
tft180_write_8bit_data(0x2C);
tft180_write_8bit_data(0x2D);
tft180_write_index(0xB4);
tft180_write_8bit_data(0x07);
tft180_write_index(0xC0);
tft180_write_8bit_data(0xA2);
tft180_write_8bit_data(0x02);
tft180_write_8bit_data(0x84);
tft180_write_index(0xC1);
tft180_write_8bit_data(0xC5);
tft180_write_index(0xC2);
tft180_write_8bit_data(0x0A);
tft180_write_8bit_data(0x00);
tft180_write_index(0xC3);
tft180_write_8bit_data(0x8A);
tft180_write_8bit_data(0x2A);
tft180_write_index(0xC4);
tft180_write_8bit_data(0x8A);
tft180_write_8bit_data(0xEE);
tft180_write_index(0xC5);
tft180_write_8bit_data(0x0E);
tft180_write_index(0x36);
tft180_write_8bit_data(1<<7 | 0<<6 | 1<<5);
tft180_write_index(0xe0);
tft180_write_8bit_data(0x0f);
tft180_write_8bit_data(0x1a);
tft180_write_8bit_data(0x0f);
tft180_write_8bit_data(0x18);
tft180_write_8bit_data(0x2f);
tft180_write_8bit_data(0x28);
tft180_write_8bit_data(0x20);
tft180_write_8bit_data(0x22);
tft180_write_8bit_data(0x1f);
tft180_write_8bit_data(0x1b);
tft180_write_8bit_data(0x23);
tft180_write_8bit_data(0x37);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(0x07);
tft180_write_8bit_data(0x02);
tft180_write_8bit_data(0x10);
tft180_write_index(0xe1);
tft180_write_8bit_data(0x0f);
tft180_write_8bit_data(0x1b);
tft180_write_8bit_data(0x0f);
tft180_write_8bit_data(0x17);
tft180_write_8bit_data(0x33);
tft180_write_8bit_data(0x2c);
tft180_write_8bit_data(0x29);
tft180_write_8bit_data(0x2e);
tft180_write_8bit_data(0x30);
tft180_write_8bit_data(0x30);
tft180_write_8bit_data(0x39);
tft180_write_8bit_data(0x3f);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(0x07);
tft180_write_8bit_data(0x03);
tft180_write_8bit_data(0x10);
tft180_write_index(0x2a);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(0x00 + 2);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(0x80 + 2);
tft180_write_index(0x2b);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(0x00 + 3);
tft180_write_8bit_data(0x00);
tft180_write_8bit_data(0x80 + 3);
tft180_write_index(0xF0);
tft180_write_8bit_data(0x01);
tft180_write_index(0xF6);
tft180_write_8bit_data(0x00);
tft180_write_index(0x3A);
tft180_write_8bit_data(0x05);
tft180_write_index(0x29);
TFT180_CS(1);
tft180_clear_color(tft180_bgcolor);
}
void tft180_show_char_color (uint8_t x, uint8_t y, const char dat,uint16_t tft180_bgcolor,uint16_t tft180_pencolor)
{
uint8_t i,j;
TFT180_CS(0);
for(i = 0; i < 8; i ++)
{
tft180_set_region(x + i, y, x + i, y + 15);
uint8_t temp_top = ascii_font_8x16[dat - 32][i];
uint8_t temp_bottom = ascii_font_8x16[dat - 32][i + 8];
for(j = 0; j < 8; j ++)
{
if(temp_top & 0x01)
{
tft180_write_16bit_data(tft180_pencolor);
}
else
{
tft180_write_16bit_data(tft180_bgcolor);
}
temp_top >>= 1;
}
for(j = 0; j < 8; j ++)
{
if(temp_bottom & 0x01)
{
tft180_write_16bit_data(tft180_pencolor);
}
else
{
tft180_write_16bit_data(tft180_bgcolor);
}
temp_bottom >>= 1;
}
}
TFT180_CS(1);
}
int abs(int x){
if (x>=0)return x;
else return -x;
}
void func_float_to_str(char *str, float number, uint8_t point_bit) {
int data_int = 0;
int data_float = 0;
int data_temp[8];
int data_temp_point[6];
uint8_t bit = point_bit;
bool is_decimal_zero = true;
do {
if (NULL == str) {
break;
}
data_int = (int)number;
if (0 > number) {
*str++ = '-';
} else if (0.0 == number) {
*str++ = '0';
break;
}
number = number - data_int;
while (bit--) {
number = number * 10;
}
data_float = (int)number;
// Check if the decimal part is all zeros
if (data_float != 0) {
is_decimal_zero = false;
}
bit = 0;
do {
data_temp[bit++] = data_int % 10;
data_int /= 10;
} while (0 != data_int);
while (0 != bit) {
*str++ = (abs(data_temp[bit - 1]) + 0x30);
bit--;
}
if (point_bit != 0 && !is_decimal_zero) {
bit = 0;
*str++ = '.';
do {
data_temp_point[bit++] = data_float % 10;
data_float /= 10;
point_bit--;
} while (0 != point_bit);
while (0 != bit) {
*str++ = (abs(data_temp_point[bit - 1]) + 0x30);
bit--;
}
}
} while (0);
}
void tft180_show_num_color (uint8_t x, uint8_t y, const float dat, uint8_t num, uint8_t pointnum,uint16_t tft180_bgcolor,uint16_t tft180_pencolor)
{
float dat_temp = dat;
float offset = 1.0;
char data_buffer[17];
for (int i =0; i<17; i++) data_buffer[i] = 0;
for (int i =0; i<num + pointnum + 2; i++) data_buffer[i] = '\0';
if(num < 10)
{
for(; num > 0; num--)
offset *= 10;
dat_temp = dat_temp - ((int)dat_temp / (int)offset) * offset;
}
func_float_to_str(data_buffer, dat_temp, pointnum);
tft180_show_string_color(x, y, data_buffer,tft180_bgcolor,tft180_pencolor);
}
void tft180_show_string_color (uint8_t x, uint8_t y, const char dat[],uint16_t tft180_bgcolor,uint16_t tft180_pencolor)
{
uint8_t j = 0;
while(dat[j] != '\0')
{
tft180_show_char_color(x + 8 * j, y, dat[j],tft180_bgcolor,tft180_pencolor);
j ++;
}
}
2.测试代码
#include ""
int main(void)
{
SYSCFG_DL_init();
tft180_init();
while (1) {
tft180_show_string(0, 0, "Hello,world!");
delay_cycles(16000000);
}
}
配置
一个SPI,命名为TFT_SPI
四个GPIO,端口命名为TFT
四个PIN命名为DC
,RES
,CS
,BL
四个PIN都是Output,其中前两个默认低电平,后两个默认高电平
后话
还请大家鼓励支持
欢迎访问个人网址
项目开源地址