Controller chip is ST7565

Dependencies:   ST7565_SPI_LCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /*
00002  * mbed Application program for the mbed LPC1114FN28
00003  *
00004  * Copyright (c) 2014,'20,'21 Kenji Arai / JH1PJL
00005  *  http://www7b.biglobe.ne.jp/~kenjia/
00006  *  https://os.mbed.com/users/kenjiArai/
00007  *      Created: September 14th, 2014
00008  *      Revised: September 21st, 2014
00009  *      Revised: February  27th, 2021
00010  */
00011 /*
00012     Tested LCD
00013         1) AD-12864-SPI / 128 x 64 dots / Interface: SPI
00014             http://www.aitendo.com/product/1622
00015 
00016             1)CSI  2)RES  3)A0  4)SCK  5)SDI  6)3.3V  7)GND  8)LED_A
00017               dp9    dp10   dp4   dp6    dp2    +3.3V   GND    +3.3V(51 ohm)
00018 
00019         2) AE-AQM1248(AQM1248A-RN-FBW-P) / 128 x 48 dots / Interface: SPI
00020             http://akizukidenshi.com/catalog/g/gK-07007/
00021             http://akizukidenshi.com/catalog/g/gP-07005/
00022 
00023             1)VDD  2)/CS  3)/RES  4)RS  5)SCLK  6)SDI  7)GND
00024               +3.3V  dp9    dp10    dp4   dp6     dp2    GND
00025  */
00026 
00027 //  Include --------------------------------------------------------------------
00028 #include    "mbed.h"
00029 #include    "ST7565_SPI_LCD.h"
00030 #include    "uart_as_stdio.h"
00031 
00032 //  Definition -----------------------------------------------------------------
00033 //#define AITENDO
00034 #define AKIZUKI
00035 
00036 #if defined(AITENDO) && defined(AKIZUKI)
00037 #   error "Please choose one!!"
00038 #elif defined(AITENDO)
00039 #   define MAX_Y        64
00040 #   define CONTRAST     0x32
00041 #elif defined(AKIZUKI)
00042 #   define MAX_Y        48
00043 #   define CONTRAST     0x24
00044 #else
00045 #   error "Please choose AKIZUKI or AITENDO"
00046 #endif
00047 
00048 #define Y0   (MAX_Y - 2)
00049 #define Y1   (MAX_Y - 9)
00050 #define Y2   (MAX_Y - 1)
00051 
00052 //#define ADJ_CONTRAST
00053 
00054 //  Object ---------------------------------------------------------------------
00055 // LED
00056 DigitalOut  myled(dp28);
00057 
00058 // SPI LCD
00059 #if defined(AITENDO)
00060 #   if 1
00061 //              mosi, sck, reset, a0, ncs
00062 ST7565      lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AD12864SPI);
00063 #   else
00064 //                  mosi, miso, sck
00065 SPI         spi_lcd(dp2, dp1, dp6);
00066 //              spi, reset, a0, ncs
00067 ST7565      lcd(spi_lcd, dp10, dp4, dp9, ST7565::AD12864SPI);
00068 #   endif
00069 #elif defined(AKIZUKI)
00070 //              mosi, sck, reset, a0, ncs
00071 ST7565      lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AQM1248A);
00072 #endif
00073 
00074 //  RAM ------------------------------------------------------------------------
00075 
00076 //  ROM / Constant data --------------------------------------------------------
00077 
00078 //  Function prototypes --------------------------------------------------------
00079 
00080 //  Function prototypes --------------------------------------------------------
00081 extern void print_revision(void);
00082 
00083 //------------------------------------------------------------------------------
00084 //  Control Program
00085 //------------------------------------------------------------------------------
00086 int main()
00087 {
00088     uint8_t c;
00089 
00090     print_revision();
00091     myled = 0;
00092     lcd.cls();
00093     lcd.set_contrast(CONTRAST);
00094     lcd.printf("test\r\n" );
00095     lcd.printf("Run on  Mbed-os%d.%d.%d\r\n",
00096                MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
00097     lcd.printf("1234567890 ABCDEFG\r\n" );
00098     //lcd.rect(5,30,120,62,1);
00099     lcd.rect(5,30,120,Y0,1);
00100     lcd.circle(5,35,5,1);
00101     //lcd.fillcircle(60,55,5,1);
00102     lcd.fillcircle(60,Y1,5,1);
00103     //lcd.line(0,30,127,63,1);
00104     lcd.line(0,30,127,Y2,1);
00105     printf("Graphic Display example, bin file created on " __DATE__ ".\r\n");
00106     printf("You can see something on the LCD screen.\r\n");
00107     printf("H:%d W:%d\r\n", lcd.height(), lcd.width());
00108     while(true) {
00109 #ifndef ADJ_CONTRAST
00110         myled = !myled;
00111         c = getc();
00112         putc(c);
00113         if (c == '\b') {    // Enter Back Space
00114             myled = 0;
00115             break;
00116         }
00117         lcd.putc(c);
00118 #else
00119         // check best contrast
00120         printf("Entered contrast adjustment mode.\r\n");
00121         uint8_t px = CONTRAST;
00122         while(true) {
00123             lcd.set_contrast(px);
00124             printf("0x%x\r\n",px);
00125             c = getc();
00126             if ((c == '-') || (c == 'd')) {
00127                 if (px != 0) {
00128                     --px;
00129                 }
00130             } else {
00131                 if (px < 0x40) {
00132                     ++px;
00133                 }
00134             }
00135         }
00136 #endif
00137     }
00138     while(true) {
00139         uint8_t i,k = 0;
00140         i = 10 - k;
00141         k++;
00142         c = getc();
00143         lcd.cls();
00144         lcd.rect(10, i, 100, Y1, 1);
00145         c = getc();
00146         lcd.circle(10,10,i,1);
00147         c = getc();
00148         lcd.fillcircle(50,40,i,1);
00149         c = getc();
00150         lcd.line(0, 0, 110-i, Y1, 1);
00151         c = getc();
00152         if (c == '\b') {    // Enter Back Space
00153             myled = 0;
00154             break;
00155         }
00156     }
00157     lcd.cls();
00158     lcd.locate(10, 10);
00159     lcd.printf("JH1PJL  Mbed-os%d.%d.%d\r\n",
00160                MBED_MAJOR_VERSION, MBED_MINOR_VERSION, MBED_PATCH_VERSION);
00161     while(true) {
00162         ThisThread::sleep_for(100s);
00163     }
00164 }