Miniwyświetlacz LCD 4×10 znaków z podświetleniem i interfejsem I²C

Miniwyświetlacz LCD 4×10 znaków z podświetleniem i interfejsem I²C

Minimoduł uniwersalnego wyświetlacza tekstowego 4×10 znaków z kontrolerem SSD1803, wyposażony w magistralę I²C i oferujący możliwość sterowania jasnością oraz kolorem podświetlenia. Projekt przeznaczony do współpracy z Raspberry Pi, STM32, Arduino i nie tylko...

Podstawowe parametry:
  • moduł na bazie wyświetlacza LCD z kontrolerem SSD1803A,
  • programowe sterowanie kontrastem,
  • dwa rozmiary znaków do wyboru (2,6 mm, 4,55 mm),
  • możliwość zastosowania jednej z kilku wersji kolorystycznych podświetlenia,
  • komunikacja z modułem: I²C (wbudowany translator poziomów),
  • napięcie zasilania: 3...5 V.

Wyświetlacz przyda się w aplikacjach prezentujących niewielką ilość danych tekstowych – gdy popularne ekrany OLED okazują się zbyt małe, a przez to nieco nieczytelne, natomiast gabaryty typowych modułów z kontrolerem HD44780 – po prostu zbyt duże.

Schemat układu ukazano na rysunku 1. Minimoduł korzysta z wyświetlacza LCD EA DOGS104(x) z wbudowanym kontrolerem SSD1803A. Dzięki rozbudowanemu sterownikowi otrzymujemy do dyspozycji generator znaków, możliwość programowego sterowania kontrastem wyświetlanej informacji, zachowaniem kursora, rotacją wyświetlanego tekstu – oraz elastyczną konfigurację ekranu. DOGS104 umożliwia pokazywanie 4 linii po 10 znaków (o wysokości 2,6 mm) lub 2 linii po 10 znaków (o wysokości 4,55 mm) oraz ich dowolnych kombinacji, np. jednej linii 4,55 mm i dwóch 2,6 mm.

Rysunek 1. Schemat ideowy układu

Ten prosty zabieg pozwala akcentować istotne dane większą wysokością czcionki, a znaki o standardowej wysokości zarezerwować dla pozostałych parametrów – i pomimo niewielkich rozmiarów wyświetlacza (wynoszących 36×25,4 mm), znacząco podnosi czytelność prezentowanej informacji. Wyświetlacz wykonany został w formie modułu na szkle (DOG) oraz wyposażony w łatwe do montażu wyprowadzenia szpilkowe w rastrze 2,54 mm. Komponent dostępny jest w kilku wykonaniach:

  • EA DOGS104N-A – odbiciowy, bez możliwości zastosowania podświetlania,
  • EA DOGS104W-A – transrefleksyjny, z możliwością podświetlania,
  • EA DOGS104B-A – transrefleksyjny negatywowy, z możliwością podświetlania.

Iluminację wykonano nieco niestandardowo – żaden typ wyświetlacza nie ma wbudowanego fabrycznie podświetlenia. O zastosowaniu i doborze typu elementu decyduje użytkownik. Dostępne są trzy odmiany modułu EA LED36X28, różniące się kolorami użytych diod świecących:

  • EA LED36X28-A – podświetlenie w kolorze bursztynowym,
  • EA LED36X28-GR – podświetlenie dwukolorowe, czerwono-żółtozielone,
  • EA LED36X28-ERW – podświetlenie trójkolorowe, czerwono-biało-zielone.

Podświetlenie modułu montowane jest metodą „na kanapkę” pod właściwym ekranem. Zaprezentowany w artykule minimoduł współpracuje z wyświetlaczami typu 104N/W i podświetleniami A/GR.

DOGS104x ma wbudowane wszystkie elementy odpowiadające za generowanie napięć niezbędnych dla LCD, co upraszcza aplikację do kilku kondensatorów odsprzęgających. Nie jest wymagany potencjometr kontrastu jak w klasycznym znakowym LCD, gdyż jego regulacja odbywa się programowo. Do komunikacji z LCD wybrano magistralę I²C, przy czym wyprowadzenie SA0 (poprzez odpowiednie zalutowanie zwory ADRD) pozwala na wybór jednego z dwóch adresów 0x3C/0x3D. Za poprawny restart LCD po włączeniu zasilania odpowiada generator impulsu (stan niski) sygnału RES, oparty na bramkach układu U3.

Minimoduł może być zasilany napięciem w zakresie 3...5 V, za generację wewnętrznego napięcia zasilania 2,7 V odpowiada stabilizator LDO U2 typu MCP1700T. Konwersja poziomów pomiędzy współpracującym układem a wyświetlaczem LCD realizowana jest poprzez układ U1 typu ISO1640. Ze względu na wysoką rezystancję wyprowadzeń wyświetlacza – wykonanego w technologii DOG (nawet do kilkuset omów) – niestety nie zachowuje on poziomów logicznych w stanie niskim (offset Vol). W przypadku współpracy z układami magistrali I²C z niskimi wartościami rezystorów polaryzacyjnych rezystancja wewnętrzna tworzy dodatkowy dzielnik, podnoszący poziom stanu niskiego ponad wymogi standardu I²C. Jest to szczególnie istotne, gdyż może skutkować nieprawidłowym odczytaniem stanu sygnału ACK, powodując tym samym problemy z komunikacją. Konwerter poziomów – oprócz dopasowania poziomów napięcia – pełni także funkcje bufora separującego wyświetlacz od obciążenia współpracującą magistralą I²C. Niestety, proste konwertery oparte o kluczowane tranzystory MOS (np. BSS138 lub PCA9603) nie zapewniają poprawnej współpracy, wprowadzając dodatkowy offset napięcia, potęgujący problem oraz wymagają zachowania sporej różnicy napięć zasilania pomiędzy stronami konwertera, co przy założeniach zasilania 3...5 V okazuje się niemożliwe do osiągnięcia. W przypadku zastosowania wyświetlacza z podświetleniem, w minimodule przewidziano możliwość sterowania jego jasnością za pomocą układu generatora PWM U4 typu PCA9632. Układ pozwala na wybór zworą ADRB jednego z dwóch adresów 0x60/0x61 magistrali.

Rezystory RG, RY, RYR ograniczają prąd diod modułu podświetlenia, zwora ZY łączy strony podświetlenia w przypadku wersji bursztynowej. W zależności od typu zastosowanego podświetlenia montowane są odpowiednio elementy ZY, RY, RYR – dla wersji bursztynowej (LED-A) lub RG, RYR – dla wersji czerwono-żółtozielonej (LED-GR). Maksymalny prąd diod ustalony został na 4 mA na każdą sekcję LED, co zapewnia sensowny kompromis pomiędzy poborem mocy a maksymalną jasnością podświetlenia. W przypadku wersji dwukolorowej (LED-GR), poprzez odpowiednie sterowanie PWM – oprócz regulacji jasności – można uzyskać zmianę barwy na pośredni pomiędzy czerwienią i zielenią. Opcję tę warto zastosować w aplikacji do prostej i czytelnej sygnalizacji stanów awaryjnych lub przekroczenia parametrów. Układ zasilany jest napięciem 3...5 V, które wraz z magistralą I²C doprowadzone są do modułu za pomocą złączy I²CA/B w standardzie Grove i QWIIC. Pobór prądu, w zależności od typu wyświetlacza i jasności podświetlenia, zawiera się w zakresie 1...10 mA.
I²C_LCD_DOGS104BL zmontowany został na dwustronnej płytce drukowanej. Rozmieszczenie elementów zaprezentowano na rysunku 2a, b.

Rysunek 2. Schemat montażowy (a – warstwa top, b – warstwa bottom)

Montaż jest typowy i nie wymaga opisu. W zależności od wyboru wyświetlacza i typu podświetlenia należy zamontować odpowiednie elementy RG, RY, RYR, ZY (lub pominąć układ PWM w przypadku wyświetlacza DOGS104N-A). Do montażu ekranu można użyć kielichowych gniazd precyzyjnych, wtedy będzie możliwe łatwe rozłączenie i wymiana współpracującego modułu.

Zmontowane urządzenie ukazano na fotografii 1. Nie wymaga ono uruchamiania, należy skonfigurować tylko adresację oraz połączenie podświetlania. Adres bazowy określa położenie zwór ADRD, ADRB.

Fotografia 1a,b. Zmontowany moduł wyświetlacza, widok przy zastosowaniu dwóch różnych kolorów podświetlenia

Do szybkiego sprawdzenia działania wyświetlacza i podświetlenia z Arduino użyto bibliotek SSD1803A_I²C – przykładowy program testowy zamieszczono na listingu 1.

// example for DOGM104
#include <Arduino.h>
#include <SSD1803A_I²C.h>
#include <Wire.h>

const uint8_t i2cpwm = 0x61; //0x60:0x61
const uint8_t i2caddr = 0x3D; //0x3C:0x3D
const uint8_t resetPin = 3; // not used

SSD1803A_I²C lcd(i2caddr, resetPin);

void setup() {

// pca9632 init
Wire.begin(); // inicjacja I²C
delay(1);
Wire.beginTransmission(i2cpwm);
Wire.write(0x00);
Wire.write(0b10000000); // MODE1
Wire.endTransmission();

Wire.beginTransmission(i2cpwm);
Wire.write(0x01);
Wire.write(0b00000000); // MODE2, dim
Wire.endTransmission();

Wire.beginTransmission(i2cpwm);
Wire.write(0x06);
Wire.write(0xFF);
Wire.endTransmission();

Wire.beginTransmission(i2cpwm);
Wire.write(0x07);
Wire.write(0x00);
Wire.endTransmission();

Wire.beginTransmission(i2cpwm);
Wire.write(0x08);
Wire.write(0b10101010);
Wire.endTransmission();

Wire.beginTransmission(i2cpwm);
Wire.write(0x02);
Wire.write(0x00);
Wire.endTransmission();

Wire.beginTransmission(i2cpwm);
Wire.write(0x03);
Wire.write(0x00);
Wire.endTransmission();

// DOGS104 init
lcd.begin(DOGS104);
lcd.display(LINES_3_1);
delay(10);
lcd.locate(0, 0);
lcd.print("0123456789");
lcd.locate(1, 0);
lcd.print("abcdefghij");
lcd.locate(2, 0);
lcd.print("ABCDEFGHIJ");
lcd.locate(3, 0);
lcd.print("KLMNOPQRST");
lcd.write(0);
lcd.write(1);
lcd.display(CONTRAST);
lcd.display(CURSOR_OFF);
lcd.display(DISPLAY_ON);
}

void loop() {
for (int x = 0; x < 0xFF; x++) {
Wire.beginTransmission(i2cpwm);
Wire.write(0x02);
Wire.write(x); //PWM0/1 GR(Y) red/yellow up
Wire.endTransmission();
delay(10);
Wire.beginTransmission(i2cpwm);
Wire.write(0x03);
Wire.write(~x); //PWM1= ~PWM0 green down
Wire.endTransmission();
delay(10);
}
delay(1000);
}


Listing 1. Program testowy

Przed kompilacją należy zmienić adresy zgodnie z ustawieniami zwór na płytce.

Jeżeli wszystko działa poprawnie, można moduł zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory: (SMD 0603, 5%)
  • R1, R2, R5, R6: 4,7 kΩ
  • R3: 51 kΩ
  • R4: 22 kΩ
  • RG, RY, RYR: 150 Ω (opis)
  • ZY: 0 Ω (opis)
Kondensatory: (SMD 0603, X7R, 10 V)
  • C1, C2, C9, C12: 100 nF
  • C3...C7: 1 μF
  • C8: 10 nF
Półprzewodniki:
  • U1: IS1640BD (SO-8)
  • U2: MCP1700T-2702E (SOT-23)
  • U3: 74LVC2G14GW.125 (SC-88)
  • U4: PCA9632DP2 (TSSOP10_050)
Pozostałe:
  • LCD1: wyświetlacz LCD EADOGS104W-A (opis)
  • I²CA: złącze Grove SMD kątowe
  • I²CB: złącze JST 1 mm kątowe
Artykuł ukazał się w
Elektronika Praktyczna
kwiecień 2024
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik listopad 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje październik 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna listopad 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich listopad 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów