Controller chip is ST7565

Dependencies:   ST7565_SPI_LCD

SPI LCD: AQM1248A (Akizuki) or AD-12864-SPI (antendo)

Committer:
kenjiArai
Date:
Wed Aug 05 05:11:23 2020 +0000
Revision:
3:031024851a8d
Parent:
0:9709d02918e1
Child:
4:9d99684c6373
changed printf() and lib. for running on mbed-os6.2.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 0:9709d02918e1 1 /*
kenjiArai 0:9709d02918e1 2 * mbed Application program for the mbed LPC1114FN28
kenjiArai 0:9709d02918e1 3 *
kenjiArai 3:031024851a8d 4 * Copyright (c) 2014,'20 Kenji Arai / JH1PJL
kenjiArai 3:031024851a8d 5 * http://www7b.biglobe.ne.jp/~kenjia/
kenjiArai 3:031024851a8d 6 * https://os.mbed.com/users/kenjiArai/
kenjiArai 0:9709d02918e1 7 * Created: September 14th, 2014
kenjiArai 0:9709d02918e1 8 * Revised: September 21st, 2014
kenjiArai 3:031024851a8d 9 * Revised: August 5th, 2020
kenjiArai 3:031024851a8d 10 */
kenjiArai 3:031024851a8d 11 /*
kenjiArai 3:031024851a8d 12 Tested LCD
kenjiArai 3:031024851a8d 13 1) AD-12864-SPI / 128 x 64 dots / Interface: SPI
kenjiArai 3:031024851a8d 14 http://www.aitendo.com/product/1622
kenjiArai 3:031024851a8d 15
kenjiArai 3:031024851a8d 16 1)CSI 2)RES 3)A0 4)SCK 5)SDI 6)3.3V 7)GND 8)LED_A
kenjiArai 3:031024851a8d 17 dp9 dp10 dp4 dp6 dp2 +3.3V GND +3.3V(51 ohm)
kenjiArai 3:031024851a8d 18
kenjiArai 3:031024851a8d 19 2) AE-AQM1248(AQM1248A-RN-FBW-P) / 128 x 48 dots / Interface: SPI
kenjiArai 3:031024851a8d 20 http://akizukidenshi.com/catalog/g/gK-07007/
kenjiArai 3:031024851a8d 21 http://akizukidenshi.com/catalog/g/gP-07005/
kenjiArai 3:031024851a8d 22
kenjiArai 3:031024851a8d 23 1)VDD 2)/CS 3)/RES 4)RS 5)SCLK 6)SDI 7)GND
kenjiArai 3:031024851a8d 24 +3.3V dp9 dp10 dp4 dp6 dp2 GND
kenjiArai 0:9709d02918e1 25 */
kenjiArai 0:9709d02918e1 26
kenjiArai 3:031024851a8d 27 // Include --------------------------------------------------------------------
kenjiArai 0:9709d02918e1 28 #include "mbed.h"
kenjiArai 0:9709d02918e1 29 #include "ST7565_SPI_LCD.h"
kenjiArai 0:9709d02918e1 30
kenjiArai 3:031024851a8d 31 // Definition -----------------------------------------------------------------
kenjiArai 3:031024851a8d 32 //#define AITENDO
kenjiArai 3:031024851a8d 33 #define AKIZUKI
kenjiArai 0:9709d02918e1 34
kenjiArai 3:031024851a8d 35 #if defined(AITENDO) && defined(AKIZUKI)
kenjiArai 3:031024851a8d 36 # error "Please choose one!!"
kenjiArai 3:031024851a8d 37 #elif defined(AITENDO)
kenjiArai 3:031024851a8d 38 # define MAX_Y 64
kenjiArai 3:031024851a8d 39 # define CONTRAST 0x32
kenjiArai 3:031024851a8d 40 #elif defined(AKIZUKI)
kenjiArai 3:031024851a8d 41 # define MAX_Y 48
kenjiArai 3:031024851a8d 42 # define CONTRAST 0x23
kenjiArai 0:9709d02918e1 43 #endif
kenjiArai 0:9709d02918e1 44
kenjiArai 3:031024851a8d 45 #define Y0 (MAX_Y - 2)
kenjiArai 3:031024851a8d 46 #define Y1 (MAX_Y - 9)
kenjiArai 3:031024851a8d 47 #define Y2 (MAX_Y - 1)
kenjiArai 3:031024851a8d 48
kenjiArai 3:031024851a8d 49 // Object ---------------------------------------------------------------------
kenjiArai 0:9709d02918e1 50 // LED
kenjiArai 0:9709d02918e1 51 DigitalOut myled(dp28);
kenjiArai 0:9709d02918e1 52 // com
kenjiArai 3:031024851a8d 53 BufferedSerial pc(dp16,dp15);
kenjiArai 0:9709d02918e1 54 // SPI LCD
kenjiArai 3:031024851a8d 55 #if defined(AITENDO)
kenjiArai 3:031024851a8d 56 # if 1
kenjiArai 3:031024851a8d 57 // mosi, sck, reset, a0, ncs
kenjiArai 3:031024851a8d 58 ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AD12864SPI);
kenjiArai 3:031024851a8d 59 # else
kenjiArai 3:031024851a8d 60 // mosi, miso, sck
kenjiArai 3:031024851a8d 61 SPI spi_lcd(dp2, dp1, dp6);
kenjiArai 3:031024851a8d 62 // spi, reset, a0, ncs
kenjiArai 3:031024851a8d 63 ST7565 lcd(spi_lcd, dp10, dp4, dp9, ST7565::AD12864SPI);
kenjiArai 3:031024851a8d 64 # endif
kenjiArai 3:031024851a8d 65 #elif defined(AKIZUKI)
kenjiArai 3:031024851a8d 66 // mosi, sck, reset, a0, ncs
kenjiArai 3:031024851a8d 67 ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AQM1248A);
kenjiArai 0:9709d02918e1 68 #endif
kenjiArai 0:9709d02918e1 69
kenjiArai 3:031024851a8d 70 // RAM ------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 71
kenjiArai 3:031024851a8d 72 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:9709d02918e1 73
kenjiArai 3:031024851a8d 74 // Function prototypes --------------------------------------------------------
kenjiArai 0:9709d02918e1 75
kenjiArai 3:031024851a8d 76 // Function prototypes --------------------------------------------------------
kenjiArai 3:031024851a8d 77 uint8_t getc(void);
kenjiArai 3:031024851a8d 78 void putc(uint8_t c);
kenjiArai 3:031024851a8d 79 FileHandle *mbed::mbed_override_console(int fd);
kenjiArai 3:031024851a8d 80 extern void print_revision(void);
kenjiArai 3:031024851a8d 81
kenjiArai 3:031024851a8d 82 //------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 83 // Control Program
kenjiArai 3:031024851a8d 84 //------------------------------------------------------------------------------
kenjiArai 3:031024851a8d 85 int main()
kenjiArai 3:031024851a8d 86 {
kenjiArai 3:031024851a8d 87 uint8_t c;
kenjiArai 0:9709d02918e1 88
kenjiArai 3:031024851a8d 89 print_revision();
kenjiArai 0:9709d02918e1 90 myled = 0;
kenjiArai 0:9709d02918e1 91 lcd.cls();
kenjiArai 3:031024851a8d 92 lcd.set_contrast(CONTRAST);
kenjiArai 0:9709d02918e1 93 lcd.printf("test\r\n" );
kenjiArai 3:031024851a8d 94 lcd.printf("Run on mbed-os6.2.0\r\n" );
kenjiArai 0:9709d02918e1 95 lcd.printf("ABCDEFG 1234567890\r\n" );
kenjiArai 3:031024851a8d 96 //lcd.rect(5,30,120,62,1);
kenjiArai 3:031024851a8d 97 lcd.rect(5,30,120,Y0,1);
kenjiArai 0:9709d02918e1 98 lcd.circle(5,35,5,1);
kenjiArai 3:031024851a8d 99 //lcd.fillcircle(60,55,5,1);
kenjiArai 3:031024851a8d 100 lcd.fillcircle(60,Y1,5,1);
kenjiArai 3:031024851a8d 101 //lcd.line(0,30,127,63,1);
kenjiArai 3:031024851a8d 102 lcd.line(0,30,127,Y2,1);
kenjiArai 3:031024851a8d 103 printf("Graphic Display example, bin file created on " __DATE__ ".\r\n");
kenjiArai 3:031024851a8d 104 printf("You can see something on the LCD screen.\r\n");
kenjiArai 3:031024851a8d 105 printf("H:%d W:%d\r\n", lcd.height(), lcd.width());
kenjiArai 3:031024851a8d 106 while(true) {
kenjiArai 0:9709d02918e1 107 #if 1
kenjiArai 0:9709d02918e1 108 myled = !myled;
kenjiArai 3:031024851a8d 109 c = getc();
kenjiArai 3:031024851a8d 110 putc(c);
kenjiArai 3:031024851a8d 111 if (c == '\b') {
kenjiArai 0:9709d02918e1 112 myled = 0;
kenjiArai 0:9709d02918e1 113 break;
kenjiArai 0:9709d02918e1 114 }
kenjiArai 0:9709d02918e1 115 lcd.putc(c);
kenjiArai 0:9709d02918e1 116 #else
kenjiArai 0:9709d02918e1 117 // check best contrast
kenjiArai 0:9709d02918e1 118 uint8_t px = 0;
kenjiArai 3:031024851a8d 119 for (px = 0; px < 0x40; px++) {
kenjiArai 3:031024851a8d 120 c = getc();
kenjiArai 3:031024851a8d 121 lcd.set_contrast(px);
kenjiArai 3:031024851a8d 122 printf("0x%x\r\n",px);
kenjiArai 3:031024851a8d 123 }
kenjiArai 0:9709d02918e1 124 #endif
kenjiArai 0:9709d02918e1 125 }
kenjiArai 3:031024851a8d 126 while(true) {
kenjiArai 3:031024851a8d 127 uint8_t i,k = 0;
kenjiArai 0:9709d02918e1 128 i = 10 - k;
kenjiArai 0:9709d02918e1 129 k++;
kenjiArai 3:031024851a8d 130 c = getc();
kenjiArai 3:031024851a8d 131 lcd.rect(10, i, 100, Y1, 1);
kenjiArai 3:031024851a8d 132 c = getc();
kenjiArai 0:9709d02918e1 133 lcd.circle(10,10,i,1);
kenjiArai 3:031024851a8d 134 c = getc();
kenjiArai 0:9709d02918e1 135 lcd.fillcircle(50,40,i,1);
kenjiArai 3:031024851a8d 136 c = getc();
kenjiArai 3:031024851a8d 137 lcd.line(0, 0, 110-i, Y1, 1);
kenjiArai 3:031024851a8d 138 c = getc();
kenjiArai 3:031024851a8d 139 if (c == '\b') {
kenjiArai 0:9709d02918e1 140 myled = 0;
kenjiArai 0:9709d02918e1 141 break;
kenjiArai 0:9709d02918e1 142 }
kenjiArai 0:9709d02918e1 143 }
kenjiArai 3:031024851a8d 144 while(true) {
kenjiArai 0:9709d02918e1 145 lcd.cls();
kenjiArai 0:9709d02918e1 146 lcd.locate(4, 32);
kenjiArai 3:031024851a8d 147 lcd.printf("JH1PJL" );
kenjiArai 0:9709d02918e1 148 }
kenjiArai 0:9709d02918e1 149 }
kenjiArai 3:031024851a8d 150
kenjiArai 3:031024851a8d 151 uint8_t getc(void)
kenjiArai 3:031024851a8d 152 {
kenjiArai 3:031024851a8d 153 uint8_t bf;
kenjiArai 3:031024851a8d 154 pc.read(&bf,1);
kenjiArai 3:031024851a8d 155 return bf;
kenjiArai 3:031024851a8d 156 }
kenjiArai 3:031024851a8d 157
kenjiArai 3:031024851a8d 158 void putc(uint8_t c)
kenjiArai 3:031024851a8d 159 {
kenjiArai 3:031024851a8d 160 uint8_t bf = c;
kenjiArai 3:031024851a8d 161 pc.write(&bf,1);
kenjiArai 3:031024851a8d 162 }
kenjiArai 3:031024851a8d 163
kenjiArai 3:031024851a8d 164 FileHandle *mbed::mbed_override_console(int fd)
kenjiArai 3:031024851a8d 165 {
kenjiArai 3:031024851a8d 166 return &pc;
kenjiArai 3:031024851a8d 167 }