I'm really surprised you get anything readable at all.
Your code seems to be a mish-mash of code for a i2C device and code for a non-I2c. I assume it is I2C as I believe most 4x20s are. You need a proper library LiquidCrystal_I2C2004V1. I recall a decent example is included.
If the LCD is not I2C, all allusion to I2C is just confusing junk, and you should get rid of it.
You appear to be using the same temp code as me, and I'm sure there is nothing wrong with it