विषयसूची:
- लक्ष्य
- अनुभव और कौशल
- अस्वीकरण और क्रेडिट
- चरण 1: भाग
- हिस्सों की सूची
- सामान्य भाग
- यहां प्रयुक्त विशिष्ट भाग
- भागों के संबंध में नोट्स
- चरण 2: मैट्रिक्स
- निर्माण विचार
- मैट्रिक्स का निर्माण
- जरूरी
- चरण 3: नियंत्रण हार्डवेयर
- नियंत्रण हार्डवेयर का निर्माण
- चरण 4: सॉफ्टवेयर
- चाल
- शिफ्ट रजिस्टर: कैसे करें
- प्रदर्शन को संबोधित करना
- प्रोग्रामिंग
- कार्रवाई में
- चरण 5: मॉड्यूलर अवधारणाएं
- गणित
- कैस्केडिंग शिफ्ट रजिस्टर
- एकाधिक पंक्ति ड्राइवर
- उदाहरण के लिए
- चरण 6: निष्कर्ष
- संभावित जोड़
- चरण 7: का पालन करें
- सर्किट बोर्ड की विशेषताएं
- सभा
वीडियो: शिफ्ट रजिस्टर का उपयोग कर एलईडी मैट्रिक्स: 7 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:23
यह निर्देश ऑनलाइन उपलब्ध अन्य की तुलना में अधिक संपूर्ण स्पष्टीकरण के लिए है। विशेष रूप से, यह एलईडी मार्की में उपलब्ध की तुलना में अधिक हार्डवेयर स्पष्टीकरण प्रदान करेगा, जो कि एलईडी 555 द्वारा निर्देश योग्य है।
लक्ष्य
यह निर्देशयोग्य शिफ्ट रजिस्टर और हाई साइड ड्राइवरों से जुड़ी अवधारणाओं को प्रस्तुत करता है। इन अवधारणाओं को एक 8x8 एलईडी मैट्रिक्स के साथ चित्रित करके मैं आशा करता हूं कि आपको अपनी परियोजना के आकार और लेआउट के अनुकूल और विस्तार करने के लिए आवश्यक उपकरण प्रदान करेगा।
अनुभव और कौशल
मैं इस परियोजना को मध्यम कठिनाई का दर्जा दूंगा:
- यदि आपके पास पहले से ही माइक्रोकंट्रोलर प्रोग्रामिंग और एल ई डी के साथ काम करने का अनुभव है, तो यह प्रोजेक्ट आपके लिए पूरा करने और रोशनी के बड़े सरणियों को स्केल करने के लिए काफी आसान होना चाहिए।
- यदि आप अभी माइक्रोकंट्रोलर के साथ शुरुआत कर रहे हैं और एक एलईडी या दो फ्लैश किए हैं तो आप हमारे मित्र गूगल की कुछ मदद से इस परियोजना को पूरा करने में सक्षम होना चाहिए।
- यदि आपके पास माइक्रोकंट्रोलर या प्रोग्रामिंग के साथ बहुत कम या कोई अनुभव नहीं है, तो शायद यह उस चीज़ से परे है जो आपको स्वयं में प्राप्त करना चाहिए। कुछ अन्य शुरुआती प्रोजेक्ट आज़माएं और जब आपके पास माइक्रोकंट्रोलर के लिए प्रोग्राम लिखने का कुछ और अनुभव हो तो वापस आएं।
अस्वीकरण और क्रेडिट
सबसे पहले, मैं इलेक्ट्रिकल इंजीनियर नहीं हूं। अगर आपको कुछ ऐसा दिखाई देता है जो गलत है, या सर्वोत्तम अभ्यास नहीं है, तो कृपया मुझे बताएं और मैं सुधार कर दूंगा।इसे अपने जोखिम पर करें! आपको पता होना चाहिए कि आप क्या कर रहे हैं या आप अपने कंप्यूटर, अपने माइक्रोकंट्रोलर और यहां तक कि खुद को भी नुकसान पहुंचा सकते हैं। मैंने इंटरनेट से बहुत कुछ सीखा है, खासकर मंचों से: https://www.avrfreaks.netमैं उपयोग कर रहा हूं एक फ़ॉन्ट सेट जो ks0108 यूनिवर्सल सी लाइब्रेरी के साथ आया था। इसे यहां देखें:https://en.radzio.dxp.pl/ks0108/
चरण 1: भाग
हिस्सों की सूची
सामान्य भाग
एल ई डी का 8x8 ग्रिड बनाने और उन्हें नियंत्रित करने के लिए आपको आवश्यकता होगी:
- आपकी पसंद के 64 एल ई डी
- एल ई डी के लिए 8 प्रतिरोध
- 1 कॉलम के लिए शिफ्ट रजिस्टर
- पंक्तियों के लिए 1 ड्राइवर सरणी
- ड्राइवर सरणी स्विच करने के लिए 8 प्रतिरोध
- 1 माइक्रोकंट्रोलर
- माइक्रोकंट्रोलर के लिए 1 घड़ी स्रोत
- 1 प्रोटोटाइप बोर्ड
- 1 बिजली की आपूर्ति
- तार बांधना
यहां प्रयुक्त विशिष्ट भाग
इस निर्देश के लिए मैंने निम्नलिखित का उपयोग किया:
- 64 हरे एलईडी (माउसर भाग #604-WP7113GD)
- एल ई डी के लिए 8 220ohm 1/4 वाट प्रतिरोधक (माउसर भाग #660-CFS1/4CT52R221J)
- 1 HEF4794 LED ड्राइवर शिफ्ट रजिस्टर के साथ (माउसर पार्ट #771-HEF4794BPN)
- 1 mic2981 हाई-वोल्टेज हाई-करंट सोर्स ड्राइवर ऐरे (डिजिके पार्ट #576-1158-ND)
- ड्राइवर सरणी स्विच करने के लिए 8 3.3kohm 1/4 वाट प्रतिरोधक (रेडियो झोंपड़ी भाग #271-1328)
- 1 Atmel ATmega8 माइक्रोकंट्रोलर (माउसर भाग #556-ATMEGA8-16PU)
- माइक्रोकंट्रोलर घड़ी स्रोत के लिए 1 12 मेगाहर्ट्ज क्रिस्टल (माउसर भाग #815-एबी-12-बी2)
- १ २२००-होल प्रोटोटाइप बोर्ड (रेडियो झोंपड़ी भाग #२७६-१४७)
- परिवर्तित एटीएक्स बिजली की आपूर्ति: यह निर्देश देखें
- सॉलिड कोर 22-awg हुक-अप वायर (रेडियो झोंपड़ी भाग #278-1221)
- सोल्डरलेस ब्रेडबोर्ड (रेडियो झोंपड़ी भाग # 276-169 (अब उपलब्ध नहीं है, कोशिश करें: 276-002)
- AVR ड्रैगन (माउसर भाग #556-ATAVRDRAGON)
- Ecros Technologies द्वारा ड्रैगन राइडर 500: यह निर्देश देखें
भागों के संबंध में नोट्स
रो और कॉलम ड्राइवर्स: शायद इस प्रोजेक्ट का सबसे कठिन हिस्सा रो और कॉलम ड्राइवरों को चुनना है। सबसे पहले, मुझे नहीं लगता कि एक मानक 74HC595 शिफ्ट रजिस्टर यहां एक अच्छा विचार है क्योंकि वे उस तरह के करंट को संभाल नहीं सकते हैं जिसे हम एल ई डी के माध्यम से भेजना चाहते हैं। यही कारण है कि मैंने HEF4794 ड्राइवर को चुना क्योंकि यह आसानी से वर्तमान वर्तमान को डुबो सकता है जब सभी 8 एलईडी एक पंक्ति में होते हैं। शिफ्ट रजिस्टर नीचे की तरफ मौजूद होता है (एलईडी का ग्राउंड पिन)। हमें एक पंक्ति चालक की आवश्यकता होगी जो एक साथ कई स्तंभों को स्ट्रिंग करने के लिए पर्याप्त धारा स्रोत कर सके। mic2981 500mA तक की आपूर्ति कर सकता है। एकमात्र अन्य भाग जो मैंने पाया है कि यह कार्य UDN2981 (डिजिके भाग # 620-1120-एनडी) है जो एक अलग निर्माता द्वारा एक ही हिस्सा है। कृपया मुझे एक संदेश भेजें यदि आप अन्य हाई-साइड ड्राइवरों के बारे में जानते हैं जो इस एप्लिकेशन में अच्छी तरह से काम करेंगे। एलईडी मैट्रिक्स: यह मैट्रिक्स 8x8 है क्योंकि पंक्ति और कॉलम ड्राइवरों में प्रत्येक में 8 पिन होते हैं। एक साथ कई मैट्रिक्स को स्ट्रिंग करके एक बड़ा एलईडी सरणी बनाया जा सकता है और "मॉड्यूलर अवधारणाओं" चरण में चर्चा की जाएगी। यदि आप एक बड़ी सरणी चाहते हैं, तो सभी आवश्यक भागों को एक बार में ऑर्डर करें। एक सुविधाजनक पैकेज में 8x8, 5x7 और 5x8 एलईडी मैट्रिसेस उपलब्ध हैं। इन्हें diy मैट्रिक्स के लिए स्थानापन्न करना आसान होना चाहिए। ईबे इनके लिए एक अच्छा स्रोत है। मूसर के पास कुछ 5x7 इकाइयाँ उपलब्ध हैं जैसे भाग #604-TA12-11GWA। मैंने सस्ते हरे एलईडी का इस्तेमाल किया क्योंकि मैं बस खेल रहा हूं और मज़े कर रहा हूं। उच्च-चमक, उच्च-दक्षता वाले एलईडी पर अधिक खर्च करने से आप अधिक शानदार दिखने वाले डिस्प्ले का उत्पादन कर सकते हैं… हालांकि यह मेरे लिए काफी अच्छा है!कंट्रोल हार्डवेयर: मैट्रिक्स को एटमेल एवीआर माइक्रोकंट्रोलर द्वारा नियंत्रित किया जाता है। इसके लिए आपको एक प्रोग्रामर की जरूरत पड़ेगी। क्योंकि मैं प्रोटोटाइप कर रहा हूं, मैं ड्रैगन राइडर 500 का उपयोग कर रहा हूं, जिसके लिए मैंने असेंबली और उपयोग दोनों निर्देश लिखे हैं। यह प्रोटोटाइप के लिए एक आसान उपकरण है और मैं इसकी अत्यधिक अनुशंसा करता हूं।
चरण 2: मैट्रिक्स
मैं इस परियोजना के लिए 5 मिमी एलईडी और रेडियो झोंपड़ी से एक प्रोटोटाइप बोर्ड का उपयोग करके अपने स्वयं के एलईडी मैट्रिक्स का निर्माण करूंगा। यह ध्यान दिया जाना चाहिए कि आप eBay सहित कई स्रोतों से 8x8 डॉट मैट्रिक्स एलईडी मॉड्यूल खरीद सकते हैं। उन्हें इस निर्देश के साथ ठीक काम करना चाहिए।
निर्माण विचार
संरेखण एल ई डी को संरेखित करने की आवश्यकता है ताकि वे एक ही कोण पर एक ही दिशा का सामना कर सकें। मैंने पाया कि मेरे लिए सबसे आसान विकल्प था कि मैं एलईडी फ्लश की बॉडी को बोर्ड पर रख दूं और इसे एक छोटे से टुकड़े के साथ plexiglass और एक क्लैंप के साथ पकड़ कर रखूं। मैंने उस पंक्ति से कुछ इंच की दूरी पर कुछ एल ई डी लगाए, जिस पर मैं यह सुनिश्चित करने के लिए काम कर रहा था कि प्लेक्सीग्लस प्रोटोटाइप बोर्ड के समानांतर था। पंक्तियों और स्तंभों को हमें प्रत्येक पंक्ति के साथ-साथ प्रत्येक कॉलम के लिए एक सामान्य कनेक्शन की आवश्यकता होती है। हमारी पंक्ति और स्तंभ चालक पसंद के कारण हमें पंक्ति से जुड़े एनोड (एलईडी की सकारात्मक लीड) और कॉलम से जुड़े कैथोड (एलईडी की नकारात्मक लीड) की आवश्यकता होती है। नियंत्रण तार इस प्रोटोटाइप के लिए मैं ठोस कोर (एकल कंडक्टर) हुक-अप तार का उपयोग कर रहा हूं। सोल्डरलेस ब्रेडबोर्ड के साथ इंटरफेस करना बहुत आसान होगा। अपनी परियोजना के अनुरूप एक अलग कनेक्टर प्रकार का उपयोग करने के लिए स्वतंत्र महसूस करें।
मैट्रिक्स का निर्माण
1. प्रोटोटाइप बोर्ड में LEDS का पहला कॉलम रखें।2। दोबारा जांचें कि प्रत्येक एलईडी के लिए आपकी ध्रुवीयता सही है, अगर आपको बाद में इसका एहसास होता है तो इसे ठीक करना बहुत मुश्किल होगा। मिलाप दोनों एलईडी को बोर्ड की ओर ले जाता है। यह सुनिश्चित करने के लिए जांचें कि वे सही ढंग से संरेखित हैं (अजीब कोणों पर नहीं) और कैथोड लीड को क्लिप करें। सुनिश्चित करें कि आप एनोड लीड को क्लिप नहीं करते हैं, हमें बाद में इसकी आवश्यकता होगी इसलिए इसे ऊपर की ओर इशारा करते हुए छोड़ दें।4। ठोस कोर तार के एक टुकड़े से इन्सुलेशन निकालें। तार के इस टुकड़े को बोर्ड स्तर पर प्रत्येक कैथोड में मिलाएं।
- मैंने इसे प्रत्येक छोर पर निपटाया और फिर वापस गया और प्रत्येक जंक्शन पर थोड़ा सा मिलाप जोड़ा।
- जब हम नियंत्रण तार जोड़ते हैं तो एक आसान इंटरफ़ेस बनाने के लिए यह तार आपकी पिछली एलईडी से आगे बढ़ना चाहिए।
5. भागों 1-4 को तब तक दोहराएं जब तक कि आपके पास सभी एल ई डी न हों और सभी कॉलम बसें सोल्डर न हो जाएं।6। एक पंक्ति बस बनाने के लिए, कई एनोड लीड को 90 डिग्री के कोण पर मोड़ें ताकि वे उसी पंक्ति में अन्य एनोड लीड को स्पर्श करें।
- इसकी विस्तृत तस्वीरें नीचे दी गई हैं।
- सावधान रहें कि ये शॉर्ट सर्किट पैदा करते हुए कॉलम बसों के संपर्क में न आएं।
7. प्रत्येक जंक्शन पर लीड को मिलाएं और अतिरिक्त एनोड लीड को क्लिप करें।
अंतिम एलईडी से चिपके हुए अंतिम एनोड को छोड़ दें। इसका उपयोग पंक्ति चालक नियंत्रण तारों को जोड़ने के लिए किया जाएगा।
8. भाग ६ और ७ को तब तक दोहराएं जब तक कि सभी पंक्तियों की बसों को मिलाप न कर दिया जाए। ९। नियंत्रण तार संलग्न करें।
- मैंने पंक्तियों के लिए लाल ठोस कोर तार और स्तंभों के लिए काले रंग का उपयोग किया।
- प्रत्येक स्तंभ के लिए एक तार और प्रत्येक पंक्ति के लिए एक तार कनेक्ट करें। यह प्रत्येक बस के अंत में आसानी से किया जा सकता है।
जरूरी
इस एलईडी मैट्रिक्स में कोई वर्तमान सीमित प्रतिरोधक नहीं है। यदि आप प्रतिरोधों के बिना इसका परीक्षण करते हैं तो आप शायद अपने एल ई डी को जला देंगे और यह सब काम व्यर्थ होगा।
चरण 3: नियंत्रण हार्डवेयर
हमें अपने एलईडी मैट्रिक्स के कॉलम और पंक्तियों को नियंत्रित करने की आवश्यकता है। मैट्रिक्स का निर्माण किया गया है ताकि एनोड्स (एलईडी का वोल्टेज पक्ष) पंक्तियों का निर्माण करें, और कैथोड (एलईडी का ग्राउंड साइड) कॉलम बनाते हैं। इसका मतलब है कि हमारे रो ड्राइवर को करंट सोर्स करने की जरूरत है और हमारे कॉलम ड्राइवर को इसे सिंक करने की जरूरत है। पिन को बचाने के लिए मैं कॉलम को नियंत्रित करने के लिए शिफ्ट रजिस्टर का उपयोग कर रहा हूं। इस तरह मैं केवल चार माइक्रोकंट्रोलर पिन के साथ लगभग असीमित संख्या में कॉलम नियंत्रित कर सकता हूं। केवल तीन का उपयोग करना संभव है यदि सक्षम आउटपुट पिन सीधे वोल्टेज से जुड़ा हो। मैंने HEF4794 LED ड्राइवर को शिफ्ट रजिस्टर के साथ चुना है। यह एक मानक 74HC595 की तुलना में एक बेहतर विकल्प है क्योंकि यह एक समय में सभी 8 एलईडी चालू होने पर वर्तमान में आसानी से डूब सकता है। उच्च तरफ (पंक्तियों के लिए वर्तमान स्रोत) मैं एक mic2981 का उपयोग कर रहा हूं। योजनाबद्ध एक UDN2981 दिखाता है, मेरा मानना है कि ये दोनों विनिमेय हैं। यह ड्राइवर 500mA तक का करंट स्रोत कर सकता है। क्योंकि हम एक बार में केवल 1 पंक्ति चला रहे हैं, यह विस्तार के लिए बहुत अवसर देता है, इस चिप के लिए 33 कॉलम तक (उस पर "मॉड्यूलर अवधारणाओं" चरण में अधिक)।
नियंत्रण हार्डवेयर का निर्माण
इस निर्देश के लिए मैंने अभी इस सर्किट को ब्रेडबोर्ड किया है। अधिक स्थायी समाधान के लिए आप या तो अपने स्वयं के सर्किट बोर्ड को खोदना चाहेंगे या प्रोटोटाइप बोर्ड का उपयोग करना चाहेंगे।1। पंक्ति चालक
- mic2981 (या UDN2981) को ब्रेडबोर्ड में रखें
- पिन 9 को वोल्टेज से कनेक्ट करें (यह योजनाबद्ध में भ्रमित करने वाला है)
- पिन 10 को ग्राउंड से कनेक्ट करें (यह योजनाबद्ध में भ्रमित करने वाला है)
- पिन से कनेक्ट होने वाले 3k3 प्रतिरोधक डालें 1-8
- ATmega8 (PD0-PD8) के पोर्ट D से 8 प्रतिरोधों से कनेक्ट करें
- एलईडी मैट्रिक्स के 8 पंक्ति नियंत्रण तारों को 11-18 पिन से कनेक्ट करें (ध्यान दें कि मैंने एलईडी की सबसे निचली पंक्ति को पिन 18 और उच्चतम पंक्ति को पिन 11 से जोड़ा है)।
2. कॉलम चालक
- हेफ़४७९४ को ब्रेडबोर्ड में रखें
- पिन 16 को वोल्टेज से कनेक्ट करें
- पिन 8 को जमीन से कनेक्ट करें
- 220 ओम प्रतिरोधों को पिन 4-7 और 11-14 से कनेक्ट करें।
- एलईडी मैट्रिक्स से 8 कॉलम नियंत्रण तारों को आपके द्वारा अभी जुड़े 8 प्रतिरोधों से कनेक्ट करें।
- पिन1 (लच) को ATmega8 के PC0 से कनेक्ट करें
- पिन2 (डेटा) को ATmega8 के PC1 से कनेक्ट करें
- पिन3 (घड़ी) को ATmega8 के PC2 से कनेक्ट करें
- पिन15 (आउटपुट सक्षम करें) को ATmega8 के PC3 से कनेक्ट करें
3. घड़ी क्रिस्टल
एक 12 मेगाहर्ट्ज क्रिस्टल कनेक्ट करें और कैपेसिटर लोड करें जैसा कि योजनाबद्ध में दिखाया गया है
4. आईएसपी
प्रोग्रामिंग हेडर को योजनाबद्ध में दिखाए अनुसार कनेक्ट करें
5. फ़िल्टरिंग कैपेसिटर और पुल-अप रोकनेवाला
- ATmega8 को आपूर्ति किए गए वोल्टेज को फ़िल्टर करना सबसे अच्छा है। ATmega8. के पिन 7 और 8 के बीच 0.1uf संधारित्र का उपयोग करें
- रीसेट पिन को तैरते हुए नहीं छोड़ा जाना चाहिए क्योंकि यह यादृच्छिक रीसेट का कारण बन सकता है। इसे वोल्टेज से जोड़ने के लिए एक रोकनेवाला का उपयोग करें, 1k के बारे में कुछ भी अच्छा होना चाहिए। मैंने योजनाबद्ध में 10k रोकनेवाला का उपयोग किया है।
6. सुनिश्चित करें कि आप +5v विनियमित शक्ति का उपयोग कर रहे हैं। नियामक को डिजाइन करना आपके ऊपर है।
चरण 4: सॉफ्टवेयर
चाल
हां, हर चीज की तरह, एक तरकीब है। चाल यह है कि एक समय में 8 से अधिक एल ई डी प्रकाशित नहीं होते हैं। इसके लिए अच्छी तरह से काम करने के लिए, थोड़ी सी चालाक प्रोग्रामिंग की जरूरत है। मैंने जो अवधारणा चुनी है वह टाइमर इंटरप्ट का उपयोग करना है। यहां बताया गया है कि सादे अंग्रेजी में डिस्प्ले इंटरप्ट कैसे काम करता है:
- टाइमर एक निश्चित बिंदु तक गिना जाता है, जब इंटरप्ट सेवा रूटीन तक पहुंच जाती है।
- यह दिनचर्या तय करती है कि प्रदर्शित होने वाली अगली पंक्ति कौन सी है।
- अगली पंक्ति की जानकारी को बफ़र से देखा जाता है और कॉलम ड्राइवर में स्थानांतरित कर दिया जाता है (यह जानकारी "लैच्ड" नहीं है इसलिए यह अभी तक प्रदर्शित नहीं हुई है)।
- पंक्ति चालक बंद है, वर्तमान में कोई एलईडी नहीं जलाई जाती है।
- हम दो चरणों में वर्तमान जानकारी को प्रदर्शित करने के लिए स्थानांतरित की गई जानकारी में कॉलम ड्राइवर "लैच्ड" बनाते हैं।
- पंक्ति चालक तब हमारे द्वारा प्रदर्शित की जा रही नई पंक्ति को करंट प्रदान करता है।
- इंटरप्ट सर्विस रूटीन समाप्त हो जाता है और प्रोग्राम अगले इंटरप्ट तक सामान्य प्रवाह पर लौट आता है।
ये बहुत जल्दी होता है। हर 1 mSec में रुकावट डाली जाती है। इसका मतलब है कि हम पूरे डिस्प्ले को हर 8 mSec में एक बार रिफ्रेश कर रहे हैं। इसका मतलब है कि डिस्प्ले रेट करीब 125Hz है। चमक के संबंध में कुछ चिंता है क्योंकि हम अनिवार्य रूप से एल ई डी को 1/8 कर्तव्य चक्र पर चला रहे हैं (वे उस समय के 7/8 बंद हैं)। मेरे मामले में मुझे पर्याप्त रूप से चमकदार डिस्प्ले मिलता है जिसमें कोई दिखाई नहीं देता है। पूर्ण एलईडी डिस्प्ले को एक सरणी में मैप किया जाता है। इंटरप्ट के बीच में ऐरे को बदला जा सकता है (परमाणुता का ध्यान रखें) और अगले इंटरप्ट के दौरान डिस्प्ले पर दिखाई देगा। AVR माइक्रोकंट्रोलर के लिए कोड लिखने और शिफ्ट रजिस्टरों से बात करने के लिए कोड कैसे लिखना है, इसके दायरे से बाहर है इस निर्देशयोग्य का। मैंने स्रोत कोड (सी में लिखा और एवीआर-जीसीसी के साथ संकलित) के साथ-साथ हेक्स फ़ाइल को सीधे प्रोग्राम में शामिल किया है। मैंने सभी कोड पर टिप्पणी कर दी है ताकि आप शिफ्ट रजिस्टर में डेटा कैसे प्राप्त करें और पंक्ति रीफ्रेश कैसे काम कर रहा है, इस बारे में किसी भी प्रश्न को साफ़ करने के लिए इसका उपयोग करने में सक्षम होना चाहिए। कृपया ध्यान दें कि मैं एक फ़ॉन्ट फ़ाइल का उपयोग कर रहा हूं जो आया था ks0108 यूनिवर्सल सी लाइब्रेरी। वह पुस्तकालय यहां पाया जा सकता है:
शिफ्ट रजिस्टर: कैसे करें
मैंने शिफ्ट रजिस्टरों के साथ प्रोग्राम करने के तरीके के बारे में कुछ जोड़ने का फैसला किया है। मुझे उम्मीद है कि इससे उन लोगों के लिए चीजें साफ हो गई हैं जिन्होंने पहले उनके साथ काम नहीं किया है। वे क्या करते हैं शिफ्ट रजिस्टर एक तार से एक संकेत लेते हैं और उस जानकारी को कई अलग-अलग पिनों में आउटपुट करते हैं। इस मामले में, एक डेटा वायर होता है जो डेटा लेता है और 8 पिन जो डेटा प्राप्त होने के आधार पर नियंत्रित होते हैं। चीजों को बेहतर बनाने के लिए, प्रत्येक शिफ्ट रजिस्टर के लिए एक आउटपिन होता है जिसे दूसरे शिफ्ट रजिस्टर के इनपुट पिन से जोड़ा जा सकता है। इसे कैस्केडिंग कहा जाता है और विस्तार क्षमता को लगभग असीमित संभावना बनाता है। कंट्रोल पिनशिफ्ट रजिस्टरों में 4 नियंत्रण पिन होते हैं:
- कुंडी - यह पिन शिफ्ट रजिस्टर को बताता है कि नए दर्ज किए गए डेटा पर स्विच करने का समय कब है
- डेटा - 1 और 0 का शिफ्ट रजिस्टर बताता है कि इस पिन पर कौन से पिन सक्रिय करने हैं।
- घड़ी - यह माइक्रोकंट्रोलर से भेजी गई एक पल्स है जो शिफ्ट रजिस्टर को डेटा रीडिंग लेने और संचार प्रक्रिया में अगले चरण पर जाने के लिए कहती है
- आउटपुट सक्षम करें - यह एक चालू/बंद स्विच है, उच्च = चालू, कम = बंद
इसे अपनी बोली लगाने के लिए: यहां उपरोक्त नियंत्रण पिन के संचालन में एक क्रैश कोर्स है: चरण 1: कुंडी, डेटा और घड़ी कम सेट करें
लैच लो सेट करना उस शिफ्ट रजिस्टर को बताता है जिसे हम लिखने जा रहे हैं।
चरण 2: डेटा पिन को उस तर्क मान पर सेट करें जिसे आप शिफ्ट रजिस्टर में भेजना चाहते हैंचरण 3: क्लॉक पिन को उच्च सेट करें, शिफ्ट रजिस्टर को वर्तमान डेटा पिन मान में पढ़ने के लिए कहें
वर्तमान में शिफ्ट रजिस्टर में अन्य सभी मान 1 स्थान से आगे बढ़ जाएंगे, जिससे डेटा पिन के वर्तमान तर्क मान के लिए जगह बन जाएगी।
चरण 4: क्लॉक पिन लो सेट करें और चरण 2 और 3 को तब तक दोहराएं जब तक कि सभी डेटा शिफ्ट रजिस्टर में नहीं भेज दिया जाता।
अगले डेटा मान में बदलने से पहले क्लॉक पिन को कम सेट किया जाना चाहिए। इस पिन को उच्च और निम्न के बीच टॉगल करना "क्लॉक पल्स" बनाता है, शिफ्ट रजिस्टर को यह जानने की जरूरत है कि प्रक्रिया में अगले चरण पर कब जाना है।
चरण 5: कुंडी को ऊंचा सेट करें
यह शिफ्ट रजिस्टर को उन सभी डेटा को लेने के लिए कहता है जिन्हें स्थानांतरित कर दिया गया है और आउटपुट पिन को सक्रिय करने के लिए इसका इस्तेमाल करते हैं। इसका मतलब है कि आप डेटा नहीं देख पाएंगे क्योंकि यह स्थानांतरित हो रहा है; आउटपुट पिन में तब तक कोई बदलाव नहीं होगा जब तक कि कुंडी उच्च सेट न हो जाए।
चरण 6: सक्षम आउटपुट उच्च सेट करें
- जब तक सक्षम आउटपुट को उच्च पर सेट नहीं किया जाता है, तब तक कोई पिन आउटपुट नहीं होगा, इससे कोई फर्क नहीं पड़ता कि अन्य तीन नियंत्रण पिनों के साथ क्या हो रहा है।
- आप चाहें तो इस पिन को हमेशा ऊंचा छोड़ा जा सकता है
कैस्केडिंग दो पिन हैं जिनका उपयोग आप कैस्केडिंग के लिए कर सकते हैं, ओएस और ओएस1। Os तेजी से बढ़ने वाली घड़ियों के लिए है और Os1 धीमी गति से बढ़ने वाली घड़ियों के लिए है। इस पिन को अगली शिफ्ट रजिस्टर के डेटा पिन से जोड़ दें और इस चिप से ओवरफ्लो अगले में दर्ज हो जाएगा। अपडेट का अंत
प्रदर्शन को संबोधित करना
उदाहरण कार्यक्रम में मैंने पंक्ति_बफर नामक 8 बाइट्स की एक सरणी बनाई है। प्रत्येक बाइट 8x8 डिस्प्ले की एक पंक्ति से मेल खाती है, पंक्ति 0 नीचे है और पंक्ति 7 शीर्ष है। प्रत्येक पंक्ति का कम से कम महत्वपूर्ण बिट दाईं ओर है, सबसे महत्वपूर्ण बिट बाईं ओर है। डिस्प्ले को बदलना उस डेटा ऐरे में एक नया मान लिखना जितना आसान है, इंटरप्ट सर्विस रूटीन डिस्प्ले को रीफ्रेश करने का ख्याल रखता है।
प्रोग्रामिंग
प्रोग्रामिंग पर यहां विस्तार से चर्चा नहीं की जाएगी। मैं आपको चेतावनी दूंगा कि आप डीएपीए प्रोग्रामिंग केबल का उपयोग न करें क्योंकि मेरा मानना है कि 12 मेगाहर्ट्ज पर चलने के बाद आप चिप को प्रोग्राम करने में असमर्थ होंगे। अन्य सभी मानक प्रोग्रामर को काम करना चाहिए (STK500, MKII, Dragon, Parallel/Serial Programmer, आदि)। फ़्यूज़: फ़्यूज़ को 12MHz क्रिस्टलफ़्यूज़ का उपयोग करने के लिए प्रोग्राम करना सुनिश्चित करें: 0xC9lfuse: 0xEF
कार्रवाई में
एक बार जब आप चिप को प्रोग्राम कर लेते हैं तो डिस्प्ले को "हैलो वर्ल्ड!" स्क्रॉल करना चाहिए। यहां कार्रवाई में एलईडी मैट्रिक्स का एक वीडियो है। वीडियो की गुणवत्ता बहुत कम है क्योंकि मैंने इसे अपने डिजिटल कैमरे की वीडियो सुविधा के साथ बनाया है न कि एक उचित वीडियो या वेब कैमरा के साथ।
चरण 5: मॉड्यूलर अवधारणाएं
यह प्रोजेक्ट स्केलेबल है। एकमात्र सच्चा सीमित कारक यह होगा कि आपकी बिजली आपूर्ति कितनी चालू कर सकती है। (दूसरी वास्तविकता यह है कि आपके पास कितने एल ई डी और रजिस्टर शिफ्टर्स उपलब्ध हैं)।
गणित
मैं लगभग 15mA (5V-1.8vDrop/220ohms=14.5mA) पर एलईडी चला रहा हूं। इसका मतलब है कि मैं mic2981 ड्राइवर (500mA/15mA=33.3) के साथ 33 कॉलम तक ड्राइव कर सकता हूं। 8 से विभाजित करके हम देख सकते हैं कि यह हमें 4 शिफ्ट रजिस्टरों को एक साथ जोड़ने की अनुमति देता है। यह भी विचार करें कि आपको बाएं से दाएं सभी 32 स्तंभों को फैलाने की आवश्यकता नहीं है। आप इसके बजाय एक 16x16 सरणी बना सकते हैं जो उसी तरह से वायर्ड होती है जैसे आप 8x32 सरणी में करते हैं। इसे 4 बाइट्स में शिफ्ट करके संबोधित किया जाएगा…। पहले दो नौवीं पंक्ति के लिए सभी तरह से एल ई डी में स्थानांतरित हो जाएंगे, दूसरे दो बाइट्स पहली पंक्ति में स्थानांतरित हो जाएंगे। दोनों पंक्तियों को पंक्ति चालक पर एक पिन द्वारा सोर्स किया जाएगा।
कैस्केडिंग शिफ्ट रजिस्टर
उपयोग किए गए शिफ्ट रजिस्टर कैस्केडिंग शिफ्ट रजिस्टर हैं। इसका मतलब है कि जब आप डेटा में बदलाव करते हैं, तो ओएस पिन पर ओवरफ्लो दिखाई देता है। शिफ्ट रजिस्टर के एक सेट के रूप में बहुत उपयोगी हो जाता है, ओएस पिन को डेटा पिन से जोड़ा जा सकता है, प्रत्येक नई चिप के साथ 8 कॉलम जोड़ सकते हैं। सभी शिफ्ट रजिस्टर एक ही कुंडी, घड़ी से जुड़ेंगे, और आउटपुट पिन को सक्षम करेंगे माइक्रोकंट्रोलर। "कैस्केडिंग" प्रभाव तब बनाया जाता है जब पहली शिफ्ट रजिस्टर का ओएस दूसरे के डेटा पिन से जुड़ा होता है। कॉलम की बढ़ी हुई संख्या को दर्शाने के लिए प्रोग्रामिंग को बदलना होगा। दोनों बफ़र जो सूचनाओं को संग्रहीत करते हैं और फ़ंक्शन जो प्रत्येक कॉलम के लिए जानकारी को स्थानांतरित करते हैं, को स्तंभों की वास्तविक संख्या को प्रतिबिंबित करने के लिए अद्यतन करने की आवश्यकता होती है। इसका एक योजनाबद्ध उदाहरण के रूप में नीचे दिया गया है।
एकाधिक पंक्ति ड्राइवर
रो ड्राइवर (mic2981) 32 कॉलम चलाने के लिए पर्याप्त करंट लगा सकता है। यदि आप 32 से अधिक कॉलम चाहते हैं तो क्या होगा? अधिक माइक्रोकंट्रोलर पिन का उपयोग किए बिना कई पंक्ति ड्राइवरों का उपयोग करना संभव होना चाहिए। हमें एलईडी को प्रकाश में लाने के लिए पर्याप्त वर्तमान स्रोत के लिए पंक्ति ड्राइवरों की आवश्यकता है।यदि आप एक समय में प्रकाश की तुलना में अधिक स्तंभों का उपयोग कर रहे हैं, तो अतिरिक्त पंक्ति चालक आवश्यक धारा की आपूर्ति कर सकते हैं। माइक्रोकंट्रोलर से समान इनपुट पिन का उपयोग किया जाता है, इसलिए पंक्तियों की स्कैनिंग को बदलने की कोई आवश्यकता नहीं है। दूसरे शब्दों में, प्रत्येक ड्राइवर 8x32 ब्लॉक के लिए पंक्तियों को नियंत्रित करता है। भले ही 64 कॉलम में एक ही PHYSICAL पंक्ति प्लेसमेंट हो, हम पंक्ति बसों को दो में विभाजित करते हैं, पहले 32 कॉलम की 8 पंक्तियों के लिए एक ड्राइवर का उपयोग करते हुए, और दूसरे 32 कॉलम की 8 पंक्तियों के लिए दूसरे ड्राइवर का उपयोग करते हैं। इसका एक योजनाबद्ध उदाहरण के रूप में नीचे दिया गया है। संभावित गलतियाँ: १। समान संख्या में कॉलम वाले एकाधिक पंक्ति ड्राइवरों का उपयोग न करें। ऐसा करने का मतलब होगा कि प्रत्येक शिफ्ट रजिस्टर पिन एक समय में एक से अधिक एलईडी चला रहा होगा।2। आपके पास प्रत्येक पंक्ति चालक के लिए 8 प्रतिरोधों (3k3) का एक सेट होना चाहिए, एकाधिक पंक्ति चालकों के लिए एक सेट काम नहीं करेगा क्योंकि यह गेट्स को स्विच करने के लिए आवश्यक करंट प्रदान नहीं करेगा।
उदाहरण के लिए
मैंने पहले बनाए गए मैट्रिक्स पर विस्तार करने का फैसला किया। मैंने कुल 15 के लिए 7 और पंक्तियाँ जोड़ी हैं क्योंकि मैं इस प्रोटोबार्ड पर फिट हो सकता हूँ। मुझे अभी एक प्रतियोगिता के बारे में भी पता चला है जिसे इंस्ट्रक्शंस "लेट इट ग्लो" नाम से कर रहे हैं। यहाँ उस पर मेरे विचार का एक वीडियो है। एक बार फिर, मैं जिस डिजिटल कैमरे से वीडियो लेता था, वह न्याय नहीं करता है। यह मानव आंखों के लिए बहुत अच्छा लगता है, खासकर जहां सभी एल ई डी फ्लैश करते हैं, लेकिन वीडियो में लगभग उतना अच्छा नहीं दिखता है। आनंद लें: इस बड़े डिस्प्ले के लिए सोर्स कोड नीचे शामिल है।
चरण 6: निष्कर्ष
संभावित जोड़
I2CI ने इस डिज़ाइन में दो वायर इंटरफ़ेस (I2C) पिनों को अप्रयुक्त छोड़ दिया है। कई दिलचस्प संभावनाएं हैं जो इन दो पिनों का उपयोग कर सकती हैं। I2C EEPROM को जोड़ने से बहुत बड़े संदेशों के भंडारण की अनुमति मिलेगी। मेगा8 को I2C संगत डिस्प्ले ड्राइवर में बदलने के लिए प्रोग्रामिंग डिजाइन करने की भी संभावना है। यह आपके एलईडी सरणी पर डेटा प्रदर्शित करने के लिए I2C बस के ऊपर से गुजरने के लिए USB सक्षम डिवाइस होने की संभावना को खोलेगा। इनपुट कई पिन बचे हैं जिनका उपयोग बटन या IR रिसीवर के लिए किया जा सकता है। यह मेनू सिस्टम के माध्यम से संदेशों को प्रोग्राम करने की अनुमति देगा। इस निर्देश के लिए मैंने केवल कुछ प्रदर्शन कार्यों को लागू किया है। एक सिर्फ डिस्प्ले पर कैरेक्टर लिखता है, दूसरा डिस्प्ले पर कैरेक्टर को स्क्रॉल करता है। याद रखने वाली महत्वपूर्ण बात यह है कि जो आप रोशनी में देखते हैं वह डेटा सरणी में दर्शाया जाता है। यदि आप डेटा सरणी को बदलने के लिए क्लीवर तरीके के साथ आते हैं, तो रोशनी उसी तरह बदल जाएगी। कुछ टेंटलाइजिंग अवसरों में कॉलम से एक रेखांकन मीटर बनाना शामिल है। यह एक स्टीरियो के साथ सिग्नल विश्लेषक के रूप में इस्तेमाल किया जा सकता है। स्क्रॉलिंग को ऊपर से नीचे या नीचे से ऊपर, यहां तक कि बाएं से दाएं भी लागू किया जा सकता है। गुड लक मजे करो!
चरण 7: का पालन करें
कंट्रोलर सर्किट को महीनों तक ब्रेडबोर्ड में बैठने देने के बाद मैंने आखिरकार इस प्रोटोटाइप को एक साथ रखने के लिए कुछ सर्किट बोर्ड तैयार किए और खोदे। सब कुछ बहुत अच्छा रहा, मुझे नहीं लगता कि ऐसा कुछ है जो मैंने अलग तरीके से किया होता।
सर्किट बोर्ड की विशेषताएं
- शिफ्ट रजिस्टर अलग-अलग बोर्डों पर होते हैं जिन्हें डिस्प्ले के आकार को बढ़ाने के लिए एक साथ डेज़ी जंजीर किया जा सकता है।
- नियंत्रक बोर्ड का अपना बिजली नियामक है, इसलिए इसे किसी भी शक्ति स्रोत द्वारा चलाया जा सकता है जो 7v-30v (9v बैटरी या 12v बेंच आपूर्ति दोनों मेरे लिए ठीक काम करता है) प्रदान करता है।
- 6 पिन आईएसपी हेडर शामिल है ताकि माइक्रोकंट्रोलर को बोर्ड से हटाए बिना फिर से प्रोग्राम किया जा सके।
- I2C बस के भविष्य में उपयोग के लिए 4-पिन हेडर उपलब्ध है। इसका उपयोग eeprom के लिए अधिक संदेशों को संग्रहीत करने के लिए या यहां तक कि इसे किसी अन्य माइक्रोकंट्रोलर (RSS टिकर किसी को भी?)
- डिजाइन में 3 क्षणिक पुश बटन शामिल हैं। मैं इन बटनों के उपयोग को शामिल करने के लिए भविष्य में फर्मवेयर में बदलाव कर सकता हूं।
सभा
मुझे plexiglass, कोण ब्रैकेट, 6x32 मशीन स्क्रू, नट और वाशर, साथ ही थ्रेड होल के लिए एक टैप सेट दें और मैं कुछ भी बना सकता हूं।
लेट इट ग्लो में दूसरा पुरस्कार!
सिफारिश की:
शिफ्ट रजिस्टर के साथ 7 सेगमेंट डिस्प्ले काउंटर: 3 चरण
शिफ्ट रजिस्टर के साथ 7 सेगमेंट डिस्प्ले काउंटर: यह एकदम सही शुरुआती प्रोजेक्ट है यदि आप अभी सीख रहे हैं कि शिफ्ट रजिस्टर का उपयोग कैसे करें और यह कोड के साथ कैसे काम करता है। इसके अतिरिक्त, यदि आप 7 सेगमेंट डिस्प्ले के लिए नए हैं तो यह प्रोजेक्ट एक शानदार शुरुआत है। इस परियोजना को शुरू करने से पहले सुनिश्चित करें कि
Arduino CD4015B शिफ्ट रजिस्टर के साथ: 3 चरण
Arduino CD4015B शिफ्ट रजिस्टर के साथ: CD4015B सीरियल इनपुट और समानांतर आउटपुट के साथ एक डुअल 4 स्टेज स्टेटिक शिफ्ट रजिस्टर है। यह एक 16 पिन आईसी है और इसमें स्वतंत्र डेटा, घड़ी और रीसेट इनपुट के साथ दो समान, 4-चरण रजिस्टर शामिल हैं। प्रत्येक सेंट के इनपुट पर मौजूद तर्क स्तर
16 एल ई डी ड्राइव करने के लिए 2 शिफ्ट रजिस्टर (74HC595) का उपयोग करना: 9 कदम
16 एलईडी ड्राइव करने के लिए 2 शिफ्ट रजिस्टर (74HC595) का उपयोग करना: यह सर्किट 2 शिफ्ट रजिस्टर (74HC595) का उपयोग करेगा। शिफ्ट रजिस्टर 16 एलईडी के आउटपुट के रूप में ड्राइव करेगा। प्रत्येक शिफ्ट रजिस्टर 8 एलईडी चलाएगा। शिफ्ट रजिस्टरों को तार दिया जाता है ताकि प्रत्येक शिफ्ट रजिस्टर आउटपुट दूसरे के डुप्लिकेट की तरह दिखाई दे
CloudX माइक्रोकंट्रोलर का उपयोग करके शिफ्ट रजिस्टर के साथ 7-सेगमेंट डिस्प्ले को इंटरफेस करना: 5 कदम
क्लाउडएक्स माइक्रोकंट्रोलर का उपयोग करते हुए शिफ्ट रजिस्टर के साथ 7-सेगमेंट डिस्प्ले को इंटरफेस करना: इस प्रोजेक्ट में हम क्लाउडएक्स माइक्रोकंट्रोलर के साथ सात सेगमेंट एलईडी डिस्प्ले को इंटरफेस करने के तरीके पर एक ट्यूटोरियल प्रकाशित कर रहे हैं। कई एम्बेडेड सिस्टम और औद्योगिक अनुप्रयोगों में सात खंड डिस्प्ले का उपयोग किया जाता है जहां दिखाए जाने वाले आउटपुट की सीमा ज्ञात है
74HC164 शिफ्ट रजिस्टर और आपका Arduino: 9 कदम
74HC164 Shift Register और Your Arduino: Shift Registers डिजिटल लॉजिक का एक बहुत ही महत्वपूर्ण हिस्सा हैं, वे समानांतर और सीरियल दुनिया के बीच गोंद के रूप में कार्य करते हैं। वे वायर काउंट को कम करते हैं, पिन का उपयोग करते हैं और यहां तक कि अपने डेटा को स्टोर करने में सक्षम होने से आपके सीपीयू को लोड करने में मदद करते हैं। वे अलग-अलग आते हैं