Problema con delayMicroseconds() en Arduino0022

Es que el codigo que has puesto no se parece nada a LCD.
No tengo idea de que se trata esa rutina, y porque necesitas "delayMicroseconds()" . Si puedes poner todo el codigo aca va a ser simple entender el contexto.

Yo tengo ese LCD-Keypad Shield y lo uso bastante.

Prueba si esto te funciona:

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

//Key message
char msgs[5][15] = {"Right Key OK ", 
                    "Up Key OK    ", 
                    "Down Key OK  ", 
                    "Left Key OK  ", 
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup() { 
  pinMode(13, OUTPUT);  //we'll use the debug LED to output a heartbeat

  lcd.clear();
  lcd.begin(16,2);
  lcd.print("KEYPAD test   ... pressing");

}

void loop() {

	adc_key_in = analogRead(0);    // read the value from the sensor  
  digitalWrite(13, HIGH);  
  key = get_key(adc_key_in);		        // convert into key press
	
	if (key != oldkey)				    // if keypress is detected
	{
    delay(50);		// wait for debounce time
		adc_key_in = analogRead(0);    // read the value from the sensor  
    key = get_key(adc_key_in);		        // convert into key press
    if (key != oldkey)				
    {			
      oldkey = key;
      if (key >=0){
      lcd.setCursor(0, 0);  //line=2, x=0
  			lcd.print(msgs[key]);
      }
    }
  }
  

  digitalWrite(13, LOW);
  

 
  
  
}

// Convert ADC value to key number
int get_key(unsigned int input)
{
	int k;
    
	for (k = 0; k < NUM_KEYS; k++)
	{
		if (input < adc_key_val[k])
		{
           
    return k;
        }
	}
    
    if (k >= NUM_KEYS)
        k = -1;     // No valid key pressed
    
    return k;
}

... pero la verdad que si quieres buena ayuda, tienes que poner todo el codigo aqui para que veamos cual es el problema.
Todavia no entiendo porque necesitas usar "delayMicroseconds()" solo para un LCD.