So I canuse all of the characters in the display just using 4 bit mode."You have a choice of using either 4 data bits or 8 data bits. The operation of the display is the same in either case."
Is there any example code or projects that demonstrate that? I don't think that you have done your homework.
This code will display 80 characters on a 20x4 or 40x2 display. You can use it unmodified on your 16x2 display but only 32 of the characters will be visible unless you 'shift' the display.
Use this code as a starting point, increase the delay and reposition the cursor to (0,0) each time around and you should see all 80 characters, one after another, on your display.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // put your pin numbers here
lcd.begin(20, 4); // put your LCD parameters here
for (char i=47; i<127; i++) // send 80 consecutive displayable characters to the LCD
delay(100); // this delay allows you to observe the addressing sequence