Controller chip is ST7565

Dependencies:   ST7565_SPI_LCD

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

Committer:
kenjiArai
Date:
Sun Sep 21 02:16:02 2014 +0000
Revision:
0:9709d02918e1
Child:
3:031024851a8d
test program for ST7565 library

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 0:9709d02918e1 4 * AD-12864-SPI / 128 x 64 dots / Interface: SPI
kenjiArai 0:9709d02918e1 5 * http://www.aitendo.com/product/1622
kenjiArai 0:9709d02918e1 6 *
kenjiArai 0:9709d02918e1 7 * Copyright (c) 2014 Kenji Arai / JH1PJL
kenjiArai 0:9709d02918e1 8 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 0:9709d02918e1 9 * http://mbed.org/users/kenjiArai/
kenjiArai 0:9709d02918e1 10 * Created: September 14th, 2014
kenjiArai 0:9709d02918e1 11 * Revised: September 21st, 2014
kenjiArai 0:9709d02918e1 12 *
kenjiArai 0:9709d02918e1 13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
kenjiArai 0:9709d02918e1 14 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
kenjiArai 0:9709d02918e1 15 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 0:9709d02918e1 16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 0:9709d02918e1 17 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 0:9709d02918e1 18 */
kenjiArai 0:9709d02918e1 19
kenjiArai 0:9709d02918e1 20 // Include ---------------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 21 #include "mbed.h"
kenjiArai 0:9709d02918e1 22 #include "ST7565_SPI_LCD.h"
kenjiArai 0:9709d02918e1 23
kenjiArai 0:9709d02918e1 24 // Definition ------------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 25 #define USE_COM // use Communication with PC(UART)
kenjiArai 0:9709d02918e1 26
kenjiArai 0:9709d02918e1 27 // Com
kenjiArai 0:9709d02918e1 28 #ifdef USE_COM
kenjiArai 0:9709d02918e1 29 #define BAUD(x) pcm.baud(x)
kenjiArai 0:9709d02918e1 30 #define GETC(x) pcm.getc(x)
kenjiArai 0:9709d02918e1 31 #define PUTC(x) pcm.putc(x)
kenjiArai 0:9709d02918e1 32 #define PRINTF(...) pcm.printf(__VA_ARGS__)
kenjiArai 0:9709d02918e1 33 #define READABLE(x) pcm.readable(x)
kenjiArai 0:9709d02918e1 34 #else
kenjiArai 0:9709d02918e1 35 #define BAUD(x) {;}
kenjiArai 0:9709d02918e1 36 #define GETC(x) {;}
kenjiArai 0:9709d02918e1 37 #define PUTC(x) {;}
kenjiArai 0:9709d02918e1 38 #define PRINTF(...) {;}
kenjiArai 0:9709d02918e1 39 #define READABLE(x) {;}
kenjiArai 0:9709d02918e1 40 #endif
kenjiArai 0:9709d02918e1 41
kenjiArai 0:9709d02918e1 42 // Object ----------------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 43 // LED
kenjiArai 0:9709d02918e1 44 DigitalOut myled(dp28);
kenjiArai 0:9709d02918e1 45 #ifdef USE_COM
kenjiArai 0:9709d02918e1 46 // com
kenjiArai 0:9709d02918e1 47 Serial pcm(dp16,dp15); // Communication with Host
kenjiArai 0:9709d02918e1 48 #endif
kenjiArai 0:9709d02918e1 49 // SPI LCD
kenjiArai 0:9709d02918e1 50 #if 1
kenjiArai 0:9709d02918e1 51 ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AD12864SPI); // mosi, sck, reset, a0, ncs
kenjiArai 0:9709d02918e1 52 #else
kenjiArai 0:9709d02918e1 53 SPI spi_lcd(dp2, dp1, dp6); // mosi, miso, sck
kenjiArai 0:9709d02918e1 54 ST7565 lcd(spi_lcd, dp10, dp4, dp9, ST7565::AD12864SPI); // spi, reset, a0, ncs
kenjiArai 0:9709d02918e1 55 #endif
kenjiArai 0:9709d02918e1 56 #if 0
kenjiArai 0:9709d02918e1 57 ST7565 lcd(dp2, dp6, dp10, dp4, dp9, ST7565::AQM1248A); // mosi, sck, reset, a0, ncs
kenjiArai 0:9709d02918e1 58 #endif
kenjiArai 0:9709d02918e1 59
kenjiArai 0:9709d02918e1 60 // RAM -------------------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 61
kenjiArai 0:9709d02918e1 62 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 63
kenjiArai 0:9709d02918e1 64 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 65
kenjiArai 0:9709d02918e1 66 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 67
kenjiArai 0:9709d02918e1 68 //-------------------------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 69 // Control Program
kenjiArai 0:9709d02918e1 70 //-------------------------------------------------------------------------------------------------
kenjiArai 0:9709d02918e1 71 int main() {
kenjiArai 0:9709d02918e1 72 uint8_t c;
kenjiArai 0:9709d02918e1 73 uint8_t i,k = 0;
kenjiArai 0:9709d02918e1 74
kenjiArai 0:9709d02918e1 75 myled = 0;
kenjiArai 0:9709d02918e1 76 lcd.cls();
kenjiArai 0:9709d02918e1 77 lcd.set_contrast(0x06);
kenjiArai 0:9709d02918e1 78 lcd.printf("test\r\n" );
kenjiArai 0:9709d02918e1 79 lcd.printf("Kenji Arai / JH1PJL\r\n" );
kenjiArai 0:9709d02918e1 80 lcd.printf("ABCDEFG 1234567890\r\n" );
kenjiArai 0:9709d02918e1 81 lcd.rect(5,30,120,62,1);
kenjiArai 0:9709d02918e1 82 lcd.circle(5,35,5,1);
kenjiArai 0:9709d02918e1 83 lcd.fillcircle(60,55,5,1);
kenjiArai 0:9709d02918e1 84 lcd.line(0,30,127,63,1);
kenjiArai 0:9709d02918e1 85 PRINTF("\r\nJH1PJL\r\n");
kenjiArai 0:9709d02918e1 86 PRINTF("H:%d W:%d\r\n", lcd.height(), lcd.width());
kenjiArai 0:9709d02918e1 87 while(1){
kenjiArai 0:9709d02918e1 88 #if 1
kenjiArai 0:9709d02918e1 89 myled = !myled;
kenjiArai 0:9709d02918e1 90 c = GETC();
kenjiArai 0:9709d02918e1 91 PUTC(c);
kenjiArai 0:9709d02918e1 92 if (c == '\b'){
kenjiArai 0:9709d02918e1 93 myled = 0;
kenjiArai 0:9709d02918e1 94 break;
kenjiArai 0:9709d02918e1 95 }
kenjiArai 0:9709d02918e1 96 lcd.putc(c);
kenjiArai 0:9709d02918e1 97 #else
kenjiArai 0:9709d02918e1 98 // check best contrast
kenjiArai 0:9709d02918e1 99 uint8_t px = 0;
kenjiArai 0:9709d02918e1 100 for (px = 0; px < 0x40; px++){
kenjiArai 0:9709d02918e1 101 c = GETC();
kenjiArai 0:9709d02918e1 102 lcd.set_contrast(px);
kenjiArai 0:9709d02918e1 103 PRINTF("0x%x\r\n",px);
kenjiArai 0:9709d02918e1 104 }
kenjiArai 0:9709d02918e1 105 #endif
kenjiArai 0:9709d02918e1 106 }
kenjiArai 0:9709d02918e1 107 while(1){
kenjiArai 0:9709d02918e1 108 i = 10 - k;
kenjiArai 0:9709d02918e1 109 k++;
kenjiArai 0:9709d02918e1 110 c = GETC();
kenjiArai 0:9709d02918e1 111 lcd.rect(10, i, 100, 50, 1);
kenjiArai 0:9709d02918e1 112 c = GETC();
kenjiArai 0:9709d02918e1 113 lcd.circle(10,10,i,1);
kenjiArai 0:9709d02918e1 114 c = GETC();
kenjiArai 0:9709d02918e1 115 lcd.fillcircle(50,40,i,1);
kenjiArai 0:9709d02918e1 116 c = GETC();
kenjiArai 0:9709d02918e1 117 lcd.line(0, 0, 110-i, 60, 1);
kenjiArai 0:9709d02918e1 118 c = GETC();
kenjiArai 0:9709d02918e1 119 if (c == '\b'){
kenjiArai 0:9709d02918e1 120 myled = 0;
kenjiArai 0:9709d02918e1 121 break;
kenjiArai 0:9709d02918e1 122 }
kenjiArai 0:9709d02918e1 123 }
kenjiArai 0:9709d02918e1 124 while(1){
kenjiArai 0:9709d02918e1 125 lcd.cls();
kenjiArai 0:9709d02918e1 126 lcd.locate(4, 32);
kenjiArai 0:9709d02918e1 127 lcd.printf("JH1PJL" );
kenjiArai 0:9709d02918e1 128 }
kenjiArai 0:9709d02918e1 129 }