सात खंड सूचक. Arduino और चार अंक सात खंड संकेतक 4 अंक 7 खंड संकेतक सर्किट


एक-अंकीय सात-खंड संकेतक के लिए कनेक्शन आरेख
बहु-अंकीय सात-खंड संकेतक के लिए कनेक्शन आरेख

डिजिटल सूचना प्रदर्शन उपकरण। यह एक संकेतक का सबसे सरल कार्यान्वयन है जो अरबी अंकों को प्रदर्शित कर सकता है। अक्षरों को प्रदर्शित करने के लिए अधिक जटिल बहु-खंड और मैट्रिक्स संकेतक का उपयोग किया जाता है।

जैसा कि इसके नाम से पता चलता है, इसमें सात डिस्प्ले तत्व (सेगमेंट) होते हैं जो अलग-अलग चालू और बंद होते हैं। उन्हें विभिन्न संयोजनों में शामिल करके, उनका उपयोग अरबी अंकों की सरलीकृत छवियां बनाने के लिए किया जा सकता है।
खंडों को A से G तक अक्षरों द्वारा निर्दिष्ट किया गया है; आठवां खंड - दशमलव बिंदु (दशमलव बिंदु, डीपी), भिन्नात्मक संख्याओं को प्रदर्शित करने के लिए डिज़ाइन किया गया।
कभी-कभी, सात-खंड संकेतक पर अक्षर प्रदर्शित होते हैं।

वे विभिन्न रंगों में आते हैं, आमतौर पर सफेद, लाल, हरा, पीला और नीला। इसके अलावा, वे विभिन्न आकार के हो सकते हैं।

साथ ही, एलईडी संकेतक एकल-अंकीय (जैसा कि ऊपर चित्र में है) या बहु-अंकीय हो सकता है। मूल रूप से, एक-, दो-, तीन- और चार-अंकीय एलईडी संकेतक व्यवहार में उपयोग किए जाते हैं:

दस अंकों के अलावा, सात-खंड संकेतक अक्षर प्रदर्शित करने में सक्षम हैं। लेकिन कुछ अक्षरों में सात खंडों का सहज प्रतिनिधित्व होता है।
लैटिन में: कैपिटल ए, बी, सी, ई, एफ, जी, एच, आई, जे, एल, एन, ओ, पी, एस, यू, वाई, जेड, लोअरकेस ए, बी, सी, डी, ई, जी , एच, आई, एन, ओ, क्यू, आर, टी, यू।
सिरिलिक में: ए, बी, वी, जी, जी, ई, आई, एन, ओ, ओ, पी, पी, आर, एस, एस, यू, सीएच, वाई (दो अंक), बी, ई/जेड।
इसलिए, सात-खंड संकेतकों का उपयोग केवल सरल संदेश प्रदर्शित करने के लिए किया जाता है।

कुल मिलाकर, सात खंड वाला एलईडी संकेतक 128 अक्षर प्रदर्शित कर सकता है:

एक सामान्य एलईडी संकेतक में नौ लीड होते हैं: एक सभी खंडों के कैथोड पर जाता है, और अन्य आठ प्रत्येक खंड के एनोड पर जाते हैं। इस योजना को कहा जाता है "सामान्य कैथोड सर्किट", योजनाएं भी हैं सामान्य एनोड के साथ(तब यह दूसरा तरीका है)। अक्सर, आधार के अलग-अलग सिरों पर एक नहीं, बल्कि दो सामान्य टर्मिनल बनाए जाते हैं - यह आयामों को बढ़ाए बिना वायरिंग को सरल बनाता है। तथाकथित "सार्वभौमिक" भी हैं, लेकिन मैंने व्यक्तिगत रूप से ऐसे लोगों का सामना नहीं किया है। इसके अलावा, एक अंतर्निहित शिफ्ट रजिस्टर के साथ संकेतक हैं, जो शामिल माइक्रोकंट्रोलर पोर्ट पिन की संख्या को काफी कम कर देता है, लेकिन वे बहुत अधिक महंगे हैं और व्यवहार में शायद ही कभी उपयोग किए जाते हैं। और चूंकि विशालता को समझा नहीं जा सकता है, इसलिए हम अभी ऐसे संकेतकों पर विचार नहीं करेंगे (लेकिन बहुत अधिक संख्या में खंडों, मैट्रिक्स वाले संकेतक भी हैं)।

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

एक अंकीय सात-खंड संकेतक को माइक्रोकंट्रोलर से जोड़ना

नीचे दिया गया चित्र दिखाता है कि कैसे एक एकल-अंकीय सात-खंड संकेतक जुड़ा हुआ हैमाइक्रोकंट्रोलर को.
यह ध्यान में रखा जाना चाहिए कि यदि संकेतक साथ है सामान्य कैथोड, तो इसका सामान्य आउटपुट इससे जुड़ा होता है "धरती", और खंडों को खिलाकर प्रज्वलित किया जाता है तार्किक इकाईपोर्ट आउटपुट के लिए.
यदि सूचक है सामान्य एनोड, फिर इसे इसके सामान्य तार में आपूर्ति की जाती है "प्लस"वोल्टेज, और पोर्ट आउटपुट को राज्य में स्विच करके खंडों को प्रज्वलित किया जाता है तार्किक शून्य.

एकल-अंकीय एलईडी संकेतक में संकेत संबंधित तार्किक स्तर के संबंधित अंक के माइक्रोकंट्रोलर पोर्ट के पिन पर एक बाइनरी कोड लागू करके किया जाता है (ओके वाले संकेतकों के लिए - तार्किक वाले, ओए वाले संकेतकों के लिए - तार्किक शून्य)।

वर्तमान सीमित प्रतिरोधकआरेख में मौजूद हो भी सकता है और नहीं भी। यह सब संकेतक को आपूर्ति की गई आपूर्ति वोल्टेज और संकेतकों की तकनीकी विशेषताओं पर निर्भर करता है। यदि, उदाहरण के लिए, खंडों को आपूर्ति की गई वोल्टेज 5 वोल्ट है, और वे 2 वोल्ट के ऑपरेटिंग वोल्टेज के लिए डिज़ाइन किए गए हैं, तो वर्तमान-सीमित प्रतिरोधों को स्थापित किया जाना चाहिए (बढ़ी हुई आपूर्ति वोल्टेज के लिए उनके माध्यम से वर्तमान को सीमित करने और जलने से बचाने के लिए) न केवल संकेतक, बल्कि माइक्रोकंट्रोलर पोर्ट भी)।
दादाजी के सूत्र का उपयोग करके, वर्तमान-सीमित प्रतिरोधों के मूल्य की गणना करना बहुत आसान है ओम.
उदाहरण के लिए, संकेतक की विशेषताएं इस प्रकार हैं (डेटाशीट से ली गई):
— ऑपरेटिंग वोल्टेज — 2 वोल्ट
— ऑपरेटिंग करंट — 10 एमए (=0.01 ए)
- आपूर्ति वोल्टेज 5 वोल्ट
गणना के लिए सूत्र:
आर= यू/आई (इस सूत्र में सभी मान ओम, वोल्ट और एम्प्स में होने चाहिए)
आर= (आपूर्ति वोल्टेज - ऑपरेटिंग वोल्टेज)/ऑपरेटिंग करंट
आर= (5-2)/0.01 = 300 ओम

बहु-अंकीय सात-खंड एलईडी संकेतक के लिए कनेक्शन आरेखमूल रूप से एकल-अंकीय संकेतक को कनेक्ट करते समय वैसा ही होता है। एकमात्र बात यह है कि नियंत्रण ट्रांजिस्टर संकेतकों के कैथोड (एनोड) में जोड़े जाते हैं:

यह आरेख में नहीं दिखाया गया है, लेकिन ट्रांजिस्टर के आधार और माइक्रोकंट्रोलर पोर्ट के पिन के बीच, प्रतिरोधकों को शामिल करना आवश्यक है, जिसका प्रतिरोध ट्रांजिस्टर के प्रकार पर निर्भर करता है (प्रतिरोधक मानों की गणना की जाती है, लेकिन आप 5-10 kOhm के नाममात्र मूल्य वाले प्रतिरोधकों का उपयोग करने का भी प्रयास कर सकते हैं)।

डिस्चार्ज द्वारा संकेत गतिशील रूप से किया जाता है:
- संबंधित अंक का बाइनरी कोड पहले अंक के लिए पीबी पोर्ट के आउटपुट पर सेट किया जाता है, फिर तार्किक स्तर पहले अंक के नियंत्रण ट्रांजिस्टर पर लागू होता है
- संबंधित अंक का बाइनरी कोड दूसरे अंक के लिए पीबी पोर्ट के आउटपुट पर सेट किया जाता है, फिर तार्किक स्तर दूसरे अंक के नियंत्रण ट्रांजिस्टर पर लागू होता है
- संबंधित अंक का बाइनरी कोड तीसरे अंक के लिए पीबी पोर्ट के आउटपुट पर सेट किया जाता है, फिर तार्किक स्तर तीसरे अंक के नियंत्रण ट्रांजिस्टर पर लागू होता है
- तो एक घेरे में
इस मामले में, यह ध्यान में रखना आवश्यक है:
— संकेतकों के लिए ठीक हैनियंत्रण ट्रांजिस्टर संरचना का उपयोग किया जाता है एनपीएन(तार्किक इकाई द्वारा नियंत्रित)
- संकेतक के लिए ओए- संरचना ट्रांजिस्टर पीएनपी(तर्क शून्य द्वारा नियंत्रित)

इस बार, लेख सबसे दिलचस्प मॉड्यूल में से एक पर विचार करेगा, अर्थात् - MAX7219 चिप पर आधारित बहु-अंकीय सात-खंड संकेतक। क्यों बहु-बिट? उत्तर सरल है - अंकों की संख्या उन अंकों की संख्या है जिन्हें मॉड्यूल प्रदर्शित कर सकता है। उदाहरण के लिए, नीचे दिए गए फोटो में बाएं से दाएं तीन प्रकार के बहु-अंकीय संकेतक दिखाए गए हैं - 4-अंकीय, 6-अंकीय, 8-अंकीय। इसके अलावा, पहला है 4-अंकीय डायल संकेतक। डायल इंडिकेटर और नियमित इंडिकेटर के बीच अंतर यह है कि इसमें एक संकेत होता है कोलन,जबकि किसी भी नियमित संकेतक में इस चिन्ह को नीचे संख्या के आगे एक बिंदु से बदल दिया जाता है।

इस लेख में, विचाराधीन मॉड्यूल एक माइक्रोक्रिकिट के आधार पर संचालित होते हैं MAX7219. यह चिप सात-खंड एलईडी संकेतकों के साथ-साथ 8x8 एलईडी मैट्रिसेस के लिए एक ड्राइवर है, और हम इस ड्राइवर को जोड़ने के लिए सर्किट आरेखों पर विचार नहीं करेंगे। तैयार मॉड्यूल को केवल आधार के रूप में लिया जाएगा; बोर्ड से कनेक्शन के उदाहरण दिए जाएंगे अरुडिनो यूएनओऔर पुस्तकालय कार्यों के साथ काम किया नेतृत्व नियंत्रण. वैसे, जैसा कि पहले ही बताया गया है, 8x8 एलईडी मैट्रिसेस भी ड्राइवर के आधार पर काम करते हैं MAX7219, और यदि कोई रुचि रखता है, तो लेखों में आपका स्वागत है:

तो, चलिए शुरू करते हैं... मुझे लगता है कि मल्टी-बिट के बारे में एक अच्छा विवरण दिया गया था, लेकिन यहाँ क्यों है सात खंड? उत्तर भी इतना जटिल नहीं है - क्योंकि अक्षरों द्वारा अनुक्रमित सात एलईडी का उपयोग एक प्रतीक बनाने या एक संख्या प्रदर्शित करने के लिए किया जाता है ए, बी, सी, डी, ई, एफ, जी,नीचे दी गई तालिका दिखाती है कि यह कैसे दर्शाया गया है:

जैसा कि तालिका से देखा जा सकता है, आठवीं एलईडी भी है - डी.पी.आप एक विशिष्ट बिट को सेट या साफ़ करके किसी वर्ण या अंक को 1 बाइट में पूरी तरह से एन्कोड कर सकते हैं, जैसा कि कैरेक्टर एन्कोडिंग उदाहरण में दिखाया गया है जे।उदाहरण में बिट्स सेट हैं बी, सी, डी, ई, जो आपको सात-खंड संकेतक पर एक निर्दिष्ट वर्ण प्रदर्शित करने की अनुमति देता है।

सिद्धांत से अभ्यास तक - आइए नीचे दिए गए चित्र के अनुसार एक 8-बिट मॉड्यूल को Arduino Uno बोर्ड से कनेक्ट करें:

प्रतीकों को प्रदर्शित करने के लिए, LedControl.h प्लग-इन लाइब्रेरी के कई फ़ंक्शन का उपयोग किया जाता है। आइए setDigit() फ़ंक्शन से प्रारंभ करते हुए इनमें से प्रत्येक फ़ंक्शन को क्रम से देखें।

फ़ंक्शन में दी गई संख्या और तर्कों को प्रदर्शित करने के लिए फ़ंक्शन घोषणा का प्रोटोटाइप:

सेटडिजिट (int addr, int अंक, बाइट मान, बूलियन डीपी);

कहाँ -

मैंएनटी पता -बस पर मॉड्यूल का पताएसपीआई 0 एसपीआई शून्य से शुरू होता है)

पूर्णांक अंक - 0 , 7

बाइट मान -मान (0 से 9 तक की संख्या) जिसे उस अंक में प्रदर्शित करने की आवश्यकता है जिसकी संख्या int अंक पैरामीटर में निर्दिष्ट है

बूलियन डीपी - पूर्णांक अंक. यदि पैरामीटर है सत्य तो बिंदु प्रदर्शित किया जाएगा यदि असत्य तो बिंदु प्रदर्शित नहीं होगा.

प्रतीक और फ़ंक्शन में दिए गए तर्कों को प्रदर्शित करने के लिए फ़ंक्शन घोषणा का प्रोटोटाइप:

setChar(int addr, int अंक, चार मान, बूलियन डीपी);

मैंएनटी पता - बस पर मॉड्यूल का पताएसपीआई जिसके लिए फ़ंक्शन को कॉल किया जाता है, यदि केवल एक मॉड्यूल है, तो यह पैरामीटर बराबर है0 (बस में उपकरणों का डिफ़ॉल्ट पताएसपीआई शून्य से शुरू होता है)

पूर्णांक अंक - डिस्प्ले मॉड्यूल में अंक की क्रम संख्या, डिफ़ॉल्ट रूप से, बहु-अंकीय संकेतकों के लिए, अंकों की संख्या क्रमशः सबसे दाहिने अंक से शुरू होती है, सबसे दाहिने अंक की संख्या के बराबर होती है0 , और हमारे मामले में सबसे बाएँ अंक की संख्या बराबर है7

चार मान - वह वर्ण जो उस अंक में प्रदर्शित होना चाहिए जिसकी संख्या पैरामीटर द्वारा निर्दिष्ट हैपूर्णांक अंक

बूलियन डीपी - यह पैरामीटर उस अंक पर एक बिंदु प्रदर्शित करने के लिए ज़िम्मेदार है जिसकी संख्या पैरामीटर में निर्दिष्ट है पूर्णांक अंक. यदि पैरामीटर है सत्य तो बिंदु प्रदर्शित किया जाएगा यदि असत्य तो बिंदु प्रदर्शित नहीं होगा.

उल्लेख करने लायक एक अलग बात यह है कि फ़ंक्शन सेटचार()केवल वर्णों का एक सीमित सेट ही प्रदर्शित किया जा सकता है, जैसे:

  • 0 1 2 3 4 5 6 7 8 9 अंक को प्रतीक के रूप में प्रदर्शित किया जाता है
  • ए ए
  • बी बी
  • साथ साथ अक्षर लोअर केस में प्रदर्शित किया जाएगा
  • डी डी अक्षर लोअर केस में प्रदर्शित किया जाएगा
  • ई ई चरित्र अपरकेस में दिखाई देगा
  • एफ एफ चरित्र अपरकेस में दिखाई देगा
  • एच एच अक्षर लोअर केस में प्रदर्शित किया जाएगा
  • डालूँगा चरित्र अपरकेस में दिखाई देगा
  • पी पी चरित्र अपरकेस में दिखाई देगा
  • - ऋण चिह्न"
  • . , बिंदु प्रदर्शन
  • _ बल देना
  • <Пробел> स्पेस कैरेक्टर सेट करें

परीक्षण स्केच में, आप इस प्रकार कार्य निर्धारित कर सकते हैं:

  1. 1 से 8 तक की संख्याओं को बिना बिंदु के एक-एक करके प्रदर्शित करें
  2. डिस्प्ले मॉड्यूल के सभी अंकों को 1 से 8 तक की संख्याओं से भरें, साथ ही संकेतित अंकों के सभी बिंदुओं को प्रदर्शित करें
  3. बाइनरी कोड में पहले से एन्कोड किए गए वर्णों के साथ एक बिटवाइज़ सरणी बनाएं, परिणाम "Arduino नियम!!!" होना चाहिए।

सीमित वर्ण सेट के कारण, फ़ंक्शन सेटचार()परीक्षण स्केच के लिए उपयुक्त नहीं है, क्योंकि यह सामान्य रूप से बिंदु 3 में निर्दिष्ट वाक्यांश को चित्रित करने में सक्षम नहीं होगा। इस फ़ंक्शन के बजाय, हम फ़ंक्शन का उपयोग करेंगे सेटरो(). तो...कार्य सेटरो() 8x8 एलईडी मैट्रिसेस के अध्ययन के बारे में लेखों में हमारे द्वारा पहले ही परीक्षण किया जा चुका है, आइए फिर से कॉल के प्रोटोटाइप और इस फ़ंक्शन के मापदंडों का वर्णन करें।

फ़ंक्शन घोषणा प्रोटोटाइप सेटरो()और फ़ंक्शन को दिए गए तर्क:

setRow(int addr, int row, byte value);

मैंएनटी पता - बस पर मॉड्यूल का पताएसपीआई जिसके लिए फ़ंक्शन को कॉल किया जाता है, यदि केवल एक मॉड्यूल है, तो यह पैरामीटर बराबर है0 (बस में उपकरणों का डिफ़ॉल्ट पताएसपीआई शून्य से शुरू होता है)

int पंक्ति - डिस्प्ले मॉड्यूल में अंक की क्रम संख्या, डिफ़ॉल्ट रूप से, बहु-अंकीय संकेतकों के लिए, अंकों की संख्या क्रमशः सबसे दाहिने अंक से शुरू होती है, सबसे दाहिने अंक की संख्या के बराबर होती है0 , और हमारे मामले में सबसे बाएँ अंक की संख्या बराबर है7

बाइट मान- बाइनरी प्रारूप में एक मान (उदाहरण B00000000, दशमलव और हेक्साडेसिमल में विकल्प भी संभव हैं), जो आवश्यक वर्ण को एन्कोड करता है। वर्ण एन्कोडिंग तालिका आपको वांछित वर्ण को सही ढंग से एन्कोड करने में मदद करेगी।

खैर, लेख के अंत में, यह कैसे काम करता है इसका एक परीक्षण स्केच और वीडियो:

#शामिल "LedControl.h" /* * हम LedControl.h लाइब्रेरी को कनेक्ट करते हैं * और LedControl क्लास का एक ऑब्जेक्ट बनाते हैं * इस मामले में, MAX72xx ड्राइवर के साथ 7-सेगमेंट डिस्प्ले * को Arduino बोर्ड से निम्नानुसार कनेक्ट किया जाना चाहिए : * Arduino -> डिस्प्ले मॉड्यूल MAX72xx * Arduino -> डिस्प्ले मॉड्यूल MAX72xx * Arduino -> डिस्प्ले मॉड्यूल MAX72xx * Arduino -> डिस्प्ले मॉड्यूल MAX72xx * Arduino -> डिस्प्ले मॉड्यूल MAX72xx * */ LedControl lc = LedControl(12, 11, 10, 1); //एन्कोडेड वर्णों के साथ सरणी, //वाक्यांश "Arduino ruLES!!!" बाइट AR = (B011101111, // A B00000101, // R B001111101, // D B00011100, // U B00010000, // I B00010101, // N B00011101, // O B00000101, // R B0001111100, // U B00001 100 , //एल बी01001111, //ई बी01011011, //एस बी10110000, //! शून्य सेटअप() ( //डिवाइस (7-सेगमेंट डिस्प्ले) को स्लीप मोड से बाहर लाया गया है lc.shutdown(0, false); //डिस्प्ले ब्राइटनेस को 8 पर सेट करें //कुल संभावित ब्राइटनेस मोड 0 से 15 lc तक। setIntensity(0 ,8); //डिस्प्ले साफ़ करें lc.clearDisplay(0); void लूप() ( //(int i = 0, j = 7; i के लिए अंकों द्वारा 1 से 8 तक की संख्याओं का सबसे सरल पुनरावृत्ति)< 8, j >= 0; i++, j--) ( lc.setDigit(0, j, बाइट(i + 1), false); देरी(400); lc.clearDisplay(0); ) //स्क्रीन को साफ़ किए बिना संख्याओं के माध्यम से पुनरावृति करें (int) मैं = 0, जे = 7;< 8, j >= 0; i++, j--) ( lc.setDigit(0, j, बाइट(i + 1), true); देरी(400); ) lc.clearDisplay(0); //वाक्यांश "Arduino ruLES!!!" का प्रतिपादन पूर्णांक n = 0; for(int i = 0; i< 2; i ++) { for(int j = 7; j >= 0; j --) ( if(n > 6 && !(i % 2)) ( जारी रखें; ) अन्यथा ( lc.setRow(0, j, ar[n]); देरी(400); n++; ) ) एलसी .clearDisplay(0); ) देरी(400); lc.clearDisplay(0); )


टिप्पणियों के काम करने के लिए कृपया जावास्क्रिप्ट सक्षम करें।

आज के लेख में हम 7-सेगमेंट संकेतकों के बारे में बात करेंगे और Arduino के साथ "दोस्त कैसे बनाएं" के बारे में बात करेंगे। कई विकल्प हैं. निःसंदेह, सबसे आसान है वहां जाना और एक एकीकृत शील्ड के साथ एक तैयार संकेतक खरीदें (इसे मिलान कार्ड कहा जाता है), लेकिन हम आसान तरीकों की तलाश नहीं कर रहे हैं, इसलिए हम थोड़ा और कठिन रास्ता अपनाएंगे। शुरुआती - चिंतित न हों, यह लेख, मेरे पिछले लेखों की तरह (और ) सिर्फ तुम्हारे लिए। गुरुओं को उन्हीं अनुभवी गुरुओं के लिए लिखने दीजिए, और मैं एक नौसिखिया हूँ - मैं शुरुआती लोगों के लिए लिखता हूँ।

7-सेगमेंट सूचक क्यों? आख़िरकार, बहुत सारे अलग-अलग स्क्रीन हैं, जिनमें बड़ी संख्या में अक्षर, रेखाएं, विभिन्न विकर्ण और रिज़ॉल्यूशन, काले और सफेद और रंगीन हैं, जिनमें से सबसे सस्ती की कीमत कुछ डॉलर है... और यहां: "पुरानी" एक, अत्यधिक सरल, लेकिन बड़ी संख्या में पिन की आवश्यकता होती है 7- खंड सूचक, लेकिन फिर भी इस "बूढ़े आदमी" का भी एक फायदा है। तथ्य यह है कि यहां दिए गए रेखाचित्रों का उपयोग करके आप न केवल 14 मिमी की अंक ऊंचाई के साथ एक संकेतक को पुनर्जीवित कर सकते हैं, बल्कि अधिक गंभीर (यद्यपि घरेलू) परियोजनाओं को भी पुनर्जीवित कर सकते हैं, और इस मामले में मीटर अंक सीमा से बहुत दूर हैं। यह राजधानियों के निवासियों के लिए इतना दिलचस्प नहीं हो सकता है, लेकिन नोवोकात्सापेटोव्का या निज़न्या केद्रोव्का की आबादी बहुत खुश होगी अगर एक घड़ी किसी क्लब या ग्राम परिषद में दिखाई देगी जो तारीख और तापमान भी प्रदर्शित कर सकती है, और वे निर्माता के बारे में बात करेंगे। इस घड़ी का बहुत लंबे समय तक। लेकिन ऐसी घड़ियाँ एक अलग लेख का विषय हैं: आगंतुकों के बीच एक इच्छा होगी - मैं लिखूंगा। ऊपर लिखी हर बात को परिचय माना जा सकता है. मेरे पिछले लेख की तरह, इस लेख में इस बार दो भाग होंगे। पहले भाग में हम केवल संकेतक को "प्रबंधित" करेंगे, और दूसरे में हम इसे कम से कम कुछ उपयोगी चीज़ के लिए अनुकूलित करने का प्रयास करेंगे। तो चलिए जारी रखें:

भाग एक। प्रायोगिक - शैक्षिक

इस परियोजना का आधार ARDUINO UNO है, जो हमें पिछले लेखों से पहले से ही ज्ञात है। मैं आपको याद दिला दूं कि इसे खरीदने का सबसे आसान तरीका यहां है:या इधर: इसके अलावा, आपको 4-अंकीय, 7-खंड संकेतक की आवश्यकता होगी। मेरे पास, विशेष रूप से, GNQ-5641BG-11 है। ये वाला क्यों? हां, सिर्फ इसलिए कि 5 साल पहले मैंने इसे गलती से खरीदा था, मैं इसे बदलने के लिए बहुत आलसी था, इसलिए यह पूरे समय इधर-उधर पड़ा रहा, इंतजार कर रहा था। मुझे लगता है कि सामान्य एनोड वाला कोई भी व्यक्ति ऐसा करेगा (और एक सामान्य कैथोड के साथ यह संभव है, लेकिन आपको सरणी डेटा और अन्य पोर्ट मानों को उल्टा करना होगा - अर्थात, उन्हें विपरीत में बदलें), जब तक यह इतना शक्तिशाली नहीं है कि Arduino न जले। इसके अलावा, 4 वर्तमान-सीमित प्रतिरोधक, लगभग 100 ओम प्रत्येक, और 12 पिन (कोर) के लिए केबल का एक टुकड़ा (10 सेमी मेरे लिए पर्याप्त था) को व्यापक से "फाड़ा" जा सकता है, जो मैंने किया। या आप उन्हें अलग-अलग तारों से भी सोल्डर कर सकते हैं, कोई समस्या नहीं होगी। आपको बोर्ड के लिए पिन (11 टुकड़े) की भी आवश्यकता होगी, हालाँकि यदि आप सावधान रहें तो आप उनके बिना भी काम चला सकते हैं। सूचक का एक स्केच चित्र 1 में देखा जा सकता है, और इसका आरेख चित्र 2 में देखा जा सकता है। मैं यह भी नोट करूंगा कि इस सूचक के प्रत्येक खंड (100-ओम प्रतिरोधों द्वारा सीमित) को 2.1V से अधिक की आपूर्ति नहीं करना बेहतर है, और इस स्थिति में यह 20 mA से अधिक की खपत नहीं करेगा। यदि संख्या "8" जलती है, तो खपत 7x20=140 mA से अधिक नहीं होगी, जो Arduino आउटपुट के लिए काफी स्वीकार्य है। एक जिज्ञासु पाठक प्रश्न पूछेगा: "लेकिन 140 एमए के 4 डिस्चार्ज पहले से ही 4x140 = 560 एमए हैं, और यह पहले से ही बहुत अधिक है!" मैं उत्तर दूँगा - 140 बचे रहेंगे कैसे? पढ़ते रहिये! संकेतक पर पिन का स्थान चित्र 3 में देखा जा सकता है। और हम तालिका 1 के अनुसार कनेक्शन बनाते हैं।


चावल। 1 - संकेतक रेखाचित्र


चावल। 2 - संकेतक सर्किट


चावल। 3 - पिन स्थान

तालिका नंबर एक

Arduino Uno को पिन करें

सूचक पिन

टिप्पणी

खंड जी

खंड एफ

खंड ई

खंड डी

खंड सी

खंड बी

खंड ए

खंड संख्या 1 का सामान्य एनोड, 100 ओम अवरोधक के माध्यम से कनेक्ट होता है।

खंड संख्या 2 का सामान्य एनोड, 100 ओम अवरोधक के माध्यम से कनेक्ट होता है।

खंड संख्या 3 का सामान्य एनोड, 100 ओम अवरोधक के माध्यम से कनेक्ट होता है।

खंड संख्या 6 का सामान्य एनोड 100 ओम अवरोधक के माध्यम से जुड़ा हुआ है।



हम एक साधारण स्केच भरते हैं, जो 0 से 9 तक की एक सरल "गिनती तालिका" है:


अब कुछ स्पष्टीकरण के लिए. डीडीआरडी पोर्ट डी (डीडीआरबी - क्रमशः, पोर्ट बी) का एक रजिस्टर है, "डरावने" शब्द "रजिस्टर" के पीछे बस एक "छिपा हुआ" फ़ंक्शन है जो इंगित करता है कि पोर्ट अपने पिन (सूचना प्राप्त करें) के साथ कुछ पढ़ेगा, या इसके विपरीत वर्ना वहां कुछ करना संभव होगा फिर लिखें (जानकारी दें)। इस स्थिति में, रेखा DDRD=B11111111; इंगित करता है कि पोर्ट डी के सभी पिन आउटपुट हैं, यानी। उनसे जानकारी सामने आएगी. अक्षर "बी" का अर्थ है कि रजिस्टर में एक बाइनरी संख्या लिखी गई है। एक अधीर पाठक तुरंत पूछेगा: "क्या दशमलव संभव है!?!" मैं आपको आश्वस्त करने में जल्दबाजी कर रहा हूं कि यह संभव है, लेकिन इस पर अधिक जानकारी थोड़ी देर बाद। यदि हम पोर्ट का आधा हिस्सा इनपुट के लिए और आधा आउटपुट के लिए उपयोग करना चाहते हैं, तो हम इसे इस तरह निर्दिष्ट कर सकते हैं: DDRD=B11110000; एक वे पिन दिखाते हैं जो जानकारी देंगे, और शून्य वे दिखाते हैं जो यह जानकारी प्राप्त करेंगे। रजिस्टर की मुख्य सुविधा इस तथ्य में भी निहित है कि आपको सभी पिनों को 8 बार पंजीकृत करने की आवश्यकता नहीं है, अर्थात। हम प्रोग्राम में 7 पंक्तियाँ सहेजते हैं। आइए अब निम्नलिखित पंक्ति को देखें:

पोर्टबी=बी001000; // पोर्ट बी हाई का पिन 11 सेट करें

PORTB पोर्ट B डेटा रजिस्टर है, अर्थात। इसमें एक नंबर लिखकर हम बताते हैं कि पोर्ट के किस पिन पर एक होगा और किस पिन पर शून्य होगा। टिप्पणी के अलावा, मैं कहूंगा कि यदि आप Arduino Uno को इस तरह से लेते हैं कि आप नियंत्रक देख सकते हैं और डिजिटल पिन शीर्ष पर हैं, तो रजिस्टर में प्रविष्टि स्पष्ट होगी, यानी। कौन सा "शून्य" (या "एक") किस पिन से मेल खाता है, अर्थात पोर्ट बी का सबसे दाहिना शून्य 8वें पिन के लिए जिम्मेदार है, और सबसे बायां शून्य 13वें (जिसमें एक अंतर्निर्मित एलईडी है) के लिए जिम्मेदार है। पोर्ट डी के लिए, क्रमशः, दायाँ वाला पिन 0 के लिए है, बायाँ वाला पिन 7 के लिए है।
मुझे आशा है कि इस तरह के विस्तृत स्पष्टीकरण के बाद सब कुछ स्पष्ट हो जाएगा, और चूंकि यह स्पष्ट है, मैं दशमलव संख्या प्रणाली पर लौटने का प्रस्ताव करता हूं जिसे हम बचपन से जानते हैं और प्रिय हैं। और एक और बात - 25 पंक्तियों का एक स्केच छोटा लग सकता है, लेकिन एक शुरुआत के लिए यह अभी भी कुछ हद तक बोझिल है। हम इसे कम करेंगे.

आइए एक और भी सरल रेखाचित्र भरें, वही "गिनती तालिका":


वीडियो 1.
केवल 11 पंक्तियाँ! यह हमारा तरीका है, "नौसिखिया तरीका"! कृपया ध्यान दें कि रजिस्टरों में बाइनरी संख्याओं के स्थान पर दशमलव संख्याएँ लिखी जाती हैं। स्वाभाविक रूप से, दशमलव संख्याओं के लिए सामने किसी अक्षर की आवश्यकता नहीं होती है। मुझे लगता है कि सभी नंबरों को तालिकाओं में रखने से कोई नुकसान नहीं होगा।

तालिका 2. पोर्ट डेटा के साथ प्रदर्शित वर्ण का पत्राचार

सामान्य एनोड

सामान्य कैथोड

बायनरी सिस्टम

दशमलव प्रणाली

बायनरी सिस्टम

दशमलव प्रणाली

तालिका 3. पोर्ट डेटा के साथ प्रदर्शित बिट का पत्राचार

सामान्य एनोड

सामान्य कैथोड

बायनरी सिस्टम

दशमलव प्रणाली

बायनरी सिस्टम

दशमलव प्रणाली



ध्यान! तालिका 2 और 3 में डेटा केवल तभी मान्य है जब तालिका 1 के अनुसार वायर्ड किया गया हो।
आइए अब 0 से 9999 तक की "गिनती तालिका" के साथ एक स्केच अपलोड करें:




चावल। 4 - गिनती टेबल

आप यहां स्केच को क्रियान्वित होते हुए देख सकते हैंवीडियो 2.

इस स्केच में कोड की तुलना में अधिक टिप्पणियाँ हैं। कोई प्रश्न नहीं होना चाहिए... एक बात के अलावा, यह किस प्रकार का "टिमटिमा चक्र" है, सख्ती से कहें तो वहां क्या झिलमिलाता है और क्यों? और इसके लिए कुछ प्रकार का वेरिएबल भी है...
और पूरी बात यह है कि सभी चार श्रेणियों के एक ही नाम के खंड एक बिंदु पर जुड़े हुए हैं। A1, A2, A3 और A4 में एक सामान्य कैथोड है; A1, B1,…..G1 सामान्य एनोड। तो, 4-अंकीय संकेतक पर एक साथ "1234" लगाने पर, हमें "8888" मिलेगा और इस पर हमें बहुत आश्चर्य होगा। ऐसा होने से रोकने के लिए, आपको पहले अपनी श्रेणी में "1" जलाना होगा, फिर इसे बंद करना होगा, अपनी श्रेणी में "2" जलाना होगा, आदि। यदि आप इसे बहुत तेज़ी से करते हैं, तो संख्याओं की झिलमिलाहट एक फिल्म पर फ़्रेम की तरह विलीन हो जाएगी, और आंख व्यावहारिक रूप से इस पर ध्यान नहीं देगी। और इस मामले में झिलमिलाहट चर का अधिकतम मूल्य संकेतक पर संख्याओं को बदलने की गति को नियंत्रित करता है। वैसे, यह इस "झिलमिलाहट" के लिए धन्यवाद है कि अधिकतम वर्तमान खपत 560 के बजाय केवल 140 एमए है। अब मैं कुछ और उपयोगी चीज़ों पर आगे बढ़ने का सुझाव देता हूं।

भाग दो। कम से कम थोड़ा उपयोगी

इस भाग में, हम ARDUINO MEGA का उपयोग करके एक पर्सनल कंप्यूटर से 7-सेगमेंट संकेतक में वर्णों को आउटपुट करेंगे। "क्रॉसिंग पर घोड़े बदलने" का विचार अचानक क्यों आया? इसके दो कारण हैं: पहला, मैंने पहले कभी अपने लेखों में ARDUINO MEGA पर विचार नहीं किया था; और दूसरी बात, ARDUINO UNO में मुझे अभी भी पता नहीं चला है कि मैं COM पोर्ट और पोर्ट D को गतिशील रूप से कैसे स्वैप कर सकता हूं। लेकिन मैं एक नौसिखिया हूं - मुझे माफ किया जा सकता है। स्वाभाविक रूप से, आप इस नियंत्रक को यहां खरीद सकते हैं: . योजना को लागू करने के लिए, मुझे एक सोल्डरिंग आयरन लेना था और Arduino की तरफ से केबल को फिर से सोल्डर करना था, और एक नया स्केच भी लिखना था। आप चित्र 5 में देख सकते हैं कि केबल को कैसे सोल्डर किया गया है। बात यह है कि ARDUINO MEGA और ARDUINO UNO में अलग-अलग पोर्ट पिनआउट हैं, और मेगा में कई और पोर्ट हैं। उपयोग किए गए पिनों का पत्राचार तालिका 4 से देखा जा सकता है।



चावल। 5 - नई केबल वायरिंग

तालिका 4

पोर्ट मेगा


ध्यान! यह तालिका केवल इस प्रोजेक्ट के लिए मान्य है!

आपको यह भी ध्यान देना चाहिए कि Arduino मेगा का पोर्ट C पिन 37 से "शुरू" होता है और फिर अवरोही क्रम में, और पोर्ट A पिन 22 से शुरू होता है और फिर आरोही क्रम में।



चावल। 6 - सामान्य दृश्य



छोटी कार्यान्वयन विशेषताएं: हम 4 अक्षर आउटपुट करेंगे। वर्ण संख्याएँ होनी चाहिए. यदि आपने "1234" दर्ज किया है और हम "1234" देखेंगे, यदि आपने "123456" दर्ज किया है तो भी हम "1234" देखेंगे, यदि आपने "ytsuk", "fyva1234", "otiog485909oapom" दर्ज किया है - तो हम कुछ भी नहीं देखेंगे। यदि आपने "pp2345mm" दर्ज किया है तो हमें "23" दिखाई देगा यानी। छोटा, अंतर्निर्मित "फुलप्रूफिंग"।

वास्तविक रेखाचित्र:



आप देख सकते हैं कि यह प्रोग्राम कैसे काम करता हैवीडियो 3.



पावेल सर्गेव द्वारा तैयार समीक्षा

सात-खंड एलईडी संकेतक डिजिटल मूल्य प्रदर्शन उपकरणों के बीच बहुत लोकप्रिय हैं और माइक्रोवेव ओवन, वॉशिंग मशीन, डिजिटल घड़ियों, काउंटर, टाइमर इत्यादि के फ्रंट पैनल में उपयोग किए जाते हैं। एलसीडी संकेतक की तुलना में, एलईडी संकेतक खंड चमकदार रूप से चमकते हैं और ऊपर दिखाई देते हैं लंबी दूरी और विस्तृत देखने के कोण में। सात खंड वाले 4-बिट संकेतक को माइक्रोकंट्रोलर से जोड़ने के लिए कम से कम 12 I/O लाइनों की आवश्यकता होगी। इसलिए, कम संख्या में पिन वाले माइक्रोकंट्रोलर के साथ इन संकेतकों का उपयोग करना लगभग असंभव है, उदाहरण के लिए, कंपनी की श्रृंखला। बेशक, आप विभिन्न मल्टीप्लेक्सिंग विधियों का उपयोग कर सकते हैं (जिसका विवरण वेबसाइट पर "योजनाएं" अनुभाग में पाया जा सकता है), लेकिन इस मामले में भी प्रत्येक विधि के लिए कुछ सीमाएं हैं, और वे अक्सर जटिल सॉफ़्टवेयर एल्गोरिदम का उपयोग करते हैं।

हम एसपीआई इंटरफ़ेस के माध्यम से एक संकेतक को जोड़ने की विधि को देखेंगे, जिसके लिए माइक्रोकंट्रोलर की केवल 3 I/O लाइनों की आवश्यकता होगी। साथ ही सभी संकेतक खंडों पर नियंत्रण बना रहेगा।

एसपीआई बस के माध्यम से 4-बिट संकेतक को माइक्रोकंट्रोलर से कनेक्ट करने के लिए, कंपनी द्वारा निर्मित एक विशेष ड्राइवर चिप का उपयोग किया जाता है। माइक्रोक्रिकिट एक सामान्य कैथोड के साथ आठ सात-खंड संकेतकों को चलाने में सक्षम है और इसमें अंकों के मूल्यों को संग्रहीत करने के लिए एक बीसीडी डिकोडर, सेगमेंट ड्राइवर, एक मल्टीप्लेक्सिंग सर्किट और स्थिर रैम शामिल है।

संकेतक खंडों के माध्यम से धारा केवल एक बाहरी अवरोधक का उपयोग करके सेट की जाती है। इसके अतिरिक्त, चिप अंतर्निहित पीडब्लूएम का उपयोग करके संकेतक चमक (16 चमक स्तर) के नियंत्रण का समर्थन करता है।

लेख में चर्चा किया गया सर्किट एसपीआई इंटरफ़ेस वाला एक डिस्प्ले मॉड्यूल सर्किट है जिसका उपयोग शौकिया रेडियो डिज़ाइन में किया जा सकता है। और हम सर्किट में नहीं, बल्कि एसपीआई इंटरफ़ेस के माध्यम से माइक्रोक्रिकिट के साथ काम करने में अधिक रुचि रखते हैं। +5 V मॉड्यूल पावर Vcc पिन को आपूर्ति की जाती है, MOSI, CLK और CS सिग्नल लाइनें मास्टर डिवाइस (माइक्रोकंट्रोलर) और स्लेव (MAX7219 चिप) के बीच संचार के लिए हैं।

माइक्रोसर्किट का उपयोग मानक कनेक्शन में किया जाता है; केवल बाहरी घटकों की आवश्यकता होती है जो खंडों के माध्यम से वर्तमान को सेट करता है, बिजली आपूर्ति के लिए एक सुरक्षात्मक डायोड और बिजली आपूर्ति के लिए एक फिल्टर कैपेसिटर होता है।

डेटा को 16-बिट पैकेट (दो बाइट्स) में चिप में स्थानांतरित किया जाता है, जिसे सीएलके सिग्नल के प्रत्येक बढ़ते किनारे पर अंतर्निहित 16-बिट शिफ्ट रजिस्टर में रखा जाता है। हम 16-बिट पैकेट को D0-D15 के रूप में दर्शाते हैं, जहां बिट्स D0-D7 में डेटा होता है, D8-D11 में रजिस्टर पता होता है, बिट्स D12-D15 का कोई अर्थ नहीं होता है। बिट D15 सबसे महत्वपूर्ण बिट है और प्राप्त किया गया पहला बिट है। हालाँकि चिप आठ संकेतकों को नियंत्रित करने में सक्षम है, हम केवल चार के साथ काम करने पर विचार करेंगे। वे आउटपुट DIG0 - DIG3 द्वारा नियंत्रित होते हैं, जो दाएं से बाएं क्रम में स्थित होते हैं, उनके अनुरूप 4-बिट पते (D8-D11) 0x01, 0x02, 0x03 और 0x04 (हेक्साडेसिमल प्रारूप) हैं। अंक रजिस्टर को 8x8 संगठन के साथ ऑन-चिप रैम का उपयोग करके कार्यान्वित किया जाता है और इसे सीधे संबोधित किया जा सकता है ताकि डिस्प्ले पर प्रत्येक व्यक्तिगत अंक को किसी भी समय अपडेट किया जा सके। निम्न तालिका MAX7219 चिप के पता योग्य अंक और नियंत्रण रजिस्टर दिखाती है।

पंजीकरण करवाना

पता

हेक्स मान

कोई ऑपरेशन नहीं

डिकोडिंग मोड

संकेतकों की संख्या

शट डाउन

सूचक परीक्षण

नियंत्रण रजिस्टर

MAX1792 चिप में 5 नियंत्रण रजिस्टर हैं: डिकोडिंग मोड (डिकोड-मोड), संकेतक चमक नियंत्रण (तीव्रता), जुड़े संकेतकों की संख्या का रजिस्टर (स्कैन सीमा), चालू/बंद नियंत्रण (शटडाउन), परीक्षण मोड (प्रदर्शन परीक्षण)।

चिप को चालू और बंद करना

जब चिप पर बिजली लागू की जाती है, तो सभी रजिस्टर रीसेट हो जाते हैं और यह शटडाउन मोड में चला जाता है। इस मोड में डिस्प्ले बंद हो जाता है। सामान्य ऑपरेशन मोड पर स्विच करने के लिए, शटडाउन रजिस्टर का बिट D0 (पता 0Сh) सेट किया जाना चाहिए। ड्राइवर को बंद करने के लिए मजबूर करने के लिए इस बिट को किसी भी समय साफ़ किया जा सकता है, जिससे सभी रजिस्टरों की सामग्री अपरिवर्तित रह जाएगी। इस मोड का उपयोग ऊर्जा बचाने के लिए या अलार्म मोड में संकेतक को फ्लैश करके (शटडाउन मोड का क्रमिक सक्रियण और निष्क्रियकरण) करके किया जा सकता है।

माइक्रोक्रिकिट को क्रमिक रूप से पता (0Сh) और डेटा (00h) संचारित करके शटडाउन मोड में स्विच किया जाता है, और 0Ch (पता) और फिर 01h (डेटा) स्थानांतरित करके सामान्य ऑपरेशन पर वापस आ जाता है।

डिकोडिंग मोड

डिकोडिंग मोड चयन रजिस्टर (पता 09एच) का उपयोग करके, आप बीसीडी कोड बी डिकोडिंग (प्रदर्शन वर्ण 0-9, ई, एच, एल, पी, -) या प्रत्येक अंक के लिए डिकोडिंग के बिना उपयोग कर सकते हैं। रजिस्टर में प्रत्येक बिट एक अंक से मेल खाता है, तार्किक सेट करना इस बिट के लिए डिकोडर को चालू करने से मेल खाता है, 0 सेट करने का मतलब है कि डिकोडर अक्षम है। यदि बीसीडी डिकोडर का उपयोग किया जाता है, तो केवल अंक रजिस्टर (डी3-डी0) में डेटा के सबसे निचले हिस्से को ध्यान में रखा जाता है, बिट्स डी4-डी6 को नजरअंदाज कर दिया जाता है, बिट डी7 बीसीडी डिकोडर पर निर्भर नहीं होता है और इसे चालू करने के लिए जिम्मेदार है। सूचक पर दशमलव बिंदु यदि D7 = 1. उदाहरण के लिए, जब बाइट्स 02h और 05h क्रम में भेजे जाते हैं, तो DIG1 संकेतक (दाएं से दूसरा अंक) संख्या 5 प्रदर्शित करेगा। इसी तरह, 01h और 89h भेजते समय, DIG0 संकेतक दशमलव बिंदु के साथ संख्या 9 प्रदर्शित करेगा। . नीचे दी गई तालिका आईसी के बीसीडी डिकोडर का उपयोग करते समय प्रदर्शित वर्णों की पूरी सूची दिखाती है।

प्रतीक

रजिस्टरों में डेटा

सक्षम खंड = 1

खाली

*दशमलव बिंदु बिट D7=1 द्वारा निर्धारित किया गया है

जब बीसीडी डिकोडर को संचालन से बाहर रखा जाता है, तो डेटा बिट्स D7-D0 संकेतक की खंड रेखाओं (ए-जी और डीपी) के अनुरूप होता है।

सूचक चमक नियंत्रण

चिप आपको अंतर्निहित पीडब्लूएम का उपयोग करके संकेतकों की चमक को प्रोग्रामेटिक रूप से नियंत्रित करने की अनुमति देती है। PWM आउटपुट को तीव्रता रजिस्टर (पता 0Ah) के निम्न-ऑर्डर निबल (D3-D0) द्वारा नियंत्रित किया जाता है, जो आपको 16 चमक स्तरों में से एक को सेट करने की अनुमति देता है। जब निबल के सभी बिट्स को 1 पर सेट किया जाता है, तो संकेतक की अधिकतम चमक चुनी जाती है।

जुड़े संकेतकों की संख्या

स्कैन-लिमिट रजिस्टर (पता 0Bh) माइक्रोक्रिकिट (1 ... 8) द्वारा सेवित बिट्स की संख्या का मान निर्धारित करता है। हमारे 4-बिट संस्करण के लिए, मान 03h को रजिस्टर में लिखा जाना चाहिए।

सूचक परीक्षण

इस मोड के लिए जिम्मेदार रजिस्टर पते 0Fh पर स्थित है। रजिस्टर में D0 बिट सेट करके, उपयोगकर्ता सभी संकेतक खंडों को चालू करता है, जबकि नियंत्रण और डेटा रजिस्टर की सामग्री नहीं बदलती है। डिस्प्ले-टेस्ट मोड को अक्षम करने के लिए, बिट D0 0 होना चाहिए।

माइक्रोकंट्रोलर के साथ इंटरफ़ेस

संकेतक मॉड्यूल को किसी भी माइक्रोकंट्रोलर से जोड़ा जा सकता है जिसमें तीन मुफ्त I/O लाइनें हैं। यदि माइक्रोकंट्रोलर में एक अंतर्निहित एसपीआई हार्डवेयर मॉड्यूल है, तो संकेतक मॉड्यूल को बस में एक स्लेव डिवाइस के रूप में जोड़ा जा सकता है। इस मामले में, माइक्रोकंट्रोलर की एसपीआई सिग्नल लाइनें एसडीओ (सीरियल डेटा आउट), एससीएलके (सीरियल क्लॉक) और एसएस (स्लेव सेलेक्ट) को सीधे MAX7219 चिप (मॉड्यूल) के MOSI, CLK और CS पिन से जोड़ा जा सकता है। सीएस सिग्नल कम सक्रिय है।

यदि माइक्रोकंट्रोलर में हार्डवेयर एसपीआई नहीं है, तो इंटरफ़ेस को सॉफ़्टवेयर में व्यवस्थित किया जा सकता है। MAX7219 के साथ संचार सीएस लाइन को खींचकर और नीचे दबाकर शुरू होता है, फिर सीएलके सिग्नल के बढ़ते किनारे पर एमओएसआई लाइन पर क्रमिक रूप से 16 बिट डेटा (एमएसबी पहले) भेजता है। ट्रांसमिशन पूरा होने पर, सीएस लाइन फिर से ऊंची हो जाती है।

डाउनलोड अनुभाग में, उपयोगकर्ता परीक्षण कार्यक्रम के स्रोत पाठ और फर्मवेयर की HEX फ़ाइल को डाउनलोड कर सकते हैं, जो SPI इंटरफ़ेस के साथ एक संकेतक मॉड्यूल पर मूल्यों के प्रदर्शन के साथ एक पारंपरिक 4-बिट काउंटर को लागू करता है। उपयोग किया जाने वाला माइक्रोकंट्रोलर सॉफ्टवेयर में कार्यान्वित एक इंटरफ़ेस है, संकेतक मॉड्यूल की सिग्नल लाइनें सीएस, एमओएसआई और सीएलके क्रमशः पोर्ट जीपी0, जीपी1 और जीपी2 से जुड़ी होती हैं। PIC माइक्रोकंट्रोलर्स के लिए mikroC कंपाइलर का उपयोग किया जाता है (microElectronika

साइट से सामग्री पर टिप्पणी करने और हमारे मंच तक पूर्ण पहुंच प्राप्त करने के लिए, आपको इसकी आवश्यकता है पंजीकरण करवाना .

mob_info