- आवश्यक घटक:
- चित्रमय एलसीडी:
- 8051 का उपयोग करके चित्रमय एलसीडी पर एक छवि दिखा रहा है:
- सर्किट स्पष्टीकरण:
- प्रोग्रामिंग स्पष्टीकरण:
हमारे दैनिक जीवन में, हम पाठ, चित्र और ग्राफिक्स प्रदर्शित करने के लिए कई प्रकार के उपकरण देखते हैं। LCD इलेक्ट्रॉनिक्स में सबसे लोकप्रिय डिस्प्ले डिवाइस में से एक है और इसका उपयोग ज्यादातर सभी परियोजनाओं में किया जाता है जो किसी प्रकार की जानकारी प्रदर्शित करते हैं। इलेक्ट्रॉनिक प्रोजेक्ट्स में कई तरह के एलसीडी का इस्तेमाल होता है। हमने पहले ही अपनी कई परियोजनाओं में 16X2 एलसीडी का उपयोग किया है और Arduino के साथ TFT LCD का भी उपयोग किया है। आप इस लिंक का पालन करके हमारे सभी 16X2 एलसीडी संबंधित प्रोजेक्ट को पा सकते हैं, जिसमें 8051, AVR, Arduino के साथ इंटरफेसिंग और कई और अधिक शामिल हैं।
इस ट्यूटोरियल में हम 8051 माइक्रोकंट्रोलर के साथ ग्राफिक एलसीडी इंटरफेसिंग करने जा रहे हैं । इस परियोजना में, हम दिखाएंगे कि चित्रमय एलसीडी (जीएलसीडी) पर एक छवि कैसे प्रदर्शित करें ।
आवश्यक घटक:
- ग्राफिकल एलसीडी
- AT89c52 8051 माइक्रोकंट्रोलर
- 7805 वोल्टेज नियामक
- 1000uf संधारित्र
- 10 यूएफ संधारित्र
- 10K रोकनेवाला
- 10K पॉट
- क्रिस्टल थरथरानवाला 12 एमएच
- तार जोड़ना
- ब्रेड बोर्ड
- बर्ग धारी नर
- बिजली की आपूर्ति
- एलईडी
- 220 ओम अवरोधक
- 1K रोकनेवाला
चित्रमय एलसीडी:
एक साधारण 16x2 एलसीडी में 16 पिन होते हैं लेकिन ग्राफिकल एलसीडी में 20 पिन होते हैं। पिन विवरण इसके डेटशीट के अनुसार नीचे दिया गया है:
पिन नं। | पिन नाम | विवरण | समारोह |
1 | वीएसएस | भूमि | 0 वोल्ट |
२ | VDD | बिजली की आपूर्ति | 5 वोल्ट |
३ | वि ० | एलसीडी कंट्रास्ट समायोजन | |
४ | रुपये | कमांड / डेटा रजिस्टर चयन | RS = 0: कमांड चयन और RS = 1: डेटा चयन |
५ | आर / डब्ल्यू | रजिस्टर पढ़ें / लिखें | R / W = 0: चयन लिखें और R / W = 1: चयन पढ़ें |
६ | इ | सिग्नल सक्षम करें | |
। | DB0 | डेटा इनपुट / आउटपुट पिन (DB0-DB7) | 8 बिट (DB0-DB7) |
। | DB1 | ||
९ | डीबी 2 | ||
१० | DB3 | ||
1 1 | DB4 | ||
१२ | DB5 | ||
१३ | डीबी 6 | ||
१४ | डीबी 7 | ||
१५ | CS1 | चिप का चयन करें | CS1 = 1, IC1 के लिए चिप चयन संकेत |
१६ | CS2 | चिप का चयन करें | CS2 = 1, IC2 के लिए चिप चयन संकेत |
१। | आरएसटी | रीसेट | जीएलसीडी को रीसेट करें |
१। | वी | एलसीडी चालक के लिए नकारात्मक वोल्टेज | |
१ ९ | ए | बैक लाइट एलईडी | 5 वोल्ट |
२० | क | बैक लाइट एलईडी | भूमि |
8051 का उपयोग करके चित्रमय एलसीडी पर एक छवि दिखा रहा है:
चित्रमय एलसीडी पर एक छवि दिखाने के लिए, पहले हमें उस छवि को असेंबली कोड में बदलने की आवश्यकता है, ताकि 8051 माइक्रोकंट्रोलर इसे समझ और पढ़ सकें। इसलिए हमें छवि को HEX कोड में बदलने के लिए निम्न चरणों का पालन करने की आवश्यकता है :
चरण 1: सबसे पहले हमें एक एप्लिकेशन डाउनलोड करना होगा जो छवि (BMP प्रारूप) को असेंबली कोड में परिवर्तित करता है। तो इस लिंक से BMP2ASM छवि रूपांतरण एप्लिकेशन डाउनलोड करें, लिंक पर बस राइट क्लिक करें और फिर लिंक सहेजें पर क्लिक करें…
चरण 2: फिर, उस चित्र का चयन करें जिसे आप ग्राफिकल एलसीडी पर प्रदर्शित करना चाहते हैं और इसे बीएमपी में परिवर्तित करें, (यदि यह पहले से बीएमपी प्रारूप में नहीं है) तो एमएस पेंट, फोटोशॉप आदि जैसे किसी भी एप्लिकेशन का उपयोग करके या आप कई ऑनलाइन वेबसाइट पा सकते हैं। छवि प्रारूप रूपांतरण के लिए। हमारे पास BMP छवि है, जिसका आकार 128x64 है:
चरण 3: अब BMP2ASM.zip फ़ाइल निकालें, जिसे हमने चरण 1 में डाउनलोड किया है और इसके भीतर Bmp2asm.exe खोलें, और BMP छवि का चयन करें ।
चरण 4: अब BMP2ASM एप्लिकेशन विंडो में "कन्वर्ट" दबाएं।
चरण 5: फिर जनरेट कोड को कॉपी करें और केइल uVision में 8051 के प्रोग्राम में पेस्ट करें। कुछ परिवर्तन करें और कोड संकलित करें।
अब आपका कोड 8051 माइक्रोकंट्रोलर में अपलोड करने के लिए तैयार है।
सर्किट स्पष्टीकरण:
8051 माइक्रोकंट्रोलर के लिए इंटरफैसिंग ग्राफिकल एलसीडी के लिए सर्किट कनेक्शन, आसान और लगभग 16x2 एलसीडी से 8051 को जोड़ने जैसा है। लेकिन 16x2 एलसीडी में 16 पिन हैं और जीएलसीडी में 20 पिन हैं।
GLK के लिए सेट कंट्रास्ट के लिए 10K पॉट का उपयोग किया जाता है। जीएलसीडी आरएस, आर / डब्ल्यू और ई के नियंत्रण पिन सीधे 89C52 पिन नंबर P1.0, P1.1 और P1.2 से जुड़े हैं। चिप चुनिंदा पिन CS1 और LCD के CS2 क्रमशः P1.3 और P1.4 पिन से जुड़े हैं। डेटा पिन DB0-DB7 PORT P2 में सीधे जुड़े हुए हैं। 7805 वोल्ट रेगुलेटर का उपयोग नियमित 5 वोल्ट की आपूर्ति के लिए किया जाता है। प्रदर्शन वीडियो में, मैंने Arduino बिजली की आपूर्ति का उपयोग किया है।
प्रोग्रामिंग स्पष्टीकरण:
सबसे पहले, हम प्रोग्राम में आवश्यक हेडर फाइलें शामिल करते हैं और जीएलसीडी के नियंत्रण और डेटा पिन के लिए बिट्स को परिभाषित करते हैं।
#शामिल
इसके बाद, हमने एक देरी फ़ंक्शन बनाया है।
शून्य देरी (int itime) {int i, j; के लिए (i = 0; i)
फ़ंक्शन void lcd_disp_on () का उपयोग प्रदर्शन को चालू करने के लिए किया जाता है।
GLCD में कॉलम सेट करने के लिए फंक्शन void setCursorY (int y) बनाया जाता है और GLCD पर पेज सेट करने के लिए Function void setCursorX (int x) बनाया जाता है। पूरा कोड फ़ाइल कोड सेक्शन में नीचे दिया गया है।
कॉलम और पेज सेट करने के बाद, हमने GLCD को कमांड और डेटा भेजने के लिए एक फंक्शन लिखा है।
शून्य एलसीडीडप्रिंट (चार डेट, इंट आकार) {अहस्ताक्षरित इंट मैं; के लिए (i = 0; i)
में शून्य मुख्य () समारोह, हम GLCD को मंजूरी दे दी और फिर स्तंभ और पृष्ठ निर्धारित किया है। इसके बाद, vcd lcdprint (char dat, int size) फ़ंक्शन का उपयोग करके एलसीडी को डेटा भेजें ।
शून्य मुख्य () {इंट एक्स, वाई; पी 3 = 0xff; जबकि (1) {lcdclear (); for (y = 0; y <8; y ++) {के लिए (x = 0; x <128; x ++) {lcd_disp_on (); setCursorX (y); setCursorY (x); lcdprint (छवि, x); }}………………….।
कोड का प्रवाह:
- सबसे पहले जब हम सिस्टम को पावर करते हैं, तो प्रोग्राम जीएलसीडी और डिस्प्ले को चालू करता है।
- फिर कर्सर को कॉलम पर सेट करें, जहां से हम डेटा लिखना चाहते हैं।
- फिर कर्सर को पेज पर सेट करें, जहाँ से हम डेटा लिखना चाहते हैं।
- अब कार्यक्रम 128X8 टाइम्स तक एक-एक करके डेटा को चयनित स्थान पर भेजता है। क्योंकि एक जीएलसीडी में 8 पेज और 128 कॉलम होते हैं।