Мазмұны:

Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану: 5 қадам
Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану: 5 қадам

Бейне: Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану: 5 қадам

Бейне: Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану: 5 қадам
Бейне: 74HC595 Arduino үшін ондық бөлшектері бар жеті сегмент 2 диодты жарық диоды 2024, Қараша
Anonim
Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану
Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану
Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану
Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану
Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану
Arduino және Shift регистрі бар нүктелік матрицалық жарықдиодты қолдану

Siemens DLO7135 нүктелік матрицалық жарық диоды - бұл оптоэлектрониканың таңғажайып бөлігі. Ол жады/декодер/драйвері бар 5х7 нүктелік матрицалық интеллектуалды дисплей (r) ретінде есептеледі. Бұл жадпен бірге үлкен және кіші әріптен тұратын 96 таңбалы ASCII дисплейі, кіріктірілген символдар генераторы мен мультиплексоры, жарық қарқындылығының төрт деңгейі және барлығы 5В-да жұмыс істейді. және 16 долларға поп, бұл міндетті түрде болуы керек. Мен сүйікті жергілікті электроника дүкенінде жарты күнді өткізе отырып, бір бөлігін 1,50 доллар тұратын толы қоқыс жәшігін таптым. Мен дүкеннен бірнеше адаммен шықтым. Бұл нұсқаулық сізге AVR негізіндегі Arduino көмегімен нүктелік матрицалық жарық диодты шамдарға қалай қосылу керектігін көрсетеді. Егер сіз менің алдыңғы нұсқаулықтарымды оқыған болсаңыз, мен жиі ең қарапайым шешімді қолдаймын деген ойға келуіңіз мүмкін, мен кейде мақсатқа жетпей қалсам да сіз қателеспессіз.. Сонымен, мен осы нұсқаулықта тағы бір қадам жасаймын және осы үлкен, нүктелік матрицалық светодиоды жүргізуге қажетті енгізу -шығару порттарының санын қалай азайту керектігін көрсетемін.

1 -қадам: тауарды алыңыз …

Тауарды алу…
Тауарды алу…

Бұл шағын жоба үшін сізге қажет:

  • AVR негізіндегі микроконтроллер, мысалы Arduino немесе кез келген ұқсас. Бұл нұсқаулар сіздің таңдаған MCU -ға бейімделуі мүмкін.
  • DLO7135 нүктелік матрицалық жарық диоды немесе сол отбасындағы басқа
  • 74LS164, 74C299 немесе 74HC594 сияқты 8 разрядты ауысым регистрі
  • нан тақтасы
  • қосылатын сым, сым кескіштер және т.б.

Пісіру үтігі қажет емес, бірақ мен оны кейінірек қолданамын; онсыз өтуге болады.

2 -қадам: LED дисплейіне тікелей қосылыңыз

Жарықдиодты дисплейге тікелей қосылыңыз
Жарықдиодты дисплейге тікелей қосылыңыз
Жарықдиодты дисплейге тікелей қосылыңыз
Жарықдиодты дисплейге тікелей қосылыңыз
Жарықдиодты дисплейге тікелей қосылыңыз
Жарықдиодты дисплейге тікелей қосылыңыз

Бөлшектердің шағын тізімін жасаңыз және жарық диодты алыңыз. Ортаңғы ойықты орап, оны тақтайшаға біршама ортаға қойыңыз. Қосудың бірінші бөлігі жарық диодтың сол жағында болады. №1 түйреуіш үшбұрыш/көрсеткімен көрсетілгендей сол жақ жоғарғы жағында орналасқан. Мен светодиодты оқып жатқанда немесе қосқанда, сілтеме үшін пин функцияларын суретке қойдым.

Сол жақ

Оң және теріс Сол жақтың жоғарғы жағынан бастап Vcc -ты 5В -ке қосыңыз. Бүкіл сол жақ бетін бітіргенше тақтаны қуаттандырмағаныңыз дұрыс болар; Егер сіз сымдарды тесу үшін кішкене тесіктерді көргіңіз келсе, жарық диодты жарық болуы мүмкін. GND төменгі сол жағын жерге қосыңыз. Лампа сынағы, чипті қосу және жазу Сол жақтан жоғарыдан 2 -ші және 3 -ші - шамды тексеру және чипті қосу. Бұл екеуі де теріс логика, яғни олар логикалық 0 мәнінде болғанда қосылады. 1 суреттің астына менің суреттерім қойылуы керек, бірақ мен олардың ешқайсысына аннотация бермедім. Қосылған кезде LT түйреуіш нүктелік матрицаның әр нүктесін 1/7 жарықтылықта жанады. Бұл көп пиксельдік тест, бірақ LT түйреуішінің қызықты жері - ол жадта сақталатын кейіпкерлердің ешқайсысын қайта жазмайды, сондықтан егер сізде олардың бірнешеуін біріктірген болсаңыз (олардың көру қашықтығы 20 фут болса), LT оны курсорға ұқсата алады. Өшірілгеніне көз жеткізу үшін оны 5В -ке қосыңыз. CE және WR түйреуіштері де теріс логика болып табылады және осы смарт құрылғыға жазылуы үшін оны қосу қажет. Сіз бұл түйреуіштерді микроконтроллердегі қосалқы енгізу -шығару порттары арқылы басқара аласыз, бірақ біз мұнда алаңдамаймыз. Оларды қосу үшін оларды жерге қосыңыз. Жарықтылық деңгейлері DLO диодты жарық диодтарының бағдарламаланатын төрт жарықтық деңгейі бар:

  • Бос
  • 1/7 Жарықтық
  • 1/2 Жарықтық
  • Толық жарықтық

BL1 HIGH және BL0 LOW - 1/2 жарықтық. HIGH екеуі де толық жарықтық. Сізге ұнайтын нәрсені орнатыңыз. Тағы да, егер сізде енгізу -шығару порттары бар болса және бұл сізге маңызды болса, оны Arduino басқара алады. Егер сіз тақтаға қуат берсеңіз, жарықдиодты шамның жанғанын көруіңіз керек. Егер сізге қызық болса, жарықтықты басқару элементтерімен және лампалармен танысу үшін ойнаңыз.

Оң жағы

Оң жағы толықтай деректер портынан тұрады. Төменгі оң жақта, дәлірек айтқанда, 8 немесе D0 түйреуіші 7-биттік таңбада ең аз битті білдіреді. Жоғарғы оң жақтағы түйреуіш 14 немесе D6 Ең маңызды бит болып табылады. Бұл сізге жарық диодты жазу кезінде биттерді ауыстыру тәртібін білуге мүмкіндік береді. Деректерді енгізу порттары қосылған кезде, Arduino немесе AVR -де жеті бос цифрлық енгізу -шығару портын тауып, оларды қосыңыз. Мүмкін сіз AVR -дегі қандай деректер шығару порты LED -тегі қай деректерді енгізу портына баратынын есте сақтағыңыз келуі мүмкін. Сіз әлі толқудан дірілдеп тұрсыз ба? Мен білемін …

3 -қадам: Көрсетілетін таңбаны көрсету

Көрсетілетін таңбаны көрсету
Көрсетілетін таңбаны көрсету

Бұл CMOS светодиодында қолданылатын таңбалар жиынтығы-0x20 (ондық 32; бос орын) басталатын және 0x7F (ондық 127; өшіру, бірақ жарық диодты курсор графигі ретінде ұсынылғанына қарамастан) басталатын ASCII.. Сонымен, жарықдиодты дисплейде таңба бар болса, деректер шығысының түйреуіштерінде логиканы 1 немесе 0 басудан басқа ештеңе талап етілмейді, содан кейін WR импульсі болады, бірақ мен бұл жаттығу үшін жоғарыда айтып отырмын. Есіңізде болсын, қандай түйреуіштер қандай порттарға барады, иә? Мен PD [2..7] мен PB0 (Arduino тілінде 2-ден 8-ге дейінгі цифрлық түйреуіштер) таңдадым. Мен әдетте PD [0..1] пайдалануды ұсынбаймын, себебі мен оны FreeBSD қорабына сериялық байланысқа арнаймын, және Arduino және т.б. бұл түйреуіштерді олардың FTDI USB байланыс арнасына салыңыз, және егер олар сериялық байланысты инициализацияламасаңыз 0 мен 1 түйіндері жұмыс істейтінін айтады, бірақ мен бұл түйреуіштерді ешқашан сандық енгізу -шығару ретінде қолдана алмадым. Шын мәнінде, мен PD0 мен PD1 -ді қолдануға тырысып, олардың әрқашан ЖОҒАРЫ екенін білгенде, мен екі күн бойы мәселені шешуге тырыстым. * иық көтеру* Сыртқы кірістің болуы жақсы болар еді, мысалы, пернетақта, итергіш немесе бас бармақ қосқышы немесе терминалдан кіріс (мүмкін, менің ArduinoTerm әзірше негізгі уақытқа дайын емес …). Таңдау сіздікі. Әзірге мен жарықдиодты қалаған таңбаны алу үшін кодты қалай алу керектігін көрсетемін. Бастапқы кодты және Makefile файлын қамтитын жүктеу үшін ZIP -файл бар, сонымен қатар жарықдиодты оның таңбалар жиынтығын басып шығаратын қысқа фильм бар. Бейне сапасы нашар болғаны үшін кешірім сұраймыз. Төмендегі код «Менің нұсқаулығыма қош келдіңіз!» Жолын басып шығарады. содан кейін жарық диоды қолдайтын таңбалар жиынтығын айналдырады.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = «Менің нұсқаулығыма қош келдіңіз!»; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _кешіктіру (150); } үшін (i = 0x20; i <0x80; i ++) {Print2LED (i); _кешіктіру (150); } Print2LED (& apos*& apos);}Порттың шығысы Print2Led () функциясында қарастырылады

voidPrint2LED (uint8_t i) {PORTD = (i << 2); егер (i & 0b01000000) PORTB = (1 <

Код пен Makefile төмендегі ZIP файлына енгізілген.

4 -қадам: Shift реестрімен енгізу -шығару порттарын сақтаңыз

Shift реестрімен енгізу -шығару порттарын сақтаңыз
Shift реестрімен енгізу -шығару порттарын сақтаңыз
Shift реестрімен енгізу -шығару порттарын сақтаңыз
Shift реестрімен енгізу -шығару порттарын сақтаңыз
Shift реестрімен енгізу -шығару порттарын сақтаңыз
Shift реестрімен енгізу -шығару порттарын сақтаңыз

Енді біздің микроконтроллер нүктелік матрицалық жарықдиодты деректерді жібере алады, бірақ ол сегіз енгізу -шығару портын қолданады. Бұл ATTiny-ді 8 істікшелі DIP пакетінде пайдалануды қоспайды, тіпті жаңа Arduino-да ATmega328p бар, ол бір жарық диодты енгізу-шығару порттары көп. Біз мұны ауысымдық регистр деп аталатын IC көмегімен шеше аламыз. Редукторларды «ауыстыру» сәті … Ауысымдық регистрді оның атын құрайтын екі сөз туралы ойлану арқылы жақсы түсінуге болады: «ауысым» және «тіркеу». Жылжыту сөзі деректердің регистр арқылы қалай жылжитынын білдіреді. Мұнда (біздің Arduino мен микроконтроллерлердегідей), регистр - бұл деректерді сақтайтын орын. Ол мұны 1 немесе 0 -де ұсынылатын екі тұрақты күйі бар «флип -флопс» деп аталатын цифрлық логикалық тізбектердің сызықтық тізбегін енгізу арқылы жасайды. Осылайша, сегіз флип -флопты біріктіру арқылы сізде ұстауға қабілетті құрылғы болады. және 8-разрядты байт. Флип-флоптардың бірнеше түрлері және ауысымдық регистрлердің бірнеше вариациялары бар болғандықтан (жоғары/төмен есептегіштер мен Джонсон есептегіштерін ойлаңыз), сондай-ақ мәліметтердің негізінде ауысым регистрлерінің бірнеше түрлері бар. регистрге қосылады және бұл мәліметтер қалай шығарылады. Осының негізінде ауысымдық регистрлердің келесі түрлерін қарастырыңыз:

  • Сериялық кіріс / параллель шығу (SIPO)
  • Сериялық кіріс / сериялық шығу (SISO)
  • Параллель кіріс/ сериялық шығу (PISO)
  • Параллель кіріс / параллель шығу (PIPO)

Екі назар аударатын нәрсе - SIPO және PISO. SIPO регистрлері деректерді біртіндеп алады, яғни бірінен соң бірі, алдыңғы енгізу битін келесі флип -флопқа ауыстырады және деректерді барлық кірістерге бірден жібереді. Бұл параллель түрлендіргішке жақсы серия жасайды. PISO ауысу регистрлері, керісінше, параллель кірістерге ие, сондықтан барлық биттер бірден енгізіледі, бірақ бір уақытта шығарылады. Сіз бұл болжадыңыз, бұл сериялық түрлендіргішке жақсы параллель болады. Енгізу -шығару түйреуіштерінің санын азайту үшін біз қолданғымыз келетін ауысымдық регистр бізге бұрын қолданған 8 IO түйреуішін алуға мүмкіндік береді және оларды бір немесе бірнеше жұпқа дейін қысқартуға мүмкіндік береді. биттер. Сондықтан біз қолданатын ауысым регистрі - бұл кіру / қатар шығару. Жарық диоды мен Arduino арасындағы ауысым регистрін сыммен ауыстыру Регистрді пайдалану оңай. Ең қиыны - бұл деректерді шығару түйреуіштерін және екілік цифрлардың IC -де қалай аяқталатынын және ақырында олар жарық диодты шамада қалай пайда болатынын елестету. Мұны жоспарлауға уақыт бөліңіз. 1. 5 -ші түйреуішті 14 -ші (жоғарғы оң жақ) жағына бекітіңіз және 7 -ші түйреуішті (төменгі сол жақта) жерге түсіріңіз. Ауысу регистрінің екі сериялық кірісі бар, бірақ біз тек біреуін қолданамыз, сондықтан екі түйреуішті 5V3 -ке қосыңыз. Біз таза түйреуішті қолданбаймыз (барлық шығуларды нөлге айналдыру үшін), сондықтан оны қалқымалы күйде қалдырыңыз немесе 5V4 -ке шабуыл жасаңыз. Ауысу регистрінің біреуін бекіту үшін бір сандық IO портын қосыңыз. Бұл сериялық кіріс түйреуіші.5. Бір цифрлық IO портын 8 пинге қосыңыз (төменгі оң жақта). Бұл сағаттың түйреуіші.6. Q0 мен Q6 арасындағы деректер желілерін қосыңыз. Біз тек 7 бит қолданамыз, себебі ASCII таңбалар жиынтығы тек жеті битті қолданады. Мен сериялық деректерді шығару үшін PD2 мен сағаттық сигнал үшін PD3 қолдандым. Деректер түйреуіштері үшін мен Q0 -ды D6 -ға светодиодқа қосып, солай жалғастырдым (Q1 -ден D5 -ке, Q2 -ден D4 -ке және т.б.). Біз деректерді дәйекті түрде жіберетіндіктен, біз жібергісі келетін әр таңбаның екілік көрінісін қарап шығуымыз керек, 1 мен 0 -ге қарап, сериялық жолда әр битті шығарамыз. Мен dotmatrixled.c көзінің екінші нұсқасын төмендегі Makefile -мен қостым. Ол таңбалар жиынтығын айналдырады және барлық жұп таңбаларды көрсетеді (егер әріп таңқаларлық немесе жұп болуы мүмкін деп ойлайтын болса, екілік ұсыныс туралы бір сәт ойланыңыз). Барлық тақ таңбаларды көрсету арқылы оны қалай айналдыру керектігін білуге тырысыңыз. Сіз ауысым регистрі, нүктелік матрицалық жарық диод және Arduino арасындағы байланыстармен тәжірибе жасай аласыз. Жарықдиодты мен регистрдің арасында деректердің қашан көрсетілуін реттеуге мүмкіндік беретін бірнеше басқару мүмкіндіктері бар, сондықтан … біз сегіз енгізу-шығару портын пайдаланудан екіге дейін пайдаланудан өттік!

5 -қадам: Қорытынды

Қорытынды
Қорытынды
Қорытынды
Қорытынды

Бұл нұсқаулықта мен DLO7135 нүктелік матрицалық жарық диодты және оны қалай жұмыс істеу керектігін ұсындым. Мен ауысым регистрінің көмегімен қажетті енгізу -шығару порттарының санын сегізден екіге дейін қалай азайту керектігін талқыладым. DLO7135 нүктелік матрицалық светодиодты бір -бірімен байланыстырып, көз тартарлық және қызықты маркаларды жасауға болады. Сізге бұл нұсқаулықты оқу қызықты болды деп сенемін! Егер менің ойымша, осы немесе басқа еркектерге қандай да бір жақсартулар немесе ұсыныстар бергіңіз келсе, мен оларды тыңдауға қуаныштымын!

Ұсынылған: