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

Подвижен текст
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=4540
Страница 1 от 2

Автор:  E1 [ Нед Юли 22, 2007 9:07 pm ]
Заглавие:  Подвижен текст

Налага ми се да направя едно светодиодно табло с текст, вървящ отдясно наляво. 8 реда и 48 колони. Но не ми е ясно как става самото движение на текста. Използвам Асемблер и процесор PIC16F877А. Как става физическата връзка между символната таблица, паметта и самото движение през регистрите... Търсих във форума, но не намерих нищо по въпроса. Не успях и в нета да намеря някой сорс код.

Автор:  Nikola Kirov [ Нед Юли 22, 2007 9:25 pm ]
Заглавие: 

Пишеш в буфер 8/47 и го извеждаш на таблото като започваш пъро от позизия 0-47, 1-47-off, 2-47-off-off, 3-47-off-off-off ..... n-47-nxOff-0. Тоест въртиш началната позиция от която започваш да извеждаш. С Off съм ознчил изгасена колона.
"Асемблер и процесор PIC16F877А" определено ще пишеш дълго и мъчително :)

Автор:  E1 [ Нед Юли 22, 2007 9:32 pm ]
Заглавие: 

Ако разбирам правилно, буферите са колоните, нали така? За мъките си го знам... Като не научих "С"...

Автор:  Nikola Kirov [ Нед Юли 22, 2007 9:48 pm ]
Заглавие: 

Да двуразмерен масив 8/48 ти представлява дисплеиния буфер. Самата индикация е удобно да я направиш в прекъсване на таимера а в цикъла на програмата да пишеш каквото трябва в буфера

Автор:  E1 [ Нед Юли 22, 2007 10:16 pm ]
Заглавие: 

Някой би ли могъл да даде поне част от подобен сорс за Асемблер? Тук прехвърлянето на символите изглежда доста изморително писане... :(

Автор:  Nikola Kirov [ Нед Юли 22, 2007 10:26 pm ]
Заглавие: 

Нали знаеш.
Хората са казали "На ахмак глава краката теглят".
Като те мързи да учиш C ще пишеш до посиняване на пръстите :)

Автор:  Gogo [ Нед Юли 22, 2007 11:46 pm ]
Заглавие: 

Никола, стига бе! :D Някога имаше тема "С какво да започнем" или нещо такова. И ти беше съгласен, че трябва да се започне с асемблер. Остави човека да си пише, както си знае! :partyman:

Автор:  Nikola Kirov [ Нед Юли 22, 2007 11:51 pm ]
Заглавие: 

Нали се сещаш че такава задача на асемблер се прави с писане до посиняване на пръстите ;) Разбира се образно казано но си е доста зор.
Едно е да започнеш а друго е да пишеш нещо по сложно на асеблер :)

Автор:  zaphod [ Пон Юли 23, 2007 8:17 am ]
Заглавие: 

ами едва ли асемблера е виновен, явно просто задачката е тежка за питащия.
по въпроса - движението става като при визуализацията към адреса на колоната прибавяш офсет, който се увеличава с времето. ако това не ти е достатъчно, избери друго поприще.

Автор:  MegatroniC [ Пон Юли 23, 2007 9:22 am ]
Заглавие: 

Е1 виж тази тема http://mcu-bg.com/mcu_site/viewtopic.php?t=417&highlight=%EC%E0%F1%EA%E8%F0%E0+%E4%EE%EB%ED%E0%F2%E0+%F2%E5%F2%F0%E0%E4

Автор:  mndsl [ Пон Юли 23, 2007 9:39 am ]
Заглавие: 

С PIC16F877А много мъки ще береш, търси някой процесор с повече FLASH и RAM и работещ на по-високи честоти. Правил съм такова табло 7х128, но ползвах PIC18F458, на 40 MHz, програмата е на С, щото има едни огромни масиви, дето посмъртно не можеш ги управлява на асемблер. Така че ако си решил да правиш табло, почвай да учиш С :)

Автор:  GDTRON [ Пон Юли 23, 2007 12:29 pm ]
Заглавие: 

Цитат:
Пишеш в буфер 8/47 и го извеждаш на таблото като започваш пъро от позизия 0-47, 1-47-off, 2-47-off-off, 3-47-off-off-off ..... n-47-nxOff-0. Тоест въртиш началната позиция от която започваш да извеждаш. С Off съм ознчил изгасена колона.


Това не го разбрах, така не става ли движение от горе на долу? Като гледам последователно светваш по редове а не по колони защото колоните са 48. Или аз нещо греша??

Автор:  Nikola Kirov [ Пон Юли 23, 2007 1:08 pm ]
Заглавие: 

8/48 е буфера. Грешката е моя. В следващия ми пост съм го писал вярно ама ... :)
Последователноста е за динамичнато управление на диодите. В main се сменя само офсета.

Автор:  Yanek [ Пон Юли 23, 2007 3:28 pm ]
Заглавие: 

Според мен няма, чак толкова да се изгърбиш, както те плашат колегите. :) Има решения, които не изискват чак толкова RAM, макар и малко по-бавни, но определено под ръба на възможностите на този PIC. Зависи обаче от схемното решение. Зависи също колко колони на символ ще бъдат и дали всички символи ще са с еднакъв брой колони, ще се променя ли шрифта и разни други подробности. Може да се направи с указатели и броячи, като за всеки символ предварително се прави таблица с N на брой колони, като 1 колона представлява един байт. Има само един буфер за нулево терминирания стринг, който ще се изписва. 1 указател за първият символ който ще се изписва на матрицата и един брояч на колоните в този символ. Допълнително един указател за текущо изписвания символ и един брояч за текущо изписваната колона от символа. Трети брояч за общия брой изписани колони. От тук нататък се сещаш. Като дойде време да се премести с една колона инкрементираш началния брояч в символа, ако е минал броя на колоните в този символ, се инкрементира указателя за символи, а брояча се нулира (или става 1) от там нататък изписваш 48 колони, като следиш общия брояч на колони, втория указател за текущо изписвания символ с втория брояч. Когато стигнеш края на стринга се прехвърляш отново на първия символ и т.н. Един от проблемите е да напишеш колкото са символите толкова и функции които да ти връщат за този символ байта за текущата колона. Друг проблем е да определиш коя е функцията за указания от втория указател символ, но и това не е страшно, защото можеш да си напишеш макрос, който да променя програмния брояч според указания символ, където да се намира съответната функция. Мисля, че не е толкова страшна задача. Тук ти дадох само един примерен алгоритъм с повече упореба на флаш и по-малко RAM.

Автор:  E1 [ Пон Юли 23, 2007 9:52 pm ]
Заглавие: 

Предвиждам малки и големи букви с размери 4х7 точки. Осми ред долу е за направа на малките букви. Само латински букви са.

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