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.
Diff: main.cpp
- Revision:
- 0:d0cd5139479f
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jan 09 11:44:15 2011 +0000 @@ -0,0 +1,113 @@ +#include "mbed.h" + +////////////////////////////////////////////////////////// +//////// For TextLCD on StarBoard Orage //////// +////////////////////////////////////////////////////////// +#include "TextLCD.h" +#ifdef USE_TextLCD_20x4 +//TextLCD lcd( p24, p26, p27, p28, p29, p30, TextLCD::LCD20x4 ); // rs, e, d0-d3 +#else +TextLCD lcd( p24, p26, p27, p28, p29, p30 ); // rs, e, d0-d3 +#endif + +#include "SG12864A.h" +#include "imagedata.h" +SG12864A bwlcd; + +DigitalOut myled1(LED1); +DigitalOut myled2(LED2); +DigitalOut myled3(LED3); +DigitalOut myled4(LED4); + +int main() { + char status; + char s[8]; + myled1 = 0; + myled2 = 0; + myled3 = 0; + myled4 = 0; + lcd.cls(); + lcd.printf("SG12864A test"); + bwlcd.lcd_Init(); + wait(1); + bwlcd.lcd_Clear(0); + wait(1); + while(1) { + int index; + wait(1); + bwlcd.lcd_Clear(0x00); + myled1 = 1; + wait(1); + bwlcd.lcd_Clear(0xFF); + myled1 = 0; + myled2 = 1; + wait(1); + bwlcd.lcd_Clear(0x00); + for(int i=0;i<=64;i++) + { + bwlcd.lcd_Pixel(i,i,1); + bwlcd.lcd_Pixel(64+i,i,1); + } + myled1 = 1; + wait(3); + bwlcd.lcd_Clear(0xFF); + for(int i=0;i<64;i++) + { + bwlcd.lcd_Pixel(64+i,i,0); + } + myled1 = 0; + myled2 = 0; + myled3 = 1; + wait(3); + bwlcd.lcd_Clear(0); + for(int j=0;j<8;j++) + { + for(int i=0;i<16;i++) + { + index = j*16+i+0x20; + bwlcd.lcd_Char(j,i,index); + } + } + myled1 = 1; //0101 + wait(3); + bwlcd.lcd_Clear(0); + for(int j=0;j<8;j++) + { + for(int i=0;i<18;i++) + { + index = j*18+i+0x50; + bwlcd.lcd_Char1(j,i,index); + } + } + myled1=0; + myled2=1; //0101 -> 0110 + wait(3); + bwlcd.lcd_Image(Header2); + myled1=1; //0110 -> 0111 + wait(3); + bwlcd.lcd_Scroll(50); + bwlcd.lcd_Image(Header3); + myled4=1; + myled3=0; + myled2=0; + myled1=0; + wait(3); + bwlcd.lcd_Scroll(100); + wait(1); + bwlcd.lcd_Clear(0); + wait(1); + bwlcd.lcd_Str(0,0,"Hello World!!"); + bwlcd.lcd_Str(2,0,"Graphic LCD test"); + myled1=1; //1000 -> 1001 + wait(1); + bwlcd.lcd_Clear(0); + for(int j=0; j<32; j+=2){ // Box + bwlcd.lcd_Line(j,j, 127-j, j); // display small box + bwlcd.lcd_Line(j,j, j, 63 -j); + bwlcd.lcd_Line(127-j,63-j, 127-j,j); + bwlcd.lcd_Line(128-j,63-j, j,63-j); + wait_ms(500); + } + + } +}