Operácie

LCD displej s radičom HD44780

Z SensorWiki

Verzia z 13:37, 29. január 2021, ktorú vytvoril Balogh (diskusia | príspevky)

Pripojenie

Schéma zapojenia

MIPS lcdDemoSchema01.png
Schéma pripojenia LCD displeja k procesoru.

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.

MIPS lcdDemoSchema02.png
Schéma pripojenia vodoočov LCD displeja k procesoru.


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

MIPS lcdDemoFoto.jpg
Schéma pripojenia vodoočov LCD displeja k procesoru.


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
  • Line termination and pullup/pulldown resistors may be required to guarantee voltage levels at high impedance or unused pins (do not tie directly to VDD/VSS)
  • Floating input pins may store intermediate voltage levels that would cause current drain on internal logic gates
  • Floating pins are also prone to pick up noise and suffer electrostatic discharge stress (ESD)


Literatúra

  1. Hitachi HD44780U Dot Matrix Liquid Crystal Display Controller/Driver. ADE-207-272(Z), Japan, 1999.
  2. Murray Stewart: AN3393: MC9RS08KA Application Hints. NxP/Freescale Semiconductor Application Note, 2007.