Графический ЖК дисплей на LC7981

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Mozart
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow
Контактная информация:

Сообщение Mozart »

BerZerK-ku писал(а):Да все так же :) Данные вами советы, это всего лишь причесывание программы :)
ИМХО поиск ошибок в этом и состоит...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Реклама
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Сообщение BerZerK-ku »

Mozart писал(а):
BerZerK-ku писал(а):Да все так же :) Данные вами советы, это всего лишь причесывание программы :)
ИМХО поиск ошибок в этом и состоит...
:) Вполне вероятно, но не в данном случае.

Я так и не понял в чем дело... и пошел другим путем.

В 8-и битном режиме, мне не нравилось то, что на 1 знак по горизонтали уходило 8 бит, но зато была свобода по вертикали. При символе 5х7 расстояние между символами получалось не менее 3-х точек, буквы стоят достаточно далеко друг от друга, некрасиво... и в памяти описание 1 символа занимает 7 байт.

Развернув экран на 90 градусов получил слдеующее: в строке между символами можно сделать "любые" расстояния, взял 1 точку, правда есть и недостаток, ограничение свободы по вертикали. На описание символа уходит на 2 байта меньше.
Реклама
Аватара пользователя
Mozart
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow
Контактная информация:

Сообщение Mozart »

:))) развернув экран на 90гр... чуйствуется закалка русских инженеров....

а всё таки надо разобраться почему не выводится....
выведите ровно два символа рядом... если они не выведутся выведите с задержкой в 1с к примеру...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Сообщение BerZerK-ku »

Да выводятся 2 символа рядом, выводятся. В левой половине все в норме. А в правой начинаются чудеса. Символы дублируются и смещаются...
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Mozart
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow
Контактная информация:

Сообщение Mozart »

а марка индикатора какая??? или прикрепите даташит...
e.g. в индикаторе sg12232 там всё разбито на страницы... может быть у вас также...

а если в правую половину не залезать, в нижней слева и справа символы выводятся нормально?
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
Реклама
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Сообщение BerZerK-ku »

Mozart писал(а):а марка индикатора какая??? или прикрепите даташит...

а если в правую половину не залезать, в нижней слева и справа символы выводятся нормально?
Ну ведь все это есть уже в предыдущих постах :(

Даташит на индикатор - это pdf в 1 страничку с указанием распиновки разъема и габаритными размерами. Единственное что представляет интерес это документация на контроллер LC7981.
Реклама
Аватара пользователя
Mozart
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow
Контактная информация:

Сообщение Mozart »

http://www.gaw.ru/html.cgi/txt/lcd/chip ... 1/prog.htm
вот здесь по русски что-то написано...
я думаю если эта контора http://www.ramtex.dk/glcd/glcd7981.htm? ... XgodcnBDqg продаёт что-то прилагающееся к этому ЖК то врятли то, что у вас это баг скорее точно вы что-то делаете не то... только не понять что...
так какой у вас ЖК??? и сколько он стоит?...

з.ы. попробуйте написать всё с самого начала.. иногда помогает...
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

Сообщение BerZerK-ku »

Тип индикатора указан в первом посте :) : WG160160B - Winstar. Стоит чуть больше 1т.р.

Вы pdf на МК почитайте, в нем много чего есть, но используются ли все в каждом реальном устройстве?
Аватара пользователя
Mozart
Мучитель микросхем
Сообщения: 413
Зарегистрирован: Пт мар 10, 2006 12:23:05
Откуда: Moscow
Контактная информация:

Сообщение Mozart »

Вы pdf на МК почитайте, в нем много чего есть, но используются ли все в каждом реальном устройстве?
всё зависит от поставленной задачи...
но глюк ваш за чуть больше 1тр дороговат будет :) скорее у вас в проге где-то какой-то баг сидит который надо отыскивать...

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

ИМХО: функцию записи комманды и данных (они у вас одинаковые) оформите как функцию, а не через дефайн... тип bool лучше не использовать лучше unsigned char
если после прочитанной книги что-то в голове осталось, радуйся. Голова работает на тебя!!!
shevsa
Родился
Сообщения: 3
Зарегистрирован: Чт июн 30, 2011 11:43:22

Re: Графический ЖК дисплей на LC7981

Сообщение shevsa »

Вижу, что тема старая, но топикреатор так и не озвучил, удалось ли решить проблему.
Столкнулся с аналогичной проблемой контроллера LC7981 в индикаторе WG128128B.
Задача использовать индикторв графическом режиме, поэтому знаковому особое внимание не уделялось, но было проверено, что знаки корректно отображаются.
А проблема, собственно, такого характера:
при переводе проинициализированного индикатора (и проверенного) из знакового в графический режим, наблюдается срыв строк в одних и тех же столбцах со смещением на одну строку вниз.
Проверено на нескольких экземплярах.
Количество точек, скважность и прочие параметры выставлены корректно, что подтверждается корректной работой в знаковом режиме.
Какие могут быть идеи?
shevsa
Родился
Сообщения: 3
Зарегистрирован: Чт июн 30, 2011 11:43:22

Re: Графический ЖК дисплей на LC7981

Сообщение shevsa »

Перерыв дюжину форумов, нашел множество сходных ответов по работе с WG128128B (LC7981).
Возможно это будет полезно еще кому-то.
Итак:
- при инициализации экрана в графическом режиме нужно задавать 160 х 160 точек при видимой области 128х128.
- в знаковом режиме, соответственно, 20 знаков (при ширине символа 8 точек).
Некоторым для нормальной работы требовалось установить и скважность 1/160.
У меня нормально заработало при скважности 1/128.

Хочу также отметить еще одну проблему, с которой столкнулся при работе с данным дисплеем:
при полностью собранной схеме, когда выводы ЖКИ подключены к МК, подключена цепь регулировки контраста, если подать на него питание и какое-то время не производить инициализацию, начинает жутко греться DCDC преобразователь и транзистор в цепи контраста. После инициализации все нормализуется.

Похоже, несколько недоработанная получилась партия, или модель в целом.

Посмотрим, как покажет себя в работе.
Аватара пользователя
alex-wolf
Открыл глаза
Сообщения: 63
Зарегистрирован: Сб мар 09, 2013 21:46:01
Откуда: Уфа
Контактная информация:

LC7981

Сообщение alex-wolf »

имеется WG128128B-YGH-VZ ЖК-матрица 128x128 на контроллере LC7981
http://www.platan.ru/cgi-bin/qwery.pl/id=585680716


и имеется проблема с правельной инициализацией
http://radiokot.ru/forum/viewtopic.php?f=20&t=10005


проделывал также
http://radiokot.ru/forum/viewtopic.php?p=893096#p893096
непомогло


сам код
пока некаког асеблера

---------
#define RS PORTC.7 // данные = 0 , инстукция = 1
#define RW PORTC.6 // чтение = 0 , запись = 1
#define E PORTC.5 // стробирование
#define CS PORTC.4 // CS выбор = 0
#define RES PORTC.3 // reset--- сборс = 0

void lc7981_strob (void)
{
E=1; delay_us(100); E=0;
};

void lcd_busy (void)
//флаг готовности попадает на DB7(1) когда RS =1 и RW =1.
//Следующая команда может быть записана только когда флаг готовности будет установлен в “0”
{

CS=0;
PORTA=0b00000000;
DDRA=0x00;
RS = 1 ; // данные = 0 , инстукция = 1
RW = 1 ; // запись в жки = 0 , чтение из жки =1
while (PINA.7 = 0)
{
lc7981_strob();
};
DDRA=0xff;
};

void lc7981_wr (unsigned char cmd, unsigned char data) {
lcd_busy();
CS=0;
RS = 1 ; // инстукция = 1
RW = 0 ; // запись в жки = 0
PORTA=(cmd); //
E=1; delay_us(1); E=0; //lc7981_strob();
RS = 0 ; // данные = 0
RW = 0 ; // запись в жки = 0
PORTA=data;
E=1; delay_us(1); E=0; //lc7981_strob();
} ;

void lcd_clear (void){
char i; i=0;
lc7981_wr(0x0A,0x00);
lc7981_wr(0x0B,0x00);

for(i = 1; i <= 16 * 20; i++)
lc7981_wr(0x0C,' ');

lc7981_wr(0x0A,0x00);
lc7981_wr(0x0B,0x00);
};



void lc7981_init(void){
DDRC = 0xF8;
CS =1; RES=1; delay_ms(100);RES=0;delay_ms(100);
DDRA = 0xFF; RS =0;RW =0;E =0;CS=0;RES=1;
RS =0;RW =0;E =0;CS =0;RES=1;
RS =0;RW =0;E=0;

//CHAR 7x5
lc7981_wr(0x00,0x30); //Управление режимом 0x00 ////курсор знак подчеркивания
lc7981_wr(0x01,0x75); // 0x75 // Установка высоты знаков 0x01
lc7981_wr(0x02,(128/8)-1); //Установка числа знаков 0x02
lc7981_wr(0x03,(128-1)); //7F //Установка числа скважности дисплея 0x03
lc7981_wr(0x04,0x07); //0x07 //Установка позиции курсора 0x04
lc7981_wr(0x08,0x00); //Установка начального адреса младшего байта
lc7981_wr(0x09,0x00); //Установка начального адреса старшего байта
lc7981_wr(0x0A,0x00); //Установка (младшего) адреса курсора (младший адрес чтения/записи RAM)
lc7981_wr(0x0B,0x00); //Установка ( старшего) адреса курсора (старший адрес чтения/записи RAM)
};


в осносном цикле программы
небольшой цикл для отображения всего знакогенератора

delay_ms(200); ((iii<0)& (iii >201)); iii++; };{lc7981_wr(0x0C,iii);};

и что получилось
Изображение
snapshot_[2016.03.24_17.56.36].jpg
(33.95 КБ) 742 скачивания
видно что в правой части экрана знаки идут не последовательном порядке с маленьким опускание на 1 строку на 2 пред-последных символов


------------------------------------

итоговый вопросс:
как этот контроллер "готовить"?!
ну есть описание
http://www.gaw.ru/html.cgi/txt/lcd/chip ... 1/prog.htm
жаль подробных нет примеров нету(образец)
ну есть:
1/m =1/Nx = мощность дисплея;
n =HpxHn;
m/Vp =число линий дисплея;
Cp<=Vp.
а теперрь разложение
128х128 точек
Hp Ширина знака Размер знака по горизонтали 6 – 8 точек
Hn Число знаков Число знаков (цифр) в строке или слов графики в строке 2–256 знаков
Vp Высота знака Размер знака по вертикали 1–16 точек
Cp Позиция курсора Номер линии отображения курсора 1–16 линий
Nx Число линий Число линий на экране дисплея 1–256 линий

когда читаешь не сложно, а когда уже самим расчеты делать, уже сомневаешся

Hn=(128/Hp)=


-----------------
у кого какие мысли, буду очень рад выслушать
не мение ценны, буду рекомендации, кто смог его "правельно - париготовить"
:)
Аватара пользователя
Серый_
Опытный кот
Сообщения: 708
Зарегистрирован: Пт ноя 30, 2007 14:40:44

Re: Графический ЖК дисплей на LC7981

Сообщение Серый_ »

Ещё ничего. Я вообще ничего не могу на него вывести. Даже у дебилов SANYO, в оригинальном даташите, тайминговая диаграмма противоречит сама себе (по крайней мере её рисунок), не говоря уже о полнейшем китайском говне, выпускаемом в виде репликаций. (Выводил сигнал из микроконтроллера на VGA, ловя такты на командах - было проще).
Ответить

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