Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

No output from Dm134B LED driver

Status
Not open for further replies.

sujan_014

Newbie level 6
Joined
Mar 13, 2014
Messages
11
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
96
Hi all, I am using DM134B LED driver for displaying numbers in 7 segment driver. I have written code in AVR studio 4 and I am sure that the that is ok because the serial output port present in DM134B outputs the data in sent through serial input. The circuit that I am using is the one from the datasheet provided by DM134B but there is no port output in any of the pins so can anyone tell what is the problem ?
 

I can see from the datasheet that this is a shift register so the fundamental question I have is are you latching the output? You are seeing the data out so when know that you are shifting it in but I am not sure that you are latching it when it has all been shifted in place.
 

I have been sending latch and enable pulse after sending data. The datasheet says that latch is active low but in datasheet it says that momentary high pulse needs to be sent to latch it to input. I have tried both ways but still I am clueless about it.

#define SET_CLK (PORTB |= 0x01)
#define CLR_CLK (PORTB &= 0xFE)

#define DATA_HIGH PORTB |= (1<<1)
#define DATA_LOW PORTB &= ~(1<<1)

#define LATCH_HIGH PORTB |= (1<<2); //latch high
#define LATCH_LOW PORTB &= ~(1<<2); //latch low

#define ENABLE_HIGH PORTB |= (1<<3); //enable high
#define ENABLE_LOW PORTB &= ~(1<<3); //enable low

int main(void){
uint16_t data = 0b1001100110011001;
DDRB = 0xFF;
ENABLE_HIGH;
LATCH_LOW;

while(1){
for(uint8_t i = 0; i < 16; ++i){
if (data & (uint16_t)(1<<i)){
DATA_HIGH;
} else {
DATA_LOW;
}
_delay_ms(1);
SET_CLK;
_delay_ms(1);
DATA_LOW;
_delay_ms(1);
CLR_CLK;
_delay_ms(1);

}
_delay_ms(1);
LATCH_HIGH; _delay_ms(2);
LATCH_LOW; _delay_us(2000);

ENABLE_LOW; _delay_ms(2);
ENABLE_HIGH; _delay_ms(2);
}
}
 

I don't think that is the right sequence for latch registers. I believe its more like this (looking at the timing diagram):
1.) Enable high, Latch low
2.) Set data
3.) Clock
4.) Loop until all data is done
5.) Latch pulse
6.) Enable low

This is extrapolated from the timing diagram of the datasheet. Enable high sets all the outputs as off. Also, did you setup the resistor for the constant current?
 

Yes, I tried it with 300, 210 and 1.5k ohms.

According to the datasheet, the data has to be sent in between two latch pulses. I tried it the way you told but could not get output from output ports. I would like to ask if latch pulse is active high or low. latch should always be high I think but in datasheet latch is mentioned as low level active. The duration of clock pulse is also wide enough to read the data. In other posts on serial data that I referred, first low clock pulse is sent and after data, high clock pulse is sent. But I sent data first. Does that affect the transmission ?I also don't think that clock has to be sent repeatedly during latch and enable...
 
Last edited:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top