Агуулгын хүснэгт:
- Алхам 1: Бараа авах …
- Алхам 2: LED дэлгэцтэй шууд холбогдоно уу
- Алхам 3: Харуулах тэмдэгтийг зааж өгөх
- Алхам 4: ээлжийн бүртгэлээр оролт/гаралтын портуудыг хадгална
- Алхам 5: Дүгнэлт
Видео: Arduino болон Shift бүртгэлтэй цэг матрицын LED ашиглах: 5 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:06
Siemens DLO7135 цэг матрицын LED бол оптоэлектроникийн нэг гайхалтай хэсэг юм. Санах ой/декодер/драйвер бүхий 5x7 цэг матрицын ухаалаг дэлгэц (r) гэж тооцогддог. Энэхүү санах ойтой зэрэгцэн 96 тэмдэгтээс бүрдэх ASCII дэлгэцийг том, жижиг үсгүүд, суурилуулсан тэмдэгт үүсгэгч, мультиплексор, дөрвөн түвшний гэрлийн эрчимтэй, 5В хүчдэл дээр ажилладаг., мөн 16 долларын үнэтэй бол энэ нь мэдээжийн хэрэг байх ёстой. Орон нутгийн дуртай цахилгаан барааны дэлгүүрт өдрийн хагасыг өнгөрөөж байхдаа нэг ширхэгийг 1.50 доллараар дүүргэсэн хогийн савыг оллоо. Би дэлгүүрээс хэд хэд аваад гарлаа. Энэхүү зааварчилгаа нь AVR-д суурилсан Arduino ашиглан эдгээр цэг матрицын LED-тэй хэрхэн холбогдохыг харуулах ба тэмдэгтүүдийг харуулах болно. Хэрэв та миний өмнөх гарын авлагаас аль нэгийг нь уншсан бол би ихэнхдээ хамгийн энгийн шийдлийг дэмждэг гэсэн ойлголттой байж магадгүй, гэхдээ би зорилгоо үе үе биелүүлээгүй байсан ч та буруу зүйл хийхгүй байх.. Тиймээс, би энэ зааварчилгааны өөр нэг алхамыг хийж, эдгээр том, матрицтай LED матрицуудыг жолоодоход шаардлагатай оролт/гаралтын портуудын тоог хэрхэн бууруулах талаар танд үзүүлэх болно.
Алхам 1: Бараа авах …
Энэхүү богино хэмжээний төслийн хувьд танд дараахь зүйлс хэрэгтэй болно.
- Arduino эсвэл үүнтэй төстэй AVR дээр суурилсан микроконтроллер. Эдгээр зааврыг таны сонгосон MCU -д тохируулсан байж магадгүй юм.
- DLO7135 цэг матриц LED эсвэл ижил гэр бүлийн бусад
- 74LS164, 74C299 эсвэл 74HC594 гэх мэт 8 битийн ээлжийн бүртгэл
- талхны самбар
- холбох утас, утас таслагч гэх мэт.
Би гагнуурын төмрийг хэрэггүй, гэхдээ би үүнийг дараа нь ашигладаг. та түүнгүйгээр даван туулж чадна.
Алхам 2: LED дэлгэцтэй шууд холбогдоно уу
Жижиг хэсгүүдийнхээ жагсаалтыг гаргаж, LED -ийг ав. Талхны тавцан дээр бага зэрэг төвд байрлуулж, дунд шугамын ховилыг тавь. Холболтын эхний хэсэг нь LED -ийн зүүн талд хийгддэг. Pin 1 нь гурвалжин/сумаар заасны дагуу зүүн дээд талд байрладаг. Та LED -ээ уншиж эсвэл асааж байх үед зүү функцийг зураг дээр байрлуулсан болно.
Зүүн тал
Эерэг ба сөрөг Зүүн дээд талаас эхлэн Vcc -ийг 5V -д холбоно уу. Зүүн талыг бүхэлд нь дуусгах хүртэл самбараа ажиллуулахгүй байх нь зүйтэй болов уу; Хэрэв та утсыг цоолох жижиг нүхийг харахыг хүсч байвал LED нь гэрэлтэж болно. Зүүн доод GND -ийг газардуул. Дэнлүүний туршилт, чипийг идэвхжүүлэх ба бичих Зүүн талын дээд талаас 2, 3 дахь нь Ламп шалгах ба чип идэвхжүүлэх юм. Эдгээр нь хоёулаа сөрөг логик юм. Тэд 1 -ийн оронд логик 0 байх үед идэвхждэг гэсэн үг. Миний доорх зурган дээр дээгүүр нь баар байх ёстой, гэхдээ би тэдгээрийн аль нэгэнд нь тайлбар өгөөгүй байна. LT зүү идэвхжсэн үед цэг матрицын цэг бүрийг 1/7 гэрлээр гэрэлтүүлдэг. Энэ нь илүү пикселийн тест юм, гэхдээ LT зүүтэй холбоотой сонирхолтой зүйл бол санах ойд байгаа тэмдэгтүүдийг дарж бичдэггүй тул хэрэв та эдгээрээс хэд хэдийг нь хооронд нь холбосон бол (үзэх зай нь 20 фут), LT -ийг цус харвах болно. Үүнийг курсор шиг харагдуулж чадна. Үүнийг идэвхгүй болгохын тулд 5V -д холбоно уу. CE ба WR тээглүүр нь сөрөг логик бөгөөд энэ ухаалаг төхөөрөмжийг бичихийн тулд идэвхжүүлсэн байх шаардлагатай. Та эдгээр тээглүүрийг микроконтроллерийнхоо оролтын оролтын портуудаар удирдаж болно, гэхдээ бид энд санаа зовохгүй байна. Идэвхжүүлэхийн тулд тэдгээрийг зөвхөн газардуулгатай холбоно уу. Гэрэлтүүлгийн түвшин DLO гэрлийн LED дээр дөрвөн програмчлагдах гэрэлтүүлгийн түвшин байдаг.
- Хоосон
- 1/7 тод байдал
- 1/2 тод байдал
- Бүрэн тод байдал
BL1 HIGH ба BL0 LOW нь 1/2 тод байна. HIGH хоёулаа бүрэн гэрэлтдэг. Үүнийг дуртай зүйлдээ тохируулаарай. Дахин хэлэхэд, хэрэв танд оруулах оролтын портууд байгаа бөгөөд энэ нь танд чухал ач холбогдолтой бол үүнийг Arduino ашиглан хянах боломжтой бөгөөд энэ нь зүүн талыг хамарна. Хэрэв та самбартаа хүч авчрах юм бол LED гэрэл асах ёстой. Хэрэв та сонирхож байгаа бол гэрлийн хяналт, чийдэнгийн туршилтаар тоглож, түүнтэй танилцаарай.
Баруун тал
Баруун тал нь бүхэлдээ өгөгдлийн портуудаас бүрдэнэ. Баруун доод талд, 8 эсвэл D0 зүү нь 7 битийн тэмдэгт дэх хамгийн бага ач холбогдлыг илэрхийлнэ. Баруун дээд буланд 14 эсвэл D6 зүү нь хамгийн чухал битийг илэрхийлдэг. Энэ нь LED дээр бичихдээ ямар дарааллаар битээ сольж болохыг мэдэх боломжийг танд олгоно. Өгөгдөл оруулах портууд утастай болсны дараа Arduino эсвэл AVR дээр хоосон 7 дижитал I/O портыг олж холбоно уу. Та AVR дээрх өгөгдлийн гаралтын порт нь LED дээрх өгөгдлийн оролтын порт руу шилжихийг санаж байгаа байх. Та одоо ч гэсэн догдлолоосоо чичирч байна уу? Би гэдгээ мэдэж байна…
Алхам 3: Харуулах тэмдэгтийг зааж өгөх
Энэхүү CMOS LED дээр ашиглагддаг тэмдэгтүүдийн багц нь 0x20 (аравтын 32; орон зай) -аас эхэлж 0x7F (аравтын бутархай 127; LED дээр курсорын график хэлбэрээр дүрслэгдсэн боловч устгах) тоогоор төгсдөг ASCII юм.. Тиймээс, LED дэлгэцтэй байх нь өгөгдлийн гаралтын зүү дээр логик 1 эсвэл 0 -ийг дарахаас өөр утгагүй бөгөөд ихэвчлэн WR импульс дагалддаг, гэхдээ би энэ дасгалын талаар дээр хэлсэн. ямар портууд ямар боомт руу явдагийг санаж байна, тийм үү? Би PD [2..7] ба PB0 (Arduino-talk дээр 2-оос 8 хүртэлх тоон зүү) -ийг сонгосон. Би PD [0..1] -г ашиглахыг санал болгодоггүй, учир нь би үүнийг FreeBSD хайрцагт буцааж цуваа харилцаагаа зориулах болно, мөн Arduino болон бусад. Тэдгээр тээглүүрийг FTDI USB холбооны суваг руу нь зураглаарай, гэхдээ хэрэв та цуваа холболтыг эхлүүлэхгүй бол 0 ба 1 -р зүү ажиллах болно гэж "хэлдэг" боловч би эдгээр тээглүүрийг ердийн дижитал I/O болгон ашиглаж байгаагүй. Үнэн хэрэгтээ би PD0 болон PD1 -ийг ашиглах гэж оролдохдоо хоёр хоногийн турш асуудлыг засах гэж оролдсон бөгөөд тэдгээр нь үргэлж ДЭЭД байсан. * мөрөө хавчих* Товчлуур, түлхэгч, эрхий хурууны унтраалга, терминалаас оруулсан оролт гэх мэт гадаад оролттой байх нь сайн байх болов уу (миний ArduinoTerm одоогоор бэлэн цагт хараахан бэлэн болоогүй байна …). Сонголт чинийх. Одоогоор би LED -ээр хүссэн дүрээ авахын тулд кодыг хэрхэн яаж авахыг харуулах болно. Татаж авах эх код болон Makefile -ийг багтаасан зип файл байдаг бөгөөд LED тэмдэгтүүдийг хэвлэж харуулсан богино хэмжээний кино байдаг. Видео бичлэгийн чанар муу байгаад уучлаарай. Доорх код нь "Миний зааварт тавтай морилно уу!" Гэсэн мөрийг хэвлэв. дараа нь LED дэмждэг тэмдэгтүүдийг бүхэлд нь тойрон эргэлддэг.
DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "Миний зааварт тавтай морил!"; 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 -ийг доорх зип файлд оруулсан болно.
Алхам 4: ээлжийн бүртгэлээр оролт/гаралтын портуудыг хадгална
Тиймээс одоо манай микроконтроллер нь цэг матрицын LED руу өгөгдөл илгээх боломжтой боловч найман I/O порт ашиглаж байна. Энэ нь ATtiny-ийг 8-зүү DIP багцад ашиглахыг оруулдаггүй, тэр ч байтугай шинэ Arduino ATmega328p-тэй ч гэсэн нэг LED-д зориулсан маш олон оролт/гаралтын порт юм. Гэсэн хэдий ч ээлжийн бүртгэл гэж нэрлэгддэг IC -ийг ашиглан бид үүнийг даван туулж чадна. Араагаа "солих" мөч … Ээлжийн бүртгэлийг "ээлжийн" болон "бүртгэлийн" гэсэн хоёр үгийн талаар бодож үзвэл хамгийн сайн ойлгох болно. Шилжүүлэлт гэдэг нь өгөгдлийг бүртгэлээр хэрхэн дамжуулж байгааг илэрхийлдэг. Энд (манай Arduino болон микроконтроллеруудын нэгэн адил ерөнхийдөө) бүртгэл бол өгөгдөл хадгалдаг байршил юм. Энэ нь 1 эсвэл 0 -ээр илэрхийлэгдэх хоёр тогтвортой төлөвтэй "flip flops" нэртэй дижитал логик хэлхээний шугаман гинжийг хэрэгжүүлснээр хийдэг. Тиймээс найман флип флопыг нийлүүлснээр та барих чадвартай төхөөрөмжтэй болно. 8 битийн байтыг төлөөлж байна. Хэд хэдэн төрлийн флип болон ээлжийн регистрийн сэдвээр хэд хэдэн хувилбар байдаг (тоолуур, Жонсон тоолуурыг дээш доош харна уу), өгөгдөл хэрхэн үндэслэх талаар хэд хэдэн төрлийн ээлжийн бүртгэл байдаг. бүртгэлд хадгалагдаж, энэ өгөгдлийг хэрхэн гаргадаг. Үүн дээр үндэслэн дараахь ээлжийн бүртгэлийг авч үзье.
- Цуваа оролт / зэрэгцээ гарах (SIPO)
- Цуваа оролт / цуваа гаралт (SISO)
- Зэрэгцээ оролт/ цуваа гаралт (PISO)
- Зэрэгцээ оролт / зэрэгцээ гарах (PIPO)
Анхаарах зүйл бол SIPO ба PISO юм. SIPO бүртгэлүүд өгөгдлийг дараалан авдаг, өөрөөр хэлбэл, өмнөх оролтын битийг дараагийн флоп руу шилжүүлж, өгөгдлийг бүх оролтод нэгэн зэрэг илгээдэг. Энэ нь зэрэгцээ хөрвүүлэгч рүү сайхан цуваа болгодог. PISO ээлжийн регистрүүд нь эсрэгээрээ зэрэгцээ оролттой байдаг тул бүх битүүдийг нэг дор оруулдаг боловч нэг нэгээр нь гаргадаг. Энэ нь цуваа хөрвүүлэгчтэй сайхан параллель болж байгааг та таамаглаж байна. Оролт гаралтын тээглүүрийн тоог багасгахын тулд бидний ашиглахыг хүссэн ээлжийн бүртгэл нь бидэнд өмнө нь ашиглаж байсан 8 IO зүүг авч, тэдгээрийг хэрхэн яаж оруулахаа хянах шаардлагатай байж магадгүй гэж үзээд нэг, эсвэл магадгүй ганц хоёр болгож бууруулж болно. битүүд. Тиймээс бидний ашиглах ээлжийн бүртгэл нь Цуваа оролт / Зэрэгцээ гаралт юм. LED ба Arduino хоёрын хооронд ээлжийн бүртгэлийг холбоно уу. Ээлжийн бүртгэлийг ашиглах нь хялбар байдаг. Хамгийн хэцүү зүйл бол өгөгдлийн гаралтын тээглүүр, хоёртын оронтой тоонууд IC дээр хэрхэн дуусах, эцэст нь LED дээр хэрхэн харагдахыг төсөөлөх явдал юм. Үүнийг төлөвлөхөд хэсэг хугацаа зарцуулаарай. 1. 5 -р зүү 14 -т (баруун дээд талд) холбож, 7 -р зүүг (зүүн доод талд) доош нь буулгана.2. Ээлжийн бүртгэл нь хоёр цуваа оролттой боловч бид зөвхөн нэгийг ашиглах тул хоёр зүүг 5V3 руу холбоно уу. Бид тунгалаг зүү (бүх гаралтыг тэглэхэд ашигладаг) ашиглахгүй тул түүнийг хөвөх эсвэл 5V4 руу дайрна уу. Ээлжийн бүртгэлийн нэгийг залгахын тулд нэг дижитал IO портыг холбоно уу. Энэ бол цуваа оролтын зүү юм.5. Нэг дижитал IO портыг 8 -р зүү (баруун доод талд) холбоно уу. Энэ бол цагийн зүү.6. Q0 -ээс Q6 хүртэлх өгөгдлийн шугамаа холбоно уу. ASCII тэмдэгтийн багц нь зөвхөн долоон бит ашигладаг тул бид зөвхөн 7 бит ашиглаж байна. Би цуваа өгөгдлөө гаргахад PD2, цагны дохионд PD3 ашигласан. Өгөгдлийн хавчуургын хувьд би Q0 -ийг LED дээр LED -ээр холбож, үргэлжлүүлэн үргэлжлүүлэв (Q1 -ээс D5, Q2 -аас D4 гэх мэт). Бид өгөгдлийг цуваа хэлбэрээр илгээж байгаа тул бид илгээхийг хүсч буй тэмдэгт бүрийн хоёртын дүрслэлийг шалгаж, 1 ба 0 -ийг хараад битийг цуваа шугам дээр гаргах шаардлагатай болно. Би dotmatrixled.c эх сурвалжийн хоёр дахь хувилбарыг Makefile -ийн хамт доор оруулсан болно. Энэ нь тэмдэгтүүдийн дундуур эргэлдэж, бүх тэгш тэмдэгтүүдийг харуулдаг (хэрэв үсэг нь сондгой эсвэл тэгш байж магадгүй гэж бодож байгаа нь хачирхалтай байвал хоёртын дүрслэлийг түр зуур бодож үзээрэй). Бүх сондгой тэмдэгтүүдийг харуулах замаар үүнийг хэрхэн яаж эргүүлэхийг олж мэдэхийг хичээ. Та ээлжийн бүртгэл, цэг матрицын LED, Arduino хоёрын хоорондох холболтыг туршиж үзэх боломжтой. LED болон регистрийн хооронд өгөгдөл гарч ирэх үед хяналтаа нарийн тааруулах боломжийг олгодог хэд хэдэн хяналтын функцууд байдаг. Тиймээс … бид найман оролт/гаралтын портыг ашиглахаас хоёрыг л ашиглахаа больсон!
Алхам 5: Дүгнэлт
Энэхүү зааварчилгаанд би DLO7135 цэг матрицын LED, түүнийг хэрхэн яаж ажиллуулах талаар танилцуулсан. Би ээлжийн бүртгэл ашиглан шаардлагатай оролт гаралтын портын тоог найман байсныг зөвхөн хоёр болгож хэрхэн бууруулах талаар ярилцлаа. DLO7135 цэг матрицын LED -ийг хооронд нь холбож, маш сонирхолтой, сонирхолтой загваруудыг гаргаж болно. Энэхүү зааварчилгааг унших нь танд таалагдсан гэж найдаж байна! Хэрэв миний хийж чадах аливаа сайжруулалт, эсвэл танд өгөхийг хүсч буй ямар нэгэн сайжруулалт байвал миний сонсоход баяртай байна!
Зөвлөмж болгож буй:
Shift бүртгэлтэй 7 сегментийн дэлгэцийн тоолуур: 3 алхам
7 сегментийн дэлгэцийн тоолуур нь ээлжийн бүртгэлтэй: Хэрэв та ээлжийн бүртгэлийг хэрхэн ашиглах, кодоор хэрхэн ажиллах талаар дөнгөж сурч байгаа бол энэ бол төгс эхлэгч төсөл юм. Нэмж дурдахад, хэрэв та 7 сегментийн дэлгэцтэй танилцаж байгаа бол энэ төсөл маш сайн эхлэл болно. Энэ төслийг эхлүүлэхийн өмнө та дараах зүйлсийг хийх хэрэгтэй:
Arduino болон LED цэг матрицын дэлгэц ашиглан дижитал цаг: 6 алхам
Arduino ба Led Dot Matrix Display ашиглан дижитал цаг: Өнөө үед үйлдвэрлэгчид, хөгжүүлэгчид төслүүдийн загварчлалыг хурдан хөгжүүлэхийн тулд Arduino -г илүүд үздэг болсон. Arduino бол ашиглахад хялбар техник хангамж, програм хангамж дээр суурилсан нээлттэй эхийн электроникийн платформ юм. Arduino нь маш сайн хэрэглэгчидтэй бөгөөд энэ төсөлд
DIY LED цэг матрицын гүйлгэх дэлгэц нь Arduino ашиглан: 6 алхам
DIY LED цэг матриц гүйлгэх дэлгэц Arduino ашиглан: Сайн байна уу Энэ бол миний анхны заавар юм. Энэхүү зааварчилгаанд би DIY LED цэг матрицын гүйлгэх дэлгэцийг Arduino ашиглан MCU болгон хэрхэн хийхийг харуулах болно.Төмөр замын вокзал, автобусны буудал, гудамж болон бусад олон газруудад ийм төрлийн дэлгэц байрлуулна. Тэнд
CloudX микроконтроллер ашиглан Shift бүртгэлтэй 7 сегментийн дэлгэц: 5 алхам
CloudX микроконтроллер ашиглан Shift бүртгэлтэй 7 сегментийн дэлгэцтэй харилцах: Энэхүү төсөлд бид долоон сегментийн LED дэлгэцийг CloudX микроконтроллертой хэрхэн холбох талаархи хичээлийг нийтэлж байна. Долоон сегментийн дэлгэцийг олон тооны суулгагдсан систем, үйлдвэрлэлийн програмуудад ашигладаг бөгөөд гаралтын хүрээ нь тодорхой байдаг
Arduino болон Shift регистр ашиглан 48 X 8 гүйдэг LED матрицын дэлгэц: 6 алхам (зурагтай)
Arduino болон Shift регистрүүдийг ашиглан 48 X 8 гүйлгэх LED матрицын дэлгэц: Сайн байцгаана уу! Энэ бол миний анхны заавар бөгөөд Arduino Uno болон 74HC595 ээлжийн регистр ашиглан 48 х 8 програмчлагдах гүйлгэх LED матриц хийх тухай юм. Энэ бол миний Arduino хөгжүүлэх самбартай хийсэн анхны төсөл байсан. Энэ нь надад өгсөн сорилт байсан