Купил на ибее....... Дисплей 1602А контроллер SPLC780D. Методы инициализации для HD44780 тут не работают. Что только не пробовал Может кто имел дело с дисплеями на данном контроллере. "Подключал к меге16"
А зачем вы покупали то, что заведомо не сможете подключить?
ТОХЫЧ писал(а):
Методы инициализации для HD44780 тут не работают.
А может вы не правильно его инициализировали?
ТОХЫЧ писал(а):
SPLC780D
Ну судя по даташиту это тоже самое, что и в этой теме. Т.е. запустить его просто. Для чего следует внимательно почитать эту тему. Я когда свой первый раз запускал похожий дисплей прочитал все страницы, потом начал задавать вопросы. А вы могли бы перечислить подробно, что испробовали? И фотки показать, как подключали.
А зачем вы покупали то, что заведомо не сможете подключить?
Давайте не будем... Покупался дисплей на контроллере HD44780, а там китайский аналог Изначально программа отлажена в Протеусе под контроллер HD44780.
Цитата:
А может вы не правильно его инициализировали?
Собственно это и есть суть вопроса. Даташит прочтен от корки до корки. Подключал как по 4 так и по 8. Задержки выставлял в точности с указанными в даташите. Для начала хочу уточнить какой кварц нужен для работы микроконтроллера с данным дисплеем и нужен ли он вообще.
Кварц на ваше усмотрение. Просто для формирования задержек при инициализации надо будет вычислить время в зависимости от частоты тактирования. Задержки можно делать больше, чем указано в даташите.
С Протеусом вообще рекомендую связываться в самом крайнем случае. Т.к. в нем бывает и работает все, а на деле в железе будут одни ошибки. Протеус-Зло.
И проверьте на каком порту сидит дисплей в Меге16, иногда забывают отключать ДЖИТАГ, который у нее по умолчанию всегда включен. А изначально, подключите питание к дисплею и потенциометр на контрастность. Попробуйте без всяких МК просто настроить контраст, чтобы было слегка видно закрашенные квадратики в верхней строке. А уже после этого мучить МК, чтобы наконец-то что-то показывать стало. ))))
... и по мнению еще очень многих ) Ситуация, согласитесь, отнюдь не в пользу этого самого протеуса. Был написан некий код для HD44780. Который, вроде бы, работал в симуляторе. Но не проверялся в железе. Теперь куплен ЖКИ на полном аналоге этого контроллера, но с ранее писанным кодом, который, повторюсь, НЕ проверялся в железе, он не работает. Ну и кто из них ?..
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн мар 30, 2015 09:43:04
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19950 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
ТОХЫЧ писал(а):
Дисплей 1602А контроллер SPLC780D.
Мало инфы. Схема подключения, код? Может, у вас тупо не хватает напряжения для контрастности.
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
... и по мнению еще очень многих ) Ситуация, согласитесь, отнюдь не в пользу этого самого протеуса.
вы знаете, сколько людей в год погибает от ран, нанесенных умышленно или по неосторожности отверткой? так что, следует признать, что отвертка - зло?
протеус - это инструмент, и очень хороший инструмент! со своими функциями он справляется если не на отлично, то на сверхтвердую четверку с плюсом, имхо. если кто не умеет использовать этот инструмент, или паче чаяния надеется, что профессиональный инструмент из любого ламера сделает Билла Гейтса - это его проблемы, а не проблемы инструмента
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
#define PORTLC PORTB // Порт подключения к ЖКИ #define DDRLC DDRB // Определяем направленность вход/выхода порта #define poryd 0b11110011// Определяем подключенные ножки порта к ЖКИ #define E PB1 // Нога подключенная для передачи строба подтверждения передачи данных #define RS PB0 // Нога для (команда или данные) передачи данных #define E1 PORTLC |= _BV (E); // E=1 #define E0 PORTLC &= ~_BV (E); // E=0 #define RS1 PORTLC |= _BV (RS); //RS=1 #define RS0 PORTLC &= ~_BV (RS); //RS=0
void command_lcd (unsigned char cmd) { PORTLC = (cmd & 0xF0); // Передаем старший полубайт *1111 0000 RS0; // Для передачи комманды E1; // Подтверждение передачи данных _delay_us (2); // Небольшая задержки для обработки команды контроллером ЖКИ E0; // Окончание импульса строба PORTLC = ((cmd & 0x0F) << 4); // Передаем младший полубайт * 0000 1111 RS0; E1; _delay_us (2); E0; _delay_us (2); }
void Initialization (void) // Определяем функцию инициализации // { DDRLC = poryd; // подключенные к жки устанавливаем в 1- выходы, два не использующихся оставляем как входы PORTLC = 0x00; // устанавливаем на выходах 0, где по условию RS and RW также должны быть = 0. _delay_ms (20); // Wait time > 15 ms
command_lcd (0x30); // 0011 0000 rw=0, rs=0 _delay_ms (5); // Wait time > 4.1 ms command_lcd (0x30); // 0011 0000 rw=0, rs=0 _delay_us (120); // Wait time > 100 us command_lcd (0x30); // 0011 0000 rw=0, rs=0
Заголовок сообщения: Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пн мар 30, 2015 10:31:21
Друг Кота
Карма: 67
Рейтинг сообщений: 1066
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19950 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
ТОХЫЧ, повторюсь: напряжение питания? При выкручивании контраста на максимум закрашенные квадратики появляются?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Добавьте внутрь command_lcd в самое начало задержку 50..100 мкс, а то у Вас команды идут подряд одна за другой, и дисплей их тупо не успевает обработать. А статус Вы не читаете. Между двумя стробами в command_lcd тоже небольшая задержка не помешает.
Последний раз редактировалось WiseLord Пн мар 30, 2015 11:07:52, всего редактировалось 1 раз.
Да, посмотрел ещё раз внимательнее. Инициализация совсем неправильная.
Первые три command_lcd (0x30) и последующая command_lcd (0x20) должны выполняться с одним стробом (в 8-битном режиме), и только последующие уже с двумя стробами (в 4-битном). А так у Вас инициализация идёт чёрти-как, в микросхему идут не 0x30 - delay - 0x30 - delay - 0x30 - delay - 0x20 инициализирующие данные, а что-то вроде 0x30 - 0x00 - delay - 0x30 - 0x00 - delay - 0x30 - 0x00 - delay - 0x20 - 0x00.
P.S. 2 СКАЗОЧНИК: разошлись на полминуты
Ну а предыдущее моё сообщение по поводу задержек в начале command_lcd (ввиду отсутствия здесь чтения статуса) тоже примите к сведению.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения