for Aitendo TFT LCD (M018C7735SPI)

Dependencies:   mbed

original http://mbed.org/users/smultron1977/code/SPI18TFT/

I'd changed for Aitendo TFT LCD(M018C7735SPI). see http://mbed.org/users/masato/notebook/aitendo-graphic-lcd-m018c7735spi/

http://mbed.org/users/smultron1977/code/SPI18TFT/ を使って Aitendo の TFT-LCD (M018C7735SPI)を動かしてみると、ちょっと不具合があったので適当にいじってみました。ついでに FRDM-KL25Z 用に 8bit SPI のみにしたのがこれ。テキストが切れることがあって原因を調べたところ、printf などが 通常の PC と同じく、非同期動作するためでした。必要に応じて flush すれば良いです。こちらのページに動作中の写真とかあります。http://mbed.org/users/masato/notebook/aitendo-graphic-lcd-m018c7735spi/

Committer:
masato
Date:
Sat Feb 13 12:29:21 2016 +0000
Revision:
1:2357c4706f32
Parent:
0:e32728270b5b
add sample image

Who changed what in which revision?

UserRevisionLine numberNew contents of line
masato 1:2357c4706f32 1 #include "stdio.h"
masato 1:2357c4706f32 2 #include "stdlib.h"
masato 1:2357c4706f32 3 #include "math.h"
masato 1:2357c4706f32 4 #include "mbed.h"
masato 1:2357c4706f32 5 #include "ST7735_TFT.h"
masato 1:2357c4706f32 6 #include "string"
masato 1:2357c4706f32 7 #include "Arial12x12.h"
masato 0:e32728270b5b 8
masato 1:2357c4706f32 9 #define SCREEN_WIDTH 160
masato 1:2357c4706f32 10 #define SCREEN_HEIGHT 128
masato 0:e32728270b5b 11
masato 0:e32728270b5b 12 // Antendo M018C7735SPI TFT-LCD
masato 0:e32728270b5b 13 // with mbed LPC1768
masato 0:e32728270b5b 14 // the TFT is connected to SPI pin 5-7, CS is p8, RS is p11, reset is p15
masato 0:e32728270b5b 15 // ST7735_TFT TFT(p5, p6, p7, p8, p11, p15, "TFT"); // mosi, miso, sclk, cs, rs, reset
masato 0:e32728270b5b 16 // with FRDM-KL25Z
masato 1:2357c4706f32 17 ST7735_TFT TFT(PTD2, PTD3, PTD1, PTC11, PTC12, PTC13, "TFT"); // PTA13, PTD5, PTD0, "TFT");
masato 1:2357c4706f32 18 // with FRDM-KL05Z
masato 1:2357c4706f32 19 // ST7735_TFT TFT(D11, D12, D13, D10, D9, D8, "TFT"); // PTA13, PTD5, PTD0, "TFT");
masato 0:e32728270b5b 20 /*
masato 0:e32728270b5b 21 ST7735_TFT( // for FRDM-KL25
masato 0:e32728270b5b 22 PinName mosi = SDA, // p5 9 // PTD2
masato 0:e32728270b5b 23 PinName miso = NC, // p6(NC) // PTD3
masato 0:e32728270b5b 24 PinName sclk = SCK, // p7, 10 // PTD1
masato 0:e32728270b5b 25 PinName cs = CS, // p8 15 // PTA13
masato 0:e32728270b5b 26 PinName rs = A0, // 8 // PTD5
masato 0:e32728270b5b 27 PinName reset = RESET // 17 // PTD0
masato 0:e32728270b5b 28 );
masato 0:e32728270b5b 29 */
masato 0:e32728270b5b 30
masato 0:e32728270b5b 31 #define USE_LED 0
masato 0:e32728270b5b 32
masato 0:e32728270b5b 33 #if USE_LED
masato 0:e32728270b5b 34 DigitalOut myled1(LED1);
masato 0:e32728270b5b 35 #endif
masato 0:e32728270b5b 36
masato 0:e32728270b5b 37 Serial pc(USBTX, USBRX); // tx, rx
masato 0:e32728270b5b 38 Timer t;
masato 0:e32728270b5b 39
masato 0:e32728270b5b 40 extern const unsigned char p1[]; // the mbed logo
masato 1:2357c4706f32 41 extern const unsigned char p2[];
masato 1:2357c4706f32 42 extern "C" void mbed_reset();
masato 0:e32728270b5b 43
masato 0:e32728270b5b 44 int main() {
masato 0:e32728270b5b 45
masato 0:e32728270b5b 46 unsigned int centerx, centery;
masato 0:e32728270b5b 47 int i, j; // tempx, tempy;
masato 0:e32728270b5b 48 // init();
masato 1:2357c4706f32 49
masato 1:2357c4706f32 50 // mbed_reset();
masato 1:2357c4706f32 51 // __disable_irq();
masato 1:2357c4706f32 52
masato 0:e32728270b5b 53 TFT.set_orientation(1);
masato 0:e32728270b5b 54 centerx = TFT.width() >> 1;
masato 0:e32728270b5b 55 centery = TFT.height() >> 1;
masato 0:e32728270b5b 56 TFT.claim(stdout); // send stdout to the TFT display
masato 1:2357c4706f32 57 // TFT.claim(stderr); // send stderr to the TFT display
masato 0:e32728270b5b 58
masato 1:2357c4706f32 59 while (1) {
masato 1:2357c4706f32 60 fprintf(stderr, "START %d %d\r\n", TFT.width(), TFT.height());
masato 0:e32728270b5b 61
masato 0:e32728270b5b 62 TFT.background(White); // set background to black
masato 0:e32728270b5b 63 TFT.foreground(Black); // set chars to white
masato 0:e32728270b5b 64
masato 0:e32728270b5b 65 TFT.cls();
masato 0:e32728270b5b 66 // break;
masato 0:e32728270b5b 67 // TFT.set_font((unsigned char*) Arial24x23); // select the font
masato 0:e32728270b5b 68 TFT.set_font((unsigned char*) Arial12x12);
masato 0:e32728270b5b 69
masato 0:e32728270b5b 70 TFT.Bitmap(centerx-64,centery-24,128,47, (unsigned char*)p1);
masato 0:e32728270b5b 71 // TFT.rect(0, 0, 4, 127, Blue);
masato 0:e32728270b5b 72
masato 0:e32728270b5b 73 for (i = 0; i < SCREEN_HEIGHT; i+=8)
masato 1:2357c4706f32 74 TFT.line(0, i, SCREEN_WIDTH - 1, i, DarkCyan);
masato 0:e32728270b5b 75 for (j = 0; j < SCREEN_WIDTH; j+=8)
masato 1:2357c4706f32 76 TFT.line(j, 0, j, SCREEN_HEIGHT - 1, Orange);
masato 0:e32728270b5b 77
masato 0:e32728270b5b 78 for (i = 0; i < SCREEN_HEIGHT; i++)
masato 0:e32728270b5b 79 // for (j = 0; j < SCREEN_WIDTH; j++)
masato 0:e32728270b5b 80 TFT.pixel(i, i, Green);
masato 0:e32728270b5b 81
masato 0:e32728270b5b 82 // TFT.locate(16,10);
masato 0:e32728270b5b 83 // TFT.set_font((unsigned char*) Arial2x12); // select the font
masato 0:e32728270b5b 84 // printf("Time %f s\n", t.read());
masato 0:e32728270b5b 85
masato 0:e32728270b5b 86 // wait(0.5);
masato 0:e32728270b5b 87 TFT.Bitmap(centerx-64,centery-24,128,47,(unsigned char*)p1);
masato 0:e32728270b5b 88 // TFT.locate(76,100);
masato 0:e32728270b5b 89 // fprintf(stdout, "ss_ABC");
masato 1:2357c4706f32 90 TFT.locate(24,90);
masato 1:2357c4706f32 91 fprintf(stdout, "@n24bass_ABCD"); // fflush(stdout);
masato 1:2357c4706f32 92 wait(0.1);
masato 1:2357c4706f32 93 TFT.locate(70,110);
masato 1:2357c4706f32 94 fprintf(stdout, "@n24bass"); // fflush(stdout);
masato 0:e32728270b5b 95 // TFT.locate(76,100);
masato 0:e32728270b5b 96 // fprintf(stdout, "ss_ABC");
masato 0:e32728270b5b 97 // fprintf(stderr, "END\r\n");
masato 1:2357c4706f32 98 wait(3);
masato 1:2357c4706f32 99 TFT.Bitmap(0,0,160,128, (unsigned char*)p2);
masato 0:e32728270b5b 100 break;
masato 1:2357c4706f32 101 }
masato 0:e32728270b5b 102 #if USE_LED
masato 0:e32728270b5b 103 while (1) {
masato 0:e32728270b5b 104 myled1 = 1;
masato 0:e32728270b5b 105 wait(0.5);
masato 0:e32728270b5b 106 myled1 = 0;
masato 0:e32728270b5b 107 wait(0.5);
masato 0:e32728270b5b 108 }
masato 0:e32728270b5b 109 #endif
masato 0:e32728270b5b 110 while (1)
masato 0:e32728270b5b 111 wait(1);
masato 0:e32728270b5b 112 }