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

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение Подвижен текст
Налага ми се да направя едно светодиодно табло с текст, вървящ отдясно наляво. 8 реда и 48 колони. Но не ми е ясно как става самото движение на текста. Използвам Асемблер и процесор PIC16F877А. Как става физическата връзка между символната таблица, паметта и самото движение през регистрите... Търсих във форума, но не намерих нищо по въпроса. Не успях и в нета да намеря някой сорс код.


Нед Юли 22, 2007 9:07 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

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


Нед Юли 22, 2007 9:25 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение 
Ако разбирам правилно, буферите са колоните, нали така? За мъките си го знам... Като не научих "С"...


Нед Юли 22, 2007 9:32 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Да двуразмерен масив 8/48 ти представлява дисплеиния буфер. Самата индикация е удобно да я направиш в прекъсване на таимера а в цикъла на програмата да пишеш каквото трябва в буфера


Нед Юли 22, 2007 9:48 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение 
Някой би ли могъл да даде поне част от подобен сорс за Асемблер? Тук прехвърлянето на символите изглежда доста изморително писане... :(


Нед Юли 22, 2007 10:16 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Нали знаеш.
Хората са казали "На ахмак глава краката теглят".
Като те мързи да учиш C ще пишеш до посиняване на пръстите :)


Нед Юли 22, 2007 10:26 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Фев 24, 2005 11:41 pm
Мнения: 1049
Местоположение: Pz
Мнение 
Никола, стига бе! :D Някога имаше тема "С какво да започнем" или нещо такова. И ти беше съгласен, че трябва да се започне с асемблер. Остави човека да си пише, както си знае! :partyman:


Нед Юли 22, 2007 11:46 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Нали се сещаш че такава задача на асемблер се прави с писане до посиняване на пръстите ;) Разбира се образно казано но си е доста зор.
Едно е да започнеш а друго е да пишеш нещо по сложно на асеблер :)


Нед Юли 22, 2007 11:51 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
ами едва ли асемблера е виновен, явно просто задачката е тежка за питащия.
по въпроса - движението става като при визуализацията към адреса на колоната прибавяш офсет, който се увеличава с времето. ако това не ти е достатъчно, избери друго поприще.


Пон Юли 23, 2007 8:17 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 04, 2006 6:23 pm
Мнения: 43
Местоположение: Earth
Мнение 
Е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


Пон Юли 23, 2007 9:22 am
Профил ICQ
Ранг: Новодошъл
Ранг: Новодошъл

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


Пон Юли 23, 2007 9:39 am
Профил ICQ
Ранг: Минаващ
Ранг: Минаващ

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


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


Пон Юли 23, 2007 12:29 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
8/48 е буфера. Грешката е моя. В следващия ми пост съм го писал вярно ама ... :)
Последователноста е за динамичнато управление на диодите. В main се сменя само офсета.


Пон Юли 23, 2007 1:08 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

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


Пон Юли 23, 2007 3:28 pm
Профил ICQ
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Нед Юли 22, 2007 8:57 pm
Мнения: 607
Местоположение: Белград
Мнение 
Предвиждам малки и големи букви с размери 4х7 точки. Осми ред долу е за направа на малките букви. Само латински букви са.


Пон Юли 23, 2007 9:52 pm
Профил WWW
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 20 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

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


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

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