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.
main.cpp@0:d0cd5139479f, 2011-01-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |