| Микроконтролери и електроника 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/ |
|