Меню

 

Форум

Список форумов :: ЖК-индикаторы :: вывод на МТ-12232А 0xff
Гость
19 августа 2009 11:06

Id сообщения: 8815
вывод на МТ-12232А 0xff
Для индикатора МТ-12232А-2FLB пишу программу, в которой есть
блок, который делает индикатор целиком темным. Однако при
выводе данных (0xFF) в середине индикатора остается вертикальная светлая
полоса, т.е. столбец (0) на всех страницах не заполняется; в то же время
при выводе других данных ( например, 0хfe- что отличается только на один
разряд)заполнение при той же программе проходит как задумано. Все
попытки менять начальные установки при инициализации индикатора
желаемого результата не дали. Можно ли задачу решить программными
средствами или так работает индикатор и ничего сделать нельзя?
Петухов
19 августа 2009 16:46

Id сообщения: 8816

1. Раз индикатор может показывать в этом столбце хоть какие-то данные, то сам индикатор исправен.
2. Индикатору совершенно безразлично какие именно данные показывать. Т.е. проблема не в индикаторе.
Следовательно, проблема является чисто программной, к индикатору отношения не имеет и исправить её можно - надо проверять Вашу программу.
Попробуйте выводить не только 0xFF и 0xFE, а и другие коды (хотя бы ещё 7 вариантов с одним нулём и 7-ю единицами) - они тоже будут выводиться правильно?
Если в результате мыслей не появится, то приводите сюда процедуры записи команды, байта данных, инициализации индикатора, цикл заполнения индикатора, будем смотреть что с ними не так.
Ещё надеюсь Вы видели вот эту страничку на этом сайте, там приведён рабочий пример программы для индикатора MT-12232A: http://melt.com.ru/work/display/330#programms
Гость
20 августа 2009 16:10

Id сообщения: 8820

1. При написании программы учел пример для MT-12232A, любезно предоставленный на
сайте Вашей фирмы - большое Вам спасибо за него.
2. Проверил заполнение индикатора числами от 0х00 до0xff- возился сегодня целый день.
Подпрограмма Wr_FullScr()без ошибок(т.е.без пропусков) выводит на ЖКИ все числа,кроме
0xff - постоянно не заполняется столбец 0 на всех страницах. Также периодически
аналогичный сбой дают 0xef и 0xf7.Если это принципиальная ошибка программы,
то проблемы возникали бы с любыми числами,а тут сбоят только эти три.
3. На форуме повторяю содержание своего письма по адресу, приведенному на страничке сайта
" Рекомендации по применению ...". У Вас вероятно слишком серьезный фильтр от спама-
похоже что оно до Вас не дошло.

// тестовая программа
// инициализация МК не показана
void main(void)
{
LCD_Init();
while (1)
{

Clr_Ind();
Wr_FullScr();
}
}

// Основные участки программы

// LCD_Init
WriteCodeL(0xE2); // reset
WriteCodeR(0xE2); // reset
WriteCodeL(0xEE); // reset flag RMW
WriteCodeR(0xEE); // reset flag RMW
WriteCodeL(0xA4); // set static drive off
WriteCodeR(0xA4); // set static drive off
WriteCodeL(0xA9); // set duty select
WriteCodeR(0xA9); // set duty select
WriteCodeL(0xC0); //Верхнюю строку на 0
WriteCodeR(0xC0); //Верхнюю строку на 0
WriteCodeL(0xA1); // set ADC select
WriteCodeR(0xA0); // set ADC select
WriteCodeL(0xAF); // display on
WriteCodeR(0xAF); // display on

// Определения функций вывода данных из МК в ЖКИ
// здесь:
// Р1 - выводы порта Р1 на которые выводятся данные
// R_W;A0;CS;E биты другого порта
// Delay_var(х) функция дает задержку в х микросекунд

#define WriteCodeL(Code)
R_W=0;A0=0;CS=0;P1=Code;Delay_var(10);E=0;Delay_var(1);E=1
#define WriteCodeR(Code)
R_W=0;A0=0;CS=1;P1=Code;Delay_var(10);E=0;Delay_var(1);E=1
#define WriteDataL(Data)
R_W=0;A0=1;CS=0;P1=Data;Delay_var(10);E=0;Delay_var(1);E=1
#define WriteDataR(Data)
R_W=0;A0=1;CS=1;P1=Data;Delay_var(10);E=0;Delay_var(1);E=1



// подпрограмма заполнения индикатора

void Wr_FullScr(void)
{
Stolb=0x00;
Page = 0xB8;
Data = 0xff;
for(pag=0; pag<4; pag++)

{

WriteCodeL(pag|0xB8);
for(Stolb=0x13;Stolb <0x50; Stolb++)
{
WriteCodeL(Stolb);
WriteDataL(Data);
}

WriteCodeR(pag|0xB8);
for(Stolb=0;Stolb <0x3d; Stolb++)
{
WriteCodeR(Stolb);
WriteDataR(Data);
}
}
}

// подпрограмма очистки индикатора Clr_Ind()
// аналогична Wr_FullScr()только записывается 0х00;
Петухов
20 августа 2009 20:40

Id сообщения: 8822

В таблице назначения выводов в PDF на индикатор указано, что CS=0 для ПРАВОГО кристалла, а CS=1 для ЛЕВОГО. У Вас же наоборот. Поэтому и странности с вертикальными линиями. Почему они иногда выводятся правильно я не понял.

Если скорость заполнения не сильно важна, то можно заполнять все 80 байт внутренней памяти для каждой строки (а не 61 отображаемых), это гарантирует полную очистку индикатора даже при неверно выбранном ADC select (как у Вас и получилось) - циклом:
for(pag=0; pag<4; pag++) {
WriteCodeL(pag|0xB8);
WriteCodeR(pag|0xB8);
WriteCodeL(0);
WriteCodeR(0);
for(Stolb=0; Stolb<80; Stolb++)
{
WriteDataL(Data);
WriteDataR(Data);
}
}
Установку адреса для записи не обязательно делать для каждого байта, достаточно один раз в самом начале, потом индикатор сам адрес будет инкрементировать в пределах страницы.
Да, и задержка 10мкс большая, можно обойтись гораздо меньшей (я понимаю что это для отладки было).

В принципе, Ваша программа тоже правильная, за исключением CS.
Пока других недочётов я не вижу, попробуйте исправить CS и проверить снова. Если глюк останется, надо смотреть не бывает ли такого, что байт данных принимается индикатором за команду.
Гость
21 августа 2009 09:26

Id сообщения: 8823

Внес изменения CS в программу- помогло. Большое спасибо за консультацию.


Код подтверждения:
Для зарегистрированых:
Логин
Пароль
Забыл пароль Регистрация Поиск


Телефоны офиса компании МЭЛТ:
тел: (495) 662-4414
e-mail: sales@melt.com.ru
ICQ: 221-319-648
Skype имя: melt-mos

Фактический адрес: 111024, Москва, Андроновское шоссе, д.26

Adress: 111024, Moscow, Andronovskoe highway, 26.

Адрес для корреспонденции: 109145, г. Москва, а/я 37, ООО "МЭЛТ".

Address for mail:  109145, Moscow, post box 37, MELT Ltd..

Продукция | Печатные платы | Сборочно-монтажные услуги | Документация | Цены | Новости | Контакты | Купить | Форум
создание - prorock web-soft