Found some DL2416's in storage a looong time ago, and decided to put them to use.
Unfortunately I dont have a schematic drawn up, but the connection is very simple. Most of the data lines for the displays are in parallel (power, ground, address, data, clear, and blank) and the rest are controlled by the Arduino (write) which controls the /CE decoder. The only additional hardware I used is a 74LS138 decoder, with outputs 0-4 tied to the /CE lines of each respective display.
The code is very simple, you just have to feed the display ASCII and it displays it:
// DL2416 Test v1.0 by J Skoba aka SpikedCola
int CLR = 12;
int A0 = 9;
int A1 = 10;
int WR = 8;
int BL = 13;
int EN = 11;
char stringToShow[] = "THIS SPACE 4 RENT!!!";
void setup()
{
pinMode(CLR, OUTPUT);
pinMode(A0, OUTPUT);
pinMode(A1, OUTPUT);
pinMode(WR, OUTPUT);
pinMode(BL, OUTPUT);
pinMode(EN, OUTPUT);
DDRD = 0xFF;
DDRC = 0xFF;
PORTC = 0x00;
PORTD = 0x00;
digitalWrite(CLR, HIGH);
digitalWrite(BL, HIGH);
for (int a = 0; a < (sizeof(stringToShow) - 1); a++)
{
printLetter(stringToShow[a], a / 4, a % 4);
}
}
void loop()
{
}
void printLetter(byte text, int displayNumber, int digit)
{
PORTC = displayNumber; // set decoder to specific dl2416t
digitalWrite(EN, HIGH); // turn decoder on
digitalWrite(A0, bitRead(3 - digit, 0));
digitalWrite(A1, bitRead(3 - digit, 1));
PORTD = text;
digitalWrite(WR, LOW); // latch display
digitalWrite(WR, HIGH);
digitalWrite(EN, LOW); // turn decoder off
}
Nothing too special, but hopefully the code will help someone out. Id still like to add scrolling and the ability to wrap around new text while still scrolling old text, but this is outside my programming skill level.