How to shorten this code (because my sensor reads slowly)?
Your slowness is because on every single iteration of loop() you are updating the entirety of the display.  That's bad and wasteful.
You need to do two things:

Only display static information (the labels) once. Do that in setup().
Only display the variable data if it actually changes.

The first is simple: move any static text to setup(). That means things like lcd1.print(F(&quot;dscnt=&quot;));. It never changes, and the display doesn't &quot;forget&quot; it, so doesn't need constantly reminding.
The second is slightly harder. You need to keep two copies of the data. One that is the data at this moment, and one that is the data that is being displayed. Then you compare one with the other and for any items where they differ display them and update your saved copy.
So something like:
if (d[0] != d_saved[0]) {
    d_saved[0] = d[0];  
    lcd.setCursor(8, 0);
    lcd.print(d[0]);
}

You can of course make that easier to program with a loop:
for (uint8_t i = 0; i &lt; 4; i++) {
    if (d[i] != d_saved[i]) {
        d_saved[i] = d[i];  
        lcd.setCursor(8, i);
        lcd.print(d[i]);
    }
}

Of course d_saved[4] needs creating in either the global scope or as a local static variable and initialising with some suitable &quot;can never be&quot; values (like -1 or something) so that the first time through it will always be different from the real values and display everything properly.