Цитата
Посмотрите на свои LCD_Show_Voltage()/LCD_Show_Temperature()/LCD_Show_Current() - не видите схожести?
Ну если вы об этом...
Они шлют разные команды, по разным адресам.
Более того, значок процента для цифр в левой части экрана дисплей считает точкой (запятой) старшего разряда цифр, находящихся в правой части экрана.
Управляя цифрами правой части экрана, нужно корректировать одну из цифр левой части, более того, нужно знать, что за параметр в данный момент в ней отображается (параметров 4, одновременно отображаемых - 2)
Можно конечно выделить общее и написать универсальную функцию, но для этого должно до такой степени не хватать места, что трата времени на подобные хитрости себя оправдывает. Я же зная сколько места в контроллере, и имея опыт написания более объемных прошивок, полагал, что места хватит при самом небрежном отношении к коду. ДА его собственно и хватило, я поставил галку, как указал выше - все нормально.
Эти 4 функции были написаны раздельно с целью упрощения рашифровки того, какой сегмент за что отвечает (даташита на дисплей нет).
Цитата
Зачем эти полотенца из send_command(0xC7);send_data(0x01); send_command(0x97); во многих местах? Что такое циклы - знаете?
Есть функция LCD_Clear - там цикл уместен и я его использовал. А в остальных функциях....
А ну-ка, хорошо, вот Вам кусок кода, покажите, как бы Вы сделали из него цикл? Просто интересно.
Код
send_command(0x00);
send_command(0x44);
send_command(0xC7);
if (int_num<10) send_data(0x00+percent_sign);else send_data(DIGITS[int_num/10]+percent_sign);
send_command(0xCB);
send_data(DIGITS[int_num%10]);
send_command(0xCE);
send_data(DIGITS[decimal_num]+1);
send_command(0xCA);
send_data(0x4);
send_command(0x97);
Но за критику в любом случае спасибо.
Сообщение отредактировал zheka - Aug 12 2018, 18:23