- 16x2 डॉट मैट्रिक्स एलसीडी कंट्रोलर IC HD44780:
- 16x2 एलसीडी पर एक कस्टम कैरेक्टर प्रदर्शित करना:
- प्रोग्रामिंग और कार्य विवरण:
- सर्किट कनेक्शन और परीक्षण:
हमारे पिछले ट्यूटोरियल में, हमने सीखा है कि PIC 16 माइक्रोकंट्रोलर के साथ एक 16 * 2 एलसीडी कैसे इंटरफ़ेस करें। हम आपको किसी भी आगे जाने से पहले इसके माध्यम से जाने की सलाह देते हैं, यदि आप PIC माइक्रोकंट्रोलर में शुरुआती हैं। पहले हमने PIC Microcontroller में LED ब्लिंकिंग प्रोग्राम और टाइमर का उपयोग करके PIC की मूल बातें भी सीखी हैं। आप MPLABX और XC8 कंपाइलर का उपयोग करके Learning PIC Microcontrollers के सभी ट्यूटोरियल यहाँ देख सकते हैं।
इस ट्यूटोरियल में, हम अपने स्वयं के कस्टम वर्ण बनाकर और इसे दिलचस्प बनाते हुए PIC16F877A PIC Microcontroller का उपयोग करके अपनी एलसीडी स्क्रीन पर प्रदर्शित करते हैं । इसके अलावा HD44780A IC द्वारा दिए गए कुछ पूर्व-परिभाषित ज्यादातर उपयोग किए गए कस्टम वर्ण हैं, हम यह भी देखेंगे कि हम उनका उपयोग कैसे कर सकते हैं। जैसा कि हमारे पिछले ट्यूटोरियल में बताया गया है कि हमारे एलसीडी में एक हिताची HD44780 कंट्रोलर लगा हुआ है, जो अक्षर दिखाने में हमारी मदद करता है। प्रत्येक चरित्र जो हम प्रदर्शित करते हैं, वह पहले से ही HD44780 IC के ROM के अंदर पूर्व-परिभाषित है। एलसीडी पर चरित्र प्रदर्शित करने से पहले हम एलसीडी कंट्रोलर IC HD44780 के बारे में जानेंगे।
16x2 डॉट मैट्रिक्स एलसीडी कंट्रोलर IC HD44780:
कस्टम चरित्र प्रदर्शित करने के लिए, हमें किसी तरह आईसी को बताना होगा कि कस्टम चरित्र कैसा दिखेगा। ऐसा करने के लिए हमें HD44780 एलसीडी नियंत्रक IC के अंदर मौजूद तीन प्रकार की यादों के बारे में पता होना चाहिए:
कैरेक्टर जेनरेटर रोम (CGROM): यह केवल पढ़ने वाली मेमोरी है, जैसा कि पहले कहा गया है, इसमें पहले से परिभाषित अक्षरों के सभी पैटर्न शामिल हैं। यह ROM प्रत्येक प्रकार के इंटरफ़ेस IC से अलग होगा, और कुछ में उनके साथ कुछ पूर्व-निर्धारित कस्टम वर्ण हो सकते हैं।
डेटा रैम (DDRAM) प्रदर्शित करें: यह एक रैंडम एक्सेस मेमोरी है। हर बार जब हम एक चरित्र प्रदर्शित करते हैं तो उसका पैटर्न CGROM से प्राप्त किया जाएगा और DDRAM में स्थानांतरित किया जाएगा और फिर स्क्रीन पर रखा जाएगा। इसे सरल बनाने के लिए, DDRAM में सभी पात्रों के पैटर्न होंगे जो वर्तमान में एलसीडी स्क्रीन पर प्रदर्शित किए जा रहे हैं। इस तरह से प्रत्येक चक्र के लिए IC को CGROM से डेटा प्राप्त करने की आवश्यकता नहीं है, और एक छोटी अद्यतन आवृत्ति प्राप्त करने में मदद करता है
चरित्र जनरेटर रैम (CGRAM): यह एक रैंडम एक्सेस मेमोरी भी है, इसलिए हम इससे डेटा लिख और पढ़ सकते हैं। जैसा कि नाम से ही स्पष्ट है कि यह स्मृति वह होगी जिसका उपयोग कस्टम वर्ण उत्पन्न करने के लिए किया जा सकता है। हमें चरित्र के लिए एक पैटर्न बनाना होगा और इसे CGRAM में लिखना होगा, इस पैटर्न को स्क्रीन पर पढ़ा और आवश्यकता पड़ने पर प्रदर्शित किया जा सकता है।
अब, चूंकि हमें HD44780 इंटरफ़ेस आईसी में मौजूद मेमोरी के प्रकारों की एक बुनियादी समझ मिली है। हमें थोड़ा और समझने के लिए इसके डेटाशीट पर एक नज़र डालते हैं।
जैसा कि डेटशीट का तात्पर्य है, HD44780 आईसी ने CGRAM में हमारे कस्टम पैटर्न को स्टोर करने के लिए 8 स्थान के रूप में प्रदान किया है, दाईं ओर हम यह भी देख सकते हैं कि कुछ पूर्व-परिभाषित वर्ण हैं जो हमारी एलसीडी स्क्रीन पर भी प्रदर्शित हो सकते हैं। आइए हम देखें कि हम इसे कैसे कर सकते हैं।
16x2 एलसीडी पर एक कस्टम कैरेक्टर प्रदर्शित करना:
एक कस्टम चरित्र प्रदर्शित करने के लिए हमें पहले इसके लिए एक पैटर्न तैयार करना होगा और फिर इसे CGRAM में सहेजना होगा। चूंकि हमारे पास पहले से ही पुस्तकालय के कार्य हैं, इसलिए कुछ सरल आदेशों के साथ ऐसा करना आसान होना चाहिए। यहाँ एलसीडी फ़ंक्शंस के लिए लाइब्रेरी है, लेकिन यहां हमने प्रोग्राम में सभी लाइब्रेरी फ़ंक्शंस को कॉपी-पेस्ट किया है, इसलिए इस हेडर फ़ाइल को हमारे प्रोग्राम में शामिल करने की आवश्यकता नहीं है। बेसिक एलसीडी काम करने वाले और उसके पिनआउट के लिए भी इस लेख को देखें।
पहला कदम एक पैटर्न या कस्टम चरित्र उत्पन्न करना है। जैसा कि हम जानते हैं कि प्रत्येक वर्ण 5 * 8 डॉट्स का संयोजन है। हमें यह चुनना होगा कि कौन सा डॉट (पिक्सेल) ऊंचा जाना चाहिए और कौन सा कम रहना चाहिए। बस नीचे दिए गए बॉक्स को ड्रा करें और अपने चरित्र के आधार पर क्षेत्रों को शेड करें। मेरा किरदार एक स्टिक मैन है (आशा है कि यह एक जैसा दिखता है)। एक बार छायांकित करने के बाद, सरल प्रत्येक बाइट के बराबर बाइनरी मूल्य को नीचे दिखाए अनुसार लिखें।
बस छायांकित क्षेत्र पर एक '1' और प्रत्येक बाइट के लिए संयुक्त राष्ट्र के छायांकित क्षेत्र पर एक '0' रखें, और यही हमारा कस्टम पैटर्न तैयार है। इसी तरह मैंने हमारे 8 मेमोरी स्पेस के लिए 8 कस्टम पैटर्न कोड बनाये हैं जो इसे CGROM प्रस्तुत करते हैं । वे नीचे दी गई तालिका में सूचीबद्ध हैं।
S.NO: |
कस्टम चरित्र |
पैटर्न कोड |
1 |
|
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
२ |
|
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
३ |
|
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
४ |
|
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
५ |
|
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
६ |
|
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
। |
|
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
। |
|
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
नोट: CGRAM में दिए गए सभी 8 स्थानों को लोड करना अनिवार्य नहीं है।
प्रोग्रामिंग और कार्य विवरण:
अब हमारे पैटर्न कोड तैयार हैं, हमें बस उन्हें LCD के CGRAM में लोड करना है और उन्हें PIC माइक्रोकंट्रोलर का उपयोग करके प्रदर्शित करना है। CGRAM में उन्हें लोड करने के लिए हम 5 * 8 एलीमेंट्स बना सकते हैं और प्रत्येक बाइट को ' लूप ' के लिए लोड कर सकते हैं । पैटर्न कोड का सरणी नीचे दिखाया गया है:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010010, // CGRAM मेमोरी स्पेस के लिए कोड 1 CGRAM मेमोरी स्पेस 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010,0b010010, // CGRAM मेमोरी स्पेस के लिए कोड 3 0b01110,0b10001bb10001bb11111,0b11011,0b11011,0b11111,0b00000, CGRAM मेमोरी स्पेस के लिए कोड। अंतरिक्ष 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, CGRAM मेमोरी स्पेस के लिए कोड 5 0b00000,0b10001,0b01010,0b0101,0b0001,0b01100,0b0101,0b10000000, CGRAM मेमोरी स्पेस 6 के लिए कोड। 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, CGRAM मेमोरी स्पेस के लिए कोड 7 0b11111,0b11111,0b10101bb11011,01111,0,01111,0b11111,0b10001,0b11111 // CGRAM मेमोरी स्पेस 8} के लिए कोड;
प्रत्येक मेमोरी स्पेस उसके सम्मानित चरित्र पैटर्न के साथ भरी हुई है। इस पैटर्न को HD44780 IC में लोड करने के लिए, HD44780 के डेटा-शीट को संदर्भित करना होगा, लेकिन यह केवल कमांड की पंक्तियाँ हैं जिनका उपयोग CGRAM का पता सेट करने के लिए किया जा सकता है
// *** CGROM में लोड कस्टम चार्ट *** ////// Lcd_Cmd (0x04); // सेट CGRAM पता Lcd_Cmd (0x00); //.. के लिए CGRAM पता सेट करें (i = 0; मैं <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // घर पर लौटें Lcd_Cmd (2); //.. घर वापस लौटें // *** लोड हो रहा है कस्टम चर पूरा *** //////
यहाँ, ' लूप के लिए ' के अंदर प्रत्येक बाइनरी मान को CGROM में लोड किया जाता है। एक बार जब पैटर्न लोड हो जाता है, तो कस्टम वर्णों को केवल नीचे दिखाए गए शून्य Lcd_Print_Char (चार डेटा) फ़ंक्शन का उपयोग करके पैटर्न के स्थान को कॉल करके प्रदर्शित किया जा सकता है ।
Lcd_Print_Char (0); // प्रदर्शन कस्टम चरित्र 0 Lcd_Print_Char (1); // प्रदर्शन कस्टम चरित्र 1 Lcd_Print_Char (2); // प्रदर्शन कस्टम चरित्र 2 Lcd_Print_Char (3); // प्रदर्शन कस्टम चरित्र 3 Lcd_Print_Char (4); // प्रदर्शन कस्टम चरित्र 4 Lcd_Print_Char (5); // प्रदर्शन कस्टम चरित्र 5 Lcd_Print_Char (6); // प्रदर्शन कस्टम चरित्र 6 Lcd_Print_Char (7); // प्रदर्शन कस्टम चरित्र 7
प्रिंट पूर्वनिर्धारित विशेष चरित्र:
HD44780 IC में कुछ पूर्वनिर्धारित विशेष वर्ण हैं जो DDROM में संग्रहीत हैं। इन वर्णों को सीधे डेटाशीट में इसके बाइनरी मान का संदर्भ देकर स्क्रीन पर मुद्रित किया जा सकता है।
उदाहरण के लिए: चरित्र "अल्फा" का बाइनरी मान 0b11100000 है। इसे कैसे प्राप्त किया जा सकता है नीचे दिए गए आंकड़े से समझा जा सकता है, इसी तरह आप किसी विशेष चरित्र के लिए मान प्राप्त कर सकते हैं जो आईसी में पूर्व-परिभाषित है।
एक बार बाइनरी वैल्यू ज्ञात हो जाने के बाद, नीचे दिखाए गए अनुसार शून्य Lcd_Print_Char (char data) फ़ंक्शन का उपयोग करके संबंधित वर्ण को स्क्रीन पर मुद्रित किया जा सकता है;
Lcd_Print_Char (0b11100000); // डेटा-शीट से अल्फा का द्विआधारी मूल्य
पूरा कोड इस परियोजना का कोड अनुभाग में नीचे दी गई है, यह भी विस्तार की जाँच वीडियो इस ट्यूटोरियल के अंत में स्पष्टीकरण।
सर्किट कनेक्शन और परीक्षण:
इस परियोजना में किसी भी अतिरिक्त हार्डवेयर की आवश्यकता नहीं है, हमने पिछले एलसीडी इंटरफेसिंग ट्यूटोरियल से समान कनेक्शन का उपयोग किया है और उसी बोर्ड का उपयोग किया है जिसे हमने एलईडी ब्लिंकिंग ट्यूटोरियल में बनाया है। हमेशा की तरह हम अपने आउटपुट को सत्यापित करने के लिए प्रोटियस का उपयोग करके प्रोग्राम का अनुकरण करते हैं।
एक बार जब हमारे पास सिमुलेशन चल रहा होता है, तो हम सीधे अपने हार्डवेयर सेट-अप में कोड को जला देते हैं। कार्यक्रम का आउटपुट कुछ इस तरह होना चाहिए:
तो यह है कि आप MPLABX और XC8 कंपाइलर के साथ PIC माइक्रोकंट्रोलर का उपयोग करके 16x2 एलसीडी पर कोई भी कस्टम कैरेक्टर कैसे प्रदर्शित कर सकते हैं । इसके अलावा हमारे पूर्ण PIC माइक्रोकंट्रोलर लर्निंग सीरीज़ की जाँच करें।