Дык как с оживлением? Возможен процесс или можно с него детальки спаивать?Gudd-Head писал(а):Переполюсовка
Работа с ЖКИ на контроллере HD44780 и его аналогах
- Реклама
Что вы вообще подразумевали под словом оживление?Если дисплей не работает при правильном подключении, то никакие процессы вам не помогут, разве что перепайка контроллера. Сомневаюсь, что найдется замена, разве что с такого же донора.
Понял значить в ведро, будем ждать присылки следующего.vitalik_1984 писал(а): Сомневаюсь, что найдется замена, разве что с такого же донора.
зачем сразу в ведро то? Можно на ключи как брелок
еще можно светодиоды подсветки снять и возможно даже получится на другой дисплей без подсветки пристроить.
- Сообщения: 59
- Зарегистрирован: Ср дек 22, 2010 14:59:37
купил жк дисплей 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 скачивания
- Реклама
Можно сделать таблицу перекодировки просто потратить на нее 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
В продолжении темы: дождался пока прислали второй дисплей, в этот раз подключал с особой осторожностью, предварительно проверив правильность подключения питания. Дисплей не подаёт никаких признаков жизни. Контрастность менял от 1до 4 вольт, результатов ноль. Замерил потребляемый ток, он составил 0,5мА, у работающего дисплея DV162325 ток по питанию 0,56мА. Какая может быть причина нерабочести дисплея, неужели бракованный прислали?Adagumer писал(а): Есть устройство собранное на макетке под индикатор WH0802A-YGH-CT. Пока индикатора на руках не было то устройство отлаживалось на DV16235-2. Когда нужный дисплей пришёл я его на радостях воткнул в устройство и включил, дисплейчик только блымнул и потух напрочь. Только потом в голове мяукнуло что у DV162325 питание + на 1пине, а - на 2, а у WH0802 наоборот. Вот и думаю убил я дисплейчик насовсем или есть шанс каким-то особым шаманским способом потрясти дабы он ожил?
может у Вас два провода перепутаны в подключении индикатора??? поищите среди выводов D0-D7.NucLeaR писал(а):может в нем какой нибудь другой контроллер стоит?? и можно ли как нибудь сделать нормальный знакогенерато?
Я сделал вывод о возможной ошибке, поскольку таблица полностью совпадает с оригинальной, если поменять строки 4,5,6,7 со строками 8,9,А,В.
Ставим плюсы: )
Кстати да.
Даже больше можно сказать при дальнейшем анализе показало:
число 0x34 = 0011 0100 в неправильной таблице это соответствует 0x38 =0011 1000
далее 0x37 = 0011 0111 в неправильной 0x3B = 0011 1011
еще для уточнения : 0x35 = 0011 0101 в неправильной 0x39 = 0011 1001
Результат на лицо - очевидно перепутаны местами два пина подключения DB2 и DB3, поразительно как вообще дисплей инициализировался.
Даже больше можно сказать при дальнейшем анализе показало:
число 0x34 = 0011 0100 в неправильной таблице это соответствует 0x38 =0011 1000
далее 0x37 = 0011 0111 в неправильной 0x3B = 0011 1011
еще для уточнения : 0x35 = 0011 0101 в неправильной 0x39 = 0011 1001
Результат на лицо - очевидно перепутаны местами два пина подключения DB2 и DB3, поразительно как вообще дисплей инициализировался.
Появилась такая проблема с дисплеем. Вместо буквы ю выводит Ж, а вместо ч - А. При этом первый раз надпись выводится нормально, а потом с заменой букв. Помогите разобраться.
Этот пост оказался полезен? Не поленись, нажми
слева!

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

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

Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
dd_lcd("Калибр. датч.(В)Темп. датч.:\0",28);
попробуй так
попробуй так
Разве может отсутствие нуля влиять на буквы в середине? Ладно, спасибо, попробую.
PS. (1 минуту спустя) Нет, всё равно не помогло. А помогло вот это (функция dd_lcd):
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 и подобные.
слева!Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
lcd_puts(mas1); - выводит символы из оперативки до тех пор, пока не натолкнется на 0.
Много лишних телодвижений в программе, зачем еще 1 массив ?
Выводить одну и ту же инфу нужно из флеши, есть и для этого функция, бездарно тратится память.
Много лишних телодвижений в программе, зачем еще 1 массив ?
Выводить одну и ту же инфу нужно из флеши, есть и для этого функция, бездарно тратится память.
Какая-то чертовщина происходит с дисплеями 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);
}
Проверьте настройки контраста, питание, и потом уже с кодом боритесь.
Неоднократно уже обсуждалось.возможно для одного дисплея (16 символов) настройка контраста достаточна, а в другом (8)ничего не видно. Для начала просто подайте питание реостатом добейтесь отчетливого изображения первой строки, потом уже что то с кодом проверять можно.
Неоднократно уже обсуждалось.возможно для одного дисплея (16 символов) настройка контраста достаточна, а в другом (8)ничего не видно. Для начала просто подайте питание реостатом добейтесь отчетливого изображения первой строки, потом уже что то с кодом проверять можно.


