Работа с ЖКИ на контроллере HD44780 и его аналогах

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2305
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

Сообщение Adagumer »

Gudd-Head писал(а):Переполюсовка
Дык как с оживлением? Возможен процесс или можно с него детальки спаивать?
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Что вы вообще подразумевали под словом оживление?Если дисплей не работает при правильном подключении, то никакие процессы вам не помогут, разве что перепайка контроллера. Сомневаюсь, что найдется замена, разве что с такого же донора.
Контактная информация:
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2305
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

Сообщение Adagumer »

vitalik_1984 писал(а): Сомневаюсь, что найдется замена, разве что с такого же донора.
Понял значить в ведро, будем ждать присылки следующего. :cry:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

зачем сразу в ведро то? Можно на ключи как брелок :)) еще можно светодиоды подсветки снять и возможно даже получится на другой дисплей без подсветки пристроить.
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 59
Зарегистрирован: Ср дек 22, 2010 14:59:37

Сообщение NucLeaR »

купил жк дисплей wh1602f. проблема вот в чем: пробовал несколько примеров прошивок - инициализация не проходит, получилось инициализировать только вот этим кодом

Код: Выделить всё

void lcd_init (void)     //????????????? ???
{
 lcd_com(0x0c);
 pause(100*TIME);
 lcd_com(0x2c);
 pause(100*TIME);
 lcd_com(0x01);
 pause (100*TIME);
}
и еще в нем какой то странный знакогенератор
может в нем какой нибудь другой контроллер стоит?? и можно ли как нибудь сделать нормальный знакогенерато?
Вложения
img003_.jpg
знакогенератор
(202.28 КБ) 494 скачивания
Реклама
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Можно сделать таблицу перекодировки просто потратить на нее 255 байт и в соответствии с таблицей ASCIIсоставить какой символ какому символу в дисплее соответствует.
Потом просто делаем функцию вывода :

Код: Выделить всё

unsigned char lcd_recode[255];
lcd_recode[0x30]=0x30;//0
lcd_recode[0x31]=0x31;//1
lcd_recode[0x32]=0x32;//2
lcd_recode[0x33]=0x33;//3
lcd_recode[0x34]=0x38;//4
lcd_recode[0x35]=0x39;//5
lcd_recode[0x36]=0x3A;//6
lcd_recode[0x37]=0x3B;//7
lcd_recode[0x38]=0x34;//8
lcd_recode[0x39]=0x35;//9

lcd_put_string(unsigned char *string){
   unsigned char s,i=0;
    while (s=string[i++]){
         lcd_putchar(lcd_recode[s]);
     }
}

//Где то в программе:
lcd_put_string("Привет, как дела?");
 
Код сырой, только что придумал, по давно увиденному примеру и в телефоне набрал, но там было немного проще- английская часть совпадает с Существующей таблицей, поэтому перекодирование требуется только для русской части.
А тут вообще все перемешано.Нужно все необходимые символы прописать.
Где то был пример, поищите в этой теме, там уже проверенный код.
Контактная информация:
Реклама
Открыл глаза
Сообщения: 59
Зарегистрирован: Ср дек 22, 2010 14:59:37

Сообщение NucLeaR »

Спасибо большое)
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2305
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

Сообщение Adagumer »

Adagumer писал(а): Есть устройство собранное на макетке под индикатор WH0802A-YGH-CT. Пока индикатора на руках не было то устройство отлаживалось на DV16235-2. Когда нужный дисплей пришёл я его на радостях воткнул в устройство и включил, дисплейчик только блымнул и потух напрочь. Только потом в голове мяукнуло что у DV162325 питание + на 1пине, а - на 2, а у WH0802 наоборот. Вот и думаю убил я дисплейчик насовсем или есть шанс каким-то особым шаманским способом потрясти дабы он ожил?
В продолжении темы: дождался пока прислали второй дисплей, в этот раз подключал с особой осторожностью, предварительно проверив правильность подключения питания. Дисплей не подаёт никаких признаков жизни. Контрастность менял от 1до 4 вольт, результатов ноль. Замерил потребляемый ток, он составил 0,5мА, у работающего дисплея DV162325 ток по питанию 0,56мА. Какая может быть причина нерабочести дисплея, неужели бракованный прислали? :o
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

NucLeaR писал(а):может в нем какой нибудь другой контроллер стоит?? и можно ли как нибудь сделать нормальный знакогенерато?
может у Вас два провода перепутаны в подключении индикатора??? поищите среди выводов D0-D7.
Я сделал вывод о возможной ошибке, поскольку таблица полностью совпадает с оригинальной, если поменять строки 4,5,6,7 со строками 8,9,А,В.
Ставим плюсы: )
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Кстати да.
Даже больше можно сказать при дальнейшем анализе показало:
число 0x34 = 0011 0100 в неправильной таблице это соответствует 0x38 =0011 1000
далее 0x37 = 0011 0111 в неправильной 0x3B = 0011 1011
еще для уточнения : 0x35 = 0011 0101 в неправильной 0x39 = 0011 1001

Результат на лицо - очевидно перепутаны местами два пина подключения DB2 и DB3, поразительно как вообще дисплей инициализировался.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Появилась такая проблема с дисплеем. Вместо буквы ю выводит Ж, а вместо ч - А. При этом первый раз надпись выводится нормально, а потом с заменой букв. Помогите разобраться.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

телепатов нет, явно ошибка в коде.
Ставим плюсы: )
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Держите код. Используется CVAVR 2.05.
Вложения
программа.c
(10.6 КБ) 230 скачиваний
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

насколько вижу, передача в функцию массива без завершающего нуля.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

В какую функцию? Их там много.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

dd_lcd("Калибр. датч.(В)Темп. датч.:\0",28);
попробуй так
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Разве может отсутствие нуля влиять на буквы в середине? Ладно, спасибо, попробую.

PS. (1 минуту спустя) Нет, всё равно не помогло. А помогло вот это (функция dd_lcd):

Код: Выделить всё

void dd_lcd(  unsigned char *mas,unsigned char len ) //В функцию 
//передаём параметры: mas - текст который выводим, len - его длина 
{ unsigned char ii, mas1[33]; 
for(ii=0;ii<33;ii++){
mas1[ii]=0;
} 
for (ii=0;ii<len; ii++) {
if(mas[ii]>=0xC0){
mas1[ii]=kirilTable[mas[ii]-0xC0];
}
else{
mas1[ii]=mas[ii]; 
}
}
lcd_puts(mas1); 
} 
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница

Сообщение urry »

lcd_puts(mas1); - выводит символы из оперативки до тех пор, пока не натолкнется на 0.
Много лишних телодвижений в программе, зачем еще 1 массив ?
Выводить одну и ту же инфу нужно из флеши, есть и для этого функция, бездарно тратится память.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2305
Зарегистрирован: Чт ноя 15, 2012 20:47:59
Откуда: Крымск

Сообщение Adagumer »

Какая-то чертовщина происходит с дисплеями 0802, уже третий дисплей не желает запускаться. 1602 с данным кодом работает прекрасно, а 0802 даже признаков жизни не подаёт. Может как-то по особому инициализацию нужно проводить?
Вот простенький код:

Код: Выделить всё

#include <mega8.h>

#asm
        .equ __lcd_port=0x18
#endasm

#include <lcd.h>
void main(void)
{

lcd_init(8);

lcd_gotoxy(0,0);

lcd_putsf("HELLO");

lcd_gotoxy(0,1);

lcd_putsf("COTEE");


while (1);
}
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень

Сообщение vitalik_1984 »

Проверьте настройки контраста, питание, и потом уже с кодом боритесь.
Неоднократно уже обсуждалось.возможно для одного дисплея (16 символов) настройка контраста достаточна, а в другом (8)ничего не видно. Для начала просто подайте питание реостатом добейтесь отчетливого изображения первой строки, потом уже что то с кодом проверять можно.
Контактная информация:
Ответить

Вернуться в «Периферия»