Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Проблем с динамична индикация
http://mcu-bg.com/mcu_site/viewtopic.php?f=2&t=7645
Страница 1 от 1

Автор:  marcuka68 [ Сря Мар 17, 2010 4:04 pm ]
Заглавие:  Проблем с динамична индикация

Здравейте, правя една динамична индикация : 8 реда на 9 колони. Ползвам ULN2004, за тока през колоните. Имам следния проблем - когато светне някои диод, светят и някои съседни, но по-слабо. Ако можете да ме насочите, как да реша проблема, благодаря Ви!

if(!(PIND & 0xFC) && !(PINB & 0x07)) // begin with columns sweep, enable the first column
PORTD.7 = 1;
else if(PIND & 0xFC) // next column on PORTD
{
PORTD >>= 1;
nop(); // synchronization
if(!(PIND & 0xFC)) // finish with PORTD columns
PORTB.2 = 1; // begin with PORTB columns (PB2 - PB0)
}
else if(PINB & 0x07)
{
port = PINB & 0xF8;
PORTB = ((PORTB & 0x07) >> 1) | port; // next column on PORTB
nop();
if(!(PINB & 0x07)) // finish with PORTB columns
PORTD.7 = 1; // again begin with PORTD columns
}
if(!blink) // begin with rows sweep
{
PORTC = matrix[column] >> 2; // give the row information, use PC5 - PC0 for rows 0 - 5
port = PINB & 0xCF; // remember the port value and clear PB5 - PB4
PORTB = ((matrix[column] << 4) & 0x30) | port; // ... , use PB5 - PB4 for rows 6 - 7
if((column == (COLUMNS_NUM - 1)) && ((tick - t) > BLINK_OFF))
{
t = tick;
blink = 1;
column = 0xFF; // after incremetn will become 0x00
}
}
else
{
PORTC = matrix_blink[column] >> 2; // give the row information, use PC5 - PC0 for rows 0 - 5
port = PINB & 0xCF; // remember the port value and clear PB5 - PB4
PORTB = ((matrix_blink[column] << 4) & 0x30) | port; // ..., use PB5 - PB4 for rows 6 - 7
if((column == (COLUMNS_NUM - 1)) && ((tick - t) > BLINK_ON))
{
t = tick;
blink = 0;
column = 0xFF; // after incremetn will become 0x00
}
}
if(++column == COLUMNS_NUM)
column = 0;

Автор:  milenjs [ Сря Мар 17, 2010 4:42 pm ]
Заглавие: 

Да не се запушва като хората някои от транзисторите в 2004-то?

Автор:  marcuka68 [ Сря Мар 17, 2010 7:46 pm ]
Заглавие: 

Разреших проблема, трябва да нулирам информацията по редове, преди да сменя колоната, за да не се изпише старата информация на новата колона за известно време.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/