प्रदर्शन एक मशीन का आवश्यक हिस्सा है चाहे वह किसी भी घरेलू उपकरण या औद्योगिक मशीन हो। प्रदर्शन न केवल मशीन को संचालित करने के लिए नियंत्रण विकल्प दिखाता है, बल्कि उस मशीन द्वारा किए गए कार्य की स्थिति और आउटपुट भी दिखाता है। इलेक्ट्रॉनिक्स में 7-सेगमेंट डिस्प्ले, एलसीडी डिस्प्ले, टीएफटी टच स्क्रीन डिस्प्ले, एलईडी डिस्प्ले आदि जैसे कई प्रकार के डिस्प्ले हैं। 16x2 एलसीडी डिस्प्ले सबसे बुनियादी है और कुछ छोटे इलेक्ट्रॉनिक्स उपकरणों में भी इसका इस्तेमाल किया जाता है, हमने बहुत कुछ किया है 16x2 एलसीडी का उपयोग करने वाले प्रोजेक्ट जिसमें अन्य माइक्रोकंट्रोलर के साथ बुनियादी इंटरफेसिंग शामिल है:
- 8051 माइक्रोकंट्रोलर के साथ एलसीडी इंटरफेसिंग
- ATmega32 माइक्रोकंट्रोलर के साथ एलसीडी की जगह
- पीआईसी माइक्रोकंट्रोलर के साथ एलसीडी इंटरफैसिंग
- Arduino के साथ 16x2 LCD इंटरफेसिंग
- अजगर के साथ रास्पबेरी पाई के साथ 16x2 एलसीडी इंटरफेसिंग
इस ट्यूटोरियल में, हम देखेंगे कि ARM7-LPC2148 माइक्रोकंट्रोलर के साथ 16x2 एलसीडी को कैसे इंटरफ़ेस करें और एक सरल संक्षिप्त संदेश प्रदर्शित करें। यदि आप ARM7 के साथ नए हैं, तो ARM7 LPC2148 की मूल बातें से शुरू करें और जानें कि इसे KeP uVision का उपयोग करके कैसे प्रोग्राम किया जा सकता है
सामग्री की आवश्यकता
हार्डवेयर
- ARM7-LPC2148 माइक्रोकंट्रोलर बोर्ड
- एलसीडी (16X2)
- तनाव नापने का यंत्र
- 5V वोल्टेज नियामक आईसी
- ब्रेड बोर्ड
- तारों को जोड़ना
- 9 वी बैटरी
- माइक्रो यूएसबी केबल
सॉफ्टवेयर
- Keil uVision 5
- मैजिक फ्लैश टूल
परियोजना में शामिल होने से पहले हमें ऑपरेशन के एलसीडी मोड और एलसीडी हेक्स कोड के बारे में कुछ बातें पता होनी चाहिए।
16X2 एलसीडी डिस्प्ले मॉड्यूल
16X2 LCD का कहना है कि इसमें 16 कॉलम और 2 पंक्तियाँ हैं। इस एलसीडी में 16 पिन हैं। नीचे की छवि और तालिका एलसीडी डिस्प्ले और उसके कार्यों के पिन नामों को दिखाती है।
नाम |
समारोह |
वीएसएस |
ग्राउंड पिन |
VDD |
+ 5 वी इनपुट पिन |
वी |
कंट्रास्ट समायोजित पिन |
रुपये |
रजिस्टर का चयन करें |
आर / डब्ल्यू |
पिन पढ़ें / लिखें |
इ |
पिन सक्षम करें |
D0-D7 |
डेटा पिन (8 पिन) |
एलईडी ए |
एनोड पिन (+ 5 वी) |
एलईडी के |
कैथोड पिन (GND) |
एलसीडी दो अलग-अलग मोड में काम कर सकता है, अर्थात् 4-बिट मोड और 8-बिट मोड। 4 बिट मोड में हम डेटा को निबल के द्वारा भेजते हैं, पहले ऊपरी कुतरना और फिर निचले कुतरना। आप में से उन लोगों के लिए जो नहीं जानते हैं कि एक कुतरना क्या है: एक कुतरना चार बिट्स का एक समूह है, इसलिए बाइट के निचले चार बिट्स (D0-D3) निचले नीब का निर्माण करते हैं जबकि ऊपरी चार बिट्स (D4-D7) एक बाइट के रूप में उच्च कुतरना। यह हमें 8 बिट डेटा भेजने में सक्षम बनाता है।
जबकि 8 बिट मोड में हम 8-बिट डेटा को सीधे एक झटके में भेज सकते हैं क्योंकि हम सभी 8 डेटा लाइनों का उपयोग करते हैं।
यहां इस परियोजना में हम सबसे अधिक इस्तेमाल की जाने वाली विधा का उपयोग करेंगे जो 4-बिट मोड है । चार बिट मोड में हम माइक्रोकंट्रोलर के 4 पिन बचा सकते हैं और वायरिंग ओवरहेड को भी कम कर सकते हैं।
16x2 किसी भी कमांड को लेने के लिए HEX कोड का भी उपयोग करता है, एलसीडी के लिए कई हेक्स कमांड हैं जैसे कर्सर को ले जाना, मोड का चयन करना, कंट्रोल को दूसरी लाइन में शिफ्ट करना आदि। 16X2 एलसीडी डिस्प्ले मॉड्यूल और हेक्स कमांड के बारे में अधिक जानने के लिए, लिंक का अनुसरण करें ।
सर्किट आरेख और कनेक्शन
नीचे दी गई तालिका में LCD और ARM7-LPC2148 के बीच सर्किट कनेक्शन दिखाया गया है ।
ARM7-LPC2148 |
एलसीडी (16x2) |
P0.4 |
रुपये (पंजीकरण चुनें) |
P0.6 |
ई (सक्षम) |
P0.12 |
D4 (डेटा पिन 4) |
P0.13 |
D5 (डेटा पिन 5) |
P0.14 |
D6 (डेटा पिन 6) |
P0.15 |
D7 (डेटा पिन 7) |
एलसीडी और ARM7 स्टिक के साथ वोल्टेज नियामक के कनेक्शन
नीचे दी गई तालिका में वोल्टेज नियामक के साथ ARM7 और एलसीडी के बीच कनेक्शन दिखाया गया है।
वोल्टेज नियामक आईसी |
पिन समारोह |
एलसीडी और एआरएम -7 LPC2148 |
1. टाईट पिन |
+ बैटरी 9 वी इनपुट से वी |
एनसी |
2.कंपनी पिन |
- बैटरी से |
वीएसएस, आर / डब्ल्यू, एलसीडी का ARM7 का GND |
3. राइट पिन |
विनियमित + 5 वी आउटपुट |
वीडीडी, एलसीडी का ए एआरएम 7 का + 5 वी |
एलसीडी के साथ पोटेंशियोमीटर
एलसीडी डिस्प्ले के विपरीत को बदलने के लिए एक पोटेंशियोमीटर का उपयोग किया जाता है। एक पॉट में तीन पिन होते हैं, लेफ्ट पिन (1) +5 वी से जुड़ा होता है और एलसीडी मॉड्यूल के वीईई या वी 0 से केंद्र (2) और राइट पिन (3) जीएनडी से जुड़ा होता है। हम घुंडी को मोड़कर इसके विपरीत को समायोजित कर सकते हैं।
जम्पर सेटिंग्स
एआरएम 7-स्टिक में एक जम्पर पिन मौजूद है ताकि हम यूएसबी का उपयोग करके या केवल पावर के लिए 5 वी डीसी इनपुट का उपयोग करके कोड को पावर और अपलोड कर सकें। आप निचे की इमेज देख सकते है।
नीचे की छवि से पता चलता है कि जम्पर डीसी स्थिति में है । इसका मतलब है कि हमें बाहरी 5V आपूर्ति से बोर्ड को शक्ति प्रदान करनी चाहिए।
और यह छवि दिखाती है कि जम्पर यूएसबी मोड में जुड़ा हुआ है। यहां माइक्रो यूएसबी पोर्ट के जरिए पावर और कोड दिया गया है।
नोट: इस ट्यूटोरियल में हमने USB में जम्पर लगाकर USB का उपयोग करके कोड अपलोड किया है और फिर LPC2148 को रेगुलेटर के 5v इनपुट से पावर करने के लिए डीसी मोड में जम्पर को बदल दिया है। आप अंत में दिए गए वीडियो में इसे देख सकते हैं ।
ARM7 माइक्रोकंट्रोलर के साथ 16x2 एलसीडी को इंटरफेज करने का अंतिम सर्किट इस तरह दिखेगा:
प्रोग्रामिंग ARM7-LPC2148
ARM7-LPC2148 प्रोग्राम करने के लिए हमें keil uVision और Flash Magic टूल की आवश्यकता है। हम माइक्रो यूएसबी पोर्ट के माध्यम से ARM7 स्टिक को प्रोग्राम करने के लिए USB केबल का उपयोग कर रहे हैं। हम Keil का उपयोग करके कोड लिखते हैं और एक हेक्स फ़ाइल बनाते हैं और फिर HEX फाइल को फ्लैश मैजिक का उपयोग करते हुए ARM7 स्टिक में लाते हैं। काइल uVision और फ्लैश मैजिक को स्थापित करने के बारे में अधिक जानने के लिए और उनका उपयोग कैसे करें लिंक का पालन करें ARM7 LPC2148 माइक्रोकंट्रोलर के साथ शुरुआत करें और इसे Keil uVision का उपयोग करके प्रोग्राम करें।
एआरएम 7 के साथ एलसीडी को इंटरफेस करने का पूरा कोड इस ट्यूटोरियल के अंत में दिया गया है, यहां हम इसके कुछ हिस्सों के बारे में बता रहे हैं।
सबसे पहले हमें आवश्यक हेडर फ़ाइलों को शामिल करना होगा
#शामिल
एलसीडी मॉड्यूल की शुरुआत एक बहुत ही महत्वपूर्ण कदम है। यहां हम कुछ हेक्स कोड का उपयोग करते हैं, जो वास्तव में कमांड हैं, एलसीडी को ऑपरेशन के मोड (4-बिट), एलसीडी के प्रकार (16x2), स्टार्ट लाइन आदि के बारे में बताने के लिए।
vid LCD_INITILIZE (शून्य) // फ़ंक्शन तैयार एलसीडी प्राप्त करने के लिए { IO0DIR = 0x0000FF00; // सेट्स पिन P0.4, P0.6, P0.12, P0.13, P0.14, P0.15as OUTPUT delay_ms (20); LCD_SEND (0x02); // प्रारंभिक एलसीडी को ऑपरेशन के 4-बिट मोड में LCD_SEND (0x28); // 2 लाइनें (16X2) LCD_SEND (0x0C); // LCD_SEND (0x06) पर कर्सर पर प्रदर्शन ; // ऑटो इंक्रीमेंट कर्सर LCD_SEND (0x01); // स्पष्ट LCD_SEND (0x80) प्रदर्शित करें ; // पहली पंक्ति पहली स्थिति }
4-बिट मोड के लिए हमारे पास पिंस के लिए विभिन्न प्रकार के लेखन कार्य हैं, जो ऊपरी और निचले नीबेल का उपयोग करके है। आइए देखें, यह कैसे किया जाता है
void LCD_SEND (char कमांड) // फेक हेक्स कमांड भेजने के लिए कुतरना ( IO0PIN = (IO0PIN & 0xFFFF00FF) - ((कमांड & 0xF0 << << 8)); // ऊपरी nibble कमांड भेजें IO0SET = 0x00000040; // उच्च IO0CLR = 0x00000030 सक्षम करें ; // RS & RW कम करना देरी_ms (5); IO0CLR = 0x00000040; // LOW delay_ms (5) को सक्षम करना ; IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((कमांड और 0x0F) << 12)); // कमांड का निचला नीबूं IO0SET = 0x00000040 भेजें ; // सक्षम उच्च IO0CLR = 0x00000030; // आरएस और आरडब्ल्यू कम देरी_एमएस (5); IO0CLR = 0x00000040; // असमर्थ LOW delay_ms (5); }
कुतरने का तर्क
IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((कमांड और 0x0F) << 12)); // कमांड का निचला नीब भेजें IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((कमांड & 0xF0) << 8)); // कमांड का ऊपरी निबल भेजें
दो बयानों से ऊपर इस कार्यक्रम में एक महत्वपूर्ण भूमिका निभाते हैं। पहला कमांड लोअर निबल भेजता है और दूसरा ऊपरी निबल भेजता है। यह हमारे द्वारा किए जाने वाले अन्य पिनों को प्रभावित किए बिना है। आइए देखें कि यह कैसे हो रहा है इससे पहले इस तर्क के बारे में जान लें
ओरिंग- (A-0 = A), (A-1 = 1) Anding- (A & 0 = 0), (A & 1 = A)
तो हम अन्य पिन को प्रभावित किए बिना मास्किंग कॉन्सेप्ट और लॉजिकल शिफ्ट ऑपरेशन का उपयोग करते हैं। मतलब केवल पिन (P0.12-P0.15) का उपयोग किया जाता है और कोई अन्य पिन जैसे P0.4, P0.6 प्रभावित नहीं होते हैं। यह चार बिट्स में डेटा को शिफ्ट करने और निचले नीबूं के स्थान पर ऊपरी निबल बनाने और ऊपरी निबल को मास्क करने के द्वारा किया जाएगा। और फिर हम निचले बिट्स को शून्य (0XF0) बनाते हैं और आउटपुट पर ऊपरी निबल डेटा प्राप्त करने के लिए कुतरने वाले डेटा के साथ ओरेड करते हैं।
इसी तरह की प्रक्रिया का उपयोग निम्न डेटा के लिए किया जाता है लेकिन यहां हमें डेटा को शिफ्ट करने की आवश्यकता नहीं है।
आउटपुट में डेटा लिखते समय, अर्थात् कमांड मोड में RS कम होना चाहिए और सक्षम करने के लिए उच्च होना चाहिए, और डेटा मोड में RS उच्च होना चाहिए और सक्षम करने के लिए उच्च होना चाहिए।
अब स्ट्रिंग डेटा जो आउटपुट पर प्रिंट किया जाना है, भेजने के लिए, उसी सिद्धांत का उपयोग निबल द्वारा उपयोग किया जाता है। यहां महत्वपूर्ण कदम रेजिस्टर सिलेक्ट (RS) डेटा मोड के लिए उच्च होना चाहिए।
void LCD_DISPLAY (चार * संदेश) // एक { uint8_t i = 0 द्वारा भेजे गए वर्णों को मुद्रित करने का कार्य ; जबकि (संदेश! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((संदेश और 0xF0) << 8)); // अपर निबल IO0SET = 0x00000050 भेजता है ; // RS उच्च और सक्षम डेटा IO0CLR = 0x00000020 मुद्रित करने के लिए उच्च ; // RW कम लिखें मोड देरी एमएस (2); IO0CLR = 0x00000040; // एन = 0, आरएस और आरडब्ल्यू अपरिवर्तित (यानी आरएस = 1, आरडब्ल्यू = 0) देरी एमएस (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((संदेश और 0x0F) << 12)); // लोअर निबल IO0SET = 0x00000050 भेजता है ; // RS & EN हाई IO0CLR = 0x00000020; देरी एमएस (2); IO0CLR = 0x00000040; देरी एमएस (5); मैं ++; }
पूरा कोडिंग और प्रदर्शन वीडियो नीचे दिया गया है।