Отговори на тема  [ 3 мнения ] 
Проблем с динамична индикация 
Автор Съобщение
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение Проблем с динамична индикация
Здравейте, правя една динамична индикация : 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;


Сря Мар 17, 2010 4:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Сря Мар 08, 2006 2:12 pm
Мнения: 2017
Местоположение: Котел
Мнение 
Да не се запушва като хората някои от транзисторите в 2004-то?


Сря Мар 17, 2010 4:42 pm
Профил
Ранг: Ориентиран
Ранг: Ориентиран

Регистриран на: Пет Авг 07, 2009 4:58 pm
Мнения: 273
Мнение 
Разреших проблема, трябва да нулирам информацията по редове, преди да сменя колоната, за да не се изпише старата информация на новата колона за известно време.


Сря Мар 17, 2010 7:46 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 3 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 5 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни