डिस्प्ले किसी भी मशीन का आवश्यक हिस्सा है चाहे वह कोई भी घरेलू उपकरण हो या औद्योगिक मशीनें। प्रदर्शन न केवल मशीन को संचालित करने के लिए नियंत्रण विकल्प दिखाता है, बल्कि उस मशीन द्वारा किए गए कार्य की स्थिति और आउटपुट भी दिखाता है। इलेक्ट्रॉनिक्स में कई प्रकार के डिस्प्ले का उपयोग किया जाता है जैसे 7-सेगमेंट डिस्प्ले, 16x2 एलसीडी डिस्प्ले, टीएफटी टच स्क्रीन डिस्प्ले, ओएलईडी डिस्प्ले आदि।
16x2 एलसीडी डिस्प्ले सबसे बुनियादी डिस्प्ले मॉड्यूल है और इसका उपयोग कुछ छोटे इलेक्ट्रॉनिक्स उपकरणों जैसे कैलकुलेटर, डिजिटल मीटर आदि में भी किया जाता है। हमने 16x2 एलसीडी का उपयोग करते हुए कई प्रोजेक्ट किए हैं, जिसमें अन्य माइक्रोकंट्रोलर के साथ बुनियादी इंटरफेसिंग भी शामिल है:
- 8051 माइक्रोकंट्रोलर के साथ एलसीडी इंटरफेसिंग
- ATmega32 माइक्रोकंट्रोलर के साथ एलसीडी की जगह
- पीआईसी माइक्रोकंट्रोलर के साथ एलसीडी इंटरफैसिंग
- Arduino के साथ 16x2 LCD इंटरफेसिंग
- अजगर के साथ रास्पबेरी पाई के साथ 16x2 एलसीडी इंटरफेसिंग
इस ट्यूटोरियल में, हम देखेंगे कि एटमेगा 16 एवीआर माइक्रोकंट्रोलर के साथ 16x2 एलसीडी को कैसे इंटरफ़ेस करें और एक सरल स्वागत संदेश प्रदर्शित करें।
अवयव आवश्यक
- Atmega16
- 16x2 एलसीडी मॉड्यूल
- जम्परों
- ब्रेड बोर्ड
सर्किट आरेख
16x2 एलसीडी डिस्प्ले के लिए Atmega16 प्रोग्रामिंग
प्रोग्रामिंग के लिए किसी बाहरी लाइब्रेरी की आवश्यकता नहीं होती है। यहाँ Atmega16 को USBASP और Atmel Studio7.0 का उपयोग करके प्रोग्राम किया गया है । पूरा कार्यक्रम और कार्य वीडियो परियोजना के अंत में दिया गया है, बस Atmega16 में कार्यक्रम अपलोड करें और एलसीडी की चमक को समायोजित करने के लिए 10k POT को घुमाएं।प्रारंभ में CPU फ़्रिक्वेंसी को परिभाषित करें और इसमें आवश्यक लाइब्रेरीज़ शामिल करें जो Atmel स्टूडियो पैकेज के साथ आती हैं जैसे कि IO पिन एक्सेस करने के लिए और
कार्यक्रम में आरएस और एलसीडी के एन पिन को परिभाषित करें । RS पिन का उपयोग डेटा और कमांड रजिस्टर का चयन करने के लिए किया जाता है। सक्षम पिन डेटा को लैच करता है।
#define en PA3 #define rs PA2
यह भी परिभाषित करें कि एलसीडी के इंटरफेस के लिए कौन सा पीटीई एटमेगा 16 का उपयोग किया जाएगा। यहाँ, PORTA का उपयोग किया जाता है।
#define एलसीडीडायरेक्शन डीडीआरए #define lcdPort PORTA
अगला कदम एक फ़ंक्शन का निर्माण करना है जो एक पैरामीटर को पारित करके एक कमांड को स्वीकार करेगा। कई एलसीडी एचईएक्स कमांड हैं। हेक्स कमांड का उपयोग एलसीडी के कार्य को परिभाषित करने के लिए किया जाता है। चूंकि हम 4-बिट मोड एलसीडी का उपयोग कर रहे हैं, बाइट (8-बिट) को दो पैकेट में भेजा जाएगा। एक पैकेट अपर निबल (4-बिट) और दूसरा पैकेट लोअर निबल (4-बिट) होगा।
void lcdCommand (अहस्ताक्षरित चार आदेश) { lcdPort = (lcdPort & 0x0F) - (कमांड्स & 0xF0); lcdPort & = ~ (1 <
अगला चरण पात्रों को स्वीकार करना और इसे एलसीडी के बंदरगाह पर ले जाना होगा । तब प्राप्त वर्णों को निबल द्वारा एलसीडी निबल में भेजा जाता है। फ़ंक्शन पैरामीटर द्वारा पास का उपयोग करके चरित्र को लेता है और फिर ऊपरी और निचले कुतरना लेता है। डेटा रजिस्टर के लिए 'rs' पिन को उच्च पर सेट किया जाता है और फिर डेटा को लैच करने के लिए एक बढ़ती पल्स को भेजा जाता है। इसी तरह सक्षम के मूल्य को बदलकर और सक्षम करने के लिए बढ़ती नाड़ी को भेजने के द्वारा भेजे गए में कम नीच।
शून्य lcdChar (अहस्ताक्षरित चार स्ट्रिंग) { lcdPort = (lcdPort & 0x0F) - (स्ट्रिंग & 0xF0); lcdPort - = (1 <
यह फ़ंक्शन केवल चरित्र को स्ट्रिंग में परिवर्तित करता है और बाद में प्रोग्राम में उपयोग किया जा सकता है जहां लेखन स्ट्रिंग की आवश्यकता होती है।
शून्य lcdString (चार * str) { int j; for (j = 0; str; = 0; j ++) { lcdChar (str); } }
अब केवल स्क्रीन खाली करने के लिए एक फंक्शन लिखा जाता है । आपको बस एचईएक्स में कमांड 01 भेजने की आवश्यकता है और फिर कर्सर को प्रारंभिक स्थिति में सेट करें।
शून्य lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
अब मुख्य कार्य में, एलसीडी को आरंभीकृत किया जाता है। शुरू में इंटरफ़ेस के लिए एलसीडी के लिए पोर्ट दिशा निर्धारित करें। यहां, PORT को OUTPUT के रूप में सेट किया जाता है, इसलिए FF सेट करें।
lcdDirection = 0xFF; _delay_ms (20)
फिर हेक्स में 02 भेजकर एलसीडी को 4-बिट मोड में सेट करें । हेक्स में 28 भी भेजें, इसे 2 लाइन में सेट करने के लिए, 4-बिट मोड में 15x7 मैट्रिक्स पिक्सल्स।
lcdCommand (0x02); lcdCommand (0x28);
आदेश 0C और 06 कर्सर की स्थिति को नियंत्रित करने के लिए किया जाता है । और अंत में सिर्फ हेक्स में 01 भेजकर स्क्रीन को साफ करें। इससे एलसीडी का इनिशियलाइजेशन खत्म हो जाएगा।
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
आरंभीकरण समाप्त होने के बाद एक तार भेजकर एलसीडी का परीक्षण करें। यहां हम 1 सेंट पंक्ति में एक स्ट्रिंग " इंटरफैसिंग एलसीडी " भेज रहे हैं ।
lcdString ("Interfacing LCD");
फिर हेक्स में कमांड c0 भेजकर कर्सर को अगली पंक्ति में ले जाएँ । और अंत में इस स्थिति पर, स्ट्रिंग को " एटमेगा 1 6 के साथ" लिखें ।
lcdCommand (0xC0); lcdString ("एटमेगा 16 के साथ");
यह Atmega16 के साथ एक 16x2 एलसीडी इंटरफेसिंग पर पूरा ट्यूटोरियल खत्म करता है । ध्यान दें कि यदि आपको कोई छवि या पिक्सेल नहीं मिलता है, तो या तो कोड और सर्किट आरेख के अनुसार अपनी वायरिंग की जांच करें या एलसीडी के V0 पिन से जुड़ी पॉट के मूल्य को बदल दें। यदि आपको कोई संदेह या सुझाव है तो आप हमें हमारे मंच पर लिखकर या नीचे टिप्पणी कर सकते हैं।