コード例 #1
0
void LCD_Writ_Bus(int VH,int VL){
  //LCD_DATA_BUS = VH;
  //0x04,0x08,0x01,0x20,0x40,0x80,0x100,0x800 (pins 0 - 7)
  if(VH & 0x01){ PORTDSET = 0x04; }  else { PORTDCLR = 0x04; }
  if(VH & 0x02){ PORTDSET = 0x08; }  else { PORTDCLR = 0x08; }
  if(VH & 0x04){ PORTDSET = 0x01; }  else { PORTDCLR = 0x01; }
  if(VH & 0x08){ PORTDSET = 0x20; }  else { PORTDCLR = 0x20; }
  if(VH & 0x10){ PORTDSET = 0x40; }  else { PORTDCLR = 0x40; }
  if(VH & 0x20){ PORTDSET = 0x80; }  else { PORTDCLR = 0x80; }
  if(VH & 0x40){ PORTDSET = 0x100; } else { PORTDCLR = 0x100; }
  if(VH & 0x80){ PORTDSET = 0x800; } else { PORTDCLR = 0x800; }
  fastDelay();
  fastWriteLow(LCD_WR);
  fastDelay();
  fastWriteHigh(LCD_WR);
  fastDelay();
  //LCD_DATA_BUS = VL;
  //0x04,0x08,0x01,0x20,0x40,0x80,0x100,0x800 (pins 0 - 7)
  if(VL & 0x01){ PORTDSET = 0x04; }  else { PORTDCLR = 0x04; }
  if(VL & 0x02){ PORTDSET = 0x08; }  else { PORTDCLR = 0x08; }
  if(VL & 0x04){ PORTDSET = 0x01; }  else { PORTDCLR = 0x01; }
  if(VL & 0x08){ PORTDSET = 0x20; }  else { PORTDCLR = 0x20; }
  if(VL & 0x10){ PORTDSET = 0x40; }  else { PORTDCLR = 0x40; }
  if(VL & 0x20){ PORTDSET = 0x80; }  else { PORTDCLR = 0x80; }
  if(VL & 0x40){ PORTDSET = 0x100; } else { PORTDCLR = 0x100; }
  if(VL & 0x80){ PORTDSET = 0x800; } else { PORTDCLR = 0x800; }
  fastDelay();
  fastWriteLow(LCD_WR);
  fastDelay();
  fastWriteHigh(LCD_WR);
  fastDelay();
  fastDelay();
}
コード例 #2
0
void LCD_Writ_Bus(int VH,int VL){
  LCD_DATA_BUS = VH;
  fastWriteLow(LCD_WR);
  fastWriteHigh(LCD_WR);
  LCD_DATA_BUS = VL;
  fastWriteLow(LCD_WR);
  fastWriteHigh(LCD_WR);
}
コード例 #3
0
ファイル: ssd0323.cpp プロジェクト: KoljaWindeler/speedoino
/////////////////////////////// basis funktion ///////////////////////////////
void ssd0323::senden_spi(unsigned char zeichen)
{
	unsigned char a=0, b=0b10000000;
	fastWriteLow(SPI_CS); // cs auf low => aktivieren
	fastWriteHigh(SPI_CLK); // clock auf high, zu fallender flanke werden daten übernommen

	for(a=0;a<8;a++){      /* a = 0..7, wegen 8 pixel zeichen breite */
		if(zeichen&b)	fastWriteHigh(SPI_DATA);  	/* wenn zeichen&b dann porta bit 0 auf high serial data line */
		else 		fastWriteLow(SPI_DATA); 		/* PORTA bit 0 auf low zwingen serial data line */
		fastWriteLow(SPI_CLK); // clock auf high, zu fallender flanke werden daten übernommen
		//_delay_ms(1);	// technisch korrekt: hier wartezeit einfügen
		fastWriteHigh(SPI_CLK); // clock auf high, zu fallender flanke werden daten übernommen
		//_delay_ms(1);	// technisch korrekt: hier wartezeit einfügen
		b=b>>1;				/* bitmaske einen nach recht schieben => msb first ?! */
	}
	fastWriteHigh(SPI_CS); // cs auf high => deaktivieren
}
コード例 #4
0
void fillScr(char r, char g, char b){
	long i;
	
	fastWriteLow(LCD_CS); 
	if (orient==PORTRAIT)
		setXY(0,0,239,319);
	else
		setXY(0,0,319,239);
	for (i=0; i<76800; i++)
	{
		setPixel (r, g, b);
	}
	fastWriteHigh(LCD_CS); 
}
コード例 #5
0
void clrScr(){
	unsigned long i;
	
	fastWriteLow(LCD_CS);
	if (orient==PORTRAIT)
		setXY(0,0,239,319);
	else
		setXY(0,0,319,239);
	for (i=0; i<76800; i++)
	{
		setPixel(0,0,0);
	}
	fastWriteHigh(LCD_CS); 
}
コード例 #6
0
ファイル: ssd0323.cpp プロジェクト: KoljaWindeler/speedoino
/////////////////////////////// data funktion ///////////////////////////////
void ssd0323::send_char(unsigned char zeichen)
{
	fastWriteHigh(SPI_CD); //turn to data mode
	senden_spi(zeichen);
}
コード例 #7
0
ファイル: ssd0323.cpp プロジェクト: KoljaWindeler/speedoino
/////////////////////////////// init sequenz ///////////////////////////////
void ssd0323::init(unsigned char phase,unsigned char ref) {  

	pinMode(SPI_CD, OUTPUT); // D/C low = command
	pinMode(SPI_RESET, OUTPUT); // reset 
	pinMode(SPI_DATA, OUTPUT);
	pinMode(SPI_CLK,OUTPUT);
	pinMode(SPI_CS,OUTPUT);

	_delay_ms(10);

	fastWriteHigh(SPI_CS);
	fastWriteLow(SPI_CD);
	fastWriteLow(SPI_DATA);
	fastWriteLow(SPI_CLK);

	// reset
	fastWriteLow(SPI_RESET);
	_delay_ms(10);
	fastWriteHigh(SPI_RESET);
	_delay_ms(1);

	// init sequenze
	/////////////////////////////
	// XXXXXX | Normale | 180° //
	// ----------------------- //
	// Re-Map |  0x41   | 0x52 //
	// Offset |  0x44   | 0x4C //
	/////////////////////////////

	// Column Address
	send_command(0x15);	send_command(0x00);	send_command(0x3F); 
	// Row Address
	send_command(0x75);	send_command(0x00);	send_command(0x3F);
	// Contrast Control
	send_command(0x81);	send_command(0x66);
	// Current Range
	send_command(0x86);
	// Re-map 
	send_command(0xA0);	send_command(0x52);
	// Display Start Line
	send_command(0xA1);	send_command(0x00);
	// Display Offset
	send_command(0xA2);	send_command(0x4C);
	// Display Mode
	send_command(0xA4);
	// Multiplex Ratio
	send_command(0xA8);	send_command(0x3F);
	// set prechange
	// Phase Length
	send_command(0xB1);	send_command(phase);
	// Row Period
	send_command(0xB2);	send_command(0x46);
	// Display Clock Divide
	send_command(0xB3);	send_command(0xF1); // war f1
	/* POR = 0000 0001*/
	// VSL
	send_command(0xBF);	send_command(0x0D);
	// VCOMH
	send_command(0xBE);	send_command(0x02);	send_command(0xBC);	send_command(ref);
	// Gamma
	send_command(0xB8);	send_command(0x01);	send_command(0x11);	send_command(0x22);	send_command(0x32);	
	send_command(0x43);	send_command(0x54);	send_command(0x65);	send_command(0x76);
	/* LB[6:4], LA[2:0] 0101 0101 */
	/* LD[6:4], LC[2:0] 0110 0110 */
	/* LF[6:4], LE[2:0] 1000 0111 */
	// Set DC-DC
	send_command(0xAD); /* Set DC-DC */
	send_command(0x02); /* 03=ON, 02=Off */
	// Display ON/OFF
	send_command(0xAF);
	/* AF=ON, AE=Sleep Mode */
}
コード例 #8
0
ファイル: ssd0323.cpp プロジェクト: KoljaWindeler/speedoino
/////////////////////////////// kommando funktion ///////////////////////////////
void ssd0323::send_command(unsigned char theCommand)
{
	fastWriteLow(SPI_CD); //turn to command mode
	senden_spi(theCommand);
	fastWriteHigh(SPI_CD); //turn to data mode
}
コード例 #9
0
void InitLCD(char orientation){
  orient=orientation;
  
  LCD_DATA_DIR = 0x00;  //Output for All pins on DATA BUS
  LCD_DATA_BUS = 0x0000;

//Pin Mode for Control Pins!
//OLIMEX BOARDS (Arduino Like Boards, using SHIELDs)
#if defined(PIC32_PINGUINO) || defined(PIC32_PINGUINO_OTG)
  fastSetOutputMode(dLCD_RS);
  fastSetOutputMode(dLCD_WR);
  fastSetOutputMode(dLCD_CS);
  fastSetOutputMode(dLCD_REST);
  
  TRISDbits.TRISD4 = 1;		//RD4 is connected to D2, don't know why! :-P
  PORTDbits.RD4 = 0;
#else
  fastSetOutputMode(LCD_RS);
  fastSetOutputMode(LCD_WR);
  fastSetOutputMode(LCD_CS);
  fastSetOutputMode(LCD_REST);
#endif

  fastWriteHigh(LCD_REST);
  Delayms(5); 
  fastWriteLow(LCD_REST);
  Delayms(5);
  fastWriteHigh(LCD_REST);
  Delayms(5);

  fastWriteLow(LCD_CS);  
  //************* Start Initial Sequence **********//
  LCD_Write_COM(0x00,0xE5); 
  LCD_Write_DATA(0x78,0xF0); // set SRAM internal timing

  LCD_Write_COM(0x00,0x01); 
  LCD_Write_DATA(0x01,0x00); // set SS and SM bit

  LCD_Write_COM(0x00,0x02); 
  LCD_Write_DATA(0x07,0x00); // set 1 line inversion

  LCD_Write_COM(0x00,0x03); 
  LCD_Write_DATA(0x10,0x30); // set GRAM write direction and BGR=1.

  LCD_Write_COM(0x00,0x04); 
  LCD_Write_DATA(0x00,0x00); // Resize register

  LCD_Write_COM(0x00,0x08); 
  LCD_Write_DATA(0x02,0x07); // set the back porch and front porch

  LCD_Write_COM(0x00,0x09); 
  LCD_Write_DATA(0x00,0x00); // set non-display area refresh cycle ISC[3:0]

  LCD_Write_COM(0x00,0x0A); 
  LCD_Write_DATA(0x00,0x00); // FMARK function

  LCD_Write_COM(0x00,0x0C); 
  LCD_Write_DATA(0x00,0x00); // RGB interface setting

  LCD_Write_COM(0x00,0x0D); 
  LCD_Write_DATA(0x00,0x00); // Frame marker Position

  LCD_Write_COM(0x00,0x0F); 
  LCD_Write_DATA(0x00,0x00); // RGB interface polarity
  //*************Power On sequence ****************//
  LCD_Write_COM(0x00,0x10); 
  LCD_Write_DATA(0x00,0x00); // SAP, BT[3:0], AP, DSTB, SLP, STB
  LCD_Write_COM(0x00,0x11); 
  LCD_Write_DATA(0x00,0x07); // DC1[2:0], DC0[2:0], VC[2:0]
  LCD_Write_COM(0x00,0x12); 
  LCD_Write_DATA(0x00,0x00); // VREG1OUT voltage
  LCD_Write_COM(0x00,0x13); 
  LCD_Write_DATA(0x00,0x00); // VDV[4:0] for VCOM amplitude
  LCD_Write_COM(0x00,0x07); 
  LCD_Write_DATA(0x00,0x01);
  Delayms(50); // Dis-charge capacitor power voltage
  LCD_Write_COM(0x00,0x10); 
  LCD_Write_DATA(0x10,0x90); // 1490//SAP, BT[3:0], AP, DSTB, SLP, STB
  LCD_Write_COM(0x00,0x11); 
  LCD_Write_DATA(0x02,0x27); // DC1[2:0], DC0[2:0], VC[2:0]
  Delayms(50); // Delay 50ms
  LCD_Write_COM(0x00,0x12); 
  LCD_Write_DATA(0x00,0x1F); //001C// Internal reference voltage= Vci;
  Delayms(50); // Delay 50ms
  LCD_Write_COM(0x00,0x13); 
  LCD_Write_DATA(0x15,0x00); //0x1000//1400   Set VDV[4:0] for VCOM amplitude  1A00
  LCD_Write_COM(0x00,0x29); 
  LCD_Write_DATA(0x00,0x27); //0x0012 //001a  Set VCM[5:0] for VCOMH  //0x0025  0034
  LCD_Write_COM(0x00,0x2B); 
  LCD_Write_DATA(0x00,0x0D); // Set Frame Rate   000C
  Delayms(50); // Delay 50ms
  LCD_Write_COM(0x00,0x20); 
  LCD_Write_DATA(0x00,0x00); // GRAM horizontal Address
  LCD_Write_COM(0x00,0x21); 
  LCD_Write_DATA(0x00,0x00); // GRAM Vertical Address
  // ----------- Adjust the Gamma Curve ----------//
  LCD_Write_COM(0x00,0x30); 
  LCD_Write_DATA(0x00,0x00);
  LCD_Write_COM(0x00,0x31); 
  LCD_Write_DATA(0x07,0x07);
  LCD_Write_COM(0x00,0x32); 
  LCD_Write_DATA(0x03,0x07);
  LCD_Write_COM(0x00,0x35); 
  LCD_Write_DATA(0x02,0x00);
  LCD_Write_COM(0x00,0x36); 
  LCD_Write_DATA(0x00,0x08);//0207
  LCD_Write_COM(0x00,0x37); 
  LCD_Write_DATA(0x00,0x04);//0306
  LCD_Write_COM(0x00,0x38); 
  LCD_Write_DATA(0x00,0x00);//0102
  LCD_Write_COM(0x00,0x39); 
  LCD_Write_DATA(0x07,0x07);//0707
  LCD_Write_COM(0x00,0x3C); 
  LCD_Write_DATA(0x00,0x02);//0702
  LCD_Write_COM(0x00,0x3D); 
  LCD_Write_DATA(0x1D,0x04);//1604

    //------------------ Set GRAM area ---------------//
  LCD_Write_COM(0x00,0x50); 
  LCD_Write_DATA(0x00,0x00); // Horizontal GRAM Start Address
  LCD_Write_COM(0x00,0x51); 
  LCD_Write_DATA(0x00,0xEF); // Horizontal GRAM End Address
  LCD_Write_COM(0x00,0x52); 
  LCD_Write_DATA(0x00,0x00); // Vertical GRAM Start Address
  LCD_Write_COM(0x00,0x53); 
  LCD_Write_DATA(0x01,0x3F); // Vertical GRAM Start Address
  LCD_Write_COM(0x00,0x60); 
  LCD_Write_DATA(0xA7,0x00); // Gate Scan Line
  LCD_Write_COM(0x00,0x61); 
  LCD_Write_DATA(0x00,0x01); // NDL,VLE, REV
  LCD_Write_COM(0x00,0x6A); 
  LCD_Write_DATA(0x00,0x00); // set scrolling line
  //-------------- Partial Display Control ---------//
  LCD_Write_COM(0x00,0x80); 
  LCD_Write_DATA(0x00,0x00);
  LCD_Write_COM(0x00,0x81); 
  LCD_Write_DATA(0x00,0x00);
  LCD_Write_COM(0x00,0x82); 
  LCD_Write_DATA(0x00,0x00);
  LCD_Write_COM(0x00,0x83); 
  LCD_Write_DATA(0x00,0x00);
  LCD_Write_COM(0x00,0x84); 
  LCD_Write_DATA(0x00,0x00);
  LCD_Write_COM(0x00,0x85); 
  LCD_Write_DATA(0x00,0x00);
  //-------------- Panel Control -------------------//
  LCD_Write_COM(0x00,0x90); 
  LCD_Write_DATA(0x00,0x10);
  LCD_Write_COM(0x00,0x92); 
  LCD_Write_DATA(0x06,0x00);
  LCD_Write_COM(0x00,0x07); 
  LCD_Write_DATA(0x01,0x33); 
  fastWriteHigh(LCD_CS);

  setColor(255, 255, 255);
  setBackColor(0, 0, 0);
  fsize = FONT_SMALL;
}
コード例 #10
0
void LCD_Write_DATA(int VH,int VL){
  fastWriteHigh(LCD_RS);
  LCD_Writ_Bus(VH,VL);
}