for Aitendo TFT LCD (M018C7735SPI)
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/
main.cpp@1:2357c4706f32, 2016-02-13 (annotated)
- 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?
User | Revision | Line number | New 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 | } |