Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: DmTftSsd2119.cpp
- Revision:
- 15:70127e08ed27
- Parent:
- 14:2db7065edbec
--- a/DmTftSsd2119.cpp Mon Oct 12 08:35:35 2015 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,251 +0,0 @@
-/**********************************************************************************************
- Copyright (c) 2014 DisplayModule. All rights reserved.
-
- Redistribution and use of this source code, part of this source code or any compiled binary
- based on this source code is permitted as long as the above copyright notice and following
- disclaimer is retained.
-
- DISCLAIMER:
- THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. DISPLAYMODULE ASSUMES
- NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE.
- ********************************************************************************************/
-
-//Tested on NUCLEO-F401RE, LPCXpresso11U68, LPCXpresso824-MAX platform.
-
-#include "DmTftSsd2119.h"
-#if defined (DM_TOOLCHAIN_ARDUINO)
-DmTftSsd2119::DmTftSsd2119(uint8_t cs, uint8_t dc)
-:DmTftBase(320, 240)
-#elif defined (DM_TOOLCHAIN_MBED)
-DmTftSsd2119::DmTftSsd2119(PinName cs, PinName dc, PinName mosi, PinName miso, PinName clk)
-:DmTftBase(320, 240), spi(mosi, miso, clk)
-#endif
-{
- _cs = cs;
- _dc = dc;
-}
-
-DmTftSsd2119::~DmTftSsd2119() {
-#if defined (DM_TOOLCHAIN_MBED)
-delete _pinCS;
-delete _pinDC;
-
-_pinCS = NULL;
-_pinDC = NULL;
-#endif
-}
-
-void DmTftSsd2119::writeBus(uint8_t data) {
-#if defined (DM_TOOLCHAIN_ARDUINO)
- SPCR = _spiSettings; // SPI Control Register
- SPDR = data; // SPI Data Register
- while(!(SPSR & _BV(SPIF))); // SPI Status Register Wait for transmission to finish
-#elif defined (DM_TOOLCHAIN_MBED)
- spi.write(data);
-#endif
-}
-
-void DmTftSsd2119::sendCommand(uint8_t index) {
- cbi(_pinDC, _bitmaskDC);
- writeBus(0x00);
- writeBus(index);
-}
-
-void DmTftSsd2119::send8BitData(uint8_t data) {
- sbi(_pinDC, _bitmaskDC);
- writeBus(data);
-}
-
-void DmTftSsd2119::sendData(uint16_t data) {
- uint8_t dh = data>>8;
- uint8_t dl = data&0xff;
-
- sbi(_pinDC, _bitmaskDC);
- writeBus(dh);
- writeBus(dl);
-}
-
-void DmTftSsd2119::setAddress(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
- // Set Start and End Vertical RAM address position
- uint16_t verticalStartEndAddress;
- verticalStartEndAddress = y0&0xff; // Start vertical RAM address
- verticalStartEndAddress += (y1&0xff)<<8; // End vertical RAM address
-
- sendCommand(0x44);
- sendData(verticalStartEndAddress);
-
- sendCommand(0x45); // Set Start Horizontal RAM address position
- sendData(x0);
-
- sendCommand(0x46); // Set End Horizontal RAM address position
- sendData(x1);
-
- // Set start position
- sendCommand(0x4e); // Set Column, RAM address X (max 320)
- sendData(x0);
- sendCommand(0x4f); // Set Page, RAM address Y (max 240)
- sendData(y0);
- sendCommand(0x22); // RAM data write
-}
-
-// Separate setPixel, because setAddress is to many instructions
-void DmTftSsd2119::setPixel(uint16_t x, uint16_t y, uint16_t color) {
- cbi(_pinCS, _bitmaskCS);
-
- // setAddress(x, y, x, y);
- sendCommand(0x4e); // Set Column, RAM address X (max 320)
- sendData(x);
-
- sendCommand(0x4f); // Set Page, RAM address Y (max 240)
- sendData(y);
-
- sendCommand(0x22);
- sendData(color);
-
- sbi(_pinCS, _bitmaskCS);
-}
-
-void DmTftSsd2119::init(void) {
- setTextColor(BLACK, WHITE);
-#if defined (DM_TOOLCHAIN_ARDUINO)
- _pinCS = portOutputRegister(digitalPinToPort(_cs));
- _bitmaskCS = digitalPinToBitMask(_cs);
- _pinDC = portOutputRegister(digitalPinToPort(_dc));
- _bitmaskDC = digitalPinToBitMask(_dc);
- pinMode(_cs,OUTPUT);
- pinMode(_dc,OUTPUT);
-
- sbi(_pinCS, _bitmaskCS);
-
- SPI.begin();
- SPI.setClockDivider(SPI_CLOCK_DIV2); // 8 MHz (full! speed!)
- SPI.setBitOrder(MSBFIRST);
- SPI.setDataMode(SPI_MODE0);
- _spiSettings = SPCR;
-#elif defined (DM_TOOLCHAIN_MBED)
- _pinCS = new DigitalOut(_cs);
- _pinDC = new DigitalOut(_dc);
- sbi(_pinCS, _bitmaskCS);
-
- spi.format(8,0);
- spi.frequency(6000000);
-#endif
- cbi(_pinCS, _bitmaskCS);
- delay(135); // This much delay needed??
-
- delay(120);
-
- sendCommand(0x28); // VCOM OTP
- sendData(0x0006);
-
- sendCommand(0x00); // Start Oscillator
- sendData(0x0001);
-
- sendCommand(0x10); // Set Sleep mode
- sendData(0x0000); // Sleep out
- delay(30);
-
- sendCommand(0x11); // Entry Mode ,SET LCM interface Mode.
- sendData(0x6870); // SET 65K colors,MCU interface Mode.TypeB ,ID=11 AM=0 the address counter is updated in the horizontal direction.
-
- sendCommand(0x15); // Generic Interface Control. DOCLK,HSYNC,VSYNC,DE
- sendData(0x0000);
-
- sendCommand(0x01); // Driver Output Control
- sendData(0x72EF); // Set REV,GD,BGR,SM,RL,TB
-
- sendCommand(0x02); // LCD Driving Waveform Control,LCD
- sendData(0x0600);
-
- sendCommand(0x08); // Set the scanning starting position of the gate driver.
- sendData(0x0000); // The valid range is from 1 to 240
-
- // LCD POWER CONTROL
- sendCommand(0x03); // Power Control 1, VGH,VGL
- sendData(0x6A38); // Set dct=fline*4, VGH=2 x VCIX2 + VCI,VGL=-(VGH) + VCix2, DC=Fline × 8, AP=Medium to large
-
- sendCommand(0X0B); // Frame Cycle Control.
- sendData(0x5308); // SET NO SDT=1 clock cycle (POR) ,Sets the equalizing period,
-
- sendCommand(0x0C); // Power Control 2 VCIX2
- sendData(0x0003); // Adjust VCIX2 output voltage=5.7V
-
- sendCommand(0x0D); // Set amplitude magnification of VLCD63
- sendData(0x000A); // vlcd63=VREF(2.0V)* 2.335V
-
- sendCommand(0x0E); // SET VCOMG VDV .VCOM
- sendData(0x2B00); // SET VCOMG=1,VCOM=VLCD63* //2A
-
- sendCommand(0X0F); // Gate Scan Position.
- sendData(0x0000); // The valid range is from 1 to 240.
-
- sendCommand(0x1E); // SET nOTP VCOMH ,VCOMH
- sendData(0x00B7); // SET nOTP=0, VCOMH=VLCD63* //B8
-
- sendCommand(0x25); // Frame Frequency Control
- sendData(0x8000); // SET OSC 65Hz //0A-70hz
-
- sendCommand(0x26); // Analog setting
- sendData(0x3800);
-
- sendCommand(0x27); // Analog setting
- sendData(0x0078);
-
-//sendCommand(0x12); // Sleep mode
-//sendData(0xD999);
-
- // SET WINDOW
- sendCommand(0x4E); // Ram Address Set
- sendData(0x0000);
-
- sendCommand(0x4F); // Ram Address Set
- sendData(0x0000);
-
- // Gamma Control
- sendCommand(0x30);
- sendData(0x0000);//1
-
- sendCommand(0x31);
- sendData(0x0104);//2
-
- sendCommand(0x32);
- sendData(0x0100);//3
-
- sendCommand(0x33);
- sendData(0x0305);//4
-
- sendCommand(0x34);
- sendData(0x0505);//4
-
- sendCommand(0x35);
- sendData(0x0305);//5
-
- sendCommand(0x36);
- sendData(0x0707);//6
-
- sendCommand(0x37);
- sendData(0x0300);//7
-
- sendCommand(0x3A);
- sendData(0x1200);//8
-
- sendCommand(0x3B);
- sendData(0x0800);//9
-
- // Final init
- delay(300);
- sendCommand(0x07); // Display Control
-
- sendData(0x0033); // Display on
- delay(100);
-
- sendCommand(0x22); // RAM data write/read
-
- delay(50);
- sbi(_pinCS, _bitmaskCS);
- clearScreen();
-}
-
-/*********************************************************************************************************
- END FILE
-*********************************************************************************************************/