Kenji Arai
/
LPC1114_SPI_LCD_ST7565family_test
Controller chip is ST7565
SPI LCD: AQM1248A (Akizuki) or AD-12864-SPI (antendo)
Diff: main.cpp
- Revision:
- 3:031024851a8d
- Parent:
- 0:9709d02918e1
- Child:
- 4:9d99684c6373
--- a/main.cpp Mon Dec 01 23:20:16 2014 +0000 +++ b/main.cpp Wed Aug 05 05:11:23 2020 +0000 @@ -1,95 +1,114 @@ /* * mbed Application program for the mbed LPC1114FN28 * - * AD-12864-SPI / 128 x 64 dots / Interface: SPI - * http://www.aitendo.com/product/1622 - * - * Copyright (c) 2014 Kenji Arai / JH1PJL - * http://www.page.sannet.ne.jp/kenjia/index.html - * http://mbed.org/users/kenjiArai/ + * Copyright (c) 2014,'20 Kenji Arai / JH1PJL + * http://www7b.biglobe.ne.jp/~kenjia/ + * https://os.mbed.com/users/kenjiArai/ * Created: September 14th, 2014 * Revised: September 21st, 2014 - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, - * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE - * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * Revised: August 5th, 2020 + */ +/* + Tested LCD + 1) AD-12864-SPI / 128 x 64 dots / Interface: SPI + http://www.aitendo.com/product/1622 + + 1)CSI 2)RES 3)A0 4)SCK 5)SDI 6)3.3V 7)GND 8)LED_A + dp9 dp10 dp4 dp6 dp2 +3.3V GND +3.3V(51 ohm) + + 2) AE-AQM1248(AQM1248A-RN-FBW-P) / 128 x 48 dots / Interface: SPI + http://akizukidenshi.com/catalog/g/gK-07007/ + http://akizukidenshi.com/catalog/g/gP-07005/ + + 1)VDD 2)/CS 3)/RES 4)RS 5)SCLK 6)SDI 7)GND + +3.3V dp9 dp10 dp4 dp6 dp2 GND */ -// Include --------------------------------------------------------------------------------------- +// Include -------------------------------------------------------------------- #include "mbed.h" #include "ST7565_SPI_LCD.h" -// Definition ------------------------------------------------------------------------------------ -#define USE_COM // use Communication with PC(UART) +// Definition ----------------------------------------------------------------- +//#define AITENDO +#define AKIZUKI -// Com -#ifdef USE_COM -#define BAUD(x) pcm.baud(x) -#define GETC(x) pcm.getc(x) -#define PUTC(x) pcm.putc(x) -#define PRINTF(...) pcm.printf(__VA_ARGS__) -#define READABLE(x) pcm.readable(x) -#else -#define BAUD(x) {;} -#define GETC(x) {;} -#define PUTC(x) {;} -#define PRINTF(...) {;} -#define READABLE(x) {;} +#if defined(AITENDO) && defined(AKIZUKI) +# error "Please choose one!!" +#elif defined(AITENDO) +# define MAX_Y 64 +# define CONTRAST 0x32 +#elif defined(AKIZUKI) +# define MAX_Y 48 +# define CONTRAST 0x23 #endif -// Object ---------------------------------------------------------------------------------------- +#define Y0 (MAX_Y - 2) +#define Y1 (MAX_Y - 9) +#define Y2 (MAX_Y - 1) + +// Object --------------------------------------------------------------------- // LED DigitalOut myled(dp28); -#ifdef USE_COM // com -Serial pcm(dp16,dp15); // Communication with Host -#endif +BufferedSerial pc(dp16,dp15); // SPI LCD -#if 1 -ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AD12864SPI); // mosi, sck, reset, a0, ncs -#else -SPI spi_lcd(dp2, dp1, dp6); // mosi, miso, sck -ST7565 lcd(spi_lcd, dp10, dp4, dp9, ST7565::AD12864SPI); // spi, reset, a0, ncs -#endif -#if 0 -ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AQM1248A); // mosi, sck, reset, a0, ncs +#if defined(AITENDO) +# if 1 +// mosi, sck, reset, a0, ncs +ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AD12864SPI); +# else +// mosi, miso, sck +SPI spi_lcd(dp2, dp1, dp6); +// spi, reset, a0, ncs +ST7565 lcd(spi_lcd, dp10, dp4, dp9, ST7565::AD12864SPI); +# endif +#elif defined(AKIZUKI) +// mosi, sck, reset, a0, ncs +ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AQM1248A); #endif -// RAM ------------------------------------------------------------------------------------------- - -// ROM / Constant data --------------------------------------------------------------------------- +// RAM ------------------------------------------------------------------------ -// Function prototypes --------------------------------------------------------------------------- +// ROM / Constant data -------------------------------------------------------- -// Function prototypes --------------------------------------------------------------------------- +// Function prototypes -------------------------------------------------------- -//------------------------------------------------------------------------------------------------- +// Function prototypes -------------------------------------------------------- +uint8_t getc(void); +void putc(uint8_t c); +FileHandle *mbed::mbed_override_console(int fd); +extern void print_revision(void); + +//------------------------------------------------------------------------------ // Control Program -//------------------------------------------------------------------------------------------------- -int main() { -uint8_t c; -uint8_t i,k = 0; +//------------------------------------------------------------------------------ +int main() +{ + uint8_t c; + print_revision(); myled = 0; lcd.cls(); - lcd.set_contrast(0x06); + lcd.set_contrast(CONTRAST); lcd.printf("test\r\n" ); - lcd.printf("Kenji Arai / JH1PJL\r\n" ); + lcd.printf("Run on mbed-os6.2.0\r\n" ); lcd.printf("ABCDEFG 1234567890\r\n" ); - lcd.rect(5,30,120,62,1); + //lcd.rect(5,30,120,62,1); + lcd.rect(5,30,120,Y0,1); lcd.circle(5,35,5,1); - lcd.fillcircle(60,55,5,1); - lcd.line(0,30,127,63,1); - PRINTF("\r\nJH1PJL\r\n"); - PRINTF("H:%d W:%d\r\n", lcd.height(), lcd.width()); - while(1){ + //lcd.fillcircle(60,55,5,1); + lcd.fillcircle(60,Y1,5,1); + //lcd.line(0,30,127,63,1); + lcd.line(0,30,127,Y2,1); + printf("Graphic Display example, bin file created on " __DATE__ ".\r\n"); + printf("You can see something on the LCD screen.\r\n"); + printf("H:%d W:%d\r\n", lcd.height(), lcd.width()); + while(true) { #if 1 myled = !myled; - c = GETC(); - PUTC(c); - if (c == '\b'){ + c = getc(); + putc(c); + if (c == '\b') { myled = 0; break; } @@ -97,33 +116,52 @@ #else // check best contrast uint8_t px = 0; - for (px = 0; px < 0x40; px++){ - c = GETC(); - lcd.set_contrast(px); - PRINTF("0x%x\r\n",px); - } + for (px = 0; px < 0x40; px++) { + c = getc(); + lcd.set_contrast(px); + printf("0x%x\r\n",px); + } #endif } - while(1){ + while(true) { + uint8_t i,k = 0; i = 10 - k; k++; - c = GETC(); - lcd.rect(10, i, 100, 50, 1); - c = GETC(); + c = getc(); + lcd.rect(10, i, 100, Y1, 1); + c = getc(); lcd.circle(10,10,i,1); - c = GETC(); + c = getc(); lcd.fillcircle(50,40,i,1); - c = GETC(); - lcd.line(0, 0, 110-i, 60, 1); - c = GETC(); - if (c == '\b'){ + c = getc(); + lcd.line(0, 0, 110-i, Y1, 1); + c = getc(); + if (c == '\b') { myled = 0; break; } } - while(1){ + while(true) { lcd.cls(); lcd.locate(4, 32); - lcd.printf("JH1PJL" ); + lcd.printf("JH1PJL" ); } } + +uint8_t getc(void) +{ + uint8_t bf; + pc.read(&bf,1); + return bf; +} + +void putc(uint8_t c) +{ + uint8_t bf = c; + pc.write(&bf,1); +} + +FileHandle *mbed::mbed_override_console(int fd) +{ + return &pc; +}