प्रदर्शन इकाइयां एम्बेडेड परियोजनाओं और इलेक्ट्रॉनिक्स उत्पादों में सबसे महत्वपूर्ण आउटपुट डिवाइस हैं। 16x2 एलसीडी सबसे ज्यादा इस्तेमाल की जाने वाली डिस्प्ले यूनिट में से एक है। 16x2 एलसीडी का मतलब है कि दो पंक्तियाँ हैं जिनमें प्रति पंक्ति 16 अक्षर प्रदर्शित किए जा सकते हैं, और प्रत्येक वर्ण एलसीडी पर 5X7 मैट्रिक्स स्पेस लेता है। इस ट्यूटोरियल में हम 16X2 एलसीडी मॉड्यूल को 8051 माइक्रोकंट्रोलर (AT89S52) से जोड़ने जा रहे हैं। 8051 माइक्रोकंट्रोलर के साथ एलसीडी को इंटरफैस करने से न्यूबॉक्स काफी जटिल लग सकते हैं, लेकिन कॉन्सेप्ट को समझने के बाद यह बहुत सरल और आसान लगेगा। हालाँकि इसमें समय लग सकता है क्योंकि आपको एलसीडी के 16 पिनों को माइक्रोकंट्रोलर को समझने और कनेक्ट करने की आवश्यकता है। तो पहले एलसीडी मॉड्यूल के 16 पिनों को समझते हैं।
हम इसे पाँच श्रेणियों, पावर पिन, कंट्रास्ट पिन, कंट्रोल पिन, डेटा पिन और बैकलाइट पिन में विभाजित कर सकते हैं।
वर्ग |
पिन नं। |
पिन नाम |
समारोह |
पावर पिंस |
1 |
वीएसएस |
ग्राउंड पिन, ग्राउंड से जुड़ा |
२ |
VDD या Vcc |
वोल्टेज पिन + 5 वी |
|
कंट्रास्ट पिन |
३ |
V0 या VEE |
कंट्रास्ट सेटिंग, Vcc से जुड़ा हुआ एक वैरिएबल रेसिस्टर है। |
पिंस पर नियंत्रण रखें |
४ |
रुपये |
रजिस्टर का चयन करें पिन, RS = 0 कमांड मोड, RS = 1 डेटा मोड |
५ |
आरडब्ल्यू |
पढ़ें / पिन लिखें, RW = 0 लिखें मोड, आरडब्ल्यू = 1 पढ़ें मोड |
|
६ |
इ |
सक्षम करें, एलसीडी को सक्षम करने के लिए एक उच्च से निम्न पल्स की आवश्यकता होती है |
|
डेटा पिन |
7-14 |
D0-D7 |
डेटा पिन, स्टोर डेटा को एलसीडी या कमांड निर्देशों पर प्रदर्शित किया जाएगा |
बैकलाइट पिंस |
१५ |
एलईडी + या ए |
बैकलाइट + 5 वी को पावर करने के लिए |
१६ |
एलईडी- या के |
बैकलाइट ग्राउंड |
नियंत्रण पिन को छोड़कर सभी पिन उनके नाम और कार्यों से स्पष्ट रूप से समझ में आते हैं, इसलिए उन्हें नीचे समझाया गया है:
RS: RS रजिस्टर सिलेक्ट पिन है। हमें इसे 1 पर सेट करने की आवश्यकता है, अगर हम एलसीडी पर प्रदर्शित होने के लिए कुछ डेटा भेज रहे हैं। और हम इसे 0 पर सेट करेंगे यदि हम स्क्रीन को साफ़ करने के लिए कुछ कमांड निर्देश भेज रहे हैं (हेक्स कोड 01)।
आरडब्ल्यू: यह रीड / राइट पिन है, हम इसे 0 पर सेट करेंगे, अगर हम एलसीडी पर कुछ डेटा लिखने जा रहे हैं। और इसे 1 पर सेट करें, अगर हम एलसीडी मॉड्यूल से पढ़ रहे हैं। आम तौर पर यह 0 पर सेट होता है, क्योंकि हमें एलसीडी से डेटा पढ़ने की आवश्यकता नहीं है। केवल एक निर्देश "एलसीडी स्थिति प्राप्त करें", कुछ समय पढ़ने की आवश्यकता है।
E: इस पिन का उपयोग मॉड्यूल को सक्षम करने के लिए किया जाता है जब उच्च से निम्न नाड़ी दी जाती है। 450 ns की एक दाल दी जानी चाहिए। उच्च से निम्न में परिवर्तन मॉड्यूल को सक्षम बनाता है।
एलसीडी में कुछ पूर्व निर्धारित कमांड निर्देश हैं, हमने एलसीडी (lcd_init () फ़ंक्शन) में तैयार करने के लिए नीचे दिए गए हमारे कार्यक्रम में उनका उपयोग किया है। कुछ महत्वपूर्ण कमांड निर्देश नीचे दिए गए हैं:
हेक्स कोड |
एलसीडी निर्देश रजिस्टर करने के लिए कमान |
0 फ |
एलसीडी ऑन, कर्सर ऑन |
०१ |
स्पष्ट प्रदर्शन स्क्रीन |
02 |
घर लौटना |
04 |
घटता कर्सर (बाईं ओर शिफ्ट कर्सर) |
06 |
वृद्धि कर्सर (दाएं पर कर्सर शिफ्ट करें) |
05 |
सही प्रदर्शन |
07 |
शिफ्ट प्रदर्शन छोड़ दिया |
0 ई |
प्रदर्शन, कर्सर ब्लिंकिंग |
.० |
पहली पंक्ति की शुरुआत के लिए बल कर्सर |
C0 |
दूसरी पंक्ति की शुरुआत के लिए बल कर्सर |
३। |
2 लाइनें और 5 × 7 मैट्रिक्स |
83 |
कर्सर रेखा 1 स्थिति 3 |
-3 सी |
दूसरी पंक्ति को सक्रिय करें |
० 08 |
प्रदर्शन बंद, कर्सर बंद |
सी 1 |
दूसरी पंक्ति पर जाएं, स्थिति 1 |
ओसी |
प्रदर्शन, कर्सर बंद |
सी 1 |
दूसरी पंक्ति पर जाएं, स्थिति 1 |
सी 2 |
दूसरी पंक्ति पर जाएं, स्थिति 2 |
सर्किट आरेख और स्पष्टीकरण
8051 माइक्रोकंट्रोलर के साथ एलसीडी इंटरफेसिंग के लिए सर्किट आरेख को उपरोक्त आंकड़े में दिखाया गया है। अगर आपको 8051 की बुनियादी समझ है, तो आपको 8051 माइक्रोकंट्रोलर के EA (पिन 31), XTAL1 & XTAL2, RST पिन (पिन 9), Vcc और ग्राउंड पिन के बारे में पता होना चाहिए। मैंने उपरोक्त सर्किट में इन पिंस का उपयोग किया है। यदि आपके पास इसके बारे में कोई विचार नहीं है, तो मैं आपको यह सलाह देता हूं कि 8051 माइक्रोकंट्रोलर के साथ इस अनुच्छेद एलईडी इंटरफेसिंग को पढ़ने से पहले पढ़ें।
इसलिए इन उपरोक्त पिनों के अलावा हमने एलसीडी के डेटा पिन (D0-D7) को पोर्ट 2 (P2_0 - P2_7) माइक्रोकंट्रोलर से जोड़ा है। और माइक्रोकंट्रोलर के क्रमशः पिन 12,13,14 (पिन 33 पोर्ट 3 का) पिन, आरएस, आरडब्ल्यू और ई को नियंत्रित करते हैं।
एलसीडी के पिन 2 (वीडीडी) और पिन 15 (बैकलाइट सप्लाई) वोल्टेज (5 वी) से जुड़े हैं, और पिन 1 (वीएसएस) और पिन 16 (बैकलाइट ग्राउंड) जमीन से जुड़े हैं।
पिन 3 (V0) एलसीडी के विपरीत को समायोजित करने के लिए 10k के एक चर रोकनेवाला के माध्यम से वोल्टेज (Vcc) से जुड़ा हुआ है। चर रोकनेवाला का मध्य पैर पिन 3 से जुड़ा है और अन्य दो पैर वोल्टेज की आपूर्ति और ग्राउंड से जुड़े हैं।
कोड स्पष्टीकरण
मैंने टिप्पणियों के माध्यम से कोड को समझाने की कोशिश की है (कोड में ही)।
जैसा कि मैंने पहले कमांड मोड और डेटा मोड के बारे में बताया है, आप देख सकते हैं कि कमांड (फंक्शन lcd_cmd) भेजते समय हमने RS = 0, RW = 0 सेट किया है और E को 1 बनाकर E को LOW पल्स को एक हाई दिया गया है, फिर 0 इसके अलावा, जब हम एलसीडी पर डेटा (फंक्शन lcd_data) भेजते हैं तो हमने RS = 1, RW = 0 सेट किया है और E से इसे 1 करने के लिए E को 1 से 0. फंक्शन msdelay () बनाया गया है ताकि मिलीसेकंड में देरी हो सके। और प्रोग्राम में अक्सर बुलाया जाता है, इसलिए इसे बुलाया जाता है ताकि एलसीडी मॉड्यूल को आंतरिक संचालन और आदेशों को निष्पादित करने के लिए पर्याप्त समय मिल सके।
स्ट्रिंग को प्रिंट करने के लिए एक लूप बनाया गया है, जो किसी वर्ण को प्रिंट करने के लिए प्रत्येक बार lcd_data फ़ंक्शन को कॉल कर रहा है जब तक कि अंतिम वर्ण (शून्य टर्मिनेटर- '\ 0')।
हमने पूर्व निर्धारित कमांड निर्देशों का उपयोग करके एलसीडी को तैयार करने के लिए lcd_init () फ़ंक्शन का उपयोग किया है (ऊपर समझाया गया है)।