Вывод текста на lcd Nokia 6610

Валера Гончаренко продолжает работать над библиотекой вывода на lcd-экран Nokia 6610. Библиотека постепенно обновляется. Сейчас добавлены функции вывод текста и шрифт 8х8 пикселей. Скачать библиотеку, исходники демо-проекта, использующего эту библиотеку, а так же откомпилированную прошивку можно ниже.

На видео можно посмотреть, как работает вывод на экран, при использовании этой библиотеки:

Немного фотографий процесса:

Демо-проект вывода на экран Nokia 6610

Демо-проект вывода на экран Nokia 6610

Так можно реализовать прогресс-бар (в библиотеке этого нет, это сделано в демо-проекте).

Демо-проект вывода на экран Nokia 6610

Демо-проект вывода на экран Nokia 6610

Вывод текста разными цветами

Демо-проект вывода на экран Nokia 6610

Демо-проект вывода на экран Nokia 6610

 

Демо-проект вывода на экран Nokia 6610

Демо-проект вывода на экран Nokia 6610

 

34 комментария на “Вывод текста на lcd Nokia 6610”

  1. Привет,
    я пытаюсь отсимулировать это дело в протеусе, выходит фигня со цветом
    симулирую две модели одновременно
    http://imageshost.ru/photo/67096/id2142367.html
    http://imageshost.ru/photo/73837/id2142366.html
    http://imageshost.ru/photo/65682/id2142365.html
    тут фотки 

  2. -Валера-

    Приветствую, в Протеусе не проверял- все сразу в железе. Сейчас попробую…

  3. -Валера-

    Значит так. Попробую пролить немного света: в протеусе у меня также криво выводятся цвета, но текст корректен — не так как на скриншоте. При написании библиотеки — сильно не раскуривал этот вопрос, подал команду MADCTL и один байт данных 0х03 — все, включен режим 12 -бит,все работает. Первое что пришло на ум при некорректном выводе цвета (далее по тексту- проверки только в железе ) — модель для протеуса «собрана» с цветопередачей по умолчанию 8-бит. Я проштудировал  даташит, по рекомендациям из него подал команду  RGBSET и за ней 20 байтов таблицы цветов (это вкл. режим — 8 бит ), далее пляски с бубном -результат ноль. Собственно вывод текста и графики присутствует, но цветопередача не соответствует действительности. Затем я вспомнил, что где-то говорилось о том, что производители LCD ( зачастую NO NAME ) умышленно не вкл. в контроллерах LCD при их программировании некоторые команды. Аргумент таков — а зачем ? Если данный режим не будет использоваться. Так что, вполне вероятно ( к чему я склоняюсь) мой образец LCD НЕ оригинальный, и команда цветопередачи 8 бит- в нем не включена.

    • -Валера-

      Во втором предложении- имел ввиду, что в протеусе кракозяблы, а на живом LCD- корректный текст с некорректной цветопередачей.

  4. -Валера-

    У меня возник вопрос- может стоит добавить в библиотеку вывод текста БОльшим форматом ? Например 24х16 пикселей, или…  Собственно, интересно мнение о востребованности текста большим форматом, если — да, то каким именно. А также интересует тип шрифта-ведь при большей величине будет наиболее заметно качество его прорисовки.

    • ИМХО, весть текст выводить большим шрифтом смысла нет. Цифры — да, текст — ни к чему.

      • -Валера-

        Понятно, попробую чего-нибудь с цифрами сделать. Какой размер цифр сделать ?

    • Виталий

      Валера, скажите, пожалуйста, что-нибудь получилось с большим цифрами?
      Если да, то где можно посмотреть библиотеку?
      П.С. У самого, к сожалению, не хватает знаний и моя стрельба наугад результата не дает…

      • Валерий

        Конечно же- всё получилось! )
        Давным давно ))Случайно оказался около компьютера- и вы написали. Что именно нужно? Функция вывода больших цифр? Или проблема в другом?

        • Валерий

          Если у вас «запал» не пропал- напишите мне на почту в чём проблема ( gonch восьмёрка, дальше — собака и маилру ), постараюсь помочь!)

  5. Никита

    Сделал всё как у Вас в iarе. Но не получилось с выводом текста. По первых он не берёт массив символов. Во вторых он не хочет работать вот с этой функцией. Как можно ешё вывести текст?
    Я всё заключил в один лист main.c Чтоб не использовать отдельные библиотеки
    void nlcd_Char(char c, unsigned char x, unsigned char y, int fColor, int bColor)
    {
       int    i;
       int    j;
       unsigned char   nCols;
       unsigned char  nRows;
       unsigned char  nBytes;
       unsigned char   PixelRow;
       unsigned char   Mask;
       unsigned int   Word0;
       unsigned char *pFont,   *pChar;
     
       pFont = (unsigned char *)Nokia6610_fnt8x8;  
     
       nCols = pgm_read_byte(pFont);
     
       nRows = pgm_read_byte(pFont + 1);
     
       nBytes = pgm_read_byte(pFont + 2);
      
       pChar = pFont + (nBytes * (c — 0x1F));
     
       for (i = 0; i<nRows; i++)
       { 
          PixelRow = pgm_read_byte(pChar++);
          Mask = 0x80;
          for (j = 0; j < nCols; j += 1)
          {
             if ((PixelRow & Mask) == 0)
             Word0 = bColor;
             else
             Word0 = fColor;
             nlcd_Pixel( y+j,x+i, Word0);
             Mask = Mask >> 1;
          }  
       }
       nlcd_SendByte(CMD_LCD_MODE,NOP); 
    }

    • Хз. Я с ИАРом не работаю. Почему то не сложилось… 🙁 Поэтому что-либо конкретное сказать не могу.

  6. http://s6.hostingkartinok.com/uploads/images/2013/03/f8e2b00d220835f5cb75dcae3c3d852f.jpg

  7. Спасибо за вашу статью и библиотеки! у меня проблема. текст выводится справа налево, как бы зеркально. вот тут фото http://s6.hostingkartinok.com/uploads/images/2013/03/f8e2b00d220835f5cb75dcae3c3d852f.jpg
     
    помогите разобраться в чем дело. 
    также почему-то не горит подсветка

    • У тебя инверсии включены. (Всё наоборот). Посмотри команды и выключи инверсию. Также есть команды задаюшие начало и конец рисования пикселей.

    • Валера

      Приветствую, проблему с выводом текста — решили? Я так понимаю при заливке демо-прошивки, неккоректно отображается текст? В чем собсно, вопросы? Инициализацию дисплея -(что-либо) меняли?  Вроде бы все прокомментировал довольно подробно..)

      • Неа, не получилось его одолеть. Текст отображается зеркально. Скачал дэмо прошивку и залил в мк, ничего в ней не меняя. за выключенную инверсию отвечает это «#define LCD_PHILLIPS_INVOFF»?

  8. -Валера-

    «#define LCD_PHILLIPS_INVOFF — инвертирует цвет, блин, уже подзабыл все)) В Winavr- уже не работаю, юзаю студию, отсюда сложности.. 
    Достал дисплей, установил Winavr- в общем за отображение отвечает команда nlcd_SendByte(CMD_LCD_MODE,MADCTL);  для которой необходимо задать параметр 1 байт- в библиотеке ясно же прокомментировал- Внимательно курим даташит на стр. 43 !) 
    Не знаю, что за компилятор у вас- я изменил инициализацию- теперь мой дисплей отображает данные один в один как у вас на картинке))   Не могу здесь обновленную демо-прошивку выложить..

    • -Валера-

      После команды MADCTL отправил данные 0х00 и дисплей стал отображать информацию как у вас на фото..

      • Огромное спасибо! отправил 0x76 после MADCTL и все заработало как надо! 

        • -Валера-

          Вот и отлично), только думаю что все же вы методом научного тыка  данные отправили- младшие три байта не значащие поэтому, будет правильнее 0х70

    • Не могу здесь обновленную демо-прошивку выложить..

      Валера, без проблем, шли на мой-адрес, ты же знаешь его, я выложу.

    • Все, выложил поправленную прошивку от Валеры. Можно качать.

  9. Привет еще раз! Слушайте, а бороться с бледной подсветкой не подскажете?

  10. project isis files ?

    • -Валера-

      Hello , isis project is not used , did immediately with a live display . If desired, you can download the network display model , only need to be borne in mind that the pixel output function — will have perepisat- otherwise displayed incorrectly in isis . Sorry for my English. ))

Добавить комментарий

Поля, помеченные знаком звездочка (*) обязательны для заполнения.