Мазмуну:

Arduino жана Shift реестри менен Dot Matrix LEDди колдонуу: 5 кадам
Arduino жана Shift реестри менен Dot Matrix LEDди колдонуу: 5 кадам

Video: Arduino жана Shift реестри менен Dot Matrix LEDди колдонуу: 5 кадам

Video: Arduino жана Shift реестри менен Dot Matrix LEDди колдонуу: 5 кадам
Video: Introduction to HT16K33 4 Digit LED Seven Segment Display with Arduino 2024, Ноябрь
Anonim
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 реестри менен Dot Matrix LEDди колдонуу

Siemens DLO7135 чекиттүү матрицасы - бул оптоэлектрониканын бир кереметтүү бөлүгү. Ал эс тутуму/декодери/драйвери бар 5x7 Dot Matrix Intelligent Display (r) катары эсептелет. Бул эстутум менен бирге, ал 96 тамгадан турган ASCII дисплейинде чоң жана кичине тамгалар, камтылган мүнөздөгү генератор жана мультиплексор, жарыктын интенсивдүүлүгүнүн төрт деңгээли бар, жана бардыгы 5Вда иштейт., жана $ 16 поп, бул сөзсүз түрдө керек. Сүйүктүү жергиликтүү электроника дүкөнүндө жарым күндү өткөрүп жатып, мен анын бир бөлүгүн 1.50 долларга толтурган урнаны таптым. Мен бир нече менен дүкөндөн чыктым. Бул көрсөтмө сизге AVR негизиндеги Arduino аркылуу бул чекиттик матрицанын LED'лерине кантип туташууну жана каармандарды көрсөтүүнү көрсөтөт. Эгерде сиз менин мурунку көрсөтмөлөрүмдүн бирин окуган болсоңуз, анда мен көбүнчө эң жөнөкөй чечимди жактайм деген ойго келишиң мүмкүн, мен маал -маалы менен жетпей калсам деле жаңылбайсың.. Ошондуктан, мен дагы бул көрсөтмөдө дагы бир кадамга барам жана бул чоң, honkin 'dot matrix LEDлерин айдоого керектүү I/O портторунун санын кантип азайта алаарыңызды көрсөтөм.

1 -кадам: Товарды алыңыз …

Товарды алыңыз…
Товарды алыңыз…

Бул кичинекей долбоор үчүн сизге керек болот:

  • Arduino сыяктуу AVR негизиндеги микроконтроллер же анын окшоштору. Бул көрсөтмөлөр, балким, сиз тандаган MCUга ылайыкташтырылышы мүмкүн.
  • бир DLO7135 чекит матрицасы LED же ошол эле үй -бүлөдө башка
  • 74LS164, 74C299 же 74HC594 сыяктуу 8-разряддык реестр
  • нан
  • туташтыруучу зым, зым кескичтер ж.

Кийинчерээк колдонсом да, ширетүүчү үтүктүн кереги жок; сиз ансыз деле ала аласыз.

2 -кадам: LED дисплейине түз туташыңыз

LED дисплейине түз туташыңыз
LED дисплейине түз туташыңыз
LED дисплейине түз туташыңыз
LED дисплейине түз туташыңыз
LED дисплейине түз туташыңыз
LED дисплейине түз туташыңыз

Бөлүктөрдүн кичинекей тизмесин түзүп, LEDди алыңыз. Ортоңку оюкту тизип, аны бир аз борборго жайгаштырыңыз. Туташуунун биринчи бөлүгү LEDдин сол жагында ишке ашат. Pin #1 үч бурчтуктун/жебенин көрсөткөндөй сол жактын жогору жагында жайгашкан. Мен сиз окуган же LEDди туташтырып жатканыңыз үчүн шилтеме функцияларын сүрөттө көрсөтөм.

Сол жагы

Оң жана терс Солдун үстүнөн баштап, Vccти 5Vга туташтырыңыз. Балким, сол жагы толугу менен бүтмөйүнчө тактаңыздын иштебей калышы жакшы идея; эгер сиз зымдарды тешүү үчүн кичинекей тешиктерди көрүүгө аракет кылып жатсаңыз, анда LED жарык болушу мүмкүн. Сол жактын астындагы GNDди жерге туташтырыңыз. Чыракты текшерүү, чипти иштетүү жана жазуу Сол жактагы 2 -жана 3 -чырактарды текшерүү жана чипти иштетүү. Бул экөөнүн тең терс логикасы, алар 1дин ордуна логикалык 0 болгондо иштетилет дегенди билдирет. Төмөндөгү сүрөтүмдүн үстүндө торчолору болушу керек, бирок мен алардын эч бирине аннотация берген эмесмин. LT пин күйгүзүлгөндө, матрицанын ар бир чекитин 1/7 жарыктыкта жарык кылат. Бул дагы пикселдик тестирлөө, бирок LT пиндин кызыктуу жери - бул эс тутумдагы бир дагы белгини кайра жазбайт, андыктан эгерде сизде булардын бир нечеси бар болсо (алар 20 фут көрүү алыстыгына ээ болсо), курсорго окшоштура алат. Бул өчүрүлгөн камсыз кылуу үчүн, аны 5V менен туташтырыңыз. CE жана WR казыктары да терс логика жана бул акылдуу түзмөккө жазылышы үчүн иштетилиши керек. Сиз бул төөнөгүчтөрдү микроконтроллердеги запастык I/O порттору менен башкара аласыз, бирок биз бул жерде убара болбойбуз. Аларды иштетүү үчүн аларды жерге туташтырыңыз. Жарыктын деңгээли DLO диоддорунун үй -бүлөсүндө төрт программалоочу жарыктыктын деңгээли бар:

  • Бош
  • 1/7 Brightness
  • 1/2 Жарыктык
  • Толук жарыктык

BL1 HIGH жана BL0 LOW - 1/2 жарыктык. HIGH экөө тең толук жарыктык. Аны каалаган нерсеңизге коюңуз. Дагы, эгер сизде I/O порттору бош болсо жана бул сиз үчүн жетиштүү болсо, муну сиздин Arduino башкара алат. Эгерде сиз тактаңызга электр кубатын алып келсеңиз, анда LED жарыгы күйүп турганын көрүшүңүз керек. Жарыктыкты көзөмөлдөөчү лампалар менен ойноңуз, эгер сиз кызык болсоңуз, аны менен таанышыңыз.

Оң жагы

Оң жагы толугу менен маалымат портторунан турат. Төмөнкү оң жакта, тактап айтканда 8 же D0 пин, 7-бит символдогу эң аз битти билдирет. Жогорку оң жактагы пин 14 же D6 Эң Маанилүү Битти билдирет. Бул LEDге жазууда биттериңизди кандай тартипте алмаштыруу керек экенин билүүгө мүмкүнчүлүк берет. Маалыматты киргизүү порту туташтырылганда, Arduino же AVRден жети бош санариптик I/O портун таап, аларды туташтырыңыз. Сиз, балким, AVRдеги кайсы маалымат чыгаруу порту LEDдеги кайсы маалымат киргизүү портуна бараарын эстегиңиз келет. Сиз дагы эле толкунданып титиреп жатасызбы? Мен билем мен…

3 -кадам: Көрсөтүлө турган белгини көрсөтүү

Көрсөтүлө турган белгини көрсөтүү
Көрсөтүлө турган белгини көрсөтүү

Бул CMOS светодиодунда колдонулган символдор бул 0x20 (ондук 32; боштук) менен 0x7F (ондук 127; өчүрүү, LEDде курсор графикасы катары көрсөтүлгөн болсо да) менен башталган ASCII.. Ошентип, LED дисплейине ээ болуу маалыматтын чыгышына 1 же 0 логикасын киргизүүдөн башка эч нерсени талап кылбайт, адатта WR импульсуна ээ болот, бирок мен бул көнүгүү үчүн жогоруда айтып жатам. кайсы казыктар кайсы портторго барарын эстедиңиз, туурабы? Мен PD [2..7] жана PB0 (Arduino тилинде 2ден 8ге чейинки санарип казыктарды) тандадым. Мен PD [0..1] колдонууну сунуш кылбайм, анткени мен аны FreeBSD кутусуна сериялык байланышка арнайм, жана Arduino жана башкалар. ал пиндерди FTDI USB байланыш каналына картага салыңыз жана "алар" 0 жана 1 түйүндөрү иштейт деп айтышат, бирок эгер сиз сериялык байланышты баштабасаңыз, мен бул пиндерди кадимки санариптик I/O катары колдоно алган эмесмин. Чындыгында, мен PD0 жана PD1ди колдонууга аракет кылып, алар дайыма ЖОГОРКУ экенин тапканымда, эки күн бою көйгөйдү оңдоого аракет кылдым. * ийин куушуруу* Кыязы, кандайдыр бир тышкы киргизүү болушу мүмкүн, сыягы, баскычтоп, баскыч же бармак баскычы, же терминалдан киргизүү (менин ArduinoTerm азырынча прайм -таймга даяр эмес …). Тандоо сеники. Азырынча, мен каалагандай светодиодду алуу үчүн кодду кантип алуу керек экенин көрсөтөм. Жүктөө үчүн zipfile бар, анын ичинде булак коду жана Makefile, ошондой эле LED анын мүнөздөр топтомун басып чыгарганын көрсөткөн кыска тасма бар. Кечиресиз, видеонун начар сапаты үчүн. Төмөндөгү код "Менин Нускамага кош келиңиз!" Деген сапты басып чыгарат. андан кийин LED колдогон бүткүл белгилерди айланат.

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

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

Код жана Makefile төмөндөгү ZIP файлына киргизилген.

4 -кадам: Shift реестри менен I/O портторун сактоо

Shift реестри менен I/O портторун сактоо
Shift реестри менен I/O портторун сактоо
Shift реестри менен I/O портторун сактоо
Shift реестри менен I/O портторун сактоо
Shift реестри менен I/O портторун сактоо
Shift реестри менен I/O портторун сактоо

Ошентип, азыр биздин микроконтроллерибиз маалыматты LED чекитине жөнөтө алат, бирок ал сегиз I/O портун колдонот. Бул 8-пин DIP пакетинде ATtiny колдонууну, ал тургай жаңы Arduino менен ATmega328pди камтыйт, бул бир LED үчүн көптөгөн I/O порттору. Муну биз сменалык реестр деп аталган ICди колдонуу менен чече алабыз. Редукторду "которуштуруу" учуру … Сменалык реестрди анын атын түзгөн эки сөз жөнүндө ойлонуу менен эң жакшы түшүнүүгө болот: "жылыш" жана "каттоо". Сөз жылышы маалыматтардын реестр аркылуу кантип жылып баратканын билдирет. Бул жерде (биздин Arduino жана микроконтроллерлердегидей эле), реестр - бул маалыматтарды камтыган жер. Бул муну "флип -флопс" деп аталган эки туруктуу абалга ээ болгон 1 же 0 менен көрсөтүлүүчү санариптик логикалык схемалардын линиялык чынжырын ишке ашыруу аркылуу кылат. Ошентип, сегиз флипти бириктирүү менен сизде кармап турууга жөндөмдүү түзмөк бар Жана флип-флоптордун бир нече түрлөрү жана сменалык регистрлердин бир нече вариациялары бар болгондой эле (өйдө/ылдый эсептегичтерди жана Джонсон эсептегичтерин ойлонгула), ошондой эле маалыматтарга негизделген сменалык регистрлердин бир нече түрү бар. реестрге илинет жана бул маалыматтар кантип чыгарылат. Мунун негизинде сменалык регистрлердин төмөнкү түрлөрүн караңыз:

  • Serial In / Parallel Out (SIPO)
  • Serial In / Serial Out (SISO)
  • Parallel In/ Serial Out (PISO)
  • Parallel In / Parallel Out (PIPO)

Белгилей кетчү нерсе, SIPO жана PISO. SIPO реестрлери маалыматтарды ырааттуу түрдө, башкача айтканда, биринин артынан бирин алып, мурунку киргизилген битти кийинки флип -флопко жылдырып, маалыматтарды бир убакта бардык кириштерге жөнөтөт. Бул параллель конвертерге жакшы сериал түзөт. PISO сменалык реестрлери, тескерисинче, параллель кириштерге ээ, ошондуктан бардык биттер бир убакта киргизилет, бирок бир убакта чыгарылат. Сиз муну ойлодуңуз, бул сериялык конвертерге жакшы параллель кылат. I/O казыктарынын санын кыскартуу үчүн биз колдонгубуз келген нөөмөт реестри бизге мурун колдонулган 8 IO казыгын алып, аларды кантип азайтууну көзөмөлдөшүбүз керектигин эске алып, бирөөнө чейин кыскартууга мүмкүндүк берет. биттер. Ошондуктан, биз колдоно турган сменалык реестр Сериялык Кирүү / Параллель Чыгуу. Жарык диод менен Arduino ортосунда нөөмөт реестрин тартыңыз. Сменалык реестрди колдонуу оңой. Эң кыйын бөлүгү - бул маалымат чыгаруу пиндерин жана бинардык цифралар ICде кантип бүтөөрүн жана акыры LEDда кантип пайда болорун элестетүү. Муну пландаштыруу үчүн бир аз убакыт бөлүңүз. 1. 5 -пин 14кө (жогорку оңго) тиркеп, 7 -пинди (асты солго) жерге түшүрүңүз.2. Ыкчам реестрде эки сериялык кирүү бар, бирок биз бирөөнү гана колдонобуз, андыктан экинчисин 5V3кө туташтырыңыз. Биз ачык пин колдонбойбуз (бардык чыгымдарды нөлгө салуу үчүн колдонулат), андыктан аны калкып кетиңиз же 5V4кө кол салыңыз. Бир санариптик IO портун туташтырып, нөөмөт реестринин бирин туташтырыңыз. Бул сериялык киргизүү пин 5. Бир санариптик IO портун 8 -пинге туташтырыңыз (оң жактагы). Бул сааттын пини.6. Q0дан Q6га чейин маалымат линияларыңызды туташтырыңыз. Биз 7 битти гана колдонобуз, анткени ASCII белгилер тобу жети битти гана колдонот. Мен PD2ди сериялык маалыматымды чыгаруу үчүн жана PD3 сааттык сигнал үчүн колдондум. Маалымат казыктары үчүн мен Q0 диодуна D6 менен туташтырып, ошол жол менен улантып жатам (Q1ден D5ке, Q2ден D4ке ж. Б.). Биз маалыматтарды ырааттуу түрдө жөнөтүп жаткандыктан, биз жөнөткүбүз келген ар бир белгинин бинардык өкүлчүлүгүн, 1 жана 0'лерди карап, сериялык сапта ар бир битти чыгаруу керек. Мен төмөндө Makefile менен бирге dotmatrixled.c булагынын экинчи версиясын коштум. Ал белгилердин топтомун айлантат жана бардык жуп тамгаларды көрсөтөт (эгерде тамгалар так же жуп болушу мүмкүн деп таң калыштуу болсо, экилик чагылдырууну бир азга ойлонуп көрүңүз). Бардык так белгилерди көрсөтүү аркылуу аны кантип айлантуу керек экенин билүүгө аракет кылыңыз. Сиз мындан ары нөөмөт реестри, чекиттик LED жана Arduino ортосундагы байланыштар менен эксперимент жасай аласыз. Светодиод менен реестрдин ортосунда бир нече башкаруу функциялары бар, алар маалыматтын качан көрсөтүлөрүн көзөмөлдөп турууга мүмкүндүк берет. Ошентип, … биз сегиз I/O портун колдонуудан экөөнү гана колдонуп калдык!

5 -кадам: Жыйынтык

Жыйынтык
Жыйынтык
Жыйынтык
Жыйынтык

Бул көрсөтмөдө мен DLO7135 чекиттүү LED диодун жана анын иштешин сунуштадым. Мен андан ары, талап кылынган I/O портторунун санын сегизден экиге чейин кантип кыскартуу керектигин талкууладым. DLO7135 чекиттүү матрицалык диодун көздүн жоосун алган жана кызыктуу маркеттерди жасоо үчүн биригүүгө болот. Бул көрсөтмөнү окуу сизде кызыктуу болду деп ишенем! Эгерде мен ойлогондой кандайдыр бир жакшыртуулар болсо же бул же менин башка бирөөлөрүмө бергим келсе, мен аларды угууга кубанычтамын!

Сунушталууда: