sprintf не совсем хороша для вывода непосредственно на LCD, т.к. в конце преобразованной строки символов '\0' добавляет. Однако если сначала формируется буфер и только потом целиком выводится на LCD, то можно и sprintf использовать. Тогда и ведущие нули не нужно самому добавлять.
Код
pos+=sprintf(&lcd_buf[pos],"%02u:%02u:%02u", hour, min, sec);
преобразует переменные времени в строку с ведущими нулями, разделителем ':' и кроме того вернет количество символов, добавав их к текущему значению pos которое можно трактовать как позицию для смещения курсора или для добавления другой строки, что иногда тоже полезно.
Если формировать строку не нужно, то pos можно и не использовать.
Код
sprintf(lcd_buf,"%02u:%02u:%02u", hour, min, sec);