LCD displej s radičom HD44780: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
Riadok 1: | Riadok 1: | ||
== Pripojenie == | |||
Schéma zapojenia | |||
<div style='text-align: center;'> | |||
[[Súbor:MIPS_lcdDemoSchema01.png|300px]]<BR> | |||
''Schéma pripojenia LCD displeja k procesoru.'' | |||
</div> | |||
Pokúste sa najprv pripojiť displej len podľa schémy zapojenia. Ak sa vám to nepodarí, alebo si chcete byť naistom, | |||
skontrolujte si zapojenie aj podľa zapojovacej schémy. | |||
<div style='text-align: center;'> | |||
[[Súbor:MIPS_lcdDemoSchema02.png|300px]]<BR> | |||
''Schéma pripojenia vodoočov LCD displeja k procesoru.'' | |||
</div> | |||
To, či máte displej pripojený správne si môžete vyskúšať týmto demo programom, ktorý preložíte a nahráte z prostredia Arduino. | |||
<tabs><tab name="Arduino"> | |||
<source lang="arduino"> | |||
#include <LiquidCrystal.h> | |||
LiquidCrystal lcd (2,3,4,9,10,11,12); | |||
// make some custom characters: | |||
byte heart[8] = { | |||
0b00000, | |||
0b01010, | |||
0b11111, | |||
0b11111, | |||
0b11111, | |||
0b01110, | |||
0b00100, | |||
0b00000 | |||
}; | |||
byte smiley[8] = { | |||
0b00000, | |||
0b00000, | |||
0b01010, | |||
0b00000, | |||
0b00000, | |||
0b10001, | |||
0b01110, | |||
0b00000 | |||
}; | |||
byte frownie[8] = { | |||
0b00000, | |||
0b00000, | |||
0b01010, | |||
0b00000, | |||
0b00000, | |||
0b00000, | |||
0b01110, | |||
0b10001 | |||
}; | |||
byte armsDown[8] = { | |||
B01100, | |||
B01100, | |||
B00000, | |||
B01110, | |||
B11100, | |||
B01100, | |||
B11010, | |||
B10011 | |||
}; | |||
byte armsUp[8] = { | |||
// Run position 2 | |||
B01100, | |||
B01100, | |||
B00000, | |||
B01100, | |||
B01100, | |||
B01100, | |||
B01100, | |||
B01110}; | |||
void setup() { | |||
// initialize LCD and set up the number of columns and rows: | |||
lcd.begin(16, 2); | |||
// create a new character | |||
lcd.createChar(0, heart); | |||
// create a new character | |||
lcd.createChar(1, smiley); | |||
// create a new character | |||
lcd.createChar(2, frownie); | |||
// create a new character | |||
lcd.createChar(3, armsDown); | |||
// create a new character | |||
lcd.createChar(4, armsUp); | |||
// set the cursor to the top left | |||
lcd.setCursor(0, 0); | |||
// Print a message to the lcd. | |||
lcd.write(byte(1)); // when calling lcd.write() '0' must be cast as a byte | |||
lcd.print(" UAMT FEI STU "); | |||
lcd.write((byte)1); | |||
} | |||
void loop() { | |||
lcd.setCursor(2, 1); | |||
// print the number of seconds since reset: | |||
lcd.print("time: "); | |||
lcd.print(millis() / 1000); | |||
// read the potentiometer on A0: | |||
int sensorReading = analogRead(A0); | |||
// map the result to 200 - 1000: | |||
int delayTime = 350; //map(sensorReading, 0, 1023, 200, 1000); | |||
// set the cursor to the bottom row, 5th position: | |||
lcd.setCursor(12, 1); | |||
// draw the little man, arms down: | |||
lcd.write(3); | |||
delay(delayTime); | |||
lcd.setCursor(12, 1); | |||
// draw him arms up: | |||
lcd.write(4); | |||
delay(delayTime); | |||
}</source></tab> | |||
<tab name="AVR C"><source lang="cpp"> | |||
ToDo | |||
</source></tab> | |||
</tabs> | |||
Na displeji by sa vám mal zobraziť text, počítadlo a jednoduchá animácia ako na obrázku | |||
<div style='text-align: center;'> | |||
[[Súbor:MIPS_lcdDemoFoto.jpg|300px]]<BR> | |||
''Schéma pripojenia vodoočov LCD displeja k procesoru.'' | |||
</div> | |||
'''Q: Čo s nepoužitými vstupmi?''' | '''Q: Čo s nepoužitými vstupmi?''' | ||
Verzia z 13:37, 29. január 2021
Pripojenie
Schéma zapojenia
Pokúste sa najprv pripojiť displej len podľa schémy zapojenia. Ak sa vám to nepodarí, alebo si chcete byť naistom, skontrolujte si zapojenie aj podľa zapojovacej schémy.
To, či máte displej pripojený správne si môžete vyskúšať týmto demo programom, ktorý preložíte a nahráte z prostredia Arduino.
#include <LiquidCrystal.h>
LiquidCrystal lcd (2,3,4,9,10,11,12);
// make some custom characters:
byte heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000
};
byte smiley[8] = {
0b00000,
0b00000,
0b01010,
0b00000,
0b00000,
0b10001,
0b01110,
0b00000
};
byte frownie[8] = {
0b00000,
0b00000,
0b01010,
0b00000,
0b00000,
0b00000,
0b01110,
0b10001
};
byte armsDown[8] = {
B01100,
B01100,
B00000,
B01110,
B11100,
B01100,
B11010,
B10011
};
byte armsUp[8] = {
// Run position 2
B01100,
B01100,
B00000,
B01100,
B01100,
B01100,
B01100,
B01110};
void setup() {
// initialize LCD and set up the number of columns and rows:
lcd.begin(16, 2);
// create a new character
lcd.createChar(0, heart);
// create a new character
lcd.createChar(1, smiley);
// create a new character
lcd.createChar(2, frownie);
// create a new character
lcd.createChar(3, armsDown);
// create a new character
lcd.createChar(4, armsUp);
// set the cursor to the top left
lcd.setCursor(0, 0);
// Print a message to the lcd.
lcd.write(byte(1)); // when calling lcd.write() '0' must be cast as a byte
lcd.print(" UAMT FEI STU ");
lcd.write((byte)1);
}
void loop() {
lcd.setCursor(2, 1);
// print the number of seconds since reset:
lcd.print("time: ");
lcd.print(millis() / 1000);
// read the potentiometer on A0:
int sensorReading = analogRead(A0);
// map the result to 200 - 1000:
int delayTime = 350; //map(sensorReading, 0, 1023, 200, 1000);
// set the cursor to the bottom row, 5th position:
lcd.setCursor(12, 1);
// draw the little man, arms down:
lcd.write(3);
delay(delayTime);
lcd.setCursor(12, 1);
// draw him arms up:
lcd.write(4);
delay(delayTime);
}
ToDo
Na displeji by sa vám mal zobraziť text, počítadlo a jednoduchá animácia ako na obrázku
Q: Čo s nepoužitými vstupmi?
A1: pripojiť na definovanú úroveň, najlepšie cez pull-up/pull-down rezistor.
A2: Keďže podľa datasheetu[REF 1] má riadiaci obvod Hitachi HD44780 zapojené pull-upy interne, tak nie sú potrebné.
A3: Keďže však nevieme, aký riadiaci čip je v skutočnosti použitý, pre istotu ich môžeme zapojiť.
Vysvetlivky, prečo sú nezapojené vstupy nebezpečné:
Nezapojené (plávajúce) vstupy sú oveľa citlivejšie na ESD (elektrostatický výboj) a taktiež zvyšujú zbytočne spotrebu obvodu. Odporúča sa pripojenie cez tzv. pull-up odpor priamo na zem, prípadne aj bez odporu. Druhá možnosť, pripojenie na kladné napájacie napätie je tiež možná, ale v tomto prípade sa vynechanie pull-up rezistora neodporúča.
Toto je jeden z príkladov mnohých takýchto odporúčaní[REF 2] priamo od firmy NxP:
5.3 Line Termination and Pullup/Pulldown Resistors
|
Literatúra
- ↑ Hitachi HD44780U Dot Matrix Liquid Crystal Display Controller/Driver. ADE-207-272(Z), Japan, 1999.
- ↑ Murray Stewart: AN3393: MC9RS08KA Application Hints. NxP/Freescale Semiconductor Application Note, 2007.