[20] Wyświetlacz LCD HD44780
[Artykuł Tymczasowy]
Dziś pokażę Ci jak używać wyświetlacz LCD. My użyjemy w rozmiarze 2×16,(napisz że dwójka oznacza linie, a 16 to ilość znaków na każdą linie). Występują też w większych rozmiarach np; 4×20 i mniejszych 1×8. Mój wyświetlacz ma 2 wiersze po 16 znaków. Każdy znak składa się z 40 pikseli, który może wyświetlać litery, cyfry a także znaki.
Większość wyświetlaczy wykorzystuje sterowniki do ich obsługi, nasz wyświetlacz posiada sterownik HD44780. Jest to układ scalony, w odcinku zerowym pokazywałem Ci atmege328p w dwóch obudowach dip28 i tqf32, jest to droższa opcja w produkcji układów ze względu na obudowę i wyprowadzenia scalak. Najtańszą metodą produkcji układów scalonych jest tak zwany glut, jak tu. W środku umieszczony jest właściwy układ scalony, a jego obudowę tworzy przysłowiowy glut. W razie jego uszkodzenia niestety nie możemy go wymienić i musimy kupić nowy wyświetlacz.………………..
Wyprowadzeń wyświetlacza:
Piny:
- Vss- masa
- Vdd – zasilanie wyświetlacza 5 wolt
- Vo – regulacja kontrastu
- RS – wybór rejestrów (komenda/dane)
- RW – Wybór opcji (odczyt/zapis)
- E – zezwolenie na zapis do rejestrów
- D0 – D3 – dane (my nie będziemy korzystać z tych pinów)
- D4 – D7 – dane
- A – Anoda zasilanie podświetlenia
- K – Katoda masa podświetlenia
Podłączenie:

Gotowy Plik Arduino:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#include<LiquidCrystal.h> const byte RS=12, E=11, D4=5, D5=4, D6=3, D7=2; LiquidCrystal lcd( RS, E, D4, D5, D6, D7); byte customChar[8] ={ 0b00001, 0b00010, 0b00100, 0b01111, 0b00010, 0b10100, 0b11000, 0b11100, }; void setup() { lcd.createChar(0, customChar); pinMode(9, OUTPUT); analogWrite(9, 120); lcd.begin(2,16); } void loop() { lcd.clear(); lcd.write(byte(0)); lcd.setCursor(2,0); lcd.print("Napiecie: "); lcd.print((analogRead(A5))*(5.0/1024.0)); lcd.display(); delay(300); } |
Pętla do sprawdzania kontrastu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(2,16); pinMode(9, OUTPUT); } void loop() { for(byte i=0; i<256; i++){ lcd.clear(); lcd.print("Wypelnienie: "); lcd.print(i); analogWrite(9, i); lcd.display(); delay(400); } } |