Глава 12 - Външни схеми със светодиоди

След предишните глави дойде време окончателно да свържем външни вериги към нашия микроконтролер. Използването на външни схеми, разбира се, все още ще изисква много знания за ADuC 842, но те ще бъдат обсъдени добре в един ред, изградени един върху друг, доколкото е възможно.

глава

Кои са сигналните устройства, които обикновеният човек среща най-често? Вероятно светофарите. В тази глава ще ги моделираме. В тази глава светлините на светофарите са представени от светодиоди и ние ще използваме фотопорти за позициониране. Отсега нататък винаги има електрическа схема за решаване на всяка задача. Изборът на части, разбира се, не е изключителен; ние се опитахме да направим учебната програма лесно достъпна и. изберете евтини елементи на веригата. С изключение на светодиодите, всеки използван компонент има електронно описание; те се съдържат в отделна директория. С подходящи познания за електротехниката, можем уверено да избираме и други видове компоненти, трябва да модифицираме веригата или кода поне малко.

12.1. Управление на светофара

Моделирайте основната функция на светофара с три обектива, като свържете промяната на всеки цвят с предварително фиксиран момент. [Код23, Код24]

Решаването на задачата е много, много просто. Включваме този светодиод, изчакваме времето за тази фаза и след това продължаваме. Чакането може да се случи с добрата стара подпрограма DELAY, но нека използваме прекъсване на брояча на интервали от време сега! Решете проблема, като посочите битовите модели и латентности, отговорни за предварително включване на светодиодите в паметта на кода като данни.

Електрическа схема на индикаторната лампа с три обектива със светодиоди е показана в [12.2. фигура ]. показано на фигура. Баластните резистори на светодиодите могат да бъдат избрани съвсем свободно, само внимавайте да не генерира твърде много ток във всеки клон. Стойността му зависи от видовете светодиоди, разбира се, но 10-15 mA обикновено са достатъчно. От портовете за микроконтролер ADuC 842 вече можем да използваме 0 или 2. Тъй като досега използвахме порт 2 - тъй като малките светодиоди, засадени на панела, са свързани към него - нека сега изберем нула на порта! Внимавайте обаче, че портовете не могат да се използват като активни изходи (подчертано на [Фигура 12.1]). С краката на портовете, от друга страна, можем да издърпаме елементите на веригата, свързани с тях, към земята без никакви допълнителни шумове, тъй като тази земя е земята на захранването.

Конкретното разпределение на битовете на порт 0 е показано в [12.2. фигура ]. Фиг. 5 е свързан с факта, че по този начин имаме повече място на панела за тестване на приставката, за да съпоставим с вкус светодиодите с 5-милиметровия корпус, ако се използват такива. (И ние ги използваме в този учебник.)

Решението сега е придружено от некласическа блок-схема, тъй като самият код не е много сложен. Сега операцията е илюстрирана с графика за преход на състоянието (виж [Фигура 12.3]), в която състоянията са обозначени с върховете на графиката. Те се означават с английските инициали на цветовете, принадлежащи към всяка фаза: R - червено, червено; RA - червено-кехлибарен, червено-жълт; A - кехлибар, кехлибар, G - зелен, зелен. Блоковете са свързани към върховете в блок-схема, показваща стъпките, извършени там; разбира се, само най-важните по отношение на експлоатацията. Преходите между състояния са представени от ръбовете на графиката, за които пишем условието на прехода. Обърнете внимание, че допълнителната битова променлива в условията винаги е зададена на 1 от прекъсването, свързано с интервалния брояч. За всяко състояние значението на обозначението TIC (Tn) е да освободи прекъсването, свързано с брояча на интервали (TIC), с време на изчакване за n-тата фаза. Прекъсването се нанася отделно от графиката. (За този блок се фокусираме само върху бита на флага.)

Имайте предвид, че байтовете с данни могат да бъдат записани разделени със запетаи, не е нужно да ги редите всички.!

За да улесним разбирането на следващия подраздел, работим малко напред и показваме друго решение на [Задача 16]. Принципът на решението ще бъде практически същият като преди, само че не използваме отчитане на интервали, но казваме, че избираме 1/8 секунда като единица. Това е зададено в началото на програмата и повече няма да се пипа. Правим това, като задаваме брой 1/128 s с TIMECON SFR и зареждаме 16 в регистъра INTVAL. Това дава отрязък от време 16/128 s = 1/8 s. За пореден път подчертаваме, че не променяме броенето на интервалите, докато програмата работи, нейната единица, с други думи отрязък от време, ще бъде 1/8 s по време на цялото изпълнение.