Това е малко нетрадиционна статия за този сайт, тъй като сме в него сме се ориентирали предимно към софтуера, но въпреки това реших да я пусна, защото все пак ще стане въпрос и за софтуер, и то свободен…
За да не се чудите за какво става въпрос, ще кажа от сега – крайният резултат ще представлява едно „устройство“ с матрица от 5×8 светодиода, върху които ще можете да покажете произволен скролиращ се текст. Ето как горе-долу ще изглежда:
Ето и снимки (на които се вижда цялостния вид на устройството):
В общи линии, цялата джаджа се състои от една матрица от светодиоди, свързани в 5 колони по 8 реда, и един микроконтролер PIC16F84A, към чиито изходи матрицата е свързана директно. За незапознатите ще обясня че PIC16F84A представлява една „интегрална схема“ с 18 крака, която всъщност е миниатюрен процесор, в който може да бъде заредена проста програма. Програмата от своя страна, управлява изходите му, към които са свързани самите светодиоди.
Кръстил съм устройството K-PICXIE.
Какво ви е необходимо за да го направите? Нужни са следните компоненти/материали:
– малко парче едностранно фолиран текстолит за платки
– пак толкова голямо парче универсална платка (на нея ще монтирате светодиодите, ако не ви се разправя да правите двустранна платка за тях)
– един микроконтролер PIC16F84A с PDIP (DIP) корпус (можете да си поръчате до 4 броя АБСОЛЮТНО БЕЗПЛАТНО) от http://sample.microchip.com/, и ще пристигне за 2-3 седмици.
– две батерийки тип AA (може и AAA или какъвто и да е източник на 3V до 5V напрежение).
– един кварцов резонатор 4 MHz
– един 18-пинов DIP цокъл
– държач за батерии (опционално)
– малко кабели – аз разфасовах един стар 40-жилен IDE кабел, но става всякакъв по-мек многожилен кабел.
– 40 светодиода – колкото по-маломощни са – толкова по-дълго време ще може да работи устройството с едни батерии. Не се изсилвайте да използвате мощни светодиоди с повишено излъчване, тъй като микроконтролера най-вероятно няма да може да ги захрани с достатъчно ток. В текущия си вариант, моето консумира от 1 до 5 mA, в зависимост от конкретния брой сведотиоди които светят едновременно. Може да пресметнем че с такава консумация, и едни акумулаторни батерии 700 mA/h може да работи горе-долу 140 часа (че дори и повече)…
– два кондезатора по 10 pF
– МНОГО ТЪРПЕНИЕ (особено при запояването на светодиодите)
– известно количество мозък
– хубава музика (за да не издивеете тотално по време на запояването на 40-те светодиода)
Няма да се спирам на процеса на правене на печатната платка, тъй като ако нямате възможност да си направите, може да използвате и универсална платка.
Също така, трябва да отбележа, че е необходим и програматор за PIC16F84A – за да можете да запишете крайната програмка върху микроконтролера. И на направата на програматор няма да се спирам (засега) – в мрежата има доста схеми на прости програматори за PIC16F84A, а може и да се възползвате от услугите на някой ваш познат който се занимава с такива неща… (ако някой проявява интерес, ще пусна тук и схемата на моят програматор, която е доста проста между другото…).
И така, ето схемата за управление на светодиодите:
Както (може би) виждате от нея, изходите на микроконтролера RA0 до RA4 определят колоната, а RB0 до RB7 – реда.
Можете да свалите схемата и в Eagle формат (ако искате да я променяте): k-picxie.sch
От тук пък можете да свалите дизайна на платка в PDF и Protel-ски формат: K-Picxie-PCB.zip (благодарение на Пепо от коментарите долу)
Сорс-кодът на програмата която управлява устройството е достъпен от тук: k-picxie.c
Компилираният (готов за записване в микроконтролера) .hex-файл, можете да свалите от тук: k-picxie.hex (настроен е да изписва надписа „използвайте свободен софтуер“).
А сега малко иструкции, относно показването на собствен текст. За целта е необходимо да редактирате (примерно с Notepad) файлът k-picxie.c и да го компилирате.
Редакцията става на ред 29 от сорса, там където пише
const unsigned char* text = "използвайте свободен софтуер!"; |
Заменете текстът в кавичките с вашият текст (на кирилица, с малки букви).
За да компилирате файла, е нужно да си инсталирате HI-TECH PICC-Lite компилатор. Той е безплатен и е достъпен за сваляне от тук. След като сте го инсталирали, стартирайте един Command Prompt от Start->Programs->Accessories->Command Prompt, и в него напишете:
D: cd download\k-picxie picl.exe --chip=16F84A -G k-picxie.c
където D: е устройството върху което сте свалили сорс-кода (т.е. файла k-picxie.c), а download\k-picxie е директорията в която сте го свалили.
Ако сте направили всичко както трябва, файлът ще се компилира без грешки, и в същата директория ще се появи файл с име k-picxie.hex (заедно с още няколко други, които не ви интересуват). Той всъщност е файлът който ще трябва да бъде записан в микроконтролера. Имайте предвид че текстът който можете да изпишете не е безкраен, и ако по време на компилацията излезе надпис подобен на
(593) can't find 0x6 words (0x6 withtotal) for psect "text4" in segment "CODE"
то значи текстът е по-дълъг, отколкото може да побере свободната памет на процесорчето. В настоящия вид на програмата, максималната дължина на текста е около 373 символа.
При желание, можете да редактирате и таблицата със символи, така че да може да покажете собствени символи (например – текст на латиница), или дори кратка анимацийка от 30-40 кадъра… (за анимацийката е нужно съвсем още малко да промените кода, но това оставям на ентусиастите).
За създаване на символи съм направил специална програмка с помоща на AutoIt, с която можете лесно да генерирате необходимият ви код, който след това само трябва да копирате.
Свалете я от тук: kpicxie-charedit.exe
Ако искате, може да свалите и AutoIt кода на програмката: kpicxie-charedit.au3
Работата с нея е пределно проста, ето как изглежда:
В лявата част на прозореца задавате символа който искате да се генерира, а в дясната се вижда генерираният код. След като сте направили символа, трябва там където пише
case '':
да вмъкнете вашият символ. Примерно, ако сте направили символа за буквата R, трябва да напишете там
case 'R':
След това, маркирате целия генериран код копирате го, и го поставяте в основния код (в k-picxie.c), след мястото където пише
// поставяйте вашите нови символи след този текст
В общи линии, това е. Естествено, по темата за PIC микроконтролерите може да се изпише и изговори много, но не това е целта ми. Идеята за този проект се роди съвсем спонтанно, тъй като преди него не се бях занимавал с микроконтролери, или с програмиране за микроконтролери (въпреки че имах желание).
Държа да отбележа, че схемата и софтуера са изцяло разработени от мен (от нулата, за около две седмици), въпреки че в мрежата има доста подобни проекти. Смея да твърдя обаче, че не успях да попадна на проект с LED матрица с PIC16F84A, който да е с толкова много светодиоди и същевременно с толкова малко допълнителни компоненти. На практика светодиодите се свързват директно към изходите на микроконтролера.
Още, искам да отбележа, че кодът ми може и да не е най-опитимизиран… Всъщност, не е оптимизиран изобщо. Но така или иначе, работи безпроблемно. Ако сред вас има желаещи да го променят и оптимизират, така че да заема по-малко памет в процесора (и по този начин да се освободи място за по-дълъг текст), нека го направят (и да ме уведомят).
Успех на всички желащи да опитат късмета си с този сравнително прост PIC проект!
Колеги извинявам се за поста най вероятно не трябва да задавам въпроси тук. След програмирането как мога да разбера дали съм записал чипа както трябва
Два баламски метода:
– свързваш чипа и гледаш дали работи 🙂
– чрез програматора прочиташ обратно това което е записано в чипа, и го сравняваш с hex-файла който си записал…
А би трябвало и самия програматор (говоря за програмата която ползваш за програматор) да може да прави проверка на записаното.
Пфффф….. Немога да го запиша този пик. От 2 дена се мъча пише, че записан като прочета данните от чипа няма нищо. С MPLAB съм забравил как става, бутоните не са активни за запис, четене и т.н. 😥
Стават ли този http://www.elimex.bg/product/21032/pic16f84a-04p-dip-18.html микропроцесор и този http://www.elimex.bg/product/52267/k174-programator-za-pic-i-eeprom-24cxxx.html програматор ?