- सामग्री की आवश्यकता
- सर्किट आरेख और कनेक्शन
- Arduino का उपयोग करते हुए एलसीडी के लिए प्रोग्रामिंग एसटीएम 32
- कार्यक्रम को STM32F103C8T6 पर अपलोड करना
किसी भी माइक्रोकंट्रोलर प्रोजेक्ट के लिए, इसके साथ एक डिस्प्ले यूनिट को इंटरैक्ट करने से यह प्रोजेक्ट बहुत आसान हो जाएगा और उपयोगकर्ता के साथ बातचीत करने के लिए अपील करेगा। माइक्रोकंट्रोलर्स के लिए सबसे अधिक इस्तेमाल किया जाने वाला डिस्प्ले यूनिट 16 × 2 अल्फा न्यूमेरिक डिस्प्ले है। इस प्रकार के डिस्प्ले न केवल उपयोगकर्ता को महत्वपूर्ण जानकारी प्रदर्शित करने के लिए उपयोगी होते हैं, बल्कि प्रोजेक्ट के प्रारंभिक विकास चरण के दौरान डिबगिंग टूल के रूप में भी कार्य कर सकते हैं। इसलिए, इस ट्यूटोरियल में हम सीखेंगे कि हम STM32F103C8T6 STM32 डेवलपमेंट बोर्ड के साथ 16 × 2 एलसीडी डिस्प्ले को कैसे इंटरफेस कर सकते हैं और इसे Arduino IDE का उपयोग करके प्रोग्राम कर सकते हैं। जो लोग Arduino से परिचित हैं उनके लिए यह ट्यूटोरियल सिर्फ एक केक वॉक होगा क्योंकि वे दोनों बहुत समान हैं। इसके अलावा STM32 ब्लू पिल बोर्ड के बारे में अधिक जानने के लिए हमारे ट्यूटोरियल शुरू करें।
सामग्री की आवश्यकता
- STM32 ब्लू पिल विकास बोर्ड
- 16 × 2 एलसीडी डिस्प्ले
- FTDI प्रोग्रामर
- तारों को जोड़ना
- एलसीडी
संक्षिप्त परिचय 16 × 2 डॉट मैट्रिक्स एलसीडी डिस्प्ले के लिए
जैसा कि पहले बताया गया है कि एनर्जिया आईडीई एक सुंदर पुस्तकालय प्रदान करता है जो इंटरफेस को केक का एक टुकड़ा बनाता है और इसलिए डिस्प्ले मॉड्यूल के बारे में कुछ भी जानना अनिवार्य नहीं है। लेकिन, यह दिखाना दिलचस्प नहीं होगा कि हम क्या उपयोग कर रहे हैं !!
16 × 2 नाम का अर्थ है कि डिस्प्ले में 16 कॉलम और 2 पंक्तियाँ हैं, जो एक साथ (16 * 2) 32 बॉक्स बनाती हैं। एक एकल बॉक्स नीचे दी गई तस्वीर में कुछ इस तरह दिखाई देगा
एक एकल बॉक्स में 5 पंक्तियों और 8 स्तंभों के मैट्रिक्स क्रम के साथ 40 पिक्सेल (डॉट्स) होते हैं, ये 40 पिक्सेल मिलकर एक वर्ण बनाते हैं। इसी तरह, सभी बॉक्स का उपयोग करके 32 अक्षर प्रदर्शित किए जा सकते हैं। अब पिनआउट्स पर एक नज़र डालते हैं।
एलसीडी में कुल 16 पिंस होते हैं, जैसा कि ऊपर दिखाया गया है, उन्हें निम्नानुसार चार समूहों में वर्गीकृत किया जा सकता है
सोर्स पिंस (1, 2 और 3): ये पिन डिस्प्ले के लिए पॉवर और कंट्रास्ट लेवल को सोर्स करते हैं
नियंत्रण पिंस (4, 5 और 6): ये पिन एलसीडी इंटरफेसिंग आईसी में रजिस्टरों को सेट / नियंत्रित करते हैं (अधिक यह नीचे दिए गए लिंक में पाया जा सकता है)
डेटा / कमांड पिंस (7 से 14): ये पिन एलसीडी पर किस सूचना को प्रदर्शित करना चाहिए, इसका डेटा प्रदान करते हैं।
एलईडी पिन (15 और 16): इन पिनों का उपयोग एलसीडी की बैकलाइट को चमकाने के लिए किया जाता है यदि आवश्यक हो (वैकल्पिक)।
इन सभी 16 पिनों में से, एलसीडी के उचित काम के लिए केवल 10 पिनों का उपयोग किया जाना है, यदि आप इस 16x2 एलसीडी लेख में इन एलसीडी डिस्प्ले जंप के बारे में अधिक जानना चाहते हैं।
सर्किट आरेख और कनेक्शन
STM32F103C8T6 STM32 ब्लू पिल बोर्ड के साथ इंटरफेस 16 * 2 डॉट मैट्रिक्स एलसीडी सर्किट आरेख नीचे दिखाया गया है। यह फ्रिटिंग सॉफ्टवेयर का उपयोग करके बनाया गया है।
जैसा कि आप देख सकते हैं पूरा कनेक्शन एक ब्रेडबोर्ड पर बना है। हमें STM32 माइक्रोकंट्रोलर को प्रोग्राम करने के लिए एक FTDI बोर्ड की आवश्यकता है । तो हमारे पिछले ट्यूटोरियल के समान, हमने STM32 को FTDI बोर्ड वायर्ड किया है, FDTI प्रोग्रामर का Vcc और ग्राउंड पिन क्रमशः STV32 के 5V पिन और ग्राउंड पिन से जुड़ा है। इसका उपयोग STM32 बोर्ड और एलसीडी को पावर देने के लिए किया जाता है क्योंकि दोनों + 5 वी स्वीकार कर सकते हैं। एफटीडीआई बोर्ड का आरएक्स और टीएक्स पिन एसटीएम 32 के ए 9 और ए 10 पिन से जुड़ा हुआ है ताकि हम बूट लोडर के बिना सीधे बोर्ड को प्रोग्राम कर सकें।
इसके आगे एलसीडी को एसटीएम 32 बोर्ड से जोड़ा जाना है। हम 4-बिट मोड में एलसीडी का उपयोग करने जा रहे हैं, इसलिए हमें STM32 बोर्ड में 4 डेटा बिट पिन (DB4 से DB7) और दो नियंत्रण पिन (RS और EN) कनेक्ट करना होगा जैसा कि STM32F103V8T6 एलसीडी इंटरफेसिंग सर्किट में दिखाया गया है ऊपर चित्र। इसके अलावा नीचे दी गई तालिका आपको संबंध बनाने में मदद करेगी।
एलसीडी पिन नं। |
एलसीडी पिन नाम |
STM32 पिन नाम |
1 |
ग्राउंड (Gnd) |
ग्राउंड (जी) |
२ |
वीसीसी |
5 वी |
३ |
वी |
ग्राउंड (जी) |
४ |
रजिस्टर का चयन करें (RS) |
पीबी 11 |
५ |
पढ़ें / लिखें (RW) |
ग्राउंड (जी) |
६ |
सक्षम (EN) |
PB10 |
। |
डेटा बिट 0 (DB0) |
कोई कनेक्शन (NC) |
। |
डेटा बिट 1 (DB1) |
कोई कनेक्शन (NC) |
९ |
डेटा बिट 2 (DB2) |
कोई कनेक्शन (NC) |
१० |
डेटा बिट 3 (DB3) |
कोई कनेक्शन (NC) |
1 1 |
डेटा बिट 4 (DB4) |
पीबी ० |
१२ |
डेटा बिट 5 (DB5) |
पीबी 1 |
१३ |
डेटा बिट 6 (DB6) |
PC13 |
१४ |
डेटा बिट 7 (DB7) |
PC14 |
१५ |
एलईडी सकारात्मक |
5 वी |
१६ |
एलईडी नकारात्मक |
ग्राउंड (जी) |
एक बार कनेक्शन हो जाने के बाद हम Arduino IDE खोल सकते हैं और इसकी प्रोग्रामिंग शुरू कर सकते हैं।
Arduino का उपयोग करते हुए एलसीडी के लिए प्रोग्रामिंग एसटीएम 32
जैसा कि इस ट्यूटोरियल में बताया गया है कि हम अपने STM32 माइक्रोकंट्रोलर को प्रोग्राम करने के लिए Arduino IDE का उपयोग करेंगे । लेकिन, डिफ़ॉल्ट रूप से Arduino IDE में STM32 बोर्ड स्थापित नहीं होगा, इसलिए हमें एक पैकेज डाउनलोड करना होगा और उसी के लिए Arduino IDE तैयार करना होगा। यह वही है जो हमने अपने पिछले ट्यूटोरियल में Arduino IDE का उपयोग करके STM32F103C8T6 के साथ शुरू किया था। इसलिए यदि आपने आवश्यक पैकेज स्थापित नहीं किया है, तो इस ट्यूटोरियल में वापस जाएं और यहां जारी रखने से पहले इसका पालन करें।
एक बार ArMino IDE में STM32 बोर्ड स्थापित होने के बाद, हम प्रोग्रामिंग शुरू कर सकते हैं। यह कार्यक्रम एक Arduino बोर्ड के समान है, केवल एक चीज जो बदल जाएगी वह है पिन नाम, क्योंकि STM32 और Arduino के लिए नोटेशन अलग हैं । पूरा कार्यक्रम इस पृष्ठ के अंत में दिया गया है, लेकिन कार्यक्रम को समझाने के लिए मैंने इसे छोटे सार्थक स्निपेट में विभाजित किया है जैसा कि नीचे दिखाया गया है।
हमारे माइक्रोकंट्रोलर्स को प्रोग्रामिंग के लिए अरुडिनो का उपयोग करने का एक ध्यान देने योग्य लाभ यह है कि लगभग हर प्रसिद्ध सेंसर और एक्ट्यूएटर्स के लिए अरुडिनो में रेडीमेड लाइब्रेरी हैं। इसलिए यहां हम एलसीडी लाइब्रेरी को शामिल करके अपना कार्यक्रम शुरू करते हैं जो प्रोग्रामिंग को बहुत आसान बनाता है।
#शामिल
अगली पंक्ति में हमें यह निर्दिष्ट करना है कि एसटीपी 32 के जीपीओ पिन हमने एलसीडी डिस्प्ले कंट्रोल और डेटा लाइनों से जुड़े हैं। ऐसा करने के लिए हमें अपने हार्डवेयर की जांच करनी होगी, आसानी से आप शीर्ष पर दी गई तालिका को भी संदर्भित कर सकते हैं जो STM32 के GPIO पिन के खिलाफ एलसीडी के पिन नामों को सूचीबद्ध करती है। पिंस का उल्लेख करने के बाद हम लिक्विड क्रिस्टल फंक्शन का उपयोग करके एलसीडी को इनिशियलाइज़ कर सकते हैं । हम अपने एलसीडी को " एलसीडी " नाम देते हैं जैसा कि नीचे दिखाया गया है।
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // एलसीडी के साथ पिन नामों का उल्लेख लिक्विड क्रिस्टल एलसीडी (आरएस, एन, डी 4, डी 5, डी 6, डी 7) से जुड़ा है ; // एलसीडी को इनिशियलाइज़ करें
अगला हम सेटअप फ़ंक्शन के अंदर कदम रखते हैं । यहां पहले हमने उल्लेख किया है कि हम किस प्रकार के एलसीडी का उपयोग कर रहे हैं। चूंकि यह एक 16 * 2 एलसीडी है, हम लाइन का उपयोग करते हैं lcd.begin (16,2)। शून्य सेटअप फ़ंक्शन के अंदर कोड केवल एक बार निष्पादित होता है। इसलिए हम इसका इस्तेमाल एक इंट्रो टेक्स्ट को दिखाने के लिए करते हैं जो स्क्रीन पर 2 सेकंड के लिए आता है और फिर क्लियर हो जाता है। उस स्थिति का उल्लेख करने के लिए जहां पाठ को प्रकट करना है हम फ़ंक्शन lcd.setcursor का उपयोग करते हैं और पाठ को प्रिंट करने के लिए हम lcd.print फ़ंक्शन का उपयोग करते हैं। उदाहरण के लिए lcd.setCursor (0,0) कर्सर को पहली पंक्ति और पहले कॉलम पर सेट करेगा जहाँ हम " Interfacing LCD " और फ़ंक्शन lcd.setCursor (0,1) प्रिंट करते हैं कर्सर को दूसरी पंक्ति के पहले कॉलम पर ले जाता है जहाँ हम लाइन " सर्किटडिजेस्ट " प्रिंट करते हैं ।
शून्य सेटअप () {lcd.begin (16, 2); // हम एक 16 * 2 एलसीडी lcd.setCursor (0, 0) का उपयोग कर रहे हैं; // पहली पंक्ति में पहला कॉलम lcd.print ("इंटरसेपिंग एलसीडी"); // इस lcd.setCursor (0, 1) को प्रिंट करें; // एकांत पंक्ति में पहला कॉलम lcd.print ("- सर्किटडाइजेस्ट"); // इस विलंब को प्रिंट करें (2000); // दो सेकंड के लिए प्रतीक्षा करें lcd.clear (); // स्क्रीन साफ़ करें}
इंट्रो टेक्स्ट प्रदर्शित करने के बाद हम एक विलंब बनाकर कार्यक्रम को 2 सेकंड के लिए रोक देते हैं ताकि उपयोगकर्ता इंट्रो संदेश पढ़ सके। यह देरी लाइन विलंब (2000) द्वारा बनाई गई है जहां 2000 सेकंड सेकंड में देरी मूल्य है। देरी के बाद हम एलसीडी को एलसीडी (क्लीयर) फ़ंक्शन का उपयोग करके साफ करते हैं जो एलसीडी पर सभी पाठ को हटाकर एलसीडी को साफ करता है।
अंत में शून्य लूप के अंदर , हम पहली पंक्ति पर "STM32 -Blue गोली" और दूसरी पंक्ति पर सेकंड का मूल्य प्रदर्शित करते हैं । दूसरे का मान मिलिस () फ़ंक्शन से प्राप्त किया जा सकता है। मिली सेकंड () एक टाइमर जो समय एमसीयू संचालित है से incrementing सही हो जाता है है। मूल्य मिलि सेकंड के रूप में है इसलिए हम इसे अपने एलसीडी पर प्रदर्शित करने से पहले 1000 से विभाजित करते हैं।
शून्य लूप () { lcd.setCursor (0, 0); // पहली पंक्ति में पहला कॉलम lcd.print ("STM32 -Blue Pill"); // इस lcd.setCursor (0, 1) को प्रिंट करें ; // पहली पंक्ति में पहले स्तंभ lcd.print (मिली () / 1000); // सुरक्षित मानों का प्रिंट करें }
कार्यक्रम को STM32F103C8T6 पर अपलोड करना
जैसा कि उपरोक्त पैराग्राफ में चर्चा की गई है कि आपको कोड अपलोड होते ही आउटपुट नोटिस करने में सक्षम होना चाहिए। लेकिन यह कार्यक्रम अगली बार तब काम नहीं करेगा जब आप बोर्ड को पावर देंगे, क्योंकि बोर्ड अभी भी प्रोग्रामिंग मोड में है। इसलिए एक बार प्रोग्राम अपलोड होने के बाद बूट 0 पर जम्पर को वापस 0 स्थिति में बदल दिया जाना चाहिए जैसा कि नीचे दिखाया गया है । अब चूंकि कार्यक्रम STM32 बोर्ड में अपलोड किया गया है, इसलिए हमें पहले से ही FTDI बोर्ड की आवश्यकता नहीं है और पूरे सेट-अप को STM32 बोर्ड के माइक्रो-यूएसबी पोर्ट द्वारा संचालित किया जा सकता है और साथ ही नीचे दिखाया गया है।
एसटीएम 3 बोर्ड के साथ एलसीडी डिस्प्ले का उपयोग करने में मदद करने के लिए यह केवल एक सरल इंटरप्रैसिंग प्रोजेक्ट है, लेकिन आगे आप इसका उपयोग कूल प्रोजेक्ट बनाने के लिए कर सकते हैं। आशा है कि आपने ट्यूटोरियल को समझ लिया है और इससे कुछ उपयोगी सीखा है। यदि आपको इसे काम करने में किसी समस्या का सामना करना पड़ा है, तो कृपया समस्या को पोस्ट करने के लिए टिप्पणी अनुभाग का उपयोग करें या अन्य तकनीकी प्रश्नों के लिए मंचों का उपयोग करें। STM32 के साथ एलसीडी डिस्प्ले का पूरा काम नीचे दिए गए वीडियो के रूप में भी देखा जा सकता है ।