Ejemplo n.º 1
0
//------------------------------------------------------------------------------
//Draw a rectangle 
void LCD_drawRect(uint8_t x1,uint8_t y1,uint8_t x2,uint8_t y2)
{
  LCD_drawLine(x1,y1, x2,y1);
  LCD_drawLine(x1,y1, x1,y2);
  LCD_drawLine(x2,y2, x2,y1);
  LCD_drawLine(x1,y2, x2,y2);  
}
Ejemplo n.º 2
0
void TEST_fillPrimitives(u16 step) {
    LCD_fillScreen(BLACK);

    u16 halfStep      = (u16) (step / 2),
        quartStep     = (u16) (halfStep / 2),
        halfQuartStep = (u16) (quartStep / 2);

    u16 w = LCD_getWidth(),
        h = LCD_getHeight();

    for (u16 x = 0; x < w; x += step) {
        LCD_drawFastVLine(x, 0, h, DGRAY);
    }

    for (u16 y = 0; y < h; y += step) {
        LCD_drawFastHLine(0, y, w, DGRAY);
    }

    for (u16 x = 0; x < w; x += step) {
        for (u16 y = 0; y < h; y += step) {
            LCD_drawRect(x, y, halfStep, halfStep, DGREEN);
            LCD_fillRect(x + halfStep, y + halfStep, halfStep, halfStep, GREENYELLOW);
            LCD_drawCircle(x + quartStep, y + quartStep, halfQuartStep, GREENYELLOW);
            LCD_fillCircle(x + halfStep + quartStep, y + halfStep + quartStep, halfQuartStep, DGREEN);
            LCD_putPixel(x + quartStep, y + quartStep, YELLOW);

            LCD_drawLine(x + halfStep, y + halfStep, x + step, y + step, WHITE);
        }
    }
}
Ejemplo n.º 3
0
int main(void)
{
	char cmd, subcmd, x, y, v, w, r;	//variables used for loops, buffering of command bytes, counters etc.
	uint16_t color;		//counters for long stuff that may go over 256
	uint8_t pressureThreshhold = 10;

	TouchScreen_init();

	USART_set_baud(6);
	LCD_init();

	//flush any received chars
	USART_flush();

	LCD_drawString("Ready For Command", 0, 10, 1, WHITE, USART_recv);

    /* Replace with your application code */
    while (1)  {
		if(!RX_available()) {

			TSPoint p = TouchScreen_getPoint();

			if(p.z > pressureThreshhold) {
				USART_printf("X = %d\r\n", p.x);
				USART_printf("Y = %d\r\n", p.y);
				USART_printf("Pressure = %d\r\n", p.z);
			}

		} else {
			cmd = USART_recv();
			switch(cmd) {

				case 124:
					subcmd = USART_recv();

					switch(subcmd) {

						case 1:	//clear screen
							LCD_paint_screen_black();
						break;
						//************************************************************************************************************
						case 3:	//draw circle
							x = USART_recv();
							y = USART_recv();
							r = USART_recv();

								// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();  

							LCD_drawCircle(x, y, r, color);
						break;
						case 4:
							x = USART_recv();
							y = USART_recv();
							r = USART_recv();

							// get integer color
							color = USART_recv();	//store it and increment RX_read
							color = color << 8;
							color |= USART_recv();

							LCD_fillCircle(x, y, r, color);
						break;
						case 12:	//line
							x = USART_recv();
							y = USART_recv();
							v = USART_recv();
							w = USART_recv();

							// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();

							LCD_drawLine(x, y, v, w, color);
						break;
						//************************************************************************************************************
 						case 15:
							x = USART_recv();
							y = USART_recv();
							v = USART_recv();
							w = USART_recv();

							// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();

							LCD_drawRectangle(x, y, v, w, color);
						break;
						//************************************************************************************************************
						case 16:		//set pixel
							x = USART_recv();
							y = USART_recv();

							color = USART_recv();
							color = color << 8;
							color |= USART_recv();
 					
					
							LCD_setPixel(x, y, color);
						break;
						case 18:
							x = USART_recv();
							y = USART_recv();
							v = USART_recv();
							w = USART_recv();

							// get integer color
							color = USART_recv();
							color = color << 8;
							color |= USART_recv();

							LCD_fillRectangle(x, y, v, w, color);
						break;
						case 20: // draw text
							x = USART_recv();

							y = USART_recv();

							// size
							r = USART_recv();

							// get integer color
							color = USART_recv();	//store it and increment RX_read
							color = color << 8;
							color |= USART_recv();

							// send string end with 0
							LCD_drawString(NULL, x, y, r, color, USART_recv);
						break;
					}
				break;
			}
		}
    }
}
Ejemplo n.º 4
0
void drawTest(int type){
  uint8_t i,j;
  
  uint8_t menuStrings[5][8] = {"Menu1\0","Menu2\0","Menu3\0","Menu4\0","Menu5\0"};
  
  switch (type){

  case 0: //simple text on screen
    LCD_clr();
    LCD_setCursorXY(15,0);
    LCD_puts ((uint8_t*)"Hello AVR world!\0");
    LCD_putsp((uint8_t*)"This LCD uses KS0107\0",3,3);
    LCD_putsp((uint8_t*)"Too long paged text is wrapped automatically\0",5,3);
    wait_100x_ms(30);
    break;

  case 1: //some of the drawing functions
    LCD_clr();
    LCD_drawLine(0,0,127,63);
    LCD_drawLine(0,63,127,0);
    LCD_drawRect(10,10,117,53);
    LCD_fillCirc(63,31,15);
    wait_100x_ms(20);

    break;

  case 2: //write on screen byte by byte
     for(j=0;j<8;j++){
	LCD_setCursorXY(0,j*8);
	for(i=0;i<LCD_LINE_LENGTH/4;i++){	  
	  LCD_writeByte(0b00110011);
	  LCD_writeByte(0b00110011);
	  LCD_writeByte(0b11001100);
	  LCD_writeByte(0b11001100);
	}
     }
    wait_100x_ms(20);
    break;

  case 3: //scrolling text up->down
    LCD_clr();
    LCD_setCursorXY(0,0);
    LCD_puts((uint8_t*)"Scrolling text\n goes here..!\0");      
    i=63;
    j=110;
    while(j>0){
      _delay_ms(30);      
      LCD_selectLeftChip();
      LCD_setInitialLineAddress(i);
      LCD_selectRightChip();
      LCD_setInitialLineAddress(i);
      if (i==0) i=63;
      else i--;
      j--;
    }
    LCD_clr();
    LCD_selectLeftChip();
    LCD_setInitialLineAddress(0);
    LCD_selectRightChip();
    LCD_setInitialLineAddress(0);
    break;

  case 4:  //using invert for menus
    
    for(i=0;i<5;i++){
      LCD_putsp(menuStrings[i],i+1,25);
    }
    j=2;
    while(j--){
      LCD_invertPage(1,20,58);
      wait_100x_ms(3);
      for(i=0;i<5;i++){      
	wait_100x_ms(3);
	LCD_invertPage(i+1,20,58);
	if(i<4)
	  LCD_invertPage(i+2,20,58);
	wait_100x_ms(3);
      }
    }
    break;

  case 5: //read status (on /off)
    j=4;
    while(j--){
      LCD_clr();
      if(!LCD_isOff()){
	LCD_putsp((uint8_t*)"LCD is On\0",1,10);
	wait_100x_ms(5);
	LCD_off();
      }
      else {
	wait_100x_ms(5);
	LCD_on();
	LCD_putsp((uint8_t*)"LCD was Off\0",1,10);
	wait_100x_ms(5);
      }
    }
    break;

  case 6: //"progress bar"
    LCD_clr();
    LCD_drawRect(5,5,122,58);
    LCD_putsp((uint8_t*)"Prosessing...\0",2,16);
    LCD_drawRect(10,30,113,41);

    for(j=0;j<100;j++){     
      LCD_setCursorXY(12+j,32);
      LCD_writeByte(0xff);
      wait_100x_ms(1); 
    }
    LCD_putsp((uint8_t*)"Done!        \0",2,16);
    wait_100x_ms(10);
    break;

  case 7:
    LCD_clr();
    LCD_drawFullBMP(girl_1_glcd_bmp);
    wait_100x_ms(20);
    break;

  case 8:
    i=0b10101010;
    LCD_clr();
    LCD_drawBMP((uint8_t*)atmel_glcd_bmp, 12, 12, 
		  ATMEL_GLCD_WIDTH,ATMEL_GLCD_HEIGHT);

    wait_100x_ms(20);
    break;

  case 9:
    LCD_clr();
    
    LCD_putgstr((uint8_t*)"Corsiva 12 test", Corsiva_12,10,10);
    LCD_putgstr((uint8_t*)"qwertyhjkl12345", Corsiva_12,12,30);
    
    //    LCD_putgstr((uint8_t*)"putgstr() test",Arial_Bold_14,10,10);
    //LCD_putgstr((uint8_t*)"1q2w3e4r5t6y8u9i0l",Arial_Bold_14,10,30);

    wait_100x_ms(20);
  }
}