Библиотека для LCD с контроллерами ks0066 и hd44780

12/12/2010 - 19:37
   Подправил библиотеку для LCD, теперь она поддерживает контроллеры ks0066 и hd44780. Фишка в чем. Библиотека для hd44780 может работать и с ks0066, а вот библиотека для ks0066 с контроллером hitachi уже не работает.  У этих контроллеров есть некоторое отличие в инициализации при использовании 4-ех разрядной шины. Вообщем я добавил несколько строк кода и заключил их в директивы условной компиляции, чтобы можно было выбирать тип контроллера. Код для hitachi чуть "потолще", а если будет использоваться контроллер ks0066 зачем нам лишние 40 байт кода. 
  
   Библиотека работает с 8-ми и 4-ех разрядной шиной, поддерживает опрос флага занятости, работает с контроллерами ks0066 и hd44780. Нужная конфигурация устанавливается с помощью макроопределений. 

....lcd-lib.h
#define CHECK_FLAG_BF //закомментируй чтобы использовалась программная задержка
#define BUS_4BIT  //закомментируй для 8-ми разрядной шины
#define HD44780  //закомментируй для контроллера ks0066
....

Файлы

 lcd-lib-avr.rar

Comments   

# skiff 2010-12-13 02:51
Павел, а почему не работаешь с монохромными, графическими дисплеями, например WG24064( контроллер T6963C )... ;-)
# Pashgan 2010-12-13 21:37
Работаю, но мало. Дорогие они, собаки. У меня написан один проект для графического дисплея фирмы МЭЛТ, но руки никак не дойдут до написания материала.
# САБ 2010-12-14 07:38
У питерской "Гаммы" большой выбор недорогих графических индикаторов марки TIC с управлением по I2C. Искать у них на сайте в разделе "Заказные ЖКИ".
# CybGen 2010-12-13 09:30
спасибо, как раз собираюсь ks0066 юзать
# САБ 2010-12-14 07:40
А зачем вообще проверять этот BF? Сделайте задержку с запасом и сэкономите ногу и половину кода. Пользователь не заметит увеличения времени обновления. 15 лет работаю с такими ЖКИ и только первый проект был с опросом.
# Pashgan 2010-12-14 21:17
Да я тоже всегда без этого флага обхожусь. Сделал на всякий случай, чтобы вопросов не было.
# Neiver 2010-12-15 16:04
Интересно, для каждого компилятора своя версия библиотеки. А если дисплей надо через расширитель порта (например, сдвиговый регистр) подключить? Или пару ножек с шины данных на другой порт перекинуть?
Неплохо было-бы отделять способ вывода на шину дисплея от, собственно, логики его работы.
# Pashgan 2010-12-15 17:39
Не было задачи писать универсальный код. Я же для начинающих это делал. Но мысль хорошая.
# Roger 2010-12-15 18:17
у меня к вам небольшой вопрос к инициализации дислея. чтобы он работал как в Proteus так и на железе....
У меня дисплей FDCC 1602L контроллер вроде как Samsung S6A0069(S6B0066U)...
При инициализаци пишу так
Quote:

LCD_WriteComInit(0x20); //4-ми разрядная шина
LCD_WriteCom(0x28); //4-ми разрядная шина, 2 - строки
работает на железе,но не в протеле

пишу Quote:

LCD_WriteComInit(0x02); //4-ми разрядная шина
LCD_WriteCom(0x08); //4-ми разрядная шина, 2 - строки
Работает в протеле, но не на железе
реализацию работы в протеле нашел на тут: http://electronix.ru/forum/index.php?showtopic=52609&hl=

Проблема в дисплеи? С другими не дисплеями пока не тестил
# Pashgan 2010-12-19 19:30
Не, у этого дисплея контроллер аналог hd44780. Вот ссылка на описание http://electronics-diy.com/pdf/SPLC780D_HD44780_compatiable.pdf
Я тестил библиотеку и в Протеусе и в железе на двух дисплеях с разными контроллерами. Все работало.
# САБ 2010-12-20 07:05
Quoting Roger:
Проблема в дисплеи? С другими не дисплеями пока не тестил
Проблема в вашем коде. Посмотрите объяснение здесь: http://electronix.ru/forum/index.php?s=&showtopic=19594&view=findpost&p=143374
Я не знаю что там в Протеусе, но описанная по ссылке последовательно сть работает на всех попадавшихся дисплеях.
# Neiver 2010-12-15 18:49
А для начинающих как раз и важно не просто дать вариант решения задачи, а дать подход для решения подобных задач на конкретном примере. Указать достоинства и недостатки приведенного метода и указать на альтернативные методы.
На примере этой статьи, порты додключения дисплея жестко заданы с помощью макроопределени й. Гибко можно конфигурировать только управляющие линии, линии данных жестко заданы в одном порту. Из приемществ - можно просто писать код, особо не задумываясь, до поры, до времени.
Из альтернатив макроопределени ям есть, например, "виртуальные порты" различных реализаций.
# Pashgan 2010-12-19 19:32
Для начинающих важно последовательно и доступно изложить материал.
Вот сколько пользуюсь дисплеями, а никогда не заморачивался такими вещами как виртуальные порты.
# foxit 2011-01-15 20:42
Pashgan, расскажи в чем именно различия в инициализации HD44780 и ks0066?
# Pashgan 2011-01-18 19:43
Да там особо то и нечего рассказывать. Контроллеру HD44780 нужно подавать команду Function Set три раза без проверки флага BF, а для ks0066 не надо.
# Pyku_He_oTTyda 2011-05-27 09:32
Спасибо за библиотеку!
Кстати, почему то ее нет в "Си библиотеки для AVR", было бы не лишним добавить.
# Pashgan 2011-09-24 13:03
Добавил
# Антон 2011-07-30 09:27
А совместима ли эта библиотека с tiny2313? почему то у меня не работает :sad: Дисплей wh0802A-NGG-CT
# Илья 2011-08-28 19:15
День добрый, день потратил наткнулся на ваш код. все работает, спасибо!
не пойму одного как во второй строке писать.
# Usver 2011-10-24 11:58
помогите, если можно. Пробую ваши курсы(в основном в виртуале), всё работает отлично. возникла проблема при работе с LCD WH2004A. Код который работает в протеусе(с компиляцией и для HD4478 и для KS0066), наглухо отказывается работать на железе. Мониторчик показывает 2 строки "залитых" символов и всё. Пробовал увеличить задержки, менять функциональные настройки - в протеусе работает, в железе болт.
# neman 2011-10-25 09:55
Может контрастность на дисплее зашкалена, вот ты их и не видеш символы а они есть (резистор покрути на дисплее).
# Usver 2011-10-25 17:05
С контрастностью всё ок!
Есть другие предложения?
# РОМАН78 2012-11-19 18:10
Не могу разобраться где определяются порты для подключения 4-х разрядная шина. Подскажите очень обяжете :-)
# Pashgan 2012-11-19 20:05
В хедер файле же комментарии есть
Code:
//порт к которому подключена шина данных ЖКД
#define PORT_DATA PORTC
#define PIN_DATA PINC
#define DDRX_DATA DDRC
# РОМАН78 2012-11-19 20:18
Извиняюсь за тугось, но как задать соответствие типа:
// RS - PORTD Bit 0 // RD - PORTD Bit 1 // EN - PORTD Bit 2 // D4 - PORTD Bit 4 // D5 - PORTD Bit 5 // D6 - PORTD Bit 6 // D7 - PORTD Bit 7
т.е. как указать к какому биту подключен соответствующий вывод. Ещё раз извиняюсь, но большое желание заставить её у себя работать, т.к. это самое вменяемая библиотека, что нашел под IAR.
# Pashgan 2012-11-19 20:30
RS, RW, EN - можно задать на произвольные выводы, а шина данных автоматически задается как старшие разряды порта PORT_DATA.
# Дмитрий86 2013-04-07 01:20
Премного благодарен!!! Золотые руки,Вы очень помогли мне сэкономить время и силы.

С уважением к Вам,Дмитрий
# Pashgan 2013-04-07 15:34
Это хорошо.
# sergey_esp 2013-08-11 11:39
Работает с кс0066, спасибо автору!
# JoJo 2013-08-11 12:59
Посмотри на новую версию с произвольным подключением выводов http://chipenable.ru/index.php/programming-avr/item/159-avr-lcd-biblioteka.html
# izh_dima 2013-09-20 07:09
Здравствуйте.
Скажите, есть ли библиотека для работы ЖК с расширителем PCF8574T через I2C ?
Приехал этот ЖК, но никак не могу его заставить работать (для ардуинки есть библиотеки, а для winavr не могу найти).
Быть может сделаете экскурс в этом направлении?
Спасибо.
# Pashgan 2013-09-20 10:36
У меня такой библиотеки нет.
Quote:
Быть может сделаете экскурс в этом направлении?
В ближайшее время вряд ли. У нет такого расширителя порта.
# Constantin 2013-09-28 13:32
А можно организовать функции для создания своих символов в эту либу?
# Pashgan 2013-09-28 20:03
В новой версии есть функция для загрузки своих символов. http://chipenable.ru/index.php/programming-avr/item/159-avr-lcd-biblioteka.html

У вас недостаточно прав для комментирования.