Скетч управления ЖК экраном

нет. не правильно! Этио код зажигает сег0 СО ВСЕМИ ком. ТО есть все то, что в твоем первом посте показано, как сегмент0.

фаза всех комов у тебя: 01. Фаза сегментов 0 - 10, остальных 01. Все. что в противофазе - горит.

====
Не вымучивай обучение на форуме! Ничего, кроме раздражения это не вызывает. Читай документацию.

я не пытаюсь тут чего то “вымучивать”, ты написал направление, хотя и усомнился в том что я хоть что то пойму, спасибо тебе, как видишь пытаюсь делать и понимать…
откуда противофаза если в коде не совпадает только С0 и S0 ?

йоп! Это таблица 4х9. Строки - комы, столбцы - сегменты.
В строках у тебя 01,01,01,01, в столбцах: 10, 01, 01, 01…в каких клетках таблицы противофаза? Ну думай же головой!
Признавайся - вышка есть техническая? Если нет, и ты старше 40 - учиться бесполезно. Забей.

А где тут ЖК ?

Жилищный Кооператив? Животноводческий Колхоз? Железный Кулак?

микро ЖК дисплей подсвечен светодиодом, выше на видео это видно…

мне 55 лет и учиться никогда не поздно…

1 лайк

Ты точно знаешь, что мне - 53, так что я знаю, что говорю. Вышка техническая - признак того, что в молодости тебя научили учиться. Собственно это единственное, для чего она нужна. Если этого опыта в юности не было, то и взять его неоткуда.

Вот откуда в тебе столько желания судить людей, зачем не зная человека делать столь глупые выводы? Я с детства занимаюсь радиолюбительством, всякими поделками, авиамоделизмом, работаю инженером… Наверняка же есть вещи в которых ты лох печальный. но это не даёт никому права считать тебя ущербным?

1 лайк

откуда берутся эти цифры?

PORTB =   B000000;  строки, на всех ноли
PORTD = B00000001;  столбцы, на всех ноли кроме одного

несовпадение в одной точке, она и должна гореть

так есть вышка или нет? Что тебя пугает в простом вопросе?
Я тебя не считаю дебилом. Я утверждаю, что в программировании ты далеко не продвинешься, если не имел приличного высшего технического образования. Это не достаточное, но необходимое условие.

нет, вышки нет, есть технарь… Радиоаппаратостроение, 1987 год
Вышка сейчас есть ой как у многих… Но когда начинаешь с человеком говорить а он тебе про плюс и минус в розетке - мне плакать хочется…

1 лайк

Вот про это я и говорю. Про тяжесть в понимании.
Поясню еще раз: ком-ы у тебя 0b0000 - 500мкс и 0b1111 еще 500 мкс. следовательно Каждый ком имеет сигнал 01: сперва 0, потом 1. Если смотреть по времени. Теперь распиши так же все Сегменты.

Вот тебе чтение на ночь. Английский оригинал сейчас поищу.

https://russianelectronics.ru/metody-upravleniya-zhk-displeem/

вот и тоже самое, но ДО корявого перевода.
https://www.planetanalog.com/alternative-methods-of-lcd-control-part-1-of-2/

1 лайк

спасибо за ссылки, англицкий не ищи, я его тоже не знаю :slight_smile:
расписать столбцы попробую завтра, я приболел малехо, спать пойду…

Доброе утро!
Читал, старался понимать, есть вопрос:
Почему судя по картинке в выделенной мной области при казалось бы противофазе по com0 и Seg1, свечение будет именно по com1(синий) но никак не по com0 или com2?

Частота так подобрана, что не успевает перезарядится и по осциллограмме это то же видно.

#define dm 1550

PORTB = B00001
PORTD = B11111111
delayMicroseconds(dm);
PORTB = B01111
PORTD = B11111111
delayMicroseconds(dm);
PORTB = B10000
PORTD = B00000000
delayMicroseconds(dm);
PORTB = B11110
PORTD = B00000000
delayMicroseconds(dm);

Увидеть бы осциллограмму со светящегося сегмента.

Формально, я уже дошёл до того момента, когда один сегмент по одной линии COM я могу погасить… а вот дальше проблема

void setup() {
//         ↓ - этот бит порта В это тоже сегмент, последний, 9-тый
  DDRB = B111111; // ком порты
  DDRD = B11111111;  // сегменты
}
void loop() {
//              ↓ - этот бит порта В это тоже сегмент, последний, 9-тый
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B000001;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B011110;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
//=======================================================
/*    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B000010;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B001111;
    PORTD = B00000001;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B011101;
    PORTD = B11111110;
    delayMicroseconds(500);
    PORTB =   B010000;
    PORTD = B11111110;
    delayMicroseconds(500); */
   
}

если оставляем скетч как есть, то по COM0 гасится нужный сегмент, а вот если раскоментировать вторую часть, в надежде погасить ещё один сегмент по COM1 - нифига не выходит… загорается даже тот который должен быть погашен…

в общем по отдельности эти обе “половинки” гасят нужный сегмент а вместе нет.
В чём я ошибаюсь?

скажи как именно сделать замер и я сделаю!

B4 и D0