示例#1
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);
  }
}
示例#2
0
int main(int argc, char *const *argv)
{
    int r = 0;
    int s = 0;
    int opts_index = 0;

    int lcd_off = 0;
    int verbose = 0;
    char *colour_string = 0;
    char *cursor_string = 0;

    char *short_opts = "hc:u:v";
    struct option long_opts[] = {
        {"off", no_argument, &lcd_off, 1},
        {"verbose", no_argument, &verbose, 1},
        {"help", no_argument, NULL, 'h'},
        {"colour", required_argument, NULL, 'c'},
        {"cursor", required_argument, NULL, 'u'},
        {0, 0, 0, 0}
    };

    GPIO_open();
    LCD_init(0);

    while ((s =
            getopt_long(argc, argv, short_opts, long_opts,
                        &opts_index)) != -1) {
        switch (s) {
        case 'h':
            print_help();
            break;
        case 'c':
            r += set_colour(optarg);
            colour_string = optarg;
            break;
        case 'u':
            cursor_string = optarg;
            r += set_cursor(optarg);
            break;
        case 'v':
            verbose = 1;
        case '?':
            break;
        }
    };

    /* printing off the remaining arguments */
    int optind_old = optind;
    int n = 0;
    if (optind < argc) {
        while (optind < argc) {
            n += LCD_wrap_printf("%s ", argv[optind++]);
        }
        LCD_cursor_move(-1);
        optind = optind_old;
    } else if (!lcd_off) {
        int c;
        int n = 0;
        while ((c = getchar()) != EOF) {
            if (n == LCD_LENGTH) {
                LCD_putchar('\n');
                n = 0;
            }
            LCD_putchar(c);
            n++;
        }
    } else {
        LCD_off();
    }

    /* verbose flag print off more messages */
    if (verbose) {
        if (colour_string) {
            printf("Setting LCD colour to: %s\n", colour_string);
        }
        if (cursor_string) {
            printf("Setting cursor to: %s\n", cursor_string);
        }

        printf("Printed %d characters: \n", n);
        while (optind < argc) {
            printf("%s ", argv[optind++]);
        }
        printf("\n");

        if (lcd_off) {
            printf("Turning off LCD\n");
        }
    }
    return r;
}