+7 (495) 662-44-14

Главная / Форум
  • РУС / ENG
(495) 662-44-14 Многоканальный телефон Не дозвонились?
Форумы >>ЖК индикаторы >>RE: Помогите инициализировать МТ20S4A-2FLA
RE: Помогите инициализировать МТ20S4A-2FLA

av2319
Пользователи

Сообщений: 1
Регистрация: 27.10.2018

Добрый день! Второй день бьюсь с инициализацией дисплея. Подскажите, пожалуйста, что в нем не так.

Алгоритм такой:

HAL_Delay(50);
rs0;
LCD_WriteData(0x03);
e1;
delay();
e0;
HAL_Delay(5);
LCD_WriteData(0x03);
e1;
delay();
e0;
HAL_Delay(5);
LCD_WriteData(0x03);
e1;
delay();
e0;
HAL_Delay(1);
LCD_WriteData(0x02);
HAL_Delay(1);

LCD_Command(0x28);//function set
HAL_Delay(5);
LCD_Command(0x28);//again
HAL_Delay(1);
LCD_Command(0x28);//again
HAL_Delay(1);
LCD_Command(0x08);// display on
HAL_Delay(1);
LCD_Command(0x01);//clear
HAL_Delay(1);
LCD_Command(0x06);//return


Функции такие:

void LCD_Command(uint8_t dt)

{
rs0;
LCD_WriteData(dt>>4);
e1;
delay();
e0;
LCD_WriteData(dt);
e1;
delay();
e0;
}


void LCD_WriteData(uint8_t dt)
{
if(((dt >> 3)&0x01)==1) {d7_set();} else {d7_reset();}
if(((dt >> 2)&0x01)==1) {d6_set();} else {d6_reset();}
if(((dt >> 1)&0x01)==1) {d5_set();} else {d5_reset();}
if((dt&0x01)==1) {d4_set();} else {d4_reset();}
}


После всего этого курсор не мигает, информация не выводится.

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение

Петухов_Дмитрий
Пользователи

Сообщений: 1249
Регистрация: 25.11.2009

Три раза повторять команду 0x28 не нужно, одного достаточно.

Надеюсь все задержки у Вас указаны в мс, потому что иначе они странно малы.
Начальная в 50мс хороша, между командами нужно не менее 40мкс, после команды 0x01 не менее 1.6мс - про неё Вы явно забыли.
Удобно добавить задержку 40мкс сразу в процедуру LCD_Command() и не размазывать задержки по коду. А дёрганье сигналом Е и небольшую задержку (1мкс) сразу в процедуру LCD_WriteData() (всё равно отдельно это почти никогда не нужно).

Ну и командой 0x08 Вы дисплей не включили, он так и остался выключенным и без курсора. Её надо бы заменить на команду 0x0C (включение дисплея без курсора) или 0x0F (включение дисплея с мигающим курсором в виде подчёркивания). Вот поэтому ничего и не видите.

Имя Для добавления сообщений Вы должны зарегистрироваться или авторизоваться Цитировать Получить ссылку на сообщение
Сейчас на форуме (гостей: 7, пользователей: 0 , из них : 0 )