Для чисел меньше 10 всё совпадает, потом начинается разница:
Код: Выделить всё
0 = 0b00000000 = 0x00 = 0
1 = 0b00000001 = 0x01 = 1
..
9 = 0b00001001 = 0x09 = 9
10 = 0b00010000 = 0x10 = 16
11 = 0b00010001 = 0x11 = 17
На каждую десятку нарастает лишняя шестёрка.
Раньше Вы писали совсем неправильно, например
Код: Выделить всё
else if (week == 00011) lcd_string("TUE",3);Тут нужно было писать не 00011, а 0b00011. В языке C числовая константа, начинающаяся с 0 интерпретируется как восьмеричная (равно как 0b - двоичная, 0x - шестнадцатеричная). Поэтому, 11 в восьмеричной системе - это девятка. Естественно, такого дня недели нет. Такая неправильная запись срабатывала бы только для воскресенья, которое = 1 во всех системах счисления. Остальные дни давали бы числа большие или равные 8 (010 = 8, 011 = 11, 0100 = 64 и т.д).