This program is for SG12864A(128 x 64 mono-LCD display) with Starboard Orange. Many of source code is referred from below website(in Japanese). (http://www.picfun.com/PIC24H/app24H01.html) Connection between SG12864A and mbed: (these connection are defined in SG12864A.h) pin1(VSS) pin2(VDD) : 5V pin3(V0) : pin4(DI) : p23 pin5(RW): p22 pin6(E): p21 pin7(DB0):p20 pin8(DB1):p19 pin9(DB2):p14 pin10(DB3):p13 pin11(DB4):p12 pin12(DB5):p11 pin13(DB6):p10 pin14(DB7):p9 pin15(CS1):p17 pin16(CS2):p16 pin17(RST):p15 pin18:VOUT pin19:LED Anode pin20:LED Cathode Note: lcd_Line function is not correct(maybe)... Other function is correctly working.

Dependencies:   mbed

Committer:
y_notsu
Date:
Sun Jan 09 11:44:15 2011 +0000
Revision:
0:d0cd5139479f
0.1(first release)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
y_notsu 0:d0cd5139479f 1 #include "mbed.h"
y_notsu 0:d0cd5139479f 2
y_notsu 0:d0cd5139479f 3 //////////////////////////////////////////////////////////
y_notsu 0:d0cd5139479f 4 //////// For TextLCD on StarBoard Orage ////////
y_notsu 0:d0cd5139479f 5 //////////////////////////////////////////////////////////
y_notsu 0:d0cd5139479f 6 #include "TextLCD.h"
y_notsu 0:d0cd5139479f 7 #ifdef USE_TextLCD_20x4
y_notsu 0:d0cd5139479f 8 //TextLCD lcd( p24, p26, p27, p28, p29, p30, TextLCD::LCD20x4 ); // rs, e, d0-d3
y_notsu 0:d0cd5139479f 9 #else
y_notsu 0:d0cd5139479f 10 TextLCD lcd( p24, p26, p27, p28, p29, p30 ); // rs, e, d0-d3
y_notsu 0:d0cd5139479f 11 #endif
y_notsu 0:d0cd5139479f 12
y_notsu 0:d0cd5139479f 13 #include "SG12864A.h"
y_notsu 0:d0cd5139479f 14 #include "imagedata.h"
y_notsu 0:d0cd5139479f 15 SG12864A bwlcd;
y_notsu 0:d0cd5139479f 16
y_notsu 0:d0cd5139479f 17 DigitalOut myled1(LED1);
y_notsu 0:d0cd5139479f 18 DigitalOut myled2(LED2);
y_notsu 0:d0cd5139479f 19 DigitalOut myled3(LED3);
y_notsu 0:d0cd5139479f 20 DigitalOut myled4(LED4);
y_notsu 0:d0cd5139479f 21
y_notsu 0:d0cd5139479f 22 int main() {
y_notsu 0:d0cd5139479f 23 char status;
y_notsu 0:d0cd5139479f 24 char s[8];
y_notsu 0:d0cd5139479f 25 myled1 = 0;
y_notsu 0:d0cd5139479f 26 myled2 = 0;
y_notsu 0:d0cd5139479f 27 myled3 = 0;
y_notsu 0:d0cd5139479f 28 myled4 = 0;
y_notsu 0:d0cd5139479f 29 lcd.cls();
y_notsu 0:d0cd5139479f 30 lcd.printf("SG12864A test");
y_notsu 0:d0cd5139479f 31 bwlcd.lcd_Init();
y_notsu 0:d0cd5139479f 32 wait(1);
y_notsu 0:d0cd5139479f 33 bwlcd.lcd_Clear(0);
y_notsu 0:d0cd5139479f 34 wait(1);
y_notsu 0:d0cd5139479f 35 while(1) {
y_notsu 0:d0cd5139479f 36 int index;
y_notsu 0:d0cd5139479f 37 wait(1);
y_notsu 0:d0cd5139479f 38 bwlcd.lcd_Clear(0x00);
y_notsu 0:d0cd5139479f 39 myled1 = 1;
y_notsu 0:d0cd5139479f 40 wait(1);
y_notsu 0:d0cd5139479f 41 bwlcd.lcd_Clear(0xFF);
y_notsu 0:d0cd5139479f 42 myled1 = 0;
y_notsu 0:d0cd5139479f 43 myled2 = 1;
y_notsu 0:d0cd5139479f 44 wait(1);
y_notsu 0:d0cd5139479f 45 bwlcd.lcd_Clear(0x00);
y_notsu 0:d0cd5139479f 46 for(int i=0;i<=64;i++)
y_notsu 0:d0cd5139479f 47 {
y_notsu 0:d0cd5139479f 48 bwlcd.lcd_Pixel(i,i,1);
y_notsu 0:d0cd5139479f 49 bwlcd.lcd_Pixel(64+i,i,1);
y_notsu 0:d0cd5139479f 50 }
y_notsu 0:d0cd5139479f 51 myled1 = 1;
y_notsu 0:d0cd5139479f 52 wait(3);
y_notsu 0:d0cd5139479f 53 bwlcd.lcd_Clear(0xFF);
y_notsu 0:d0cd5139479f 54 for(int i=0;i<64;i++)
y_notsu 0:d0cd5139479f 55 {
y_notsu 0:d0cd5139479f 56 bwlcd.lcd_Pixel(64+i,i,0);
y_notsu 0:d0cd5139479f 57 }
y_notsu 0:d0cd5139479f 58 myled1 = 0;
y_notsu 0:d0cd5139479f 59 myled2 = 0;
y_notsu 0:d0cd5139479f 60 myled3 = 1;
y_notsu 0:d0cd5139479f 61 wait(3);
y_notsu 0:d0cd5139479f 62 bwlcd.lcd_Clear(0);
y_notsu 0:d0cd5139479f 63 for(int j=0;j<8;j++)
y_notsu 0:d0cd5139479f 64 {
y_notsu 0:d0cd5139479f 65 for(int i=0;i<16;i++)
y_notsu 0:d0cd5139479f 66 {
y_notsu 0:d0cd5139479f 67 index = j*16+i+0x20;
y_notsu 0:d0cd5139479f 68 bwlcd.lcd_Char(j,i,index);
y_notsu 0:d0cd5139479f 69 }
y_notsu 0:d0cd5139479f 70 }
y_notsu 0:d0cd5139479f 71 myled1 = 1; //0101
y_notsu 0:d0cd5139479f 72 wait(3);
y_notsu 0:d0cd5139479f 73 bwlcd.lcd_Clear(0);
y_notsu 0:d0cd5139479f 74 for(int j=0;j<8;j++)
y_notsu 0:d0cd5139479f 75 {
y_notsu 0:d0cd5139479f 76 for(int i=0;i<18;i++)
y_notsu 0:d0cd5139479f 77 {
y_notsu 0:d0cd5139479f 78 index = j*18+i+0x50;
y_notsu 0:d0cd5139479f 79 bwlcd.lcd_Char1(j,i,index);
y_notsu 0:d0cd5139479f 80 }
y_notsu 0:d0cd5139479f 81 }
y_notsu 0:d0cd5139479f 82 myled1=0;
y_notsu 0:d0cd5139479f 83 myled2=1; //0101 -> 0110
y_notsu 0:d0cd5139479f 84 wait(3);
y_notsu 0:d0cd5139479f 85 bwlcd.lcd_Image(Header2);
y_notsu 0:d0cd5139479f 86 myled1=1; //0110 -> 0111
y_notsu 0:d0cd5139479f 87 wait(3);
y_notsu 0:d0cd5139479f 88 bwlcd.lcd_Scroll(50);
y_notsu 0:d0cd5139479f 89 bwlcd.lcd_Image(Header3);
y_notsu 0:d0cd5139479f 90 myled4=1;
y_notsu 0:d0cd5139479f 91 myled3=0;
y_notsu 0:d0cd5139479f 92 myled2=0;
y_notsu 0:d0cd5139479f 93 myled1=0;
y_notsu 0:d0cd5139479f 94 wait(3);
y_notsu 0:d0cd5139479f 95 bwlcd.lcd_Scroll(100);
y_notsu 0:d0cd5139479f 96 wait(1);
y_notsu 0:d0cd5139479f 97 bwlcd.lcd_Clear(0);
y_notsu 0:d0cd5139479f 98 wait(1);
y_notsu 0:d0cd5139479f 99 bwlcd.lcd_Str(0,0,"Hello World!!");
y_notsu 0:d0cd5139479f 100 bwlcd.lcd_Str(2,0,"Graphic LCD test");
y_notsu 0:d0cd5139479f 101 myled1=1; //1000 -> 1001
y_notsu 0:d0cd5139479f 102 wait(1);
y_notsu 0:d0cd5139479f 103 bwlcd.lcd_Clear(0);
y_notsu 0:d0cd5139479f 104 for(int j=0; j<32; j+=2){ // Box
y_notsu 0:d0cd5139479f 105 bwlcd.lcd_Line(j,j, 127-j, j); // display small box
y_notsu 0:d0cd5139479f 106 bwlcd.lcd_Line(j,j, j, 63 -j);
y_notsu 0:d0cd5139479f 107 bwlcd.lcd_Line(127-j,63-j, 127-j,j);
y_notsu 0:d0cd5139479f 108 bwlcd.lcd_Line(128-j,63-j, j,63-j);
y_notsu 0:d0cd5139479f 109 wait_ms(500);
y_notsu 0:d0cd5139479f 110 }
y_notsu 0:d0cd5139479f 111
y_notsu 0:d0cd5139479f 112 }
y_notsu 0:d0cd5139479f 113 }