Pages: [1]   Go Down
Author Topic: Interfacing LED-driver  (Read 572 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi,

We've trying all day to interface the MC14489 7-segmented LED driver, but we cannot figure out how to drive it. We assume we need to control ik like this:

Sending data:
---------------
- set enable pin to low
- 1a)set clock to low
- 1b) make data pin high / low (for 1 / 0)
- 1c) make clock pin high
- Do 1 a-c for all data / bits.
- set enable pin to high.

This is the general way of shifting data (as we think we need to use).

Though we cannot drive the leds as the a-h pins stay low. Therefore
we think we aren't configuring the MC144 correctly. Can someone please
tell us how or describe how we need to configure or control this
driver??

Here is the datasheet:
http://www.freescale.com/files/timing_interconnect_access/doc/inactive/MC14489B.pdf

Roxlu

« Last Edit: December 06, 2008, 08:15:23 pm by roxlu » Logged

Lacomb, Oregon
Offline Offline
Sr. Member
****
Karma: 0
Posts: 302
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Show us how you have it connected and the real code you are using to drive it, that would help.
Logged

Stephen

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

This is my code

int data = 4;
int enable = 2;
int clock = 6;
int write_data = 0xFF;
int count = 0;
void setup()
{

 pinMode(data, OUTPUT);
 pinMode(clock, OUTPUT);
 pinMode(enable, OUTPUT);
}


void PulseClock(void) {
   digitalWrite(clock, LOW);
   delayMicroseconds(20);
   digitalWrite(clock, HIGH);
   delayMicroseconds(50);
   digitalWrite(clock, LOW);
}

void enableOn() {
 digitalWrite(enable, HIGH);
}
void enableOff() {
  digitalWrite(enable, LOW);
}

void loop() {
 // Send config bit.
 enableOff();
 writeByte(0xFF);
 enableOn();

 // Send data
 enableOff();
 writeByte(0x00);
 writeByte(0x00);
 writeByte(0x00);
enableOn();
delay(500);

// Send data
 enableOff();
 writeByte(0xFF);
 writeByte(0xFF);
 writeByte(0xFF);
 enableOn();
 delay(300);

/*
 enableOff();
 writeByte(0xCC);
 enableOn();
 enableOff();
  writeByte(0xCC);
  writeByte(0xCC);
 enableOn();
*/
/*
 digitalWrite(clock, HIGH);
 delay(400);
  digitalWrite(clock, LOW);
  delay(400);
  */
}

void writeByte(int writeData) {
   for (count = 0; count < 8; count++) {
     writeBit(writeData & 01);
     writeData>>=1;
   }
}

void writeBit(boolean bHigh) {
 digitalWrite(clock, LOW);
 delayMicroseconds(10);


 if (bHigh == true) {
   digitalWrite(data, HIGH);
 }
 else {
   digitalWrite(data, LOW);
 }
// delayMicroseconds(10);



 digitalWrite(clock, HIGH);
 delayMicroseconds(10);
}
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 6
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

I too am having a similar problem using that display driver.  Roxlu, did you get it working?  It's a fairly old post, I was hoping you may have had some luck.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 7
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hi Rick,

As we had only 2 weeks we threw away these led-drivers and started using shift registers. We had to drive huge 7-segment LEDs (4 inch) so the shift registers we used could handle ±  20V.  (If you want I can give you the type number).

Gr. Roxlu
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 6
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ah, I see.  I made some headway yesterday, actually.  It turns out I fried the first chip or it was faulty from the factory (probably the former).  I got the chip to print out some characters.  not the ones I wanted, but it prints something smiley
Logged

Pages: [1]   Go Up
Jump to: