HDSP-2203 (Hewlett Packard)

HDSP-210x


Připojení k Arduinu

Pin HDSP-2203Název pinu HDSP-2203Pin Arduino
1RSTA0
2FL5V
3A0A2
4A1A3
5A2A4
6A3A5
7NC
8NC
9NC
10A45V
11CLS5V
12CLK
13WRA1
14Vdd5V
15GNDGND
16GNDGND
17CE10
18RD11
19D00
20D11
21NC
22NC
23D22
24D33
25D44
26D55
27D66
28D77

Zdrojový kód pro Arduino

/*
Original code www.josvandijken.nl
Based on the code from: Matt Joyce < matt at nycresistor.com >
                        Mark Tabry
*/
int RST   = A0;
int WR    = A1;
int CE    = 10;
int RD    = 11;
int AD0   = A2;
int AD1   = A3;
int AD2   = A4;
int AD3   = A5;
int D0    = 0;
int D1    = 1;
int D2    = 2;
int D3    = 3;
int D4    = 4;
int D5    = 5;
int D6    = 6;
int D7    = 7;
int incomingByte = 0;

void setup()
{
  pinMode(RST    , OUTPUT);
  pinMode(WR     , OUTPUT);
  pinMode(CE     , OUTPUT);
  pinMode(RD     , OUTPUT);
  pinMode(AD0    , OUTPUT);
  pinMode(AD1    , OUTPUT);
  pinMode(AD2    , OUTPUT);
  pinMode(AD3    , OUTPUT);
  pinMode(D0     , OUTPUT);
  pinMode(D1     , OUTPUT);
  pinMode(D2     , OUTPUT);
  pinMode(D3     , OUTPUT);
  pinMode(D4     , OUTPUT);
  pinMode(D5     , OUTPUT);
  pinMode(D6     , OUTPUT);
  pinMode(D7     , OUTPUT);
  digitalWrite(CE, HIGH);
  digitalWrite(WR, HIGH);
  resetDisplay();
}

void resetDisplay()
{
  digitalWrite(RST, LOW);
  delayMicroseconds(1);
  digitalWrite(RST, HIGH);
  delayMicroseconds(150);
  digitalWrite(AD3, HIGH);
}

void writeDisplay(char *input)
{
  for (int i = 0; i < 8; i++)
  {
    digitalWrite(AD0, (1 & i) != 0 ? HIGH : LOW);
    digitalWrite(AD1, (2 & i) != 0 ? HIGH : LOW);
    digitalWrite(AD2, (4 & i) != 0 ? HIGH : LOW);
    PORTD = input[i];
    delay(1);
    digitalWrite(CE, LOW);
    delay(1);
    digitalWrite(WR, LOW);
    delay(1);
    digitalWrite(WR, HIGH);
    delay(1);
    digitalWrite(CE, HIGH);
    delay(1);
  }
}

void scrollDisplay(char *words)
{
  char buffer[9];
  int i = 0;
  while (words[i] != 0)
  {
    boolean blank = false;
    for (int j = 0; j < 8; j++)
    {
      if ( !blank && words[i + j] == 0 )
      {
        blank = true;
      }
      if ( blank )
      {
        buffer[j] = ' ';
      }
      else
      {
        buffer[j] = words[i + j];
      }
    }
    buffer[8] = 0;
    writeDisplay(buffer);
    delay(200);
    i++;
  }
}

void loop()
{
  char intro[] = "        HDSP-2203 DEMO ";
  scrollDisplay(intro);
}

Demo video

Leave a Reply