Подправил библиотеку для LCD, теперь она поддерживает контроллеры ks0066 и hd44780. Фишка в чем. Библиотека для hd44780 может работать и с ks0066, а вот библиотека для ks0066 с контроллером hitachi уже не работает. У этих контроллеров есть некоторое отличие в инициализации при использовании 4-ех разрядной шины. Вообщем я добавил несколько строк кода и заключил их в директивы условной компиляции, чтобы можно было выбирать тип контроллера. Код для hitachi чуть "потолще", а если будет использоваться контроллер ks0066 зачем нам лишние 40 байт кода.
Библиотека работает с 8-ми и 4-ех разрядной шиной, поддерживает опрос флага занятости, работает с контроллерами ks0066 и hd44780. Нужная конфигурация устанавливается с помощью макроопределений.
....lcd-lib.h
Библиотека работает с 8-ми и 4-ех разрядной шиной, поддерживает опрос флага занятости, работает с контроллерами ks0066 и hd44780. Нужная конфигурация устанавливается с помощью макроопределений.
....lcd-lib.h
#define CHECK_FLAG_BF //закомментируй чтобы использовалась программная задержка
#define BUS_4BIT //закомментируй для 8-ми разрядной шины
#define HD44780 //закомментируй для контроллера ks0066
....
....
Comments
Неплохо было-бы отделять способ вывода на шину дисплея от, собственно, логики его работы.
У меня дисплей FDCC 1602L контроллер вроде как Samsung S6A0069(S6B0066U)...
При инициализаци пишу так
Quote: работает на железе,но не в протеле
пишу Quote: Работает в протеле, но не на железе
реализацию работы в протеле нашел на тут: http://electronix.ru/forum/index.php?showtopic=52609&hl=
Проблема в дисплеи? С другими не дисплеями пока не тестил
Я тестил библиотеку и в Протеусе и в железе на двух дисплеях с разными контроллерами. Все работало.
Я не знаю что там в Протеусе, но описанная по ссылке последовательно сть работает на всех попадавшихся дисплеях.
На примере этой статьи, порты додключения дисплея жестко заданы с помощью макроопределени й. Гибко можно конфигурировать только управляющие линии, линии данных жестко заданы в одном порту. Из приемществ - можно просто писать код, особо не задумываясь, до поры, до времени.
Из альтернатив макроопределени ям есть, например, "виртуальные порты" различных реализаций.
Вот сколько пользуюсь дисплеями, а никогда не заморачивался такими вещами как виртуальные порты.
Кстати, почему то ее нет в "Си библиотеки для AVR", было бы не лишним добавить.
не пойму одного как во второй строке писать.
Есть другие предложения?
Code:
//порт к которому подключена шина данных ЖКД
#define PORT_DATA PORTC
#define PIN_DATA PINC
#define DDRX_DATA DDRC
// 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.
С уважением к Вам,Дмитрий
Скажите, есть ли библиотека для работы ЖК с расширителем PCF8574T через I2C ?
Приехал этот ЖК, но никак не могу его заставить работать (для ардуинки есть библиотеки, а для winavr не могу найти).
Быть может сделаете экскурс в этом направлении?
Спасибо.
Quote: В ближайшее время вряд ли. У нет такого расширителя порта.
RSS feed for comments to this post