Why can't I read anything but Pin 0 of PORTC?
Judging from your readSensors() function, these seem to be capacitive
sensors:


you charge them to Vcc (DDRC = 1; PORTC = 1;)
you wait until they are fully charged (delay_us(10);)
you tri-state the pin (DDRC = 0; PORTC = 0)
you wait for them to partially self-discharge (delay_ms(1);)
you read the pin (return PINC;)


If my assumption is correct, and if all of those sensors are similar,
then here is your first bug: you are only charging the sensor on PC0. If
you want to charge the four sensors, you need to set bits 0 to 3 of the
port to active high. Thus, the first two statements in readSensors()
should be:



DDRC = 0x0f;   // bits 0 to 3...
PORTC = 0x0f;  // ...set to active high


Your second bug is in printBinaryLCD(). The function name, and the way
you call it, implies it is meant to print on the LCD the value passed as
a parameter. Instead, it is completely ignoring its parameter, and
reading PORTC itself. This is bad because the reading of the
capacitive sensors is time sensitive, so you should let readSensors()
do the work. You should then change printBinaryLCD() so that it
examines val instead of PORTC:

void printBinaryLCD(uint8_t val)
{
    lcd_home();
    uint8_t A = (val &amp; (1&lt;&lt;3)) != 0;
    ...etc...