Controller chip is ST7565

Dependencies:   ST7565_SPI_LCD

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

Committer:
kenjiArai
Date:
Sat Feb 27 01:14:00 2021 +0000
Revision:
5:9b4d9c139186
Parent:
4:9d99684c6373
run on Mbed-os6.8.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 5:9b4d9c139186 4 * Copyright (c) 2014,'20,'21 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 5:9b4d9c139186 9 * Revised: February 27th, 2021
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 5:9b4d9c139186 22
kenjiArai 3:031024851a8d 23 1)VDD 2)/CS 3)/RES 4)RS 5)SCLK 6)SDI 7)GND
kenjiArai 5:9b4d9c139186 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 5:9b4d9c139186 30 #include "uart_as_stdio.h"
kenjiArai 0:9709d02918e1 31
kenjiArai 3:031024851a8d 32 // Definition -----------------------------------------------------------------
kenjiArai 3:031024851a8d 33 //#define AITENDO
kenjiArai 3:031024851a8d 34 #define AKIZUKI
kenjiArai 0:9709d02918e1 35
kenjiArai 3:031024851a8d 36 #if defined(AITENDO) && defined(AKIZUKI)
kenjiArai 3:031024851a8d 37 # error "Please choose one!!"
kenjiArai 3:031024851a8d 38 #elif defined(AITENDO)
kenjiArai 3:031024851a8d 39 # define MAX_Y 64
kenjiArai 3:031024851a8d 40 # define CONTRAST 0x32
kenjiArai 3:031024851a8d 41 #elif defined(AKIZUKI)
kenjiArai 3:031024851a8d 42 # define MAX_Y 48
kenjiArai 5:9b4d9c139186 43 # define CONTRAST 0x24
kenjiArai 5:9b4d9c139186 44 #else
kenjiArai 5:9b4d9c139186 45 # error "Please choose AKIZUKI or AITENDO"
kenjiArai 0:9709d02918e1 46 #endif
kenjiArai 0:9709d02918e1 47
kenjiArai 5:9b4d9c139186 48 #define Y0 (MAX_Y - 2)
kenjiArai 5:9b4d9c139186 49 #define Y1 (MAX_Y - 9)
kenjiArai 5:9b4d9c139186 50 #define Y2 (MAX_Y - 1)
kenjiArai 5:9b4d9c139186 51
kenjiArai 5:9b4d9c139186 52 //#define ADJ_CONTRAST
kenjiArai 3:031024851a8d 53
kenjiArai 3:031024851a8d 54 // Object ---------------------------------------------------------------------
kenjiArai 0:9709d02918e1 55 // LED
kenjiArai 0:9709d02918e1 56 DigitalOut myled(dp28);
kenjiArai 4:9d99684c6373 57
kenjiArai 0:9709d02918e1 58 // SPI LCD
kenjiArai 3:031024851a8d 59 #if defined(AITENDO)
kenjiArai 3:031024851a8d 60 # if 1
kenjiArai 3:031024851a8d 61 // mosi, sck, reset, a0, ncs
kenjiArai 3:031024851a8d 62 ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AD12864SPI);
kenjiArai 3:031024851a8d 63 # else
kenjiArai 3:031024851a8d 64 // mosi, miso, sck
kenjiArai 3:031024851a8d 65 SPI spi_lcd(dp2, dp1, dp6);
kenjiArai 3:031024851a8d 66 // spi, reset, a0, ncs
kenjiArai 3:031024851a8d 67 ST7565 lcd(spi_lcd, dp10, dp4, dp9, ST7565::AD12864SPI);
kenjiArai 3:031024851a8d 68 # endif
kenjiArai 3:031024851a8d 69 #elif defined(AKIZUKI)
kenjiArai 3:031024851a8d 70 // mosi, sck, reset, a0, ncs
kenjiArai 3:031024851a8d 71 ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AQM1248A);
kenjiArai 0:9709d02918e1 72 #endif
kenjiArai 0:9709d02918e1 73
kenjiArai 3:031024851a8d 74 // RAM ------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 75
kenjiArai 3:031024851a8d 76 // ROM / Constant data --------------------------------------------------------
kenjiArai 0:9709d02918e1 77
kenjiArai 3:031024851a8d 78 // Function prototypes --------------------------------------------------------
kenjiArai 0:9709d02918e1 79
kenjiArai 3:031024851a8d 80 // Function prototypes --------------------------------------------------------
kenjiArai 3:031024851a8d 81 extern void print_revision(void);
kenjiArai 3:031024851a8d 82
kenjiArai 3:031024851a8d 83 //------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 84 // Control Program
kenjiArai 3:031024851a8d 85 //------------------------------------------------------------------------------
kenjiArai 3:031024851a8d 86 int main()
kenjiArai 3:031024851a8d 87 {
kenjiArai 3:031024851a8d 88 uint8_t c;
kenjiArai 0:9709d02918e1 89
kenjiArai 3:031024851a8d 90 print_revision();
kenjiArai 0:9709d02918e1 91 myled = 0;
kenjiArai 0:9709d02918e1 92 lcd.cls();
kenjiArai 3:031024851a8d 93 lcd.set_contrast(CONTRAST);
kenjiArai 0:9709d02918e1 94 lcd.printf("test\r\n" );
kenjiArai 5:9b4d9c139186 95 lcd.printf("Run on Mbed-os%d.%d.%d\r\n",
kenjiArai 5:9b4d9c139186 96 MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
kenjiArai 5:9b4d9c139186 97 lcd.printf("1234567890 ABCDEFG\r\n" );
kenjiArai 3:031024851a8d 98 //lcd.rect(5,30,120,62,1);
kenjiArai 3:031024851a8d 99 lcd.rect(5,30,120,Y0,1);
kenjiArai 0:9709d02918e1 100 lcd.circle(5,35,5,1);
kenjiArai 3:031024851a8d 101 //lcd.fillcircle(60,55,5,1);
kenjiArai 3:031024851a8d 102 lcd.fillcircle(60,Y1,5,1);
kenjiArai 3:031024851a8d 103 //lcd.line(0,30,127,63,1);
kenjiArai 3:031024851a8d 104 lcd.line(0,30,127,Y2,1);
kenjiArai 3:031024851a8d 105 printf("Graphic Display example, bin file created on " __DATE__ ".\r\n");
kenjiArai 3:031024851a8d 106 printf("You can see something on the LCD screen.\r\n");
kenjiArai 3:031024851a8d 107 printf("H:%d W:%d\r\n", lcd.height(), lcd.width());
kenjiArai 3:031024851a8d 108 while(true) {
kenjiArai 5:9b4d9c139186 109 #ifndef ADJ_CONTRAST
kenjiArai 0:9709d02918e1 110 myled = !myled;
kenjiArai 3:031024851a8d 111 c = getc();
kenjiArai 3:031024851a8d 112 putc(c);
kenjiArai 5:9b4d9c139186 113 if (c == '\b') { // Enter Back Space
kenjiArai 0:9709d02918e1 114 myled = 0;
kenjiArai 0:9709d02918e1 115 break;
kenjiArai 0:9709d02918e1 116 }
kenjiArai 0:9709d02918e1 117 lcd.putc(c);
kenjiArai 0:9709d02918e1 118 #else
kenjiArai 0:9709d02918e1 119 // check best contrast
kenjiArai 5:9b4d9c139186 120 printf("Entered contrast adjustment mode.\r\n");
kenjiArai 5:9b4d9c139186 121 uint8_t px = CONTRAST;
kenjiArai 5:9b4d9c139186 122 while(true) {
kenjiArai 3:031024851a8d 123 lcd.set_contrast(px);
kenjiArai 3:031024851a8d 124 printf("0x%x\r\n",px);
kenjiArai 5:9b4d9c139186 125 c = getc();
kenjiArai 5:9b4d9c139186 126 if ((c == '-') || (c == 'd')) {
kenjiArai 5:9b4d9c139186 127 if (px != 0) {
kenjiArai 5:9b4d9c139186 128 --px;
kenjiArai 5:9b4d9c139186 129 }
kenjiArai 5:9b4d9c139186 130 } else {
kenjiArai 5:9b4d9c139186 131 if (px < 0x40) {
kenjiArai 5:9b4d9c139186 132 ++px;
kenjiArai 5:9b4d9c139186 133 }
kenjiArai 5:9b4d9c139186 134 }
kenjiArai 3:031024851a8d 135 }
kenjiArai 0:9709d02918e1 136 #endif
kenjiArai 0:9709d02918e1 137 }
kenjiArai 3:031024851a8d 138 while(true) {
kenjiArai 3:031024851a8d 139 uint8_t i,k = 0;
kenjiArai 0:9709d02918e1 140 i = 10 - k;
kenjiArai 0:9709d02918e1 141 k++;
kenjiArai 3:031024851a8d 142 c = getc();
kenjiArai 5:9b4d9c139186 143 lcd.cls();
kenjiArai 3:031024851a8d 144 lcd.rect(10, i, 100, Y1, 1);
kenjiArai 3:031024851a8d 145 c = getc();
kenjiArai 0:9709d02918e1 146 lcd.circle(10,10,i,1);
kenjiArai 3:031024851a8d 147 c = getc();
kenjiArai 0:9709d02918e1 148 lcd.fillcircle(50,40,i,1);
kenjiArai 3:031024851a8d 149 c = getc();
kenjiArai 3:031024851a8d 150 lcd.line(0, 0, 110-i, Y1, 1);
kenjiArai 3:031024851a8d 151 c = getc();
kenjiArai 5:9b4d9c139186 152 if (c == '\b') { // Enter Back Space
kenjiArai 0:9709d02918e1 153 myled = 0;
kenjiArai 0:9709d02918e1 154 break;
kenjiArai 0:9709d02918e1 155 }
kenjiArai 0:9709d02918e1 156 }
kenjiArai 5:9b4d9c139186 157 lcd.cls();
kenjiArai 5:9b4d9c139186 158 lcd.locate(10, 10);
kenjiArai 5:9b4d9c139186 159 lcd.printf("JH1PJL Mbed-os%d.%d.%d\r\n",
kenjiArai 5:9b4d9c139186 160 MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
kenjiArai 3:031024851a8d 161 while(true) {
kenjiArai 5:9b4d9c139186 162 ThisThread::sleep_for(100s);
kenjiArai 0:9709d02918e1 163 }
kenjiArai 0:9709d02918e1 164 }