Go Down

Topic: BIG numbers from a little LCD (Read 12519 times)previous topic - next topic

dcb

Jun 13, 2008, 03:13 am
Heres a little idea that someone might find useful  You all know the ubitiquous little 16x2 LCDs.  Well they can be taught to display numbers 6X as large if you define a couple block custom characters.

here is a little more detail

My hacked up code doesn't fit here and wasn't pretty anywhoo, but you get the idea

big93

#1
Jun 13, 2008, 09:29 pm
looks usefull for projects requring number sights from a distance... i think that the mpg idea is really good for it.

post code somewhere, i'll be intrested to see!

dcb

#2
Jun 14, 2008, 09:45 amLast Edit: Jun 14, 2008, 03:58 pm by dcb Reason: 1
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):
Code: [Select]
`//create some strings to index into for displaying the big numbers//                      0         1        2        3        4          5         6       7         8         9char 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 9void 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.

GekoCH

#3
Aug 15, 2008, 06:25 pm
hmm I tried to put your code into my sketch put I do get just
very curious characters on the LCD.

Could you pls send me the hole sketch?

Andy

esx

#4
Nov 28, 2008, 11:59 am
this is dont work LCD3wires library

why ?

esx

#5
Nov 29, 2008, 01:20 pm
works fine !!!

Code: [Select]
`// Example use of LCD3Wire library// Almost a carbon-copy of LCD4BitExample.pde#include <avr/pgmspace.h>  #include <LCD3Wire.h> //LCD Pins #define LCD_LINES 2  // number of lines in your display#define CLK_PIN   9  // Clock pin pwm#define DOUT_PIN  11  // Dout pin pwm      #define STR_PIN   12  // Strobe pin//create object to control an LCD.  LCD3Wire lcd = LCD3Wire(LCD_LINES, DOUT_PIN, STR_PIN, CLK_PIN); void setup() {  lcd.init();//creating the custom fonts:  lcd.commandWrite(B01001000);  // set cgram  static byte chars[] PROGMEM ={    B11111,B00000,B11111,B11111,B00000,    B11111,B00000,B11111,B11111,B00000,    B11111,B00000,B11111,B11111,B00000,    B00000,B00000,B00000,B11111,B00000,    B00000,B00000,B00000,B11111,B00000,    B00000,B11111,B11111,B11111,B01110,    B00000,B11111,B11111,B11111,B01110,    B00000,B11111,B11111,B11111,B01110};          for(byte x=0;x<5;x++)      {        byte a=(x+1<<3)|0x40;      for(byte y=0;y<8;y++)        {          lcd.commandWrite(a++); //write the character data to the character generator ram              lcd.print(pgm_read_byte(&chars[y*5+x]));        }      }  lcd.commandWrite(B00000001);  // clear display, set cursor position to zero  lcd.commandWrite(B10000000);  // set dram to zero  }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};void loop() {        for(int x = 0;x<10;x++){      lcd.clear();    lcd.cursorTo(0);    lcd.printIn(bignumchars1+x*4);    lcd.cursorTo(1);    lcd.printIn(bignumchars2+x*4);    delay(1000);  }}`

Go Up