сайт для палких паяльників

Основными достоинствами символьных жидкокристаллических индикаторов (дисплеев) являются простота использования, не большая потребляемая мощность, рабочие напряжения 3..5 В, долговечность (до 15 лет непрерывной работы). На данный момент очень популярны ЖКИ компания Winstar. Не то чтобы популярны, соотношение цена/качество у них наиболее приемлемое. Winstar производить широкую линейку ЖКИ в том числе и графические индикаторы, но сегодня мы говорим о символьных.  (см. также Графический дисплей WG12864A)

Схема подключения жидкокристаллических дисплеев

В качестве примера возьмем наиболее часто используемый WH1602. Назначение контактов LCD:

У ЖКИ есть 8-ми и 4-х проводной режим обмена данными с микроконтроллером.  Мы будим работать с 4-x. Ноги надо экономить 🙂

Внимание! Внимательно изучайте назначение выводов дисплея! У индикаторов с разным расположением контактов могут отличаться назначение выводов. Так, например, у WH1602D-YGH-CTK на первый вывод подается напряжение питания, в то время как другим индикаторам на первый вывод следует подавать общий провод (землю).

В нашем случае выводы дисплея DB0, DB1, DB2, DB3 задействованы НЕ будут.

Схема подключения к микроконтроллеру следующая:

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

GCC Библиотека для LCD

Данная библиотека была найдена на просторах интернета. Мне пришлось ее доработать, так как библиотека требовала в качестве шины данных использование четырех исключительно старших разрядов порта. При этом не позволяла использовать оставшиеся линии порта. Теперь для данных можно использовать любые 4 подряд идущие линии порта (0,1,2,3), (1,2,3,4), (2,3,4,5), (3,4,5,6) или (4,5,6,7), а другие ноги этого же порта можно нормально задействовать. Библиотека может быть использована для символьных дисплеев с любым разрешением.

Используемая библиотека требует использовать для линий данных (DB4..DB7) идущих подряд 4-х линий одного порта. Для линий управления RS, E (R/W не используется) могут быть задействованы линии другого порта. Поскольку R/W не задействуем, легко догадаться, что читать из дисплея библиотека не умеет. В файле lcd_lib.hобратите внимание на описание используемых портов:

#define LCD_RS 1  //define MCU pin connected to LCD RS
//#define LCD_RW 0 //define MCU pin connected to LCD R/W<
#define LCD_E 2 //define MCU pin connected to LCD E
#define LCD_D4 4 //define MCU pin connected to LCD D3
#define LCD_D5 5 //define MCU pin connected to LCD D4
#define LCD_D6 6 //define MCU pin connected to LCD D5
#define LCD_D7 7 //define MCU pin connected to LCD D6
#define LDP PORTD //define MCU port connected to LCD data pins
#define LCP PORTB //define MCU port connected to LCD control pins
#define LDDR DDRD //define MCU direction register for port connected to LCD data pins
#define LCDR DDRB //define MCU direction register for port connected to LCD control pins

Для нашей схемы оставляем все без изменений. Пример для работы с дисплеем можно скачать здесь.

Краткое описание функций:

void LCDsendChar – Печатает один символ в текущую позицию
void LCDinit – Инициализация LCD
void LCDclr – Очистка LCD
void LCDhome – переводит курсор в начало
void LCDstring – Печатает строку указанной длинны в текущую позицию
void LCDGotoXY – Перемещает курсор в указанную позицию
void CopyStringtoLCD – Копирует строку из флэш-памяти в указанную позицию дисплея
void LCDdefinechar – Записывает изображение символа в память дисплея
void LCDshiftRight – перемещает изображение на указанное число символов вправо
void LCDshiftLeft – перемещает изображение на указанное число символов влево
void LCDcursorOn – Включает курсор подчеркивание
void LCDcursorOnBlink – Включает мигающий курсор
void LCDcursorOFF – Выключает курсор
void LCDblank – отключает изображение, но не очищает
void LCDvisible – включает изображение
void LCDcursorLeft – перемещает курсор на указанное число символов влево
void LCDcursorRight – перемещает курсор на указанное число символов вправо

 Контрастность, программное изменение контрастности

Контрастность дисплея управляется подачей напряжения на специальный контакт (см. документацию по дисплею). При этом уровень контрастности зависит от разницы величины напряжения между напряжением питания и напряжением, поданным на контакт контрастности. Для нормальной контрастности разница должна составлять примерно 4 Вольта. Т.е. на контакт контрастности нужно подать при питании 5В примерно 5-4=1 вольт, и примерно 3.3-4=-0.7В (!отрицательное напряжение) при питании 3.3В. Дисплеи, которые имеют встроенный преобразователь напряжения (для контрастности) могут работать при питании 3.3 и 5 В. Обычно это указано в документации. Электроника дисплеев, рассчитанных на питание 5В, отлично работает и при 3.3В., единственный вопрос – где взять отрицательное напряжение для управления контрастностью? Для этого я применяю не сложную схему инвертора напряжения:

На вход схемы подаем ШИМ сигнал с микроконтроллера. Управляя скважностью сигнала, можно программно регулировать контрастность. Для ATMega8 это делается примерно так:

TCCR1A = (1<<WGM10) | (1<<WGM11) | (1<<COM1A1);
 TCCR1B = (1<<CS11);

OCR1A = 7; // Уровень контрастности

DDRB |= (1<<OC1A);

Характеристики и обозначение дисплеев

Дисплеи Winstar имеют буквенно-цифровое обозначение, в котором содержаться его характеристики. Система обозначений приведена в следующей таблице:

WH1602BYGBCP**
123456789
ПояснениеЗначениеОписание
1ПроизводительWпродукт Winstar
2Тип модуляHсимвольный
Gграфический
XTAB
3Число символов, строк или точек08,16,20,24,40…количество символов в строке (для символьных
ЖКИ)
120,122,128…количество точек в строке (для графических ЖКИ)
01,02,03,04…количество строк (для символьных ЖКИ)
08,16,32…240…количество точек в столбце (для графических
ЖКИ)
4Модель индикатораA – ZСерийный номер модели
5Тип и цвет подсветкиNбез подсветки
Aсветодиодная янтарная
Bэлектролюминисцентная синяя
Dэлектролюминисцентная зелёная
FCCFL белая
Gсветодиодная зелёная
Pсветодиодная синяя
Rсветодиодная красная
Tсветодиодная белая
Wэлектролюминисцентная белая
Yсветодиодная желто-зеленая
6Тип и цвет ЖКИBTN позитивный, серый
FFSTN позитивный
GSTN позитивный, серый
MSTN негативный, синий
NTN негативный
TFSTN негативный
YSTN позитивный, желто-зелёный
7Тип поляризации,
диапазон температур,
угол
зрения
Aна отражение, 0 – +50°C, 6:00
Bна просвет и отражение, 0 – +50°C, 6:00
Cна просвет, 0 – +50°C, 6:00
Dна отражение, 0 – +50°C, 12:00
Eна просвет и отражение, 0 – +50°C, 12:00
Fна просвет, 0 – +50°C, 12:00
Gна отражение, -20 – +70°C, 6:00
Hна просвет и отражение, -20 – +70°C, 6:00
Iна просвет, 0 – +50°C, 6:00
Jна отражение, -20 – +70°C, 12:00
Kна просвет и отражение, -20 – +70°C, 12:00
Lна просвет, -20 – +70°C, 12:00
8ЗнакогенераторJS / JPанглийский/японский
EE / EU / EP / ES / ECанглийский/европейский
CPанглийский/русский
9Специальный кодVвстроенный источник отрицательного напряжения
Tвстроенный источник отрицательного напряжения
и
температурная компенсация
TSTouch Screen
Eподсветка в торец

Пример: WH1602A-YGB-CP – алфавитно-цифровой модуль серии A с желто-зелёной светодиодной подсветкой, STN позитивный серый, на стандартный диапазон температур, с англо/русским знакогенератором.

Параметры стандартных моделей символьных ЖКИ-индикаторов:

ТипМодельРазмер
модуля, мм
Размер видимой
области, мм
Размер
точки, мм
Размер
символа, мм
Process ColorBacklight
TNSTN
Gray
STN
Yellow
STN
Blue
NoneLEDEL
WH0802A58.0 x 32.038.0 x 16.00.56 x 0.662.96 x 5.56
WH1202A55.7 x 32.046.0 x 14.50.45 x 0.602.65 x 5.50
WH1601A80.0 x 36.066.0 x 16.00.55 x 0.753.07x 6.56
B85.0 x 28.066.0 x 16.00.55 x 0.753.07x 6.56
WH1602A84.0 x 44.066.0 x 17.00.55 x 0.652.95 x 5.55
B80.0 x 36.066.0 x 16.00.55 x 0.652.96 x 5.56
C85.0 x 36.066.0 x 16.00.56 x 0.662.96 x 5.56
D85.0 x 30.066.0 x 16.00.56 x 0.662.96 x 5.56
J80.0 x 36.066.0 x 16.00.56 x 0.652.96 x 5.56
L122.0 x 44.099.0 x 24.00.92 x 1.104.84 x 9.66
M85.0 x 32.666.0 x 17.00.56 x 0.652.96 x 5.56
WH1604A87.0 x 60.062.0 x 26.00.55 x 0.552.95 x 4.75
B70.6 x 60.060.0 x 32.60.55 x 0.552.95 x 4.75
WH2002A116.0 x 37.085.0 x 18.60.60 x 0.653.20 x 5.55
L180.0 x 40.0149.0 x 23.01.12 x 1.126.00 x 9.66
M146.0 x 43.0123.0 x 23.00.92 x 1.104.84 x 9.22
WH2004A98.0 x 60.077.0 x 25.20.55 x 0.552.95 x 4.75
L146.0 x 62.5123.5 x 43.00.92 x 1.104.84 x 9.22
WH2402A118.0 x 36.094.5 x 16.00.60 x 0.653.20 x 5.55
WH4002A182.0 x 33.5154.4 x 16.50.60 x 0.653.20 x 5.55
WH4004A190.0 x 54.0147.0 x 29.50.50 x 0.552.78 x 4.89

Успехов!

Смотри так же:

Графический дисплей WG12864A

7-и сегментный ЖК-индикатор. Пример использования.

12 комментариев: Использование cимвольных жидкокристаллических LCD дисплеев. Пример на GCC (WinAVR) для Atmega 8

  • Игорь говорить:

    Добрый день. Вы написали что Ваша библиотека работает с экранами любого разрешения, но ковыряясь в строках данной библиотеки я увидел определение всего одного выхода – Е1. На ЖКИ больше 2х строк (У меня 4х строчный WH4004) имеется вывод E2. Соответсвенно вывод Е1 работает со строками 0 и 1, а Е2 с остальыми двумя 2 и 3.
    Подскажите пожалуйста как быть с таким большим экраном, что нужно отредактировать в библиотеке?

    • admin говорить:

      Да, Вы правы. Библиотека не будет полноценно работать с дисплеями 40×4 (в таких дисплеях используется два чипа). Библиотека создавалась для дисплеев с одним чипом (максимум 80 символов). Т.е. для максимальных размеров 20×4, 40×2. Для такого дисплея придется значительно модифицировать библиотеку. Я подумаю, что можно сделать. Но не обещаю это сделать быстро, поскольку не имею под рукой дисплея такого размера.

      • Игорь говорить:

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

  • Иван говорить:

    Добрый день. При эмуляции в Proteus 7.8 Вашего примера с lcd_lib ,созданный символ батареи отображается в первой ячейке первой строки и при изменении позиции для записи остаётся в той же позиции. Остальные символы выводятся верно в указанные позиции. Проблема эмулятора, библиотеки или примера?
    Можно подробней о записи в CGRAM по адресам и вывод этих символов .

  • Вячеслав говорить:

    Здравствуйте, подскажите – как исправить то, что ваша библиотека работает только если шина управления и данных на разных портах? поколупался – вроде должно работать и на одном, но нет – на одном порту не работает

  • admin говорить:

    В ближайшие дни проверю, разберусь, сообщу.

  • admin говорить:

    Проверил. Все работает. Перенес с PB1 PB2 на PD1 PD2, поправил название порта в lcd_lib.h:

    #define LDP PORTD //define MCU port connected to LCD data pins
    #define LCP PORTD //define MCU port connected to LCD control pins
    #define LDDR DDRD //define MCU direction register for port connected to LCD data pins
    #define LCDR DDRD //define MCU direction register for port connected to LCD control pins

    Возможно PORT или DDR не исправили?

  • Дмитрий говорить:

    Здравствуйте.Огромное спасибо за модуль для ЖКИ и детальное разъяснение.Но несмотря на обилие информации не смог запустить.Пробовал на разных портах и правил соответственно хедер.Также,пробовал другие либы,но ефект один – высвечивается верхняя строка в впрямоугольниках и все(((. Подключал как показано в этой статье и заливал прошивку что в папке с исходниками – безполезно(( Что я мог упустить? Может,проблема в фьюзах? Правда в код ЖКИ добавлял код мигания лампочки -лампочка мигает,ЖКИ светиться верхняя строка в прямоугольниках и хоть плачь. Большая просьба,помочь решить данную проблему.

  • admin говорить:

    Вероятнее всего, Фюзы отвечающие за тактирование МК выставлены не правильно. Частота должна быть 1Mhz. Если с частотой все в порядке проверьте правильность подключения ЖК.

  • бАрада говорить:

    подскажите, что нужно добавить(исправить) для работы на частоте 16Мгц.
    посмотрел листинги, там вроде стоят delay-и. или есть еще некоторые нюансы?

  • tzzk говорить:

    Возвращаюсь к вопросу Игоря: На ЖКИ больше 2х строк (У меня 4х строчный WH4004) имеется вывод E2. Соответсвенно вывод Е1 работает со строками 0 и 1, а Е2 с остальыми двумя 2 и 3.
    Подскажите пожалуйста как быть с таким большим экраном, что нужно отредактировать в библиотеке?

    у меня та же проблема, но у меня 4х строчный DV40400. Заранее спасибо

    • admin говорить:

      Библиотека пока не умеет работать с 4 строчными ЖКИ. Увы, библиотеку для этого нужно серьёзно дорабатывать. К сожалению, у меня пока не было задачи для 4-х строчных ЖКИ, соответственно, и самого 4-х строчного ЖКИ. А поскольку перешел на графические дисплее, вряд ли появится. Но я могу попробовать это сделать с помощью средств эмуляции.

Translate
Архіви

© 2011-2019 Андрій Корягін, Кременчук - Київ, Україна