Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 10:58:51
trengtor
WiseLord писал(а):Send_Nibble(0x0C); - не совсем понятно это. Почему 0x0C? Нестандартный (не 5x8 символы) дисплей? По идее, 1) там должно быть 0x08, 2) прямо перед этим ещё одно 0x02, уже в 4-х битном режиме, ранее установленном.
1) В любом случае, дело не в этом (пробовал и с 0, и с 1).
2) Потому что этот нибл УЖЕ стоит на шине. Остается лишь дать ему повторный строб.
Добавлено after 1 hour 29 minutes 3 seconds:
ps. Дисплей и схема рабочие: проверено стандартной микропаскалевской библиотекой LCD.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 11:06:14
Z_h_e
Порты не забыли инициализировать как выход?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 11:26:44
trengtor
Z_h_e писал(а):Порты не забыли инициализировать как выход?
program LCD_test;
uses
ULCD;
var
ULCD_RS : sbit at PORTC4_bit;
ULCD_EN : sbit at PORTC5_bit;
ULCD_D4 : sbit at PORTD4_bit;
ULCD_D5 : sbit at PORTD5_bit;
ULCD_D6 : sbit at PORTD6_bit;
ULCD_D7 : sbit at PORTD7_bit;
ULCD_RS_Direction : sbit at DDC4_bit;
ULCD_EN_Direction : sbit at DDC5_bit;
ULCD_D4_Direction : sbit at DDD4_bit;
ULCD_D5_Direction : sbit at DDD5_bit;
ULCD_D6_Direction : sbit at DDD6_bit;
ULCD_D7_Direction : sbit at DDD7_bit;
begin
ULCD_Init;
end.
Проверка: если ULCD_ заменяем на LCD_ (обращаемся к стандартной библиотеке), то всё работает.
Не могу понять, в чем именно затык. Формально код ULCD_Init корректен. На практике – не работает.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 13:11:34
СКАЗОЧНИК
Задержки при инициализации можно делать гораздо длиннее, чем даже указано в даташите (теоретически до бесконечности).
Плохо знаю паскаль, но на все другие языки он все равно похож. Однако, лень разгребать. У вас процедурка описана Send_Nibble, в которой уже указано, что строб надо дергать. Потом в тексте у вас задержка на 5 мсек и опять строб?
Не помню сейчас полной его инициализации, может там лишнее чего?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 13:17:38
trengtor
СКАЗОЧНИК писал(а):Задержки при инициализации можно делать гораздо длиннее, чем даже указано в даташите (теоретически до бесконечности).
Плохо знаю паскаль, но на все другие языки он все равно похож. Однако, лень разгребать. У вас процедурка описана Send_Nibble, в которой уже указано, что строб надо дергать. Потом в тексте у вас задержка на 5 мсек и опять строб?
Не помню сейчас полной его инициализации, может там лишнее чего?
Потому, что нужный нибл уже стоит на шине.
Лишнего вроде бы ничего нет. Но может глаз замылился. Поэтому и прошу помощи.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 13:42:33
WiseLord
У меня подобный код на C работает. Вот как он выглядит в переводе на этот диалект:
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 13:48:22
СКАЗОЧНИК
Не знаю.
Я бы все равно, сначала сконфигурировал все порты и сбросил их в ноль.
Потом бы уже дал начальную задержку.
Потом уже выставил в порт 0011 (и убедился, что они стоят именно на DB7-DB4
Затем три строба с задержкой между ними в 10-15 милисек.
Затем команду для переключения на 4 линии 0010
Потом строб и еще такую же задержку.
Затем вторую тетраду этой команды (4 лини и две строки)
// Разрядность 4
Send_Nibble(0x02); Отправляем старший полубайт. Он его проглатывает.
Delay_us(40);
// Разрядность 4 и параметры (2 строки, дисплей включен)
Strobe_EN; Снова старший полубайт
Send_Nibble(0x0C); Здесь я отправляю команду 1000 (0х08)
Delay_us(40);
Для очистки дисплея отправляю команду 00000001 , т.е. по вашему будет 0х00 и 0х01
После них сразу длиииинннааааая задержка, т.к. чистится он долго
Потом установка режима ВЫВОда данных 00000110, т.е. 0х00 и 0х06
После уже включаю дисплей (курсор погашен) 0b00001100, т.е. 0х00 и 0х0С
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 13:59:13
trengtor
Я мурыжу этот код на рабочем девайсе. Вот в чем фокус-покус.
И если я в тест-программе поменяю в именах ULCD_ на LCD_ (т.е. перейду на стандартную библиотеку компилятора) – то всё оживёт, разумеется.
И с таймингами уже играл.
М-да, «несложный протокол» называется...
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 14:14:13
СКАЗОЧНИК
Так значит и искать надо проблему в этой U
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Чт янв 05, 2017 14:24:44
trengtor
СКАЗОЧНИК писал(а):Так значит и искать надо проблему в этой U
Формально там вроде бы всё Ок... Ладно, надо отложить на пару дней. Переключить контекст
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Вс янв 08, 2017 20:37:23
trengtor
Z_h_e писал(а):Порты не забыли инициализировать как выход?
Ох, как же неловко признаваться в собственной глупости рассеянности, но Вы оказались правы
Сама процедура инициализации была в порядке. Вот что значит по полгода не брать шашку в руки. Saleae logic помог.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 11:18:11
trengtor
Gudd-Head писал(а):Кстати, для OLED контроллера WS0010 вообще не нужны задержки
Только после подачи питания и очистки дисплея.
Это справедливо для любых версий? Просто есть несколько штук из первого выпуска, отметившегося своей неполной совместимостью по инициализации. И на них проскакивают горизонтальные полоски при дефолтных таймингах HD44780.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 18:11:02
ROMan2947
Приветствую!!!
Вынужден обратиться за помощью.. что здесь не так как надо
_delay_us(1);
PORTD=0<<2; //сигнал на запись
DDRD|=DDRD&0x00;
}
int main(void)
{
DDRD=0xFF;
PORTD=0x00;
init_LCD();
while (1)
{
}
}
ЖКИ LCD 1602A
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 18:21:09
Мурато Мяуконни
Неправильная инициализация. В даташите написано что и как надо
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 18:25:41
ROMan2947
Мурато Мяуконни писал(а):Неправильная инициализация. В даташите написано что и как надо
данный код по даташиту и писался, только кажется либо я недопонимаю, либо мы про разные шит говорим...
вот мой
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 18:32:43
trengtor
ROMan2947 писал(а):
Мурато Мяуконни писал(а):Неправильная инициализация. В даташите написано что и как надо
данный код по даташиту и писался, только кажется либо я недопонимаю, либо мы про разные шит говорим...
вот мой
А надо хитачевский для HD44780U
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 18:37:09
MOHCTEP
Сходу:
1 Вы как-то очень уж вольно обращаетесь с портом. Похоже, стробом стираете данные.
2 Не увидел включения дисплея в инсталяторе. (0х0С).
3 Зачем манипулируете DDRD в функции Write_Command?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 20:46:57
ARV
я вообще не понимаю, почему не применять готовые проверенные наработки? в чем сакральный смысл изобретения велосипеда?
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 20:48:17
СКАЗОЧНИК
ARV писал(а):в чем сакральный смысл изобретения велосипеда?
Для меня, например, в том, чтобы понять как это работает и изучить. Иначе можно и до Ардуины скатиться.
Re: Работа с ЖКИ на контроллере HD44780 и его аналогах
Добавлено: Пт янв 13, 2017 21:36:01
MOHCTEP
ARV, СКАЗОЧНИК прав, имхо. На полуфабрикатах, шеф поваром не станешь. К тому же чужие коды либо избыточны, в угоду универсальности, либо напротив - слишком узконаправлены. Вытащить из них и применить нужный "сакрал", без некоторого опыта, слабо реально.