Библиотека для 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

Комментарии   

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

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

пишу Цитата:

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

Проблема в дисплеи? С другими не дисплеями пока не тестил
Ответить | Ответить с цитатой | Цитировать
# Pashgan 19.12.2010 19:30
Не, у этого дисплея контроллер аналог hd44780. Вот ссылка на описание http://electronics-diy.com/pdf/SPLC780D_HD44780_compatiable.pdf
Я тестил библиотеку и в Протеусе и в железе на двух дисплеях с разными контроллерами. Все работало.
Ответить | Ответить с цитатой | Цитировать
# САБ 20.12.2010 07:05
Цитирую Roger:
Проблема в дисплеи? С другими не дисплеями пока не тестил
Проблема в вашем коде. Посмотрите объяснение здесь: http://electronix.ru/forum/index.php?s=&showtopic=19594&view=findpost&p=143374
Я не знаю что там в Протеусе, но описанная по ссылке последовательно сть работает на всех попадавшихся дисплеях.
Ответить | Ответить с цитатой | Цитировать
# Neiver 15.12.2010 18:49
А для начинающих как раз и важно не просто дать вариант решения задачи, а дать подход для решения подобных задач на конкретном примере. Указать достоинства и недостатки приведенного метода и указать на альтернативные методы.
На примере этой статьи, порты додключения дисплея жестко заданы с помощью макроопределени й. Гибко можно конфигурировать только управляющие линии, линии данных жестко заданы в одном порту. Из приемществ - можно просто писать код, особо не задумываясь, до поры, до времени.
Из альтернатив макроопределени ям есть, например, "виртуальные порты" различных реализаций.
Ответить | Ответить с цитатой | Цитировать
# Pashgan 19.12.2010 19:32
Для начинающих важно последовательно и доступно изложить материал.
Вот сколько пользуюсь дисплеями, а никогда не заморачивался такими вещами как виртуальные порты.
Ответить | Ответить с цитатой | Цитировать
# foxit 15.01.2011 20:42
Pashgan, расскажи в чем именно различия в инициализации HD44780 и ks0066?
Ответить | Ответить с цитатой | Цитировать
# Pashgan 18.01.2011 19:43
Да там особо то и нечего рассказывать. Контроллеру HD44780 нужно подавать команду Function Set три раза без проверки флага BF, а для ks0066 не надо.
Ответить | Ответить с цитатой | Цитировать
# Pyku_He_oTTyda 27.05.2011 09:32
Спасибо за библиотеку!
Кстати, почему то ее нет в "Си библиотеки для AVR", было бы не лишним добавить.
Ответить | Ответить с цитатой | Цитировать
# Pashgan 24.09.2011 13:03
Добавил
Ответить | Ответить с цитатой | Цитировать
# Антон 30.07.2011 09:27
А совместима ли эта библиотека с tiny2313? почему то у меня не работает :sad: Дисплей wh0802A-NGG-CT
Ответить | Ответить с цитатой | Цитировать
# Илья 28.08.2011 19:15
День добрый, день потратил наткнулся на ваш код. все работает, спасибо!
не пойму одного как во второй строке писать.
Ответить | Ответить с цитатой | Цитировать
# Usver 24.10.2011 11:58
помогите, если можно. Пробую ваши курсы(в основном в виртуале), всё работает отлично. возникла проблема при работе с LCD WH2004A. Код который работает в протеусе(с компиляцией и для HD4478 и для KS0066), наглухо отказывается работать на железе. Мониторчик показывает 2 строки "залитых" символов и всё. Пробовал увеличить задержки, менять функциональные настройки - в протеусе работает, в железе болт.
Ответить | Ответить с цитатой | Цитировать
# neman 25.10.2011 09:55
Может контрастность на дисплее зашкалена, вот ты их и не видеш символы а они есть (резистор покрути на дисплее).
Ответить | Ответить с цитатой | Цитировать
# Usver 25.10.2011 17:05
С контрастностью всё ок!
Есть другие предложения?
Ответить | Ответить с цитатой | Цитировать
# РОМАН78 19.11.2012 18:10
Не могу разобраться где определяются порты для подключения 4-х разрядная шина. Подскажите очень обяжете :-)
Ответить | Ответить с цитатой | Цитировать
# Pashgan 19.11.2012 20:05
В хедер файле же комментарии есть
Код:
//порт к которому подключена шина данных ЖКД
#define PORT_DATA PORTC
#define PIN_DATA PINC
#define DDRX_DATA DDRC
Ответить | Ответить с цитатой | Цитировать
# РОМАН78 19.11.2012 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 19.11.2012 20:30
RS, RW, EN - можно задать на произвольные выводы, а шина данных автоматически задается как старшие разряды порта PORT_DATA.
Ответить | Ответить с цитатой | Цитировать
# Дмитрий86 07.04.2013 01:20
Премного благодарен!!! Золотые руки,Вы очень помогли мне сэкономить время и силы.

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

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

Защитный код
Обновить