реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Знатоки HD44780, Подскажите, это мой косяк или дисплей в топку
Sirko
сообщение Nov 23 2010, 23:10
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795



Имеется LCD 4х20, соединение 8 бит, вывод "RW" - не задействован.
Проявилась интересная особенность, если заполнять экран целиком, т.е. с адреса 0 и до финиша, то все знаки ложаться как положено. Если с адреса 40, то тоже все замечательно. А если стартовать с адреса больше 40, начинаются чудеса. Символы, которые находятся за пределами позиции 63, пляшут загадочным образом.

Для пущей ясности, прикладываю фото и ему соответствующий код,

Код
        u08 str[] = "01234567890123456789ABCDEFGHIJKLMNOPQRST"
                    "abcdefghijklmnopqrst*****-----+++++/////";

        lcd.setAddress(0);
        lcd.sendData(str, 80);    //1
        OS:Sleep(1000);

        lcd.clear();
        lcd.setAddress(40);
        lcd.sendData(str, 40);    //2
        OS::Sleep(1000);

        lcd.clear();
        lcd.setAddress(50);
        lcd.sendData(str, 30);    //3
        OS::Sleep(1000);

        lcd.clear();
        lcd.setAddress(60);
        lcd.sendData(str, 20);    //4
        OS::Sleep(1000);

        lcd.clear();
        lcd.setAddress(40);
        lcd.sendData(str, 40);    //5
        OS::Sleep(1000);


Функция sendData() принимает указатель на строку и кол-во символов, необходимых для отображения
Прикрепленное изображение
<-- 1 setAddress( 0); sendData(str, 80);
Прикрепленное изображение
<-- 2 setAddress(40); sendData(str, 40);
Прикрепленное изображение
<-- 3 setAddress(50); sendData(str, 30);
Прикрепленное изображение
<-- 4 setAddress(60); sendData(str, 20);

Прикрепленное изображение
<-- 5 setAddress(40); sendData(str, 40);

С одной стороны, один и тот же код ведет себя по разному, с другой, возможно, есть какой то нюанс.
Инициализация вот такая
Код
void LCD_HD44780::///////////////////////////////////////////////////////////////////
init(){
    mutex->Lock();
    ON(LCD_PIN_RS);
    DRIVER(LCD_PIN_RS, OUT);
    ON(LCD_PIN_STROB);
    DRIVER(LCD_PIN_STROB, OUT);
    mutex->Unlock();

    OS::Sleep(200);

    for(u08 i=0; i<3; ++i){
        sendCommand(BIN8(00110000));    //    Шина 8 бит
        OS::Sleep(50);
    }

    clear();                            //    CLS
    sendCommand(BIN8(00111000));        //    Шина 8 бит, 2 строки
    sendCommand(BIN8(00000110));        //    Инкремент адреса. Экран не движется
    sendCommand(BIN8(00001100));        //    Включть дисплей (D=1)
    clear();                            //    CLS
    ON_LIGHT_LCD;
}

Go to the top of the page
 
+Quote Post
rezident
сообщение Nov 24 2010, 01:58
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



В сообщении не указан конкретный тип LCD-модуля, но в даташите их обычно приводится карта памяти. LCD 20*4 обычно организован в виде двух блоков памяти. Визуально третья строка является продолжением первой, а четвертая продолжением второй. Причем второй блок памяти адресуется с адреса 0x40, где 40 число не десятичное, а шестнадцатеричное.
Go to the top of the page
 
+Quote Post
Sirko
сообщение Nov 24 2010, 06:55
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 245
Регистрация: 15-08-07
Пользователь №: 29 795



Тип LCD - WM-C2004M
но мне здается, что все подобные дисплеи однотипные и двухчиповые.

По поводу чередования строк я знаю, а на счет
Цитата
Причем второй блок памяти адресуется с адреса 0x40, где 40 число не десятичное, а шестнадцатеричное.

не обратил внимание. На самом деле проблема именно в этом.
Огромное спасибо.

P.S. Непонятно, как код lcd.setAddress(40); lcd.sendData(str, 40); отрабатывает корректно, ну да ладно.

Сообщение отредактировал Sirko - Nov 24 2010, 06:57
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 15:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016