for
Dependents: LV_FGSE_Controller_Interface
Diff: TextLCD.cpp
- Revision:
- 25:6162b31128c9
- Parent:
- 24:fb3399713710
- Child:
- 26:bd897a001012
diff -r fb3399713710 -r 6162b31128c9 TextLCD.cpp --- a/TextLCD.cpp Sat May 10 13:50:25 2014 +0000 +++ b/TextLCD.cpp Sat May 10 21:34:51 2014 +0000 @@ -8,6 +8,7 @@ * 2013, v06: WH, Added support for devices that use internal DC/DC converters * 2013, v07: WH, Added support for backlight and include portdefinitions for LCD2004 Module from DFROBOT * 2014, v08: WH, Refactored in Base and Derived Classes to deal with mbed lib change regarding 'NC' defined pins + * 2014, v09: WH/EO, Added Class for Native SPI controllers such as ST7032 * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -90,8 +91,7 @@ wait_us(40); // most instructions take 40us // Display is now in 4-bit mode - - + // Device specific initialisations for DC/DC converter to generate VLCD or VLED switch (_ctrl) { case ST7036: @@ -108,37 +108,36 @@ _writeByte( 0x78 ); // Set Contrast C3, C2, C1, C0 wait_ms(30); // > 26,3ms _writeByte( 0x28 ); // Return to Instruction table 0 - wait_ms(50); - + wait_ms(50); break; + case ST7032: - _writeByte( 0x1c ); //Internal OSC frequency adjustment 183HZ bias will be 1/4 + _writeByte( 0x1c ); //Internal OSC frequency adjustment 183HZ, bias will be 1/4 wait_us(30); _writeByte( 0x73 ); //Contrast control low byte wait_us(30); - _writeByte( 0x57 ); //booster circuit is turn on. /ICON display off. /Contrast control high byte + _writeByte( 0x57 ); //booster circuit is turn on. /ICON display off. /Contrast control high byte wait_us(30); - _writeByte( 0x6c ); //Follower control + _writeByte( 0x6c ); //Follower control wait_us(50); _writeByte( 0x0c ); //DISPLAY ON wait_us(30); break; + case WS0010: // WS0010 OLED controller: Initialise DC/DC Voltage converter for LEDs // Note: supports 1 or 2 lines (and 16x100 graphics) // supports 4 fonts (English/Japanese (default), Western European-I, English/Russian, Western European-II) - // Cursor/Disp shift set 0001 SC RL 0 0 // // Mode en Power set 0001 GC PWR 1 1 // GC = 0 (Graph Mode=1, Char Mode=0) // PWR = (DC/DC On/Off) - //_writeCommand(0x13); // DC/DC off - + //_writeCommand(0x13); // DC/DC off _writeCommand(0x17); // DC/DC on + wait_ms(10); - break; default: @@ -1114,24 +1113,25 @@ } } - //---------- End TextLCD_SPI ------------ -//--------- Start TextLCD_NativeSPI ----------- +//--------- Start TextLCD_SPI_N --------- - /** Create a TextLCD interface using an SPI 74595 portexpander + /** Create a TextLCD interface using a controller with a native SPI interface * * @param spi SPI Bus * @param cs chip select pin (active low) + * @param rs Instruction/data control line * @param type Sets the panel size/addressing mode (default = LCD16x2) - * @param ctrl LCD controller (default = HD44780) - */ -TextLCD_NativeSPI::TextLCD_NativeSPI(SPI *spi, PinName cs, PinName rs, LCDType type, PinName bl, LCDCtrl ctrl) : - TextLCD_Base(type, ctrl), - _spi(spi), - _cs(cs), - _rs(rs) { + * @param bl Backlight control line (optional, default = NC) + * @param ctrl LCD controller (default = ST7032) + */ +TextLCD_SPI_N::TextLCD_SPI_N(SPI *spi, PinName cs, PinName rs, LCDType type, PinName bl, LCDCtrl ctrl) : + TextLCD_Base(type, ctrl), + _spi(spi), + _cs(cs), + _rs(rs) { // Setup the spi for 8 bit data, low steady state clock, // rising edge capture, with a 500KHz or 1MHz clock rate @@ -1153,28 +1153,28 @@ _init(); } -TextLCD_NativeSPI::~TextLCD_NativeSPI() { +TextLCD_SPI_N::~TextLCD_SPI_N() { if (_bl != NULL) {delete _bl;} // BL pin } // Not used in this mode -void TextLCD_NativeSPI::_setEnable(bool value) { +void TextLCD_SPI_N::_setEnable(bool value) { } // Set RS pin // Used for mbed pins, I2C bus expander or SPI shiftregister -void TextLCD_NativeSPI::_setRS(bool value) { +void TextLCD_SPI_N::_setRS(bool value) { _rs = value; } // Set BL pin -void TextLCD_NativeSPI::_setBL(bool value) { +void TextLCD_SPI_N::_setBL(bool value) { if (_bl) _bl->write(value); } // Write a byte using SPI -void TextLCD_NativeSPI::_writeByte(int value) { +void TextLCD_SPI_N::_writeByte(int value) { _cs = 0; wait_us(1); _spi->write(value); @@ -1182,13 +1182,12 @@ _cs = 1; } - // Not used in this mode -void TextLCD_NativeSPI::_setData(int value) { +void TextLCD_SPI_N::_setData(int value) { } -//---------- End TextLCD_NativeSPI ------------ +//-------- End TextLCD_SPI_N ------------