NetImperia Life

8Авг/1013

Библиотека C++ работы с HD44780 для AVR

1

Скоро ожидается новая версия библиотеки. В ней будут убраны проблемы с 4 бит режимом на некоторых экранах.
Принимаются пожелания и предложения. (работа немного затягивается)


Многие кто начинает работать с AVR, задумываются о том, как подключить текстовый экран HD44780.

В интернете много всевозможных исходников. Часть просто не работает, другие кривые.

Поэтому я решил написать свою. Писал лично для себя. Но некоторым людям понравилась.

А раз такое дело. То решил выложить ее для всех.

Она написана на C для удобства. Так как не все программируют на ассемблере.

Позволяет работать как в 4bit режиме, так и в 8bit. Помимо этого есть возможность не соблюдать порядок подключения контактов. Это будет полезно, если не хочется заново разводить плату, а на порту есть свободные контакты для LCD.

Немного о занимаемой памяти.

Приложение, в котором производится инициализация экрана, занимает:

8bit + все контакты подряд = 346 байт

8bit + все контакты вразнобой = 424 байт

4bit + все контакты подряд = 460байт

4bit + все контакты вразнобой = 548 байт

Пользуйтесь на здоровье.

Скачать: hd44780 library c (2336 downloads)

Если вам нужна библиотека именно на ассемблере. Могу посоветовать

Вот эту: http://easyelectronics.ru/avr-uchebnyj-kurs-biblioteka-dlya-lcd-na-baze-hd44780.html

Комментарии (13) Пинги (1)
  1. Отличная библиотека! работает с 1го раза :) Спасибо огромное.

  2. Заглянул внутрь библиотеки – грамотный код.
    Спасибо. Представляю сколько времени потрачено…

  3. а у меня на ATMEGA88 -16MHz не завелась, пришлось пользовать родную GCC-ную

  4. На дисплее 20х4 неправильно считается адресация знакоместа, там адреса начала строк 00h, 17h, 40h, 57h.
    Соответственно, чтобы работало и для двух, и для четырёх строк, нужно что-то вроде:
    “#define HD44780_GET_CURSOR_POS(x, y) (((x & 0x01)<<6) + (( x & 0x02) * 0x0a) + y)"

    Проверил по-быстрому формулу на железе – работает на двух разных дисплеях нормально.

    И спасибо за библиотеку, красиво написана.

  5. Блин, не то вставил. Правильные адреса строк:
    00h … 13h
    40h … 53h
    14h … 27h
    54h … 57h

    код в предыдущем комменте правильный.

  6. Спасибо большое за библиотеку!
    Запустилась под winavr-20100120 без проблем на 20х2 и 16х1 экранах

  7. Где скачать то???

  8. Доброго времени суток! Интересная библиотека, за что спасибо большое автору! Но вот проблемка, не хочет компилиться :( Code Vision AVR 1.28.8 и 2.05.0
    вылетает ошибка: included from: main.c L378: missing ‘(‘

    все скобки на месте, вот та самая строка, на которой застревает

    //Функции

    uint8_t hd44780_pin_convert_to (uint8_t);

    Подскажите в чем проблема. Спасибо!

  9. Спасибо, помогла Ваша библиотека!

  10. Либа понравилась, но некоректно виводятся символы. Екран 16х2 Винстар+ Атмега 16, перепробовал все возможные варианты подключения. Пример брал из архива либы. Пользуюсь АВР Студией 4 из последним тулчейном. Помогите запустить.

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

  12. Подскажите когда выйдет новая библиотека. Пробовал в Proteuse работает замечательно 8-bit и 4-bit
    режиме. Но c LCD WH1602A не как не могу запустить в 4-bit режиме.Сама библиотека понравилась.

  13. Добавлю от себя, проверил, библиотека завелась сразу ))


Leave a comment

jessie