I won't go through all the LCD stuff (mine is a little customized), but here are the important bits (don't have a fancy formatter yet):
//create some strings to index into for displaying the big numbers
// 0 1 2 3 4 5 6 7 8 9
char bignumchars1[]={4,1,4,0, 1,4,32,0, 3,3,4,0, 1,3,4,0, 4,2,4,0, 4,3,3,0, 4,3,3,0, 1,1,4,0, 4,3,4,0, 4,3,4,0};
char bignumchars2[]={4,2,4,0, 2,4,2,0, 4,2,2,0, 2,2,4,0, 32,32,4,0, 2,2,4,0, 4,2,4,0, 32,32,4,0, 4,2,4,0, 2,2,4,0};
...
//cycle through printing out 0 to 9
void loop (void){
for(int x = 0;x<10;x++){
lcd.gotoXY(0,0);
lcd.print(bignumchars1+x*4);
lcd.gotoXY(0,1);
lcd.print(bignumchars2+x*4);
delay(1000);
}
}
...
void setup (void){
...
//creating the custom fonts:
LcdCommandWrite(B01001000); // set cgram
byte chars[]={
B11111,B00000,B11111,B11111,B00000,
B11111,B00000,B11111,B11111,B00000,
B00000,B00000,B00000,B11111,B00000,
B00000,B00000,B00000,B11111,B00000,
B00000,B00000,B00000,B11111,B00000,
B00000,B00000,B00000,B11111,B01110,
B00000,B11111,B11111,B11111,B01110,
B00000,B11111,B11111,B11111,B01110};
for(byte x=0;x<5;x++)
for(byte y=0;y<8;y++)
LcdDataWrite(chars[y*5+x]); //write the character data to the character generator ram
...
}
Course the technique isn't limited to numbers, or a 3x2 character box, or 16x2 LCDs.