赞
踩
备战2024电赛,使用到了TI开发板,型号MSPM0G3507,该开发板除文档外,网上资料稀少。
现在为大家提供spi连接tft180屏幕的代码,以促共同进步。
该代码由逐飞seekfree仓库移植而来,如有侵权请私信联系我删除,谢谢。
代码亲测成功,如有bug欢迎评论区指正。
1.COMMON.h
#ifndef COMMON_H
#define COMMON_H
#include "ti_msp_dl_config.h"
#include "TFT180.h"
#define system_delay_ms(m) delay_cycles((m*32000))
#endif
2.TFT180.h
#ifndef TFT_180_H #define TFT_180_H #include "COMMON.h" 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.TFT180.c
#include "TFT180.h" #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 "COMMON.h"
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,其中前两个默认低电平,后两个默认高电平
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。