Hello all!
I’m trying to interface a 7-segment common-anode driver (http://www.mouser.com/ProductDetail/Max … zoGQ%3d%3d) with my Arduino Uno. After studying the datasheet and timing diagram I wrote code to display the number “01234567” on my display but it isn’t lighting up at all. I put the timing diagram and the code I wrote below. My method for updating the display in the code is to first update the data pins for the respective digit then pulse WRITE. I hate to be vague but I really don’t know where I’m going wrong here. If anyone could take the time to help I would truly appreciate it!
int MODE = 0;
int WRITE = 1;
int ID0 = 2;
int ID1 = 3;
int ID2 = 4;
int ID3 = 5;
int ID4 = 6;
int ID5 = 7;
int ID6 = 8;
int ID7 = 9;
void setup()
{
pinMode(MODE, OUTPUT);
pinMode(WRITE, OUTPUT);
pinMode(ID0, OUTPUT);
pinMode(ID1, OUTPUT);
pinMode(ID2, OUTPUT);
pinMode(ID3, OUTPUT);
pinMode(ID4, OUTPUT);
pinMode(ID5, OUTPUT);
pinMode(ID6, OUTPUT);
pinMode(ID7, OUTPUT);
delay(1000);
updateDisplay();
}
void loop()
{
}
void updateDisplay()
{
digitalWrite(MODE, LOW);
digitalWrite(WRITE, HIGH);
//Set up data pins for control word.
digitalWrite(ID3, HIGH);
digitalWrite(ID4, HIGH);
digitalWrite(ID5, LOW);
digitalWrite(ID6, LOW);
digitalWrite(ID7, HIGH);
//Pulse WRITE while MODE is high.
digitalWrite(MODE, HIGH);
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
digitalWrite(MODE, LOW);
//Set up pins for digit 1 byte.
digitalWrite(ID0, LOW);
digitalWrite(ID1, LOW);
digitalWrite(ID2, LOW);
digitalWrite(ID3, LOW);
//Pulse WRITE while MODE is high.
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
//Set up pins for digit 2 byte.
digitalWrite(ID0, HIGH);
digitalWrite(ID1, LOW);
digitalWrite(ID2, LOW);
digitalWrite(ID3, LOW);
//Pulse WRITE while MODE is high.
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
//Set up pins for digit 3 byte.
digitalWrite(ID0, LOW);
digitalWrite(ID1, LOW);
digitalWrite(ID2, HIGH);
digitalWrite(ID3, LOW);
//Pulse WRITE while MODE is high.
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
//Set up pins for digit 4 byte.
digitalWrite(ID0, LOW);
digitalWrite(ID1, LOW);
digitalWrite(ID2, HIGH);
digitalWrite(ID3, HIGH);
//Pulse WRITE while MODE is high.
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
//Set up pins for digit 5 byte.
digitalWrite(ID0, LOW);
digitalWrite(ID1, HIGH);
digitalWrite(ID2, LOW);
digitalWrite(ID3, LOW);
//Pulse WRITE while MODE is high.
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
//Set up pins for digit 6 byte.
digitalWrite(ID0, LOW);
digitalWrite(ID1, HIGH);
digitalWrite(ID2, LOW);
digitalWrite(ID3, HIGH);
//Pulse WRITE while MODE is high.
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
//Set up pins for digit 7 byte.
digitalWrite(ID0, LOW);
digitalWrite(ID1, HIGH);
digitalWrite(ID2, HIGH);
digitalWrite(ID3, LOW);
//Pulse WRITE while MODE is high.
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
//Set up pins for digit 8 byte.
digitalWrite(ID0, LOW);
digitalWrite(ID1, HIGH);
digitalWrite(ID2, HIGH);
digitalWrite(ID3, HIGH);
//Pulse WRITE while MODE is high.
digitalWrite(MODE, HIGH);
digitalWrite(WRITE, LOW);
digitalWrite(WRITE, HIGH);
digitalWrite(MODE, LOW);
}