#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>Â
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
 {'1','2','3'},
 {'4','5','6'},
 {'7','8','9'},
 {'*','0','#'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {12, 11, 10}; //connect to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){
 Serial.begin(9600);
 lcd.begin(20,4);
 lcd.setCursor(1,1);
 lcd.print("Ready for numbers!");
 delay(3000);
 lcd.clear();
}
Â
void loop(){
 char key = keypad.getKey();
Â
 if (key){
 Â
  Serial.println(key);
  lcd.print(key);
  }
 Â
 if (key == '#'){
  lcd.clear();
  }
Â
}
I have just realised that you are the same person in another post that told me to go back and look at post number 3. I will go back to that thread....
Now we can see that the variable containing the ASCII code for the number entered is key. That is the one that you need to manipulate to create the actual number as described in reply #3 of the other thread.