コード例 #1
0
ファイル: lcd.c プロジェクト: KGDsave/WiringOP-WiringOP_H5
static void pingPong (int lcd, int cols)
{
  static int position = 0 ;
  static int dir      = 0 ;

  if (dir == 0)		// Setup
  {
    dir = 1 ;
    lcdPosition (lcdHandle, 0, 3) ;
    lcdPutchar  (lcdHandle, '*') ;
    return ;
  }

  lcdPosition (lcdHandle, position, 3) ;
  lcdPutchar (lcdHandle, ' ') ;
  position += dir ;

  if (position == cols)
  {
    dir = -1 ;
    --position ;
  }
  
  if (position < 0)
  {
    dir = 1 ;
    ++position ;
  }

  lcdPosition (lcdHandle, position, 3) ;
  lcdPutchar  (lcdHandle, '#') ;
}
コード例 #2
0
int main(void)
{
	int fd;
	int i;
	if (wiringPiSetup() == -1){
		exit(1);
	}

	fd = lcdInit(2,16,4, 2,3, 6,5,4,1,0,0,0,0); //see /usr/local/include/lcd.h
	printf("%d", fd);
	if (fd == -1){
		printf("lcdInit 1 failed\n") ;
		return 1;
	}
	sleep(1);

	lcdClear(fd);
	lcdPosition(fd, 0, 0); 
	lcdPuts(fd, "Welcom To--->");

	lcdPosition(fd, 0, 1); 
	lcdPuts(fd, "  sunfounder.com");

	sleep(1);
	lcdClear(fd);

	while(1){
		for(i=0;i<sizeof(Buf)-1;i++){
			lcdPosition(fd, i, 1);
			lcdPutchar(fd, *(Buf+i));
			delay(200);
		}
		lcdPosition(fd, 0, 1); 
		lcdClear(fd);
		sleep(0.5);
		for(i=0; i<16; i++){
			lcdPosition(fd, i, 0);
			lcdPutchar(fd, *(myBuf+i));
			delay(100);
		}
	}

	return 0;
}
コード例 #3
0
int lcdPutBigSpecialChar(int col, int row, char charToPrint)
{
    int font[][9] = {
        //' '
        {
            254,
            254,
            254,
        },
        //':'
        {
            3,
            254,
            2,
        },
    };

    int index = -1;

    switch(charToPrint)
    {
    case ' ':
        index = 0;
        break;
    case ':':
        index = 1;
        break;
    }

    if(index >= 0)
    {
        // the number to screen at the position specified.
        lcdPosition(lcdHandle, col, row);  // LINE 1
        lcdPutchar (lcdHandle, font[index][0]);

        lcdPosition(lcdHandle, col, row + 1);   //LINE 2
        lcdPutchar (lcdHandle, font[index][1]);

        lcdPosition(lcdHandle, col, row + 2);   //LINE 3
        lcdPutchar (lcdHandle, font[index][2]);
    }

    return 0;
}
コード例 #4
0
ファイル: wpi.c プロジェクト: alepharchives/wpi
static ERL_NIF_TERM
lcd_put_char_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[])
{
    int handle, character;
    if (!enif_get_int(env, argv[0], &handle) ||
        !enif_get_int(env, argv[1], &character))
    {
        return enif_make_badarg(env);
    }
    lcdPutchar(handle, (uint8_t)character);
    return atom_ok;
}
コード例 #5
0
ファイル: lcd.c プロジェクト: evanesmara/MP3Player
void lcdPutsNumber (uint32 number)
{

	char *p;

	p = buf;

	do
	{
		*p++ = hexChars[number % 10];
	} while (number /= 10);

	//*p++ = '\0';

	do
	{
		//outputFnk(*--p);
		lcdPutchar (*--p);
	} while (p > buf);

}
コード例 #6
0
ファイル: startupDisplay.c プロジェクト: rozboojnik/embedded
/*****************************************************************************
 *
 * Description:
 *    A process entry function 
 *
 ****************************************************************************/
void
displayStartupSequence(void)
{
  tU32 step = 0;
  tU8 anyKey = KEY_NOTHING;

  for(step=0; step<=48; step++)
  {
    anyKey = checkKey();
    if (anyKey != KEY_NOTHING)
      break;

    switch(step)
    {
      case 0: lcdColor(0xfd,0x00); lcdClrscr(); break;
      case 1: lcdIcon(0, 0, 130, 90, _fun_0_130x90c[2], _fun_0_130x90c[3], &_fun_0_130x90c[4]); break;

      case 2: lcdGotoxy(8,100); lcdPutchar('H'); break;
      case 3: lcdPutchar('A'); break;
      case 4: lcdPutchar('V'); break;
      case 5: lcdPutchar('E'); lcdIcon(0, 0, 130, 90, _fun_1_130x90c[2], _fun_1_130x90c[3], &_fun_1_130x90c[4]); break;

      case 6: lcdGotoxy(8+(8*4),100); lcdPutchar(' '); break;
      case 7: lcdPutchar('S'); break;
      case 8: lcdPutchar('O'); break;
      case 9: lcdPutchar('M'); lcdIcon(0, 0, 130, 90, _fun_0_130x90c[2], _fun_0_130x90c[3], &_fun_0_130x90c[4]); break;

      case 10: lcdGotoxy(8+(8*8),100); lcdPutchar('E'); break;
      case 11: lcdPutchar(' '); break;
      case 12: lcdPutchar('F'); break;
      case 13: lcdPutchar('U'); lcdIcon(0, 0, 130, 90, _fun_1_130x90c[2], _fun_1_130x90c[3], &_fun_1_130x90c[4]); break;
      
      case 14: lcdGotoxy(8+(8*12),100); lcdPutchar('N'); break;
      case 15: lcdPutchar('!'); break;
      case 17:
      case 25:
      case 33:
      case 41: lcdIcon(0, 0, 130, 90, _fun_0_130x90c[2], _fun_0_130x90c[3], &_fun_0_130x90c[4]); break;

      case 21:
      case 29:
      case 37:
      case 45: lcdIcon(0, 0, 130, 90, _fun_1_130x90c[2], _fun_1_130x90c[3], &_fun_1_130x90c[4]); break;

      default: break;
    }
    osSleep(15);
  }
  
  if (anyKey == KEY_NOTHING)
  for(step=0; step<=257; step++)
  {
    anyKey = checkKey();
    if (anyKey != KEY_NOTHING)
      break;

    switch(step)
    {
      case 0: lcdColor(0xff,0x00); lcdClrscr(); break;
      case 1: lcdIcon(16, 0, 97, 60, _ea_97x60c[2], _ea_97x60c[3], &_ea_97x60c[4]); break;
      case 2: lcdGotoxy(16,66); lcdPutchar('D'); break;
      case 3: lcdPutchar('e'); break;
      case 4: lcdPutchar('s'); break;
      case 5: lcdPutchar('i'); break;
      case 6: lcdPutchar('g'); break;
      case 7: lcdPutchar('n'); break;
      case 8: lcdPutchar('e'); break;
      case 9: lcdPutchar('d'); break;
      case 10: lcdPutchar(' '); break;
      case 11: lcdPutchar('a'); break;
      case 12: lcdPutchar('n'); break;
      case 13: lcdPutchar('d'); break;
      case 14: lcdGotoxy(20,80); lcdPutchar('p'); break;
      case 15: lcdPutchar('r'); break;
      case 16: lcdPutchar('o'); break;
      case 17: lcdPutchar('d'); break;
      case 18: lcdPutchar('u'); break;
      case 19: lcdPutchar('c'); break;
      case 20: lcdPutchar('e'); break;
      case 21: lcdPutchar('d'); break;
      case 22: lcdPutchar(' '); break;
      case 23: lcdPutchar('b'); break;
      case 24: lcdPutchar('y'); break;
      case 25: lcdGotoxy(0,96); lcdPutchar('E'); break;
      case 26: lcdPutchar('m'); break;
      case 27: lcdPutchar('b'); break;
      case 28: lcdPutchar('e'); break;
      case 29: lcdPutchar('d'); break;
      case 30: lcdPutchar('d'); break;
      case 31: lcdPutchar('e'); break;
      case 32: lcdPutchar('d'); break;
      case 33: lcdPutchar(' '); break;
      case 34: lcdPutchar('A'); break;
      case 35: lcdPutchar('r'); break;
      case 36: lcdPutchar('t'); break;
      case 37: lcdPutchar('i'); break;
      case 38: lcdPutchar('s'); break;
      case 39: lcdPutchar('t'); break;
      case 40: lcdPutchar('s'); break;
      case 41: lcdGotoxy(32,112); lcdPutchar('('); break;
      case 42: lcdPutchar('C'); break;
      case 43: lcdPutchar(')'); break;
      case 44: lcdPutchar(' '); break;
      case 45: lcdPutchar('2'); break;
      case 46: lcdPutchar('0'); break;
      case 47: lcdPutchar('0'); break;
      case 48: lcdPutchar('6'); break;

      case 60: lcdClrscr(); lcdIcon(0, 0, 128, 39, _future_128x39c[2], _future_128x39c[3], &_future_128x39c[4]); break;
      case 61: lcdGotoxy(8,44); lcdPutchar('i'); break;
      case 62: lcdPutchar('n'); break;
      case 63: lcdPutchar(' '); break;
      case 64: lcdPutchar('c'); break;
      case 65: lcdPutchar('o'); break;
      case 66: lcdPutchar('o'); break;
      case 67: lcdPutchar('p'); break;
      case 68: lcdPutchar('e'); break;
      case 69: lcdPutchar('r'); break;
      case 70: lcdPutchar('a'); break;
      case 71: lcdPutchar('t'); break;
      case 72: lcdPutchar('i'); break;
      case 73: lcdPutchar('o'); break;
      case 74: lcdPutchar('n'); break;
      case 75: lcdGotoxy(20,60); lcdPutchar('w'); break;
      case 76: lcdPutchar('i'); break;
      case 77: lcdPutchar('t'); break;
      case 78: lcdPutchar('h'); break;
      case 79: lcdPutchar(' '); break;
      case 80: lcdPutchar('F'); break;
      case 81: lcdPutchar('u'); break;
      case 82: lcdPutchar('t'); break;
      case 83: lcdPutchar('u'); break;
      case 84: lcdPutchar('r'); break;
      case 85: lcdPutchar('e'); break;
      case 86: lcdGotoxy(4,76); lcdPutchar('E'); break;
      case 87: lcdPutchar('l'); break;
      case 88: lcdPutchar('e'); break;
      case 89: lcdPutchar('c'); break;
      case 90: lcdPutchar('t'); break;
      case 91: lcdPutchar('r'); break;
      case 92: lcdPutchar('o'); break;
      case 93: lcdPutchar('n'); break;
      case 94: lcdPutchar('i'); break;
      case 95: lcdPutchar('c'); break;
      case 96: lcdPutchar('s'); break;
      case 97: lcdPutchar(' '); break;
      case 98: lcdPutchar('a'); break;
      case 99: lcdPutchar('n'); break;
      case 100: lcdPutchar('d'); break;
      case 105: lcdIcon(3, 98, 122, 25, _philips_122x25c[2], _philips_122x25c[3], &_philips_122x25c[4]); break;
      
      case 120: lcdClrscr(); lcdIcon(22, 3, 85, 40, _segger_85x40c[2], _segger_85x40c[3], &_segger_85x40c[4]); break;
      case 121: lcdGotoxy(12,48); lcdPutchar('E'); break;
      case 122: lcdPutchar('m'); break;
      case 123: lcdPutchar('b'); break;
      case 124: lcdPutchar('e'); break;
      case 125: lcdPutchar('d'); break;
      case 126: lcdPutchar('d'); break;
      case 127: lcdPutchar('e'); break;
      case 128: lcdPutchar('d'); break;
      case 129: lcdPutchar(' '); break;
      case 130: lcdPutchar('J'); break;
      case 131: lcdPutchar('T'); break;
      case 132: lcdPutchar('A'); break;
      case 133: lcdPutchar('G'); break;
      case 134: lcdGotoxy(40,64); lcdPutchar('J'); break;
      case 135: lcdPutchar('-'); break;
      case 136: lcdPutchar('l'); break;
      case 137: lcdPutchar('i'); break;
      case 138: lcdPutchar('n'); break;
      case 139: lcdPutchar('k'); break;
      case 140: lcdGotoxy(20,80); lcdPutchar('t'); break;
      case 141: lcdPutchar('e'); break;
      case 142: lcdPutchar('c'); break;
      case 143: lcdPutchar('h'); break;
      case 144: lcdPutchar('n'); break;
      case 145: lcdPutchar('o'); break;
      case 146: lcdPutchar('l'); break;
      case 147: lcdPutchar('o'); break;
      case 148: lcdPutchar('g'); break;
      case 149: lcdPutchar('y'); break;
      case 150: lcdGotoxy(16,94); lcdPutchar('l'); break;
      case 151: lcdPutchar('i'); break;
      case 152: lcdPutchar('c'); break;
      case 153: lcdPutchar('e'); break;
      case 154: lcdPutchar('n'); break;
      case 155: lcdPutchar('s'); break;
      case 156: lcdPutchar('e'); break;
      case 157: lcdPutchar('d'); break;
      case 158: lcdPutchar(' '); break;
      case 159: lcdPutchar('b'); break;
      case 160: lcdPutchar('y'); break;
      case 161: lcdGotoxy(8,110); lcdPutchar('w'); break;
      case 162: lcdPutchar('w'); break;
      case 163: lcdPutchar('w'); break;
      case 164: lcdPutchar('.'); break;
      case 165: lcdPutchar('s'); break;
      case 166: lcdPutchar('e'); break;
      case 167: lcdPutchar('g'); break;
      case 168: lcdPutchar('g'); break;
      case 169: lcdPutchar('e'); break;
      case 170: lcdPutchar('r'); break;
      case 171: lcdPutchar('.'); break;
      case 172: lcdPutchar('c'); break;
      case 173: lcdPutchar('o'); break;
      case 174: lcdPutchar('m'); break;

      case 190: lcdColor(0xff,0x00); lcdClrscr(); break;
      case 191: lcdIcon(16, 0, 97, 60, _ea_97x60c[2], _ea_97x60c[3], &_ea_97x60c[4]); break;
      case 192: lcdGotoxy(0,66); lcdPutchar('P'); break;
      case 193: lcdPutchar('r'); break;
      case 194: lcdPutchar('o'); break;
      case 195: lcdPutchar('g'); break;
      case 196: lcdPutchar('r'); break;
      case 197: lcdPutchar('a'); break;
      case 198: lcdPutchar('m'); break;
      case 199: lcdPutchar(' '); break;
      case 200: lcdPutchar('v'); break;
      case 201: lcdPutchar('e'); break;
      case 202: lcdPutchar('r'); break;
      case 203: lcdPutchar(':'); break;
      case 204: lcdPutchar('1'); break;
      case 205: lcdPutchar('.'); break;
      case 206: lcdPutchar('8'); break;
      case 207: lcdGotoxy(20,80); lcdPutchar('C'); break;
      case 208: lcdPutchar('h'); break;
      case 209: lcdPutchar('e'); break;
      case 210: lcdPutchar('c'); break;
      case 211: lcdPutchar('k'); break;
      case 212: lcdPutchar(' '); break;
      case 213: lcdPutchar('f'); break;
      case 214: lcdPutchar('o'); break;
      case 215: lcdPutchar('r'); break;
      case 216: lcdGotoxy(8,96); lcdPutchar('u'); break;
      case 217: lcdPutchar('p'); break;
      case 218: lcdPutchar('d'); break;
      case 219: lcdPutchar('a'); break;
      case 220: lcdPutchar('t'); break;
      case 221: lcdPutchar('e'); break;
      case 222: lcdPutchar('s'); break;
      case 223: lcdPutchar(' '); break;
      case 224: lcdPutchar('a'); break;
      case 225: lcdPutchar('t'); break;
      case 226: lcdPutchar(' '); break;
      case 227: lcdPutchar('t'); break;
      case 228: lcdPutchar('h'); break;
      case 229: lcdPutchar('e'); break;
      case 230: lcdGotoxy(8,112); lcdPutchar('s'); break;
      case 231: lcdPutchar('u'); break;
      case 232: lcdPutchar('p'); break;
      case 233: lcdPutchar('p'); break;
      case 234: lcdPutchar('o'); break;
      case 235: lcdPutchar('r'); break;
      case 236: lcdPutchar('t'); break;
      case 237: lcdPutchar(' '); break;
      case 238: lcdPutchar('p'); break;
      case 239: lcdPutchar('a'); break;
      case 240: lcdPutchar('g'); break;
      case 241: lcdPutchar('e'); break;
      case 242: lcdPutchar('.'); break;

      default: break;
    }
    osSleep(10);
  }

  lcdColor(0x00,0x00);
  lcdClrscr();
}
コード例 #7
0
ファイル: lcd.c プロジェクト: KGDsave/WiringOP-WiringOP_H5
int main (int argc, char *argv[])
{
  int i ;
  int lcd ;
  int bits, rows, cols ;

  struct tm *t ;
  time_t tim ;

  char buf [32] ;

  if (argc != 4)
    return usage (argv [0]) ;

  printf ("Raspberry Pi LCD test\n") ;
  printf ("=====================\n") ;

  bits = atoi (argv [1]) ;
  cols = atoi (argv [2]) ;
  rows = atoi (argv [3]) ;

  if (!((rows == 1) || (rows == 2) || (rows == 4)))
  {
    fprintf (stderr, "%s: rows must be 1, 2 or 4\n", argv [0]) ;
    return EXIT_FAILURE ;
  }

  if (!((cols == 16) || (cols == 20)))
  {
    fprintf (stderr, "%s: cols must be 16 or 20\n", argv [0]) ;
    return EXIT_FAILURE ;
  }

  wiringPiSetup () ;

  if (bits == 4)
    lcdHandle = lcdInit (rows, cols, 4, 11,10, 4,5,6,7,0,0,0,0) ;
  else
    lcdHandle = lcdInit (rows, cols, 8, 11, 10, 0,1,2,3,4,5,6,7) ;

  if (lcdHandle < 0)
  {
    fprintf (stderr, "%s: lcdInit failed\n", argv [0]) ;
    return -1 ;
  }

  lcdPosition (lcdHandle, 0, 0) ; lcdPuts (lcdHandle, "Gordon Henderson") ;
  lcdPosition (lcdHandle, 0, 1) ; lcdPuts (lcdHandle, "  wiringpi.com  ") ;

  waitForEnter () ;

  if (rows > 1)
  {
    lcdPosition (lcdHandle, 0, 1) ; lcdPuts (lcdHandle, "  wiringpi.com  ") ;

    if (rows == 4)
    {
      lcdPosition (lcdHandle, 0, 2) ;
      for (i = 0 ; i < ((cols - 1) / 2) ; ++i)
        lcdPuts (lcdHandle, "=-") ;
      lcdPuts (lcdHandle, "=3") ;

      lcdPosition (lcdHandle, 0, 3) ;
      for (i = 0 ; i < ((cols - 1) / 2) ; ++i)
        lcdPuts (lcdHandle, "-=") ;
      lcdPuts (lcdHandle, "-4") ;
    }
  }

  waitForEnter () ;

  lcdCharDef  (lcdHandle, 2, newChar) ;

  lcdClear    (lcdHandle) ;
  lcdPosition (lcdHandle, 0, 0) ;
  lcdPuts     (lcdHandle, "User Char: ") ;
  lcdPutchar  (lcdHandle, 2) ;

  lcdCursor      (lcdHandle, TRUE) ;
  lcdCursorBlink (lcdHandle, TRUE) ;

  waitForEnter () ;

  lcdCursor      (lcdHandle, FALSE) ;
  lcdCursorBlink (lcdHandle, FALSE) ;
  lcdClear       (lcdHandle) ;

  for (;;)
  {
    scrollMessage (0, cols) ;
    
    if (rows == 1)
      continue ;

    tim = time (NULL) ;
    t = localtime (&tim) ;

    sprintf (buf, "%02d:%02d:%02d", t->tm_hour, t->tm_min, t->tm_sec) ;

    lcdPosition (lcdHandle, (cols - 8) / 2, 1) ;
    lcdPuts     (lcdHandle, buf) ;

    if (rows == 2)
      continue ;

    sprintf (buf, "%02d/%02d/%04d", t->tm_mday, t->tm_mon + 1, t->tm_year+1900) ;

    lcdPosition (lcdHandle, (cols - 10) / 2, 2) ;
    lcdPuts     (lcdHandle, buf) ;

    pingPong (lcd, cols) ;
  }

  return 0 ;
}
コード例 #8
0
ファイル: lcd.c プロジェクト: evanesmara/MP3Player
/*****************************************************************************
 *
 * Description:
 *    Write/draw (null-terminated) string of character at current xy-position
 *
 ****************************************************************************/
void lcdPuts (char *s)
{
	while (*s != '\0')
		lcdPutchar (*s++);
}
コード例 #9
0
ファイル: lcd.c プロジェクト: barons2015/picgps
/*****************************************************************************
 *
 * Description:
 *    Write/draw (null-terminated) string of character at current xy-position
 *
 ****************************************************************************/
void
lcdPuts(const tU8 *s)
{
  while(*s != '\0')
    lcdPutchar(*s++);
}
コード例 #10
0
ファイル: writeLCD.c プロジェクト: Striffi/wetterstation
extern int8_t writeLCD(const int fd_lcd, const double value, const char mode, const struct tm *time)
{
	const char *FNAME = "writeLCD()";
	char *shour  = NULL;
	char *smin   = NULL;
	char *ssec   = NULL;
	char *svalue = NULL;
	
	shour  = (char *) alloca(sizeof(char)*3 + 1);
	smin   = (char *) alloca(sizeof(char)*3 + 1);
	ssec   = (char *) alloca(sizeof(char)*3 + 1);
	svalue = (char *) alloca(sizeof(char)*7 + 1);
	
	snprintf(shour,  3, "%02d", time->tm_hour);
	snprintf(smin,   3, "%02d", time->tm_min);
	snprintf(ssec,   3, "%02d", time->tm_sec);
	snprintf(svalue, 7, "%4.1f", value);
	fprintf(stdout, "DEBUG: %s: hour=%s min=%s sec=%s mode=%c value=%s\n", FNAME, shour, smin, ssec, mode, svalue);

	/* switch off backlight */
	lcdDisplay(fd_lcd, 1);
	/* set the cursor position: column 0-15, row 0-1*/
	/* set cursor top row, position 0 */
	lcdPosition(fd_lcd, 0, 0);
	/* clear the screen (fill with blanks) */
	lcdPuts(fd_lcd, "                ");
	/* set cursor bottom row, position 0 */
	lcdPosition(fd_lcd, 0, 1);
	/* clear the screen (fill with blanks) */
	lcdPuts(fd_lcd, "                ");

	lcdPosition(fd_lcd, 0, 0);
	lcdPuts(fd_lcd, shour);
	lcdPutchar(fd_lcd, ':');
	lcdPuts(fd_lcd, smin);
	lcdPutchar(fd_lcd, ':');
	lcdPuts(fd_lcd, ssec);
	lcdPosition(fd_lcd, 0, 1);
	
	switch (mode) {
		case 't':
				lcdPuts(fd_lcd, "Temperatur ");
				lcdPosition(fd_lcd, 11, 1);
				snprintf(svalue, 5, "%2.1f", value);
				lcdPrintf(fd_lcd, svalue);
				break;
		case 'h':
				lcdPuts(fd_lcd, "Feuchte ");
				lcdPosition(fd_lcd, 8, 1);
				snprintf(svalue, 3, "%2.0f", value);
				lcdPrintf(fd_lcd, svalue);
				lcdPutchar(fd_lcd, '%');
				break;
		case 'p':
				lcdPuts(fd_lcd, "Druck ");
				lcdPosition(fd_lcd, 6, 1);
				snprintf(svalue, 5, "%4.0f", value);
				lcdPrintf(fd_lcd, svalue);
				lcdPuts(fd_lcd, " HPa");
				break;
	}

	return 0;
}
コード例 #11
0
int lcdPutBigNumber(int col, int row, int numberToPrint)
{
    int font[][9] = {
        //0
        {
            255,2,1,
            255,254,255,
            4,3,255,
        },
        //1
        {
            2,1,254,
            254,255,254,
            3,255,3,
        },
        //2
        {
            2,2,1,
            0,6,5,
            4,3,3,
        },
        //3
        {
            2,2,1,
            254,2,1,
            3,3,255,
        },
        //4
        {
            255,254,1,
            5,5,255,
            254,254,255,
        },
        //5
        {
            255,2,2,
            2,2,1,
            3,3,255,
        },
        //6
        {
            255,2,2,
            255,2,7,
            4,3,255,
        },
        //7
        {
            2,2,255,
            254,0,2,
            254,255,254,
        },
        //8
        {
            255,2,1,
            255,2,255,
            4,3,255,
        },
        //9
        {
            255,2,1,
            2,2,255,
            3,3,255,
        },
    };

    // the number to screen at the position specified.
    lcdPosition(lcdHandle, col, row);  // LINE 1
    lcdPutchar (lcdHandle, font[numberToPrint][0]);
    lcdPutchar (lcdHandle, font[numberToPrint][1]);
    lcdPutchar (lcdHandle, font[numberToPrint][2]);

    lcdPosition(lcdHandle, col, row + 1);   //LINE 2
    lcdPutchar (lcdHandle, font[numberToPrint][3]);
    lcdPutchar (lcdHandle, font[numberToPrint][4]);
    lcdPutchar (lcdHandle, font[numberToPrint][5]);

    lcdPosition(lcdHandle, col, row + 2);   //LINE 3
    lcdPutchar (lcdHandle, font[numberToPrint][6]);
    lcdPutchar (lcdHandle, font[numberToPrint][7]);
    lcdPutchar (lcdHandle, font[numberToPrint][8]);

    //int big4_1[] = {255,2,1,	//0
    //                2,1,254,	//1
    //                2,2,1,	//2
    //                2,2,1,	//3
    //                255,254,1,	//4
    //                255,2,2,	//5
    //                255,2,2,	//6
    //                2,2,255,	//7
    //                255,2,1,	//8
    //                255,2,1,	//9
    //                254,3,254,	//10 (:)
    //                254,254,254,	//11 ( )
    //               };
    //int big4_2[] = {255,254,255,	//0
    //                254,255,254,	//1
    //  			  0,6,5,	//2
    //  		 	  254,2,1,	//3
    //  		   	  5,5,255,	//4
    //  		 	  2,2,1,	//5
    //  		 	  255,2,7,	//6
    //  			  254,0,2,	//7
    //  		   	  255,2,255,	//8
    //  		   	  2,2,255,	//9
    //                254,254,254,	//10 (:)
    //                254,254,254,	//11 ( )
    //               };
    //int big4_3[] = {4,3,255,	//0
    //                3,255,3,	//1
    //  			  4,3,3,	//2
    //  			  3,3,255,	//3
    //  			  254,254,255,	//4
    //  			  3,3,255,	//5
    //  			  4,3,255,	//6
    //  			  254,255,254,	//7
    //  			  4,3,255,	//8
    //  			  3,3,255,	//9
    //                254,2,254,	//10 (:)
    //                254,254,254,	//11 ( )
    //               };

    //// the number to screen at the position specified.
    //lcdPosition(lcdHandle, position, rowShift + 0);  // LINE 1
    //lcdPutchar (lcdHandle, big4_1[(numToPrint * 3) + 0 ]);
    //lcdPutchar (lcdHandle, big4_1[(numToPrint * 3) + 1 ]);
    //lcdPutchar (lcdHandle, big4_1[(numToPrint * 3) + 2 ]);
    //
    //lcdPosition(lcdHandle, position, rowShift + 1);   //LINE 2
    //lcdPutchar (lcdHandle, big4_2[(numToPrint * 3) + 0 ]);
    //lcdPutchar (lcdHandle, big4_2[(numToPrint * 3) + 1 ]);
    //lcdPutchar (lcdHandle, big4_2[(numToPrint * 3) + 2 ]);
    //
    //lcdPosition(lcdHandle, position, rowShift + 2);   //LINE 3
    //lcdPutchar (lcdHandle, big4_3[(numToPrint * 3) + 0 ]);
    //lcdPutchar (lcdHandle, big4_3[(numToPrint * 3) + 1 ]);
    //lcdPutchar (lcdHandle, big4_3[(numToPrint * 3) + 2 ]);

    return 0;
}
コード例 #12
0
ファイル: demo1.c プロジェクト: Iryaz/leso6
int main() {
	//! Инициализация портов для светодиодов.
	DDRF |= (1 << DDF0 | 1 << DDF1 | 1 << DDF2 | 1 << DDF3);
	//! Инициализация порта для пьезоизлучателя.
	DDRB |= (1 << DDB0);
	//! Инициализация портов для строк клавиатуры. Строки на ввод.
	DDRD &= ~(1 << DDD4 | 1 << DDD5 | 1 << DDD6 | 1 << DDD7);
	//! Инициализация портов для строк клавиатуры. Поддяжка к питанию.
	PORTD |= (1 << PD4 | 1 << PD5 | 1 << PD6 | 1 << PD7);
	//! Инициализация портов для столбцоы клавиатуры. столбцы на вывод.
	DDRG |= (1 << DDG0 | 1 << DDG1 | 1 << DDG2);

	//! Инициализация таймера для излучателя звука.
	TCCR3A = 0;
	TCCR3A = 0;
	TCCR3B = 0;
	TCCR3B_struct.cs3 = 0x01;		// Предделитель: F_CPU/1
	TIMSK3_struct.toie3 = 1;		// Разрешаем прерывание по переполнению
	TCNT3 = -8000;					// 8000 тактов центрального проессора ~ 500 мкс.

	//! Инициализация таймера для смены режимов.
	TCCR4A = 0;
	TCCR4A = 0;
	TCCR4B = 0;

	uint8_t key1, key2 = 0;			//!< Переменные для хранения кода нажатых клавишь.
	uint8_t i;
	char tx_buff_str[16];


	//! Структура для чтения времени.
	//! Перед первым использованием должна быть инициализирована.
	ds18b20_memory_t ds18b20_memory = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	int16_t temper = 0;

	//! Структура для чтения времени.
	//! Перед первым использованием должна быть инициализирована.
	rtc_data_r_t time = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
	//rtc_data_w_t time_w = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; //!< Структура для установки времени.
	uint8_t sec;

	I2C_Master_Initialise(); 			//!< Инициализация I2C интерфейса.
	ds18b20_convert();					//!< Запуск преобразование температуры.
	uart_init();						//!< Инициализируем UART.
	uart_set_input_cb(uart_rx_cb);// Устанавливаем функцию обратного вызова на прием байта по UART.

	printf("\n\rLESO laboratory (c) 2014\r\nDemo test program\r\n");
	printf("LESO6 ATMEGA128RFA1\r\n");
	fprintf(stderr, "stderr: NO ERRORS\r\n");

	//! Массив с описанием символа градуса.
	uint8_t ch[8] = {
	0x06, /*x x x 0 0 1 1 0*/
	0x09, /*x x x 0 1 0 0 1*/
	0x09, /*x x x 0 1 0 0 1*/
	0x06, /*x x x 0 0 1 1 0*/
	0x00, /*x x x 0 0 0 0 0*/
	0x00, /*x x x 0 0 0 0 0*/
	0x00, /*x x x 0 0 0 0 0*/
	0x00  /*x x x 0 0 0 0 0*/
	};

	//! Управлящая структура для ЖКИ.
	lcd_t lcd = { 0, 0, 0, 0, 0 };
	lcdInit(&lcd);								//!< Инициализируем ЖКИ;
	lcdCursor(&lcd, 0);							//!< Выключаем курсор.
	lcdCursorBlink(&lcd, 0);					//!< Выключаем мерцание курсора.
	sprintf(tx_buff_str, " LESO6 \n 2014%c  ", 0xb4);
	lcdPuts(&lcd, tx_buff_str);
	lcdCharDef(&lcd, 1, ch);					//!< Определяем новый символ.

	for (i = 0; i < 75; i++)
		_delay_ms(10);
	getTimeDS1338(&time);						//!< Читаем время.
	ds18b20_read(&ds18b20_memory);				//!< Читаем температуру.
	sec = time.Second;

	TIMSK3_struct.toie3 = 0;// Запрещаем прерывание при переполнении таймера 3.
	off(BIP);									// Выключаем звук.

	lcdClear(&lcd);
	lcdCursor(&lcd, 1);
	lcdPuts(&lcd, "Text:\n");
	while (1) {
		while (key_mode)		// В режиме набора текст:
		{
			key1 = getKeyChar();
			for(i=0; i<5; i++) _delay_ms(10);
			key2 = getKeyChar();

			if (key1 == '\n') continue;
			else if (key1 != key2) continue;

			TCNT4 = 0;				// Дополнительное время работы в этом режиме
			if((lcd.cx) == lcd.cols)// закончились символы в строке
			{
				lcdPuts(&lcd,"\r        \r");// стираем строку, возвращаем курсор в начало
				printf("\r\033[0K");// стираем строку в терминале
			}
			lcdPutchar(&lcd, key1);
			LEDS &= ~0x0F;
			LEDS |= 0x0F&key1;
			putchar(key1);
			TIMSK3_struct.toie3 = 1;			// пик
			for(i=0; i<20; i++) _delay_ms(10);
			TIMSK3_struct.toie3 = 0;
		}

		printf("\r\033[0K%02u:%02u:%02u",time.Hour, time.Minute ,time.Second);
		sprintf(tx_buff_str, "%02u:%02u:%02u\n",time.Hour, time.Minute ,time.Second);
		lcdHome(&lcd);
		lcdPuts(&lcd, tx_buff_str);

		if(ds18b20_crc8((uint8_t *)&ds18b20_memory, sizeof(ds18b20_memory)))
		fprintf(stderr,"ERROR read DS18B20\r\n");
		else
		{
			temper = (ds18b20_memory.temper_MSB << 8) | ds18b20_memory.temper_LSB;
			printf(" T= %d.%u",temper>>4, ((temper&0xf)*1000)/(16));
			sprintf(tx_buff_str,"%02d.%u%cC  ",temper>>4, ((temper&0xf)*1000)/(16), 0x01);
			lcdPuts(&lcd, tx_buff_str);
		}

		ds18b20_convert();		// Запуск преобразование температуры.
		while(sec == time.Second)
		{
			if (getTimeDS1338(&time))
			{
				fprintf(stderr,"ERROR: read date fail..!\n\r");
				continue;
			}

			key1 = getKeyChar();
			if (key1 != '\n')
			{
				key_mode = 1;
				lcdClear(&lcd);
				lcdCursor(&lcd, 1);
				lcdPuts(&lcd,"Text:\n");

				TCCR4B_struct.cs4 = 0x04;		// Предделитель: F_CPU/256
				TIMSK4_struct.toie4 = 1;// Разрешаем прерывание по переполнению
				TCNT4 = 0;
				printf("\r\033[0K");// стираем строку в терминале
				break;
			}
			for(i=0; i<20; i++) _delay_ms(10);
		}
		sec = time.Second;
		ds18b20_read(&ds18b20_memory);
		if(ds18b20_crc8((uint8_t *)&ds18b20_memory, sizeof(ds18b20_memory)))
		fprintf(stderr,"ERROR read DS18B20\r\n");
	}

	return 0;
}