Прошу помочь по LCD

Тема в разделе "Arduino & Shields", создана пользователем Александр1984, 12 фев 2017.

  1. Пожалуйста удалите ветку, чтобы не было мусора. Спасибо.
     
    Последнее редактирование: 14 фев 2017
  2. serg_admin

    serg_admin Гик

    Вообще обычно есть время установки сигнала. Для тех, что я использовал вроде 2мкСек, точно не помню. Т.е. вероятно девайс не успевает за Arduino.
     
  3. Проблема думаю с частотой. Девайс 8МГц, ардуино 16Мгц. Если 16-16 то все. Подключал NodeMCU 80Мгц, чтобы читал из 16МГц уже работает не корректно. Т.е. надо как-то понизить частоту на считывающие пины без перепайки кварца и перепрошивки ардуины. Прошу помочь
     
  4. serg_admin

    serg_admin Гик

    Можно по подробнее схему. Не совсем понятно что делайте.
    ЖКИ - это дисплей. Тогда причем 8 MHz.
    У них по дата щиту есть время установки сигнала после подачи команды, надо смотреть для конкретного дисплея.
     
  5. Или причина вообще не частоте? Не уж то 80МГц не может считать 8 или 16МГц?
     
  6. serg_admin

    serg_admin Гик

    В каком порядке вы пишете в ЖКИ?

    У меня так:
    - Установить E
    - Установить RW
    - Вывести данные
    - Задержка
    - Сброс D7
    - Сброс E
    - Задержка

    В этом случае можно читать через время равное половине "задержки" после установки RW. Все должно надежно работать

    У меня примерно так:
    Код (C++):
    void lcd_applay(uint8_t rs, uint8_t rw, uint8_t data) {
    38     PORT_OTHER |= _BV(PIN_E);
    39     if (rs) PORT_OTHER |= _BV(PIN_RS);
    40     else PORT_OTHER &= ~(_BV(PIN_RS));
    41     if (rw) PORT_OTHER |= _BV(PIN_RW);
    42     else PORT_OTHER &= ~(_BV(PIN_RW));
    43     PORT_DATA = data ;
    44     _delay_ms(1);
    45     PORT_DATA &= ~(_BV(PIN7));
    46     PORT_OTHER &= ~(_BV(PIN_E));
    47     _delay_ms(1);
    48 }
     
     
    arkadyf нравится это.