|
E1
Ранг: Почетен член
Регистриран на: Нед Юли 22, 2007 8:57 pm Мнения: 607 Местоположение: Белград
|
Готов е. В PORTC се зарежда колонната комбинация(байтът за изобразяване). PORTD дава сигнал за синхронизация през декодери. В него всяка колона се зарежда като двоична стойност, която през декодерите се извежда на съответната колона. Да приемем, че текстът има 160 символа максимално и е предварително въведен.
|
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Абе малко му изтървах края особенно с това за символа и колоната ..... ако дисплея е светодиоден матричен имаш два варианта за управление, да светваш едновременно колони за цял знак, или да го светаш колона по колона, или ако знаците ти са 5х7 и имаш 30 знака на дисплея, в единия случай опресняването ще става за 30 цикъла, в другия за 150, и съответно в единия случай теста ще ти се скролва през знак, а в другия случай през колона, което е по плавно. От тук зависи и ак е реализирано самото управление, ако скролваш през знак ще подаваш по два байта, единия за колоните, единия за редовете, и съответно сигнал кои колони зареждаш, или пък съответната логика за преместващия регистър. В другия случай ако опресняваш колона по колона, просто един преместващ регистър. И тук сега почват още подробности, затова колегите казаха че зависи от хардуера, т.е. трябва схема.
Самия софт е нещо от сорта :
#byte Lines = 0x07
#byte Column = 0x08;
int symbol, ofset; - глобални
int1 refrsh;
// в тялото на оснония цикъл
if (refresh){
refresh=false;
Lines = string[symbol+ofset];
if(symbol>29)
symbol=0;
else
symbol++;
column=symbol;
// каквото друго трябва за да се изобрази този символ
}
В прекъсване сетваш refresh флага когато стане време за рефрешване, примерно на всяка 1 мс, също така инкрементираш ofset, когато дойде време за скролване, примерно на 500 ms ако скролваш през символ. Тъй като не е добре да имаш много сметки в самото прекъсване, а и не е хубаво да буташ там при всяка промяна на дължината, може и там д сложиш флаг, и в програта по тоя флаг да си определяш офсета, съответно би било добре д разпознаваш EOF при което да почваш реда от ново, така отпада нуждата да задаваш дължина, просто ще зависи от това което имаш в масива. И накрая масива ти е записан в string. Тук пак има възможности, дали да записваш ASCI или да записваш директно изходите, едното е по лесно, за писане и по трудно за въвеждане на текста, ко рябва да бъде професионално направено аз бих избрал или да въвеждам ASCI и да го преработвам в софта, или текста да се ъплоудва през някакво софтче което да прави това преобразуване, вече зависи какви ресурси има процесора, колко е натоварен и т.н. но при 35 символа не е чак токов голяма таблицата за пробразуване.
Ако дадеш схемата която си реализирал би било възможно да ти се помогне повече.
едит. горе в примера се прдполага че по подобен начин задаваш и кои колони да светят, а променливта column e за групата от колони, ии индикатора, ако позлваш индикатори 5х7 или подобни.
|