mcufriend 2.4 TFT LCD Shield Lib
Dependents: Nucleo_LCD_mcufriend_test
Fork of 24_TFT_STMNUCLEO by
mcufriend 2.4" TFT LCD Shield
Import program
00001 #include "mbed.h" 00002 #include "ili9328.h" 00003 00004 // prepare the data bus for writing commands and pixel data 00005 BusOut dataBus( D8, D9, D2, D3, D4, D5, D6, D7 ); // 8 pins 00006 // create the lcd instance 00007 ILI9328_LCD lcd( A3, A4, A2,A1, &dataBus, NC, A0); // control pins and data bus 00008 //ILI9328_LCD( CS, RESET, RS, WR, BusOut* DATA_PORT, PinName BL = NC, RD ); 00009 00010 int main() 00011 { 00012 int ii,height,width; 00013 00014 height = lcd.GetHeight(); 00015 width = lcd.GetWidth(); 00016 // initialize display - place it in standard portrait mode and set background to black and 00017 // foreground to white color. 00018 lcd.Initialize(); 00019 00020 // print something on the screen 00021 lcd.Print( "Hello, World!", CENTER, 50); // align text to center horizontally and use starndard colors 00022 00023 wait(2); 00024 00025 lcd.ClearScreen(); 00026 00027 for(ii=0;ii<width;ii++) 00028 { 00029 lcd.DrawLine(0, 0, height, ii,COLOR_GREEN); 00030 ii = ii+10; 00031 } 00032 wait(2); 00033 00034 lcd.DrawCircle(height/4, width/4, 20, COLOR_GREEN); 00035 wait(2); 00036 00037 lcd.FillCircle(height/2, width/2, 50, COLOR_GREEN); 00038 wait(2); 00039 00040 lcd.FillTriangle(height/4, width/4,(height/4)+20, (width/4)+40,(height/4)-20, (width/4)+40, COLOR_RED); 00041 00042 while ( 1 ) { } 00043 }
HW information about the mcufriend LCD Shield
Diff: ssd1289.cpp
- Revision:
- 4:3ac4239f6c9c
- Parent:
- 3:64a5b67d5b51
- Child:
- 10:69571adcfad5
--- a/ssd1289.cpp Sun Dec 02 01:44:23 2012 +0000 +++ b/ssd1289.cpp Sun Dec 02 05:44:52 2012 +0000 @@ -22,21 +22,17 @@ #include "ssd1289.h" #include "helpers.h" -SSD1289LCD::SSD1289LCD( PinName CS, PinName RESET, PinName RS, PinName WR, BusOut* DATA_PORT, PinName RD ) - : LCD( 240, 320, CS, RS ), _lcd_pin_reset( RESET ), _lcd_pin_wr( WR ) +SSD1289_LCD::SSD1289_LCD( PinName CS, PinName RESET, PinName RS, PinName WR, BusOut* DATA_PORT, PinName BL, PinName RD ) + : LCD( 240, 320, CS, RS, RESET ), _lcd_pin_wr( WR ) { _lcd_port = DATA_PORT; - if ( RD != NC ) - _lcd_pin_rd = new DigitalOut( RD ); - else - _lcd_pin_rd = 0; - - SetForeground(); - SetBackground(); - _font.font = 0; + if ( BL != NC ) _lcd_pin_bl = new DigitalOut( BL ); + else _lcd_pin_bl = 0; + if ( RD != NC ) _lcd_pin_rd = new DigitalOut( RD ); + else _lcd_pin_rd = 0; } -void SSD1289LCD::Initialize( orientation_t orientation ) +void SSD1289_LCD::Initialize( orientation_t orientation ) { _orientation = orientation; @@ -46,12 +42,14 @@ wait_ms( 15 ); _lcd_pin_reset = HIGH; _lcd_pin_cs = HIGH; + if ( _lcd_pin_bl != 0 ) + *_lcd_pin_bl = HIGH; if ( _lcd_pin_rd != 0 ) *_lcd_pin_rd = HIGH; _lcd_pin_wr = HIGH; wait_ms( 15 ); - + Activate(); WriteCmdData( 0x00, 0x0001 ); wait_ms( 1 ); WriteCmdData( 0x03, 0xA8A4 ); wait_ms( 1 ); WriteCmdData( 0x0C, 0x0000 ); wait_ms( 1 ); @@ -94,27 +92,38 @@ WriteCmdData( 0x4f, 0x0000 ); wait_ms( 1 ); WriteCmdData( 0x4e, 0x0000 ); wait_ms( 1 ); WriteCmd( 0x22 ); + Deactivate(); } -void SSD1289LCD::WriteCmd( unsigned short cmd ) +void SSD1289_LCD::Sleep( void ) { - _lcd_pin_rs = LOW; - _lcd_pin_cs = LOW; - _lcd_port->write( cmd ); - pulseLow( _lcd_pin_wr ); - _lcd_pin_cs = HIGH; + // TODO: figure out if the SSD1289 controller has sleep and wakeup commands + if ( _lcd_pin_bl != 0 ) + *_lcd_pin_bl = LOW; } -void SSD1289LCD::WriteData( unsigned short data ) +void SSD1289_LCD::WakeUp( void ) +{ + // TODO: figure out if the SSD1289 controller has sleep and wakeup commands + if ( _lcd_pin_bl != 0 ) + *_lcd_pin_bl = HIGH; +} + +void SSD1289_LCD::WriteCmd( unsigned short cmd ) +{ + _lcd_pin_rs = LOW; + _lcd_port->write( cmd ); + pulseLow( _lcd_pin_wr ); +} + +void SSD1289_LCD::WriteData( unsigned short data ) { _lcd_pin_rs = HIGH; - _lcd_pin_cs = LOW; _lcd_port->write( data ); pulseLow( _lcd_pin_wr ); - _lcd_pin_cs = HIGH; } -void SSD1289LCD::SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 ) +void SSD1289_LCD::SetXY( uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2 ) { if ( _orientation == LANDSCAPE ) {