Агуулгын хүснэгт:

Shift бүртгэлийг ашиглан LED матриц: 7 алхам (зурагтай)
Shift бүртгэлийг ашиглан LED матриц: 7 алхам (зурагтай)

Видео: Shift бүртгэлийг ашиглан LED матриц: 7 алхам (зурагтай)

Видео: Shift бүртгэлийг ашиглан LED матриц: 7 алхам (зурагтай)
Видео: Камера-ЛАМПА со слежением и определением человека. 2024, Арваннэгдүгээр
Anonim
Shift бүртгэлийг ашиглан LED матриц
Shift бүртгэлийг ашиглан LED матриц
Shift бүртгэлийг ашиглан LED матриц
Shift бүртгэлийг ашиглан LED матриц
Shift бүртгэлийг ашиглан LED матриц
Shift бүртгэлийг ашиглан LED матриц

Энэхүү зааварчилгаа нь онлайнаар байгаа бусадтай харьцуулахад илүү бүрэн дүүрэн тайлбарлах зорилготой юм. Тодруулбал, энэ нь LED555 -ийн заавраар LED Marquee -д байгаагаас илүү их техник хангамжийн тайлбарыг өгөх болно.

Зорилго

Энэхүү зааварчилгаа нь ээлжийн бүртгэл, өндөр жолоочтой холбоотой ойлголтуудыг танилцуулж байна. Эдгээр ойлголтуудыг 8х8 хэмжээтэй LED матрицаар дүрслэн харуулснаар та төслийнхөө хүссэн хэмжээ, зохион байгуулалтад дасан зохицох, өргөжүүлэхэд шаардлагатай хэрэгслүүдийг өгөх болно гэж найдаж байна.

Туршлага, ур чадвар

Би энэ төслийг дунд зэргийн бэрхшээлтэй гэж үнэлэх болно.

  • Хэрэв та аль хэдийн микроконтроллер програмчлах, LED -тэй ажиллах туршлагатай бол энэ төслийг дуусгах, илүү том гэрлийн масштабтай болгоход хялбар байх болно.
  • Хэрэв та микроконтроллерыг дөнгөж эхэлж байгаа бөгөөд нэг эсвэл хоёр LED анивчсан бол манай найз Google -ийн тусламжтайгаар энэ төслийг дуусгах боломжтой байх ёстой.
  • Хэрэв танд микроконтроллер эсвэл програмчлалын талаар туршлага багатай эсвэл огт байхгүй бол энэ нь таны авах ёстой зүйлээс хэтэрсэн байж магадгүй юм. Өөр хэд хэдэн шинэ төслүүдийг туршиж үзээд микроконтроллеруудад зориулж програм бичих туршлагатай болсны дараа буцаж ирээрэй.

Татгалзах мэдээлэл ба зээл

Нэгдүгээрт, би цахилгаан инженер биш. Хэрэв та буруу эсвэл хамгийн сайн туршлага биш ямар нэг зүйл олж харвал надад мэдэгдээрэй, би залруулга хийх болно. Та юу хийж байгаагаа мэдэж байх ёстой, эс тэгвээс та компьютер, микроконтроллер, тэр ч байтугай өөртөө гэмтэл учруулж болзошгүй. Би интернетээс, ялангуяа форум дээрээс маш их зүйлийг сурч мэдсэн: https://www.avrfreaks.net ks0108 бүх нийтийн C номын сантай хамт ирсэн фонтын багц. Үүнийг эндээс үзээрэй:

Алхам 1: эд анги

Эд ангиудын жагсаалт

Ерөнхий хэсгүүд

LED -ийн 8х8 хэмжээтэй сүлжээ хийх, тэдгээрийг хянахын тулд танд дараахь зүйлс хэрэгтэй болно.

  • Таны сонгосон 64 LED
  • LED -ийн 8 резистор
  • 1 Багануудын бүртгэлийг өөрчлөх
  • 1 Мөрүүдийн драйверын массив
  • Жолоочийн массивыг солих 8 резистор
  • 1 микроконтроллер
  • Микроконтроллерт зориулсан 1 цагийн эх үүсвэр
  • 1 загварчлалын самбар
  • 1 цахилгаан хангамж
  • Холбох утас

Энд ашигласан тусгай эд анги

Энэхүү зааварчилгааны хувьд би дараахь зүйлийг ашигласан.

  • 64 ногоон LED (Mouser хэсэг #604-WP7113GD)
  • LED-д зориулсан 220 Ом-ийн 1/4 ваттын 8 резистор (Mouser хэсэг #660-CFS1/4CT52R221J)
  • 1 ээлжийн бүртгэлтэй HEF4794 LED драйвер (Mouser хэсэг #771-HEF4794BPN)
  • 1 mic2981 Өндөр хүчдэлийн өндөр гүйдлийн эх үүсвэрийн драйверын массив (Digikey хэсэг #576-1158-ND)
  • Жолоочийн массивыг солих зориулалттай 3.3 кох 1/4 ваттын эсэргүүцэл (Radio Shack хэсэг #271-1328)
  • 1 Atmel ATmega8 микроконтроллер (Mouser хэсэг #556-ATMEGA8-16PU)
  • Микроконтроллерийн цагийн эх үүсвэрт зориулсан 12MHz болор (Mouser хэсэг #815-AB-12-B2)
  • 1 2200 нүхтэй загварчлалын самбар (Radio Shack хэсэг #276-147)
  • Хөрвүүлсэн ATX тэжээлийн хангамж: Энэ зааврыг үзнэ үү
  • Хатуу цөм 22-awg залгах утас (Radio Shack хэсэг #278-1221)
  • Гагнуургүй талхны самбар (Radio Shack хэсэг #276-169 (байхгүй болсон, үзээрэй: 276-002)
  • AVR Dragon (Mouser хэсэг #556-ATAVRDRAGON)
  • Ecros Technologies -ийн Dragon Rider 500: Энэ зааврыг үзнэ үү

Хэсэг хэсгүүдийн талаархи тэмдэглэл

Мөр ба баганын жолооч нар: Энэ төслийн хамгийн хэцүү хэсэг бол эгнээ баганын драйверуудыг сонгох явдал юм. Нэгдүгээрт, 74HC595 стандарт ээлжийн бүртгэл нь энд сайн санаа биш гэж би бодож байна, учир нь тэд бидний LED -ээр дамжуулахыг хүсч буй гүйдлийг зохицуулж чадахгүй байна. Тийм учраас би бүх HEF4794 драйверийг сонгосон бөгөөд энэ нь 8 ледийг нэг эгнээнд асаахад одоогийн одоогийн байдлыг амархан шингээж өгдөг. Ээлжийн бүртгэл нь доод талд (ледийн газардуулгын зүү) байрладаг. Бидэнд олон багануудыг хооронд нь холбоход хангалттай гүйдэл үүсгэж чадах эгнээний драйвер хэрэгтэй болно. Mic2981 нь 500 мА хүртэл нийлүүлэх чадвартай. Энэ даалгаврыг гүйцэтгэдэг миний олж мэдсэн цорын ганц хэсэг бол өөр үйлдвэрлэгчийн ижил хэсэг болох UDN2981 (бусад хэсэг #620-1120-ND) юм. Хэрэв та энэ аппликешнд сайн ажиллах өндөр түвшний драйверуудыг мэддэг бол надад зурвас илгээнэ үү. Илүү том LED массивыг олон матрицыг хооронд нь холбож бүтээх боломжтой бөгөөд үүнийг "модульчлагдсан ойлголтууд" алхамд хэлэлцэх болно. Хэрэв та том массив авахыг хүсвэл шаардлагатай бүх эд ангиудыг нэг дор захиалаарай. Нэг багцад 8x8, 5x7, 5x8 хэмжээтэй LED матрицууд байдаг. Эдгээрийг DIY матрицаар орлуулахад хялбар байх ёстой. Ebay бол эдгээрийн сайн эх сурвалж юм. Mouser нь #604-TA12-11GWA гэх мэт 5х7 хэмжээтэй зарим нэгжтэй. Би зүгээр л тоглож, зугаацаж байгаа болохоор хямд ногоон LED ашигладаг байсан. Өндөр тод, өндөр үр ашигтай LED-үүдэд илүү их мөнгө зарцуулах нь танд илүү гайхалтай дүр төрхийг харуулах боломжийг олгоно … гэхдээ энэ нь надад хангалттай юм! Хяналтын техник хангамж: Матрицыг Atmel AVR микроконтроллер хянадаг. Үүний тулд танд програмист хэрэгтэй болно. Би прототип хийж байгаа учраас угсрах болон ашиглах заавар бичсэн Dragon Rider 500 -ийг ашиглаж байна. Энэ бол прототип хийхэд хялбар хэрэгсэл бөгөөд би танд зөвлөж байна.

Алхам 2: Матриц

Матриц
Матриц
Матриц
Матриц
Матриц
Матриц

Би энэ төслийн 5 мм -ийн LED болон Radio Shack -ийн загварчлах самбар ашиглан өөрийн LED матрицыг бүтээх болно. Та ebay гэх мэт хэд хэдэн эх сурвалжаас 8x8 цэг матрицтай LED модулийг худалдан авах боломжтой гэдгийг тэмдэглэх нь зүйтэй. Тэд энэ зааварчилгааны дагуу маш сайн ажиллах ёстой.

Барилгын талаар анхаарах зүйлс

LED -ийг хооронд нь ижил өнцгөөр чиглүүлэх ёстой. Би хамгийн хялбар сонголтыг олсон нь LED -ийн их биеийг самбар дээр байрлуулж, жижигхэн уян шил, хавчаараар барих явдал байв. Plexiglass нь загварчлалын самбартай параллель байгаа эсэхийг шалгахын тулд миний ажиллаж байсан эгнээнээс хэдхэн инчийн зайд хэд хэдэн LED байрлуулсан. Мөр ба баганын драйверийг сонгосон тул бид анод (LED -ийн эерэг тугалга) -ыг эгнээгээр, катод (LED -ийн сөрөг тугалга) -ыг баганаар холбох ёстой. Хяналтын утас Энэ прототипийн хувьд би хатуу цөмт (нэг дамжуулагчтай) залгах утас ашигладаг. Энэ нь гагнуургүй талхны самбартай ажиллахад маш хялбар байх болно. Төсөлдөө тохирсон өөр төрлийн холбогчийг ашиглахад таатай байна.

Матриц бүтээх

1. Прототип хийх самбар дээр LED -ийн эхний баганыг байрлуулна.2. LED тус бүрийн туйлшрал зөв эсэхийг дахин шалгаарай, хэрэв та үүнийг дараа нь ухаарсан бол засахад маш хэцүү байх болно. LED -ийн хоёуланг нь самбар дээр гагнах. Тэдгээрийг зөв байрлуулсан эсэхийг (хачин өнцгөөр биш) шалгаад катодын залгуурыг таслаарай. Анодын туяаг огтлохгүй байгаа эсэхийг шалгаарай, энэ нь бидэнд хэрэгтэй болно. Цул утаснаас тусгаарлагчийг салга. Энэ утсыг катод тус бүрт самбарын түвшинд гагнана.

  • Би үүнийг төгсгөл бүрт нь наасан, дараа нь буцаж очоод уулзвар бүрт жаахан гагнуур нэмэв.
  • Энэ утас нь таны сүүлчийн LED -ээс хэтрэхгүй байх ёстой бөгөөд ингэснээр бид хяналтын утас нэмж өгөхөд хялбар интерфэйсийг бий болгоно.

5. Бүх LED-ийг байрлуулж, бүх баганын автобусыг гагнах хүртэл 1-4-р хэсгийг давтана. Эгнээний автобус үүсгэхийн тулд анодын хэд хэдэн залгуурыг 90 градусын өнцгөөр нугалж, нэг эгнээний бусад анодын залгуурт хүрнэ.

  • Энэ талаар дэлгэрэнгүй зургууд доор байна.
  • Эдгээр нь баганын автобусанд хүрч, богино холболт үүсгэхгүй байхыг анхаарна уу.

7. Утас бүрийг уулзвар дээр гагнаж, анодын илүүдэл хэсгүүдийг таслана.

Сүүлийн анодыг эцсийн LED -ээр наана. Үүнийг эгнээний жолоочийн хяналтын утсыг холбоход ашиглах болно

8. Бүх эгнээний автобусыг гагнах хүртэл 6 ба 7 -р хэсгийг давтана.9. Хяналтын утсыг холбоно уу.

  • Би эгнээнд улаан хатуу цөмт утас, багананд хар өнгийг ашигласан.
  • Багана тус бүрт нэг утас, мөр бүрт нэг утас холбоно уу. Үүнийг автобус бүрийн төгсгөлд хялбархан хийж болно.

Чухал

Энэхүү LED матриц нь гүйдэл хязгаарлах эсэргүүцэлгүй байдаг. Хэрэв та үүнийг резисторгүйгээр туршиж үзвэл та LED -ээ шатааж магадгүй бөгөөд энэ бүхэн дэмий хоосон болно.

Алхам 3: Хяналтын техник хангамж

Хяналтын тоног төхөөрөмж
Хяналтын тоног төхөөрөмж
Хяналтын тоног төхөөрөмж
Хяналтын тоног төхөөрөмж

Бид LED матрицын баганууд болон мөрүүдийг хянах хэрэгтэй. Матрицыг анодууд (LED -ийн хүчдэлийн тал) эгнээ, катодууд (LED -ийн газрын тал) багануудыг бүрдүүлдэг. Энэ нь манай эгнээний драйвер гүйдлийн эх үүсвэр, баганын драйвер үүнийг живүүлэх шаардлагатай гэсэн үг юм. Зүүг хэмнэхийн тулд би баганыг хянахын тулд ээлжийн бүртгэл ашиглаж байна. Ингэснээр би ердөө дөрвөн микроконтроллертой бараг хязгааргүй тооны багануудыг хянах боломжтой болно. Enable Output pin -ийг хүчдэлтэй шууд холбосон тохиолдолд зөвхөн гурвыг ашиглах боломжтой. Би ээлжийн бүртгэлтэй HEF4794 LED драйверийг сонгосон. Энэ нь 74HC595 стандартаас илүү сайн сонголт юм, учир нь бүх 8 LED нэгэн зэрэг асах үед одоогийн өнөөгийн байдлыг хялбархан живүүлэх боломжтой. Өндөр талд (мөрүүдийн одоогийн эх үүсвэр) би mic2981 ашиглаж байна. Энэхүү схем нь UDN2981 -ийг харуулсан бөгөөд эдгээр хоёр нь хоорондоо солигддог гэж би бодож байна. Энэ драйвер нь 500 мА хүртэл гүйдэл үүсгэж чаддаг. Бид нэг удаад зөвхөн 1 эгнээ жолоодож байгаа тул энэ чипийн 33 хүртэлх баганыг өргөтгөх маш их боломжийг олгодог (энэ талаар "модульчлагдсан ойлголт" алхам дээр дэлгэрэнгүй тайлбарласан болно).

Хяналтын тоног төхөөрөмжийг бий болгох

Энэ зааварчилгааны хувьд би дөнгөж сая энэ хэлхээг талхлав. Илүү тогтвортой шийдлийн хувьд та өөрийн хэлхээний самбарыг сийлбэрлэх эсвэл загварчлах самбар ашиглахыг хүсэх болно. Мөрний жолооч

  • Mic2981 (эсвэл UDN2981) -ийг талхны самбар дээр байрлуул
  • Pin 9 -ийг хүчдэлд холбоно уу (энэ нь схемд төөрөгдөлд оруулдаг)
  • Pin 10 -ийг газартай холбоно уу (Энэ нь схемд төөрөгдөлд оруулдаг)
  • 1-8-р зүүтэй холбосон 3k3 резисторыг оруулна уу
  • ATmega8 (PD0-PD8) D портоос 8 резистор руу холбогдоно уу
  • LED матрицын 8 эгнээний хяналтын утсыг 11-18 тээглүүрт холбоно уу (би LED-ийн хамгийн доод эгнээ 18-р зүү, хамгийн өндөр эгнээ 11-р зүүтэй холбосон болохыг анхаарна уу).

2. Баганын жолооч

  • Hef4794 -ийг талхны тавцан дээр тавь
  • 16 -р зүүг хүчдэлд холбоно уу
  • 8 -р зүүг газардуул
  • 220 ом эсэргүүцлийг 4-7 ба 11-14 зүү рүү холбоно уу.
  • LED матрицаас 8 баганын хяналтын утсыг дөнгөж холбосон 8 резистортой холбоно уу.
  • Pin1 (түгжээ) -ийг ATmega8 -ийн PC0 -тэй холбоно уу
  • Pin2 (өгөгдөл) -ийг ATmega8 -ийн PC1 -тэй холбоно уу
  • Pin3 (Цаг) -ийг ATmega8 -ийн PC2 -тэй холбоно уу
  • Pin15 (Enput Output) -ийг ATmega8 -ийн PC3 -тэй холбоно уу

3. Болор цаг

12 МГц -ийн болорыг холбож, схемд үзүүлсэн шиг конденсаторыг ачаална уу

4. ISP

Схемд үзүүлсэн шиг програмчлалын толгойг холбоно уу

5. Шүүлтүүрийн конденсатор ба татах эсэргүүцэл

  • ATmega8 -д нийлүүлсэн хүчдэлийг шүүх нь хамгийн сайн арга юм. ATmega8 -ийн Pin 7 ба 8 хооронд 0.1uf конденсатор ашиглана уу
  • Дахин тохируулах зүүг хөвж орхиж болохгүй, учир нь энэ нь санамсаргүй байдлаар дахин тохируулах шалтгаан болдог. Үүнийг хүчдэлд холбохын тулд резистор ашиглана уу. Би схемд 10к эсэргүүцэл ашигласан.

6. Та +5V -ийн зохицуулалттай хүч хэрэглэж байгаа эсэхээ шалгаарай. Зохицуулагчийг зохион бүтээх нь танд хамаарна.

Алхам 4: Програм хангамж

Трик

Тийм ээ, бүх зүйлийн нэгэн адил заль мэх байдаг. Заль мэх нь нэг дор 8 -аас илүү LED гэрэлтүүлэгтэй байдаггүй. Үүнийг сайн ажиллуулахын тулд бага зэрэг зальтай програмчлал хэрэгтэй болно. Миний сонгосон ойлголт бол таймер тасалдлыг ашиглах явдал юм. Дэлгэц тасалдал нь энгийн англи хэл дээр хэрхэн ажилладагийг энд харуулав.

  • Таймер нь тодорхой цэг хүртэл тоологддог бөгөөд тасалдсан үйлчилгээний горимыг ажиллуулна.
  • Дараахь эгнээ аль эгнээнд харагдахыг энэ журам шийддэг.
  • Дараагийн эгнээний мэдээллийг буфер дээрээс хараад баганын драйвер руу шилжүүлнэ (энэ мэдээлэл "түгжигдээгүй" тул хараахан харуулаагүй байна).
  • Эгнээ жолоочийг хаасан, одоогоор LED асаагүй байна.
  • Баганын драйвер нь хоёр алхамын өмнө шилжүүлсэн мэдээллийг харуулахын тулд "түгжигдсэн" байна.
  • Мөр драйвер нь бидний үзүүлж буй шинэ мөрөнд гүйдэл өгдөг.
  • Тасалдлын үйлчилгээний горим дуусч, дараагийн тасалдал хүртэл програм хэвийн урсгал руу буцна.

Энэ нь маш хурдан болдог. Тасалдлыг 1 секунд тутамд хийдэг. Энэ нь бид 8 мСекунд тутамд нэг удаа дэлгэцийг бүхэлд нь сэргээдэг гэсэн үг юм. Энэ нь 125 Гц орчим дэлгэцийн хурдтай гэсэн үг юм. Бид LED -ийг 1/8 үүргийн мөчлөгөөр ажиллуулж байгаа тул гэрэлтүүлгийн талаар санаа зовж байна (энэ нь 7/8 унтраалттай байдаг). Миний хувьд хангалттай тод дэлгэцийг анивчдаггүй, бүрэн LED дэлгэцийг массив хэлбэрээр харуулдаг. Тасалдлын хооронд массивыг өөрчилж болно (атомын шинж чанарыг анхаарч үзээрэй), дараагийн тасалдлын үеэр дэлгэц дээр гарч ирнэ. AVR микроконтроллерийн код бичих, ээлжийн регистрүүдтэй код бичих талаар бичих онцлог нь хамрах хүрээнээс хэтэрсэн болно. энэ сургамжтай. Би шууд програмчлах эх кодыг (С-д бичсэн бөгөөд AVR-GCC-ээр эмхэтгэсэн), мөн зургаан өнцөгт файлыг оруулсан болно. Би бүх кодыг тайлбарласан тул та үүнийг ашиглан ээлжийн бүртгэлд өгөгдөл хэрхэн оруулах, мөр шинэчлэлт хэрхэн ажиллаж байгаа талаарх асуултуудыг арилгах боломжтой байх ёстой. ks0108 бүх нийтийн C номын сан. Тэр номын санг эндээс олж болно:

Ээлжийн бүртгэл: Хэрхэн хийх вэ

Би ээлжийн бүртгэлээр хэрхэн програмчлах талаар жаахан нэмж оруулахаар шийдлээ. Өмнө нь тэдэнтэй хамт ажиллаж байгаагүй хүмүүсийн хувьд энэ нь бүх зүйлийг цэвэрлэнэ гэж найдаж байна. Shift Register нь нэг утаснаас дохио авч, энэ мэдээллийг олон янзын зүү рүү гаргадаг. Энэ тохиолдолд өгөгдлийг хүлээн авдаг нэг өгөгдлийн утас, ямар өгөгдөл хүлээн авснаас хамааран хянадаг 8 зүү байдаг. Илүү сайн болгохын тулд ээлжийн бүртгэл бүрт өөр нэг ээлжийн бүртгэлийн оролтын зүүтэй холбогдож болох гарц байдаг. Үүнийг каскад гэж нэрлэдэг бөгөөд өргөтгөл хийх боломжийг бараг хязгааргүй болгодог. Control PinsShift регистрүүд нь 4 хяналтын зүүтэй байдаг.

  • Түгжээ - Энэ зүү нь шинээр оруулсан өгөгдөл рүү шилжих цаг болоход ээлжийн бүртгэлийг хэлдэг
  • Өгөгдөл - 1 ба 0 нь ээлжийн бүртгэлд энэ зүү дээр ямар зүү идэвхжүүлэхийг хэлж өгдөг.
  • Цаг - Энэ бол микроконтроллероос илгээсэн импульс бөгөөд ээлжийн бүртгэлд өгөгдлийг уншиж, харилцааны дараагийн алхам руу шилжихийг хэлдэг.
  • Гаралтыг идэвхжүүлэх - Энэ бол асаах/унтраах, Өндөр = Асаах, Бага = Унтраах

Үүнийг өөрийн хүссэнээр хийх: Дээрх хяналтын тээглүүрүүдийн ажиллах ослын курс энд байна: Алхам 1: Түгжээ, Өгөгдөл, Цагийг бага байлгах

Түгжээг бага тохируулснаар бид бичих гэж буй ээлжийн бүртгэлийг хэлж өгнө

Алхам 2: Өгөгдлийн зүүг Shift бүртгэлд илгээхийг хүсч буй логик утгаар тохируулна уу Алхам 3: Цагийн зүүг өндөр болгож, Shift Register -ийг одоогийн өгөгдлийн зүү утга дээр уншихыг хэлнэ үү.

Одоогийн байдлаар Shift бүртгэлд байгаа бусад бүх утгууд 1 байр уруу шилжих бөгөөд энэ нь Data pin -ийн одоогийн логик утгыг авах боломжтой болно

Алхам 4: Цагийн зүүг бага болгож, бүх өгөгдлийг ээлжийн бүртгэл рүү илгээх хүртэл 2 ба 3 -р алхамуудыг давтана.

Дараагийн өгөгдлийн утгад шилжихийн өмнө цагийн зүүг бага тохируулсан байх ёстой. Энэ зүүг өндөр ба доод хооронд шилжүүлэх нь ээлжийн бүртгэлийн үйл явцын дараагийн алхам руу хэзээ шилжихийг мэдэх шаардлагатай "цагийн импульс" -ийг бий болгодог

Алхам 5: Түгжээг өндөрт тавь

Энэ нь ээлжийн бүртгэлд шилжүүлсэн бүх өгөгдлийг аваад гаралтын тээглүүрийг идэвхжүүлэхийн тулд ашиглахыг хэлдэг. Энэ нь өгөгдөл шилжиж байх үед та харахгүй гэсэн үг юм; түгжээг өндөр тохируулах хүртэл гаралтын тээглүүрт өөрчлөлт орохгүй

Алхам 6: Enable Output Output -ийг тохируулна уу

  • Бусад гурван хяналтын тээглүүрт юу болж байгаагаас үл хамааран Enable Output -ийг өндөр болгох хүртэл зүү гаралт байхгүй болно.
  • Хэрэв та хүсвэл энэ зүүг үргэлж өндөрт үлдээж болно

Каскад хийхдээ Os, Os1 гэсэн хоёр тээглүүр ашиглаж болно. Os нь хурдан ургадаг цагуудад зориулагдсан бөгөөд Os1 нь удаан ургадаг цагуудад зориулагдсан болно. Энэ зүүг дараагийн ээлжийн бүртгэлийн өгөгдлийн зүү рүү залгаад энэ чипээс гарсан халалтыг дараагийн хэсэгт оруулна.

Дэлгэц рүү хандаж байна

Жишээ програмд би 8 байтын массив үүсгэсэн row_buffer . Байт бүр нь 8х8 хэмжээтэй дэлгэцийн нэг эгнээтэй тохирч байгаа бөгөөд 0 -р мөр нь доод, 7 -р эгнээ нь дээд талд байна. Мөр бүрийн хамгийн бага ач холбогдолтой хэсэг нь баруун талд, хамгийн чухал хэсэг нь зүүн талд байна. Дэлгэцийг өөрчлөх нь өгөгдлийн массивт шинэ утга бичихтэй адил хялбар бөгөөд тасалдлын үйлчилгээний горим нь дэлгэцийг сэргээж өгдөг.

Програмчлал

Програмчлалын талаар энд дэлгэрэнгүй авч үзэхгүй. DAPA програмчлалын кабель ашиглахгүй байхыг би танд анхааруулж байна, учир нь та чипийг 12 МГц давтамжтайгаар ажиллуулахад програмчлах боломжгүй болно. Бусад бүх стандарт програмистууд ажиллах ёстой (STK500, MKII, Dragon, Parallel/Serial programmers гэх мэт).

Ажиллаж байна

Чипийг програмчилсны дараа дэлгэц дээр "Сайн байна уу, Дэлхий!" Гэж гүйлгэх ёстой. LED матрицын үйлдлийн видео бичлэгийг энд оруулав. Би үүнийг дижитал камерынхаа видео функцээр хийсэн бөгөөд зохих видео эсвэл вэбкамераар хийгээгүй тул видеоны чанар нэлээд доогуур байна.

Алхам 5: Модульчлагдсан ойлголтууд

Модульчлагдсан ойлголтууд
Модульчлагдсан ойлголтууд
Модульчлагдсан ойлголтууд
Модульчлагдсан ойлголтууд
Модульчлагдсан ойлголтууд
Модульчлагдсан ойлголтууд
Модульчлагдсан ойлголтууд
Модульчлагдсан ойлголтууд

Энэ төслийг өргөтгөх боломжтой. Хязгаарлах цорын ганц хүчин зүйл бол таны цахилгаан хангамж хэр их гүйдэл өгөх боломжтой байх болно. (Нөгөө нэг бодит байдал бол хичнээн олон LED, бүртгэлийн унтраалга байгаа эсэх).

Математик

Би LED-ийг ойролцоогоор 15 мА (5V-1.8vDrop/220ohms = 14.5mA) дээр жолоодож байна. Энэ нь би mic2981 драйвераар (500mA/15mA = 33.3) 33 багана жолоодох боломжтой гэсэн үг юм. Үүнийг 8 -д хуваасан нь 4 ээлжийн бүртгэлийг хооронд нь холбох боломжийг бидэнд олгож байгааг бид харж байна. Мөн бүх 32 баганыг зүүнээс баруун тийш сунгах шаардлагагүй гэж үзье. Та оронд нь 8x32 массивтай ижил утастай 16x16 массив үүсгэж болно. Үүнийг 4 байтаар шилжүүлэх замаар шийдвэрлэх болно. Эхний хоёр нь 9 -р эгнээний leds руу шилжих болно, хоёр дахь байт нь эхний эгнээнд шилжинэ. Хоёр мөр хоёулаа эгнээний жолоочийн нэг зүүгээр үүсгэгдэх болно.

Каскад хэлбэрийн ээлжийн бүртгэлүүд

Ашигласан ээлжийн бүртгэлүүд нь каскадтай ээлжийн бүртгэл юм. Энэ нь өгөгдлийг шилжүүлэх үед хэт халалт нь Os зүү дээр гарч ирдэг гэсэн үг юм. Өөрчлөлтийн бүртгэлийн багцыг хооронд нь холбож болох тул өгөгдлийг зүүгээр холбож, шинэ чип тус бүрт 8 багана нэмж оруулах боломжтой болно. микроконтроллер. "Каскад" эффект нь эхний ээлжийн регистрийн Os нь секундын Data pin -тэй холбогдсон үед үүсдэг. Багана нэмэгдсэн тоог тусгахын тулд програмчлалыг өөрчлөх шаардлагатай болно. Мэдээлэл хадгалдаг буфер болон багана бүрийн мэдээллийг шилжүүлэх функцийг хоёуланг нь бодит баганын тоог тусгахын тулд шинэчлэх шаардлагатай байдаг.

Олон эгнээний жолооч нар

Мөр драйвер (mic2981) нь 32 баганыг жолоодох хангалттай гүйдэл үүсгэж чаддаг. Хэрэв та 32 -оос дээш багана хүсч байвал яах вэ? Илүү олон микроконтроллер зүү ашиглахгүйгээр олон эгнээний драйвер ашиглах боломжтой байх ёстой бөгөөд LED гэрлийг асаахад хангалттай гүйдэл үүсгэхийн тулд эгнээний драйверууд хэрэгтэй. Хэрэв та нэг удаа асаахаас илүү багана ашиглаж байгаа бол нэмэлт эгнээний драйверууд шаардлагатай гүйдлийг нийлүүлж чадна. Микроконтроллерийн ижил оролтын зүүг ашигладаг тул мөрүүдийг сканнердахыг өөрчлөх шаардлагагүй болно. Өөрөөр хэлбэл драйвер бүр 8x32 блокны мөрүүдийг хянадаг. 64 багана нь ижил ФИЗИК мөрийн байрлалтай байж болох ч бид эхний 32 баганын 8 мөрөнд нэг драйвер, хоёр дахь 32 баганын 8 мөрөнд хоёр дахь драйвер ашиглан эгнээний автобусыг хоёр хуваадаг. Үүний схемийг доор жишээ болгон үзүүлэв. Боломжит алдаа: 1. Ижил тооны багана бүхий олон эгнээний драйверуудыг бүү ашигла. Ингэх нь ээлжийн бүртгэлийн зүү тус бүр нэгээс олон LED хөтлөх болно гэсэн үг юм. Та эгнээ драйвер бүрт 8 резистор (3k3) байх ёстой, олон эгнээний драйверуудын нэг багц ажиллахгүй, учир нь хаалга солиход шаардлагатай гүйдлийг өгөхгүй.

Жишээлбэл

Би өмнө нь байгуулсан матрицыг өргөжүүлэхээр шийдсэн. Би нийт 15 ширхэг 7 эгнээ нэмж оруулсан бөгөөд энэ нь энэ протобоард дээр л багтах болно. Би Instructables -ийн "Let It Glow" нэртэй уралдааны талаар дөнгөж сая мэдлээ. Энэ талаар миний авсан бичлэг энд байна. Дахин нэг удаа хэлэхэд би видео бичлэг хийдэг байсан дижитал камер нь шударга ёсонд нийцэхгүй байна. Энэ нь хүний нүдэнд маш сайхан харагддаг, ялангуяа бүх LED гэрэл анивчдаг ч видеонд тийм ч сайн харагддаггүй. Үзээрэй: Энэхүү том дэлгэцийн эх кодыг доор оруулав.

Алхам 6: Дүгнэлт

Боломжит нэмэлтүүд

I2CI нь энэ загварт ашиглагдаагүй Хоёр утастай интерфэйс (I2C) тээглүүрийг орхисон. Эдгээр хоёр тээглүүрийг ашиглах хэд хэдэн сонирхолтой хэтийн төлөв бий. I2C EEPROM -ийг нэмснээр илүү том мессежийг хадгалах боломжтой болно. Mega8 -ийг I2C -тэй нийцтэй дэлгэцийн драйвер болгох програмчлалыг зохион бүтээх ирээдүй бас бий. Энэ нь I2C автобусаар дамжуулах замаар таны LED массив дээрх өгөгдлийг харуулах USB идэвхжүүлэгч төхөөрөмжтэй болох боломжийг нээж өгөх болно. Энэ нь мессежийг цэсийн системээр програмчлах боломжийг олгоно. Нэг нь дэлгэц дээр тэмдэгт бичдэг, нөгөө нь тэмдэгтүүдийг дэлгэц дээр гүйлгэдэг. Санаж байх ёстой хамгийн чухал зүйл бол гэрэлд харж буй зүйлээ өгөгдлийн массивт дүрслэх явдал юм. Хэрэв та өгөгдлийн массивыг өөрчлөх ухаалаг аргуудыг санал болговол гэрэл ч мөн адил өөрчлөгдөх болно. Үүнийг стерео бүхий дохионы анализатор болгон ашиглаж болно. Гүйлгэх ажлыг дээрээс доошоо эсвэл доороос дээш, бүр зүүнээс баруун тийш хийж болно. Амжилт хүсье хөгжилтэй байгаарай!

Алхам 7: дагах

Дагаж мөрдөх
Дагаж мөрдөх
Дагаж мөрдөх
Дагаж мөрдөх
Дагаж мөрдөх
Дагаж мөрдөх
Дагаж мөрдөх
Дагаж мөрдөх

Хянагчийн хэлхээг талхны самбар дээр хэдэн сар байлгасны дараа би энэ загварыг нэгтгэхийн тулд хэд хэдэн хэлхээний самбар зохион бүтээж, сийлсэн. Бүх зүйл маш сайн болсон, өөрөөр хийх байсан зүйл байхгүй гэж бодож байна.

Хэлхээний самбарын онцлог шинж чанарууд

  • Shift бүртгэлүүд нь тусдаа самбар дээр байрладаг бөгөөд дэлгэцийн хэмжээг нэмэгдүүлэхийн тулд гинжээр холбож болно.
  • Хяналтын самбар нь өөрийн гэсэн цахилгаан зохицуулагчтай тул үүнийг 7в-30в (9в батерей эсвэл 12в вандан хангамжийн аль аль нь миний хувьд сайн ажилладаг) тэжээлээр хангах боломжтой.
  • 6 зүү ISP толгойг оруулсан тул микроконтроллерийг самбараас салгахгүйгээр дахин програмчлах боломжтой.
  • I2C автобусыг ирээдүйд ашиглах боломжтой 4 зүү толгой. Үүнийг eeprom -д илүү их мессеж хадгалах эсвэл өөр нэг микроконтроллерийн удирддаг боолын төхөөрөмж болгоход ашиглаж болно (RSS -ийг хэн ч гэсэн тэмдэглэдэг үү?)
  • Түр зуурын 3 товчлуурыг загварт оруулсан болно. Ирээдүйд би эдгээр товчлуурыг ашиглахын тулд програмыг өөрчилж магадгүй юм.

Чуулган

Надад plexiglass, өнцгийн хаалт, 6х32 хэмжээтэй машины эрэг, самар, угаагч, мөн цоорхойг холбох зориулалттай цорго өг, би юу ч хийж чадна.

Let It Glow -ийн хоёр дахь шагнал!

Зөвлөмж болгож буй: