Съдържание:

Използване на Dot Matrix LED с Arduino и Shift регистър: 5 стъпки
Използване на Dot Matrix LED с Arduino и Shift регистър: 5 стъпки

Видео: Използване на Dot Matrix LED с Arduino и Shift регистър: 5 стъпки

Видео: Използване на Dot Matrix LED с Arduino и Shift регистър: 5 стъпки
Видео: LDmicro 11: Serial LCD Temperature Controller (Microcontroller PLC Ladder Programming with LDmicro) 2024, Ноември
Anonim
Използване на Dot Matrix LED с Arduino и Shift регистър
Използване на Dot Matrix LED с Arduino и Shift регистър
Използване на Dot Matrix LED с Arduino и Shift регистър
Използване на Dot Matrix LED с Arduino и Shift регистър
Използване на Dot Matrix LED с Arduino и Shift регистър
Използване на Dot Matrix LED с Arduino и Shift регистър

Siemens DLO7135 Dot matrix LED е едно невероятно парче оптоелектроника. Той се таксува като 5x7 матричен интелигентен дисплей (r) с памет/декодер/драйвер. Заедно с тази памет, той има 96-знаков ASCII дисплей с главни и малки букви, вграден генератор на знаци и мултиплексор, четири нива на интензивност на светлината и всичко работи на 5 V. Това е много, за да живеете, и на $ 16 на поп, определено трябва. Докато прекарвах половината ден в любимия си местен магазин за електроника, намерих кошче, пълно с тях за 1,50 долара за парче. Излязох от магазина с няколко. Тази инструкция ще ви покаже как да се свързвате с тези светодиоди с матрична матрица и да показвате символи, използвайки AVR-базиран Arduino. Ако сте прочели някое от предишните ми ръководства, може да получите представата, че често съм за най -скромното решение и няма да сгрешите, дори ако от време на време не постигам целта. Затова ще направя още една стъпка в тази инструкция и ще ви покажа как можете да намалите броя на входно -изходните портове, необходими за задвижването на тези големи светодиоди с матрична точка.

Стъпка 1: Вземете стоките …

Вземете стоките…
Вземете стоките…

За този кратък малък проект ще ви трябва:

  • микроконтролер, базиран на AVR, като Arduino или други подобни. Тези инструкции вероятно биха могли да бъдат адаптирани към избрания от вас MCU.
  • матричен светодиод DLO7135 или друг в същото семейство
  • 8-битов регистър за смяна като 74LS164, 74C299 или 74HC594
  • макет
  • свързваща тел, резачки за тел и др.

Поялник не е необходим, въпреки че го използвам по -късно; можете да се справите и без него.

Стъпка 2: Директно свързване към LED дисплея

Директно свързване към LED дисплея
Директно свързване към LED дисплея
Директно свързване към LED дисплея
Директно свързване към LED дисплея
Директно свързване към LED дисплея
Директно свързване към LED дисплея

Поставете своя малък списък с части и вземете светодиода. Поставете го върху централната дъска, центрирана донякъде, пресичайки канала на средната линия. Първата част от свързването се извършва от лявата страна на светодиода. Пин #1 се намира горе вляво, както е посочено от триъгълника/стрелката. Слагам щифтовите функции на снимка за ваше сведение, докато четете или свързвате вашия светодиод.

Лявата страна

Положителни и отрицателни Започвайки горе вляво, свържете Vcc към 5V. Може би е добра идея да не захранвате дъската си, докато не завършите цялата лява страна; светодиодът може да е ярък, ако се опитвате да видите малки дупки, които да пробиете в проводниците. Свържете долния ляв GND към земята. Lamp Test, Chip Enable and Write Второто и третото отгоре вляво са Lamp Test и Chip Enable. И двете са отрицателна логика, което означава, че са активирани, когато са на логическо 0 вместо на 1. Моята снимка по -долу трябва да има ленти над тях, но не съм коментирал това за нито един от тях. ПИН LT, когато е активиран, осветява всяка точка в матрицата с точки на 1/7 яркост. Това е по -скоро пикселен тест, но интересното при LT пина е, че той не презаписва нито един символ, който е в паметта, така че ако имате няколко от тези нанизани заедно (те имат 20 фута разстояние за гледане), стробиране на LT може да изглежда като курсор. За да сте сигурни, че е деактивиран, свържете го към 5 V. Пиновете CE и WR също са отрицателна логика и трябва да бъдат активирани, за да може да се записва на това интелигентно устройство. Можете да управлявате микроконтакта с тези резервни входно -изходни портове на вашия микроконтролер, но тук няма да се притесняваме. Просто ги свържете към земята, за да ги поддържате активирани. Нива на яркост Има четири програмируеми нива на яркост на семейството светодиоди DLO:

  • Празно
  • 1/7 Яркост
  • 1/2 Яркост
  • Пълна яркост

BL1 HIGH и BL0 LOW е 1/2 яркост. И двете HIGH са пълна яркост. Настройте го на каквото искате. Отново, ако имате резервни входно -изходни портове и това е достатъчно важно за вас, това също може да се контролира от вашия Arduino. Това завършва лявата страна. Ако включите захранването към дъската си, трябва да видите светодиода да свети. Играйте с контролите за яркост и теста на лампата, за да се запознаете с него, ако сте любопитни.

Дясната страна

Дясната страна се състои изцяло от портове за данни. Долу вдясно, щифт 8 или D0, за да бъдем точни, представлява най-малко значимия бит в 7-битовия символ. Горе вдясно, щифт 14 или D6 представлява най -значимия бит. Това ви позволява да знаете какъв ред да разбърквате битовете си при запис на светодиода. Когато свързвате портовете за въвеждане на данни, намерете седем празни цифрови I/O порта на вашия Arduino или AVR и ги свържете. Вероятно ще искате да запомните кой порт за извеждане на данни на вашия AVR отива към кой порт за въвеждане на данни на светодиода. Сега сте готови да натиснете някои данни към този интелигентен светодиод. Треперите ли още от вълнение? Знам че съм…

Стъпка 3: Определяне на символ за показване

Задаване на символ за показване
Задаване на символ за показване

Наборът от символи, който се използва на този CMOS светодиод, е вашият ASCII, който започва от 0x20 (десетичен номер 32; интервал) и завършва на 0x7F (десетичен номер 127; изтриване, въпреки че е представено на светодиода под формата на курсор). И така, наличието на знак на LED дисплея не изисква нищо повече от натискане на логика 1 или 0 на изводите за извеждане на данни, обикновено последвано от WR импулс, но аз предвиждам това за това упражнение. помня какви пинове отиват към какви портове, нали? Избрах PD [2..7] и PB0 (цифрови пинове 2 до 8 в Arduino-говорят). Обикновено не предлагам да използвам PD [0..1], защото го посвещавам на серийната си комуникация обратно към кутия FreeBSD, а Arduino и др. съпоставете тези щифтове към техния FTDI USB комуникационен канал и въпреки че „те“КАЖАТ пинове 0 и 1 ще работят, ако не инициализирате серийна комуникация, никога не съм успял да използвам тези пинове като нормален цифров I/O. Всъщност прекарах два дни, опитвайки се да отстраня грешки, когато се опитах да използвам PD0 и PD1 и установих, че те винаги са ВИСОКИ. * вдигане на рамене* Вероятно би било добре да има някакъв външен вход, като например клавиатура, превключвател или колело или може би дори въвеждане от терминал (моят ArduinoTerm все още не е готов за праймтайм …). Изборът е твой. Засега просто ще илюстрирам как да получите кода, за да получите желания от вас символ на светодиода. Има zip файл за изтегляне, включително изходния код и Makefile, а също така има и кратък филм, показващ светодиода, който отпечатва своя набор от символи. Съжалявам за лошото качество на видеоклипа. Кодът по -долу отпечатва низ "Добре дошли в моя Instructable!" след това преминава през целия набор от символи, който LED поддържа.

DDRD = 0xFF; // ИзходDDRB = (1 << DDB0); char msg = "Добре дошли в моя Instructable!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _закъснение_ms (150); } за (i = 0x20; i <0x80; i ++) {Print2LED (i); _закъснение_ms (150); } Print2LED (& apos*& apos);}За изхода на порта се грижи функцията Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); ако (i & 0b01000000) PORTB = (1 <

Кодът и Makefile са включени в zip файл по -долу.

Стъпка 4: Запазете входно/изходни портове с регистър за смяна

Запазете входно -изходни портове с регистър за смяна
Запазете входно -изходни портове с регистър за смяна
Запазете входно -изходни портове с регистър за смяна
Запазете входно -изходни портове с регистър за смяна
Запазете входно -изходни портове с регистър за смяна
Запазете входно -изходни портове с регистър за смяна

Така че сега нашият микроконтролер може да изпраща данни към светодиода с матрична точка, но използва осем I/O порта. Това изключва използването на ATtiny в 8-пинов DIP пакет, а дори и с по-нов Arduino, притежаващ ATmega328p, това е много I/O портове за един светодиод. Можем да заобиколим това, обаче, като използваме интегрална схема, наречена регистър за смяна. Момент за „превключване“на предавките… Регистърът на смяна може да се разбере най -добре, като се помисли за двете думи, които съставляват името му: „смяна“и „регистър“. Думата смяна се отнася до това как данните се движат през регистъра. Тук (както в нашите Arduino и микроконтролери като цяло) регистър е местоположение, което съхранява данни. Това става чрез внедряване на линейна верига от цифрови логически вериги, наречени "джапанки", която има две стабилни състояния, които могат да бъдат представени или с 1, или с 0. Така че, като поставите осем джапанки заедно, имате устройство, което може да поддържа и представляващ 8-битов байт. Точно тъй като има няколко типа джапанки и няколко вариации по темата за регистрите за смяна (броячи нагоре/надолу и броячи на Джонсън), има и няколко типа регистри за смяна въз основа на това как данните е фиксиран в регистъра и как тези данни се извеждат. Въз основа на това, помислете за следните видове регистри на смяна:

  • Сериен вход / паралелен изход (SIPO)
  • Сериен вход / сериен изход (SISO)
  • Паралелен вход/ сериен изход (PISO)
  • Паралелен вход / паралелен изход (PIPO)

Две забележителни са SIPO и PISO. Регистрите на SIPO вземат данни серийно, тоест един след друг, премествайки предишния входен бит към следващия джапанка и изпращайки данните на всички входове наведнъж. Това прави хубав сериен към паралелен конвертор. Регистрите за смяна на PISO, обратно, имат паралелни входове, така че всички битове се въвеждат наведнъж, но се извеждат един по един. Досещате се, това прави хубав паралелен към сериен конвертор. Регистърът на смяна, който искаме да използваме, за да намалим броя на I/O пиновете, ще ни позволи да вземем тези 8 IO пина, които използвахме по -рано и да ги намалим до един, или може би само до няколко, като се има предвид, че може да се наложи да контролираме начина на въвеждане битовете. Следователно регистърът за смяна, който ще използваме, е Serial In / Parallel Out. Свържете регистъра за смяна между LED и Arduino Използването на регистър за смяна е лесно. Най -трудната част е просто да визуализирате изводите на изходните данни и как двоичните цифри ще се окажат в IC и как в крайна сметка ще се покажат на светодиода. Отделете малко време, за да планирате това. 1. Прикрепете 5V към щифт 14 (горе вдясно) и извадете щифт 7 (долу вляво) надолу към земята. Регистърът за смяна има два серийни входа, но ние ще използваме само един, така че свържете щифт два към 5V3. Няма да използваме изчистения щифт (използван за нулиране на всички изходи), така че го оставете плаващ или го атакувайте на 5V4. Свържете един цифров IO порт, за да закрепите един от регистъра за смяна. Това е пинът за сериен вход. Свържете един цифров IO порт към щифт 8 (долу вдясно). Това е часовникът. Свържете вашите линии за данни от Q0 до Q6. Използваме само 7 бита, защото ASCII набор от символи използва само седем бита. Използвах PD2 за извеждане на серийни данни и PD3 за часовника. За пиновете за данни свързах Q0 към D6 на светодиода и продължих по този начин (Q1 до D5, Q2 до D4 и т.н.). Тъй като изпращаме данни последователно, ще трябва да проучим двоичното представяне на всеки знак, който искаме да изпратим, като разгледаме числата 1 и 0 и извеждаме всеки бит на серийния ред. Включих втора версия на източника на dotmatrixled.c заедно с Makefile по -долу. Той преминава през набора от символи и показва всички четни знаци (ако е странно да мислите, че дадена буква може да бъде нечетна или четна, помислете за двоичното представяне за момент). Опитайте се да разберете как да накарате цикъла да показва всички нечетни знаци. Можете допълнително да експериментирате с връзките между регистъра за смяна, светодиода с матрична точка и вашия Arduino. Между светодиода и регистъра има няколко функции за управление, които могат да ви позволят да настроите фино контрола си за това кога се показват данните.

Стъпка 5: Обобщение

Резюме
Резюме
Резюме
Резюме

В тази инструкция аз представих светодиодната матрица DLO7135 и как да я накарам да работи. По -нататък съм обсъждал как да се намали броят на необходимите I/O портове от осем на само два, като се използва регистър за смяна. Матричният светодиод DLO7135 може да бъде нанизан заедно, за да направи много привлекателни и интересни маркировки. Надявам се да ви е било забавно да прочетете тази инструкция! Ако има някакви подобрения, които смятате, че бих могъл да направя, или предложения, които бихте искали да дадете по тази или някоя от моите проблеми, радвам се да ги чуя! Честит AVR!

Препоръчано: