विषयसूची:

ATtiny85 माइक्रोकंट्रोलर के साथ MAX7219 संचालित एलईडी मैट्रिक्स 8x8 को कैसे इंटरफ़ेस करें: 7 कदम
ATtiny85 माइक्रोकंट्रोलर के साथ MAX7219 संचालित एलईडी मैट्रिक्स 8x8 को कैसे इंटरफ़ेस करें: 7 कदम

वीडियो: ATtiny85 माइक्रोकंट्रोलर के साथ MAX7219 संचालित एलईडी मैट्रिक्स 8x8 को कैसे इंटरफ़ेस करें: 7 कदम

वीडियो: ATtiny85 माइक्रोकंट्रोलर के साथ MAX7219 संचालित एलईडी मैट्रिक्स 8x8 को कैसे इंटरफ़ेस करें: 7 कदम
वीडियो: Lesson 15 MAX7219 LED Dot Matrix Module 2024, जुलाई
Anonim
ATtiny85 माइक्रोकंट्रोलर के साथ MAX7219 संचालित एलईडी मैट्रिक्स 8x8 को कैसे इंटरफ़ेस करें?
ATtiny85 माइक्रोकंट्रोलर के साथ MAX7219 संचालित एलईडी मैट्रिक्स 8x8 को कैसे इंटरफ़ेस करें?

MAX7219 नियंत्रक मैक्सिम इंटीग्रेटेड द्वारा निर्मित है, कॉम्पैक्ट, सीरियल इनपुट / आउटपुट कॉमन-कैथोड डिस्प्ले ड्राइवर है जो माइक्रोकंट्रोलर को 64 अलग-अलग एल ई डी, 7-सेगमेंट न्यूमेरिक एलईडी डिस्प्ले 8 अंकों तक, बार-ग्राफ डिस्प्ले आदि के लिए इंटरफेस कर सकता है। -चिप एक बीसीडी कोड-बी डिकोडर, मल्टीप्लेक्स स्कैन सर्किटरी, सेगमेंट और डिजिट ड्राइवर और एक 8×8 स्थिर रैम है जो प्रत्येक अंक को संग्रहीत करता है।

MAX7219 मॉड्यूल माइक्रोकंट्रोलर जैसे ATtiny85, या, हमारे मामले में टिनसौर बोर्ड के साथ उपयोग करने के लिए बहुत सुविधाजनक हैं।

चरण 1: हार्डवेयर

हार्डवेयर
हार्डवेयर
हार्डवेयर
हार्डवेयर

MAX7219 मॉड्यूल आमतौर पर इस तरह दिखते हैं। उनके पास एक तरफ इनपुट बस और दूसरी तरफ आउटपुट बस है। यह आपको अधिक जटिल सेटअप बनाने के लिए श्रृंखला 2 या अधिक मॉड्यूल, यानी एक के बाद एक डेज़ी करने की अनुमति देता है।

हम जिन मॉड्यूल का उपयोग कर रहे हैं, वे 5 छोटे जंपर्स का उपयोग करके एक श्रृंखला में जुड़ने में सक्षम हैं। नीचे दी गई तस्वीर देखें।

चरण 2: पिनआउट और सिग्नल

MAX7219 मॉड्यूल में 5 पिन हैं:

  • वीसीसी - पावर (+)
  • जीएनडी - ग्राउंड (-)
  • डीआईएन - डेटा इनपुट
  • सीएस - चिप चयन
  • सीएलके - घड़ी

इसका मतलब है कि मॉड्यूल को नियंत्रित करने के लिए हमें ATtiny85 माइक्रोकंट्रोलर की तरफ 3 पिन की जरूरत है। वे होंगे:

  • PB0 - CLK. से जुड़ा
  • PB1 - CS. से जुड़ा
  • PB2 - DIN. से जुड़ा

यह MAX7219 मॉड्यूल से कनेक्ट करने और इसे प्रोग्राम करने के लिए पर्याप्त है।

चरण 3: प्रोटोकॉल

प्रोटोकॉल
प्रोटोकॉल

MAX7219 के साथ संचार करना अपेक्षाकृत आसान है - यह एक सिंक्रोनस प्रोटोकॉल का उपयोग करता है जिसका अर्थ है कि हमारे द्वारा भेजे जाने वाले प्रत्येक डेटा बिट के लिए एक घड़ी चक्र होता है जो उस डेटा बिट की उपस्थिति को दर्शाता है।

दूसरे शब्दों में, हम बिट्स को 2 समानांतर क्रम भेजते हैं - एक घड़ी के लिए और दूसरा डेटा के लिए। सॉफ्टवेयर यही करता है।

चरण 4: सॉफ्टवेयर

सॉफ्टवेयर
सॉफ्टवेयर

जिस तरह से यह MAX7219 मॉड्यूल काम करता है वह यह है:

  • हम इसके आंतरिक रजिस्टर में बाइट लिखते हैं।
  • MAX7219 डेटा की व्याख्या करता है।
  • MAX7219 मैट्रिक्स में एलईडी को नियंत्रित करता है।

इसका मतलब यह भी है कि हमें उन्हें रोशन करने के लिए हर समय एल ई डी की सरणी के माध्यम से चक्कर लगाने की ज़रूरत नहीं है - MAX7219 नियंत्रक इसका ख्याल रखता है। यह एल ई डी की तीव्रता को भी प्रबंधित कर सकता है।

इसलिए, MAX7219 मॉड्यूल को सुविधाजनक तरीके से उपयोग करने के लिए हमें उस उद्देश्य की पूर्ति के लिए कार्यों की एक लाइब्रेरी की आवश्यकता होती है।

सबसे पहले, हमें MAX7219 रजिस्टरों को लिखने के लिए कुछ बुनियादी कार्यों की आवश्यकता है।

  • MAX7219 पर एक बाइट लिखना।
  • MAX7219 पर एक शब्द (2 बाइट्स) लिखना।

नियंत्रक को एक बाइट लिखने वाला फ़ंक्शन इस तरह दिखता है:

शून्य अधिकतम 7219_बाइट (uint8_t डेटा) { के लिए (uint8_t i = 8; i> = 1; i--) { PORTB और = ~ (1 << MAX7219_CLK); // CLK को LOW पर सेट करें यदि (डेटा और 0x80) // डेटा के MSB को PORTB |= (1 << MAX7219_DIN); // डीआईएन को हाई पर सेट करें और PORTB &= ~(1 << MAX7219_DIN); // DIN को LOW PORTB पर सेट करें |= (1 << MAX7219_CLK); // सीएलके को उच्च डेटा पर सेट करें <<= 1; // बाईं ओर शिफ्ट करें } }

अब जब हम MAX7219 पर बाइट्स भेज सकते हैं तो हम कमांड भेजना शुरू कर सकते हैं। यह 2 बाय भेजकर किया जाता है - पहला आंतरिक रजिस्टर के पते के लिए और दूसरा उस डेटा के लिए जिसे हम भेजना चाहते हैं।

MAX7219 कंट्रोलर में एक दर्जन से अधिक रजिस्टर हैं।

एक आदेश, या एक शब्द भेजना, मूल रूप से लगातार 2 बाइट भेज रहा है। इसे लागू करने वाला कार्य बहुत सरल है।

शून्य max7219_word(uint8_t पता, uint8_t डेटा) { PORTB &= ~(1 << MAX7219_CS); // CS को LOW max7219_byte (पता) पर सेट करें; // अधिकतम 7219_बाइट (डेटा) पता भेजा जा रहा है; // डेटा भेजना PORTB |= (1 << MAX7219_CS); // CS को हाई PORTB पर सेट करें &= ~(1 << MAX7219_CLK); // CLK को LOW पर सेट करें }

यहां यह नोट करना महत्वपूर्ण है कि जिस लाइन पर हम CS सिग्नल को वापस हाई पर लाते हैं - यह अनुक्रम के अंत को चिह्नित करता है - इस मामले में, कमांड का अंत। एक श्रृंखला में जुड़े एक मैट्रिक्स को नियंत्रित करते समय एक समान तकनीक का उपयोग किया जाता है। अगला कदम, इससे पहले कि हम एल ई डी को चालू और बंद करना शुरू करें, MAX7219 नियंत्रक को प्रारंभ करना है। यह कुछ रजिस्टरों को कुछ मान लिखकर किया जाता है। सुविधा के लिए, इसे कोडिंग करते समय हम इनिशियलाइज़ेशन सीक्वेंस को एक ऐरे में रख सकते हैं।

uint8_t initseq = { 0x09, 0x00, // डिकोड-मोड रजिस्टर, 00 = कोई डिकोड 0x0a, 0x01, // तीव्रता रजिस्टर, 0x00.. 0x0f 0x0b, 0x07, // स्कैन-सीमा रजिस्टर, 0x07 सभी लाइनें दिखाने के लिए 0x0c, 0x01, // शटडाउन रजिस्टर, 0x01 = सामान्य ऑपरेशन 0x0f, 0x00, // डिस्प्ले-टेस्ट रजिस्टर, 0x00 = सामान्य ऑपरेशन};

हमें उपरोक्त 5 आदेशों को एक क्रम में पते/डेटा जोड़े के रूप में भेजने की आवश्यकता है। अगला चरण - एल ई डी की एक पंक्ति को रोशन करना।

यह बहुत आसान है - हम केवल एक कमांड लिखते हैं जहां पहली बाइट पता (0 से 7 तक) है और दूसरी बाइट पंक्ति में 8 एल ई डी का प्रतिनिधित्व करने वाले 8 बिट्स हैं।

शून्य max7219_row(uint8_t पता, uint8_t डेटा) { अगर (पता> = 1 && पता <= 8) max7219_word (पता, डेटा); }

यह ध्यान रखना महत्वपूर्ण है कि यह केवल 1 मैट्रिक्स के लिए काम करेगा। यदि हम एक श्रृंखला में अधिक मैट्रिक्स कनेक्ट करते हैं तो वे सभी समान डेटा दिखाएंगे। इसका कारण यह है कि कमांड भेजने के बाद हम CS सिग्नल को वापस हाई पर लाते हैं जिसके कारण चेन के सभी MAX7219 कंट्रोलर लैच कर देते हैं और जो भी आखिरी कमांड था उसे दिखाते हैं।

सिफारिश की: