मानव दुनिया और मशीन की दुनिया के बीच एक अच्छा संचार स्थापित करने के लिए, प्रदर्शन इकाइयां एक महत्वपूर्ण भूमिका निभाती हैं। और इसलिए वे एम्बेडेड सिस्टम का एक महत्वपूर्ण हिस्सा हैं। प्रदर्शन इकाइयाँ - बड़ा या छोटा, एक ही मूल सिद्धांत पर काम करते हैं। ग्राफिक डिस्प्ले और 3 डी डिस्पले जैसी जटिल डिस्प्ले इकाइयों के अलावा, किसी को 16x1 और 16x2 इकाइयों जैसे सरल डिस्प्ले के साथ काम करना चाहिए। 16x1 डिस्प्ले यूनिट में 16 अक्षर होंगे और एक लाइन में होंगे। 16x2 एलसीडी में कुल 16in 1 सेंट लाइन में 32 और 2 nd में एक और 16 अक्षर होंगेरेखा। यहाँ यह समझना चाहिए कि प्रत्येक वर्ण में 5x10 = 50 पिक्सेल होते हैं, इसलिए किसी एक चरित्र को प्रदर्शित करने के लिए सभी 50 पिक्सेल को एक साथ काम करना होगा। लेकिन हमें इसके बारे में चिंता करने की आवश्यकता नहीं है क्योंकि डिस्प्ले यूनिट में एक और नियंत्रक (एचडी 44780) है जो पिक्सल को नियंत्रित करने का काम करता है। (आप इसे एलसीडी यूनिट में देख सकते हैं, यह पीछे की तरफ काली नज़र है)।
अवयव आवश्यक
हार्डवेयर:
ATmega32 माइक्रोकंट्रोलर
बिजली की आपूर्ति (5v)
एवीआर-आईएसपी प्रोग्रामर
JHD_162ALCD (16x2 LCD)
100uF संधारित्र।
सॉफ्टवेयर:
Atmel स्टूडियो 6.1
प्रोगिस्प या फ्लैश मैजिक
सर्किट आरेख और स्पष्टीकरण
जैसा कि ATmega32 सर्किट के साथ एलसीडी इंटरफेसिंग में दिखाया गया है, आप देख सकते हैं कि ATMEGA32 का PORTA डेटा पोर्ट एलसीडी से जुड़ा है। यहां किसी को फ्यूज बाइट्स को बदलकर ATMEGA के PORTC में JTAG कम्युनिकेशन को डिसेबल करना याद रखना चाहिए, अगर कोई PORTC को सामान्य कम्युनिकेशन पोर्ट के रूप में इस्तेमाल करना चाहता है। 16x2 एलसीडी में 16 पिन होते हैं, अगर बैक लाइट है, अगर बैक लाइट नहीं है तो 14 पिन होंगे। एक बिजली या पीछे की हल्की पिंस को छोड़ सकता है। अब 14 पिनों में 8 डेटा पिन (7-14 या D0-D7), 2 पावर सप्लाई पिन (1 & 2 या VSS & VDD या gnd & + 5v), कंट्रास्ट कंट्रोल के लिए 3 rd पिन (VEE- नियंत्रण हैं कि पात्रों को कितना मोटा होना चाहिए दिखाया गया है), 3 नियंत्रण पिन (रुपये और आरडब्ल्यू और ई)
उपरोक्त सर्किट में AVR माइक्रोकंट्रोलर के साथ 16x2 LCD इंटरफ़ेस करने के लिए, आप देख सकते हैं कि मैंने केवल दो कंट्रोल पिन लिए हैं। इससे बेहतर समझ का लचीलापन मिलता है। इसके विपरीत बिट और आरईएडी / राइट का उपयोग अक्सर नहीं किया जाता है ताकि उन्हें जमीन पर छोटा किया जा सके। यह एलसीडी को कंट्रास्ट और रीड मोड में डालता है। हमें केवल वर्ण और डेटा भेजने के लिए सक्षम और आरएस पिन को नियंत्रित करने की आवश्यकता है।
ATmega32 माइक्रोकंट्रोलर और 16x2 एलसीडी के बीच कनेक्शन नीचे दिए गए हैं:
PIN1 या VSS - जमीन
PIN2 या VDD या VCC - + 5v शक्ति
PIN3 या VEE - ग्राउंड (एक शुरुआत के लिए अधिकतम विपरीत देता है)
पिन 4 या आरएस (रजिस्टर चयन) - माइक्रोकंट्रोलर की पीडी 6
पिन 5 या आरडब्ल्यू (पढ़ें / लिखें) - जमीन (रीड मोड में एलसीडी लगाता है उपयोगकर्ता के लिए संचार को आसान बनाता है)
पिन 6 या ई (सक्षम) - माइक्रोकंट्रोलर का पीडी 5
PIN7 या D0 - माइक्रोकंट्रोलर का PA0
PIN8 या D1 - PA1
पिन 9 या डी 2 - पीए 2
पिन 10 या डी 3 - पीए 3
पिन 11 या डी 4 - पीए 4
पिन 12 या डी 5 - पीए 5
पिन 13 या डी 6 - पीए 6
पिन 14 या डी 7 - पीए 7
सर्किट में आप देख सकते हैं कि हमने 8bit संचार (D0-D7) का उपयोग किया है, लेकिन यह अनिवार्य नहीं है और हम 4bit संचार (D4-D7) का भी उपयोग कर सकते हैं, लेकिन 4 बिट संचार कार्यक्रम शुरुआती लोगों के लिए थोड़ा जटिल हो जाता है इसलिए बस 8 बिट संचार।
इसलिए उपरोक्त तालिका से मात्र अवलोकन से हम एलसीडी के 10 पिन को कंट्रोलर से जोड़ रहे हैं जिसमें 8 पिन डेटा पिन और 2 पिन नियंत्रण के लिए हैं।
काम कर रहे
अब आरंभ करने के लिए आपको 16x2 एलसीडी के 10 पिन (8 डेटा पिन + 2 नियंत्रण पिन) के कार्यों को जानना होगा । 8 डेटा पिन एलसीडी पर डेटा या कमांड भेजने के लिए हैं। दो नियंत्रण पिंस में:
1. आरएस (रजिस्टर चयन) पिन एलसीडी को यह बताना है कि क्या हम उसे डेटा भेज रहे हैं या उसे कमांड दे रहे हैं।
उदाहरण के लिए:
डेटा पोर्ट (D7-D0) के मान के लिए उपरोक्त तालिका "0b0010 1000 या 0x28" का मान एलसीडी को प्रदर्शित करने के लिए कहता है "(" प्रतीक। तालिका 2 में समान मूल्य 0x28 एलसीडी को बताता है "आप 5x7 डॉट एलसीडी हैं और एक जैसा व्यवहार करें ”, इसलिए समान मूल्य के लिए उपयोगकर्ता दो चीजों को परिभाषित कर सकता है, अब यह स्थिति रजिस्टर चयन पिन द्वारा निष्प्रभावी हो जाती है, यदि आरएस पिन कम है तो एलसीडी समझता है कि हम कमांड भेज रहे हैं। यदि हम आरएस पिन को उच्च पर सेट करते हैं। एलसीडी समझता है कि हम डेटा भेज रहे हैं। और इसलिए दोनों मामलों में एलसीडी आरएस पिन मूल्य के अनुसार डेटा पोर्ट मूल्य का सम्मान करता है।
2. ई (इनेबल्ड) पिन केवल "पीसी के पावर इंडिकेशन एलईडी" को बताने के लिए है, यह पिन एलसीडी को कंट्रोलर के डेटा फॉर्म डेटा पोर्ट को प्राप्त करने के लिए उच्च "सेट" करने के लिए सेट है। एक बार जब यह पिन उच्च के बाद कम हो जाता है, तो एलसीडी प्राप्त डेटा को संसाधित करता है और संबंधित परिणाम दिखाता है। इसलिए यह पिन डेटा भेजने से पहले उच्च पर सेट किया जाता है और डेटा भेजने के बाद जमीन पर खींच लिया जाता है।
अब हार्डवेयर कनेक्ट करने के बाद, Atmel स्टूडियो शुरू करें और प्रोग्राम लिखने के लिए एक नया प्रोजेक्ट शुरू करें, अब प्रोग्रामिंग स्क्रीन खोलें और राइटिंग प्रोग्राम शुरू करें। कार्यक्रम को शो फॉलोइंग के रूप में अनुसरण करना होगा।
सबसे पहले हम कंट्रोलर को बताते हैं कि हम किन पोर्ट्स का इस्तेमाल एलसीडी के डेटा और कंट्रोल के लिए कर रहे हैं। फिर आरएस और ई पिन के साथ खेल के अनुसार डेटा या कमांड भेजने के लिए नियंत्रक को बताएं।
कार्यक्रम में प्रयुक्त अवधारणाओं की संक्षिप्त व्याख्या:
1. ई उच्च सेट (एलसीडी डेटा प्राप्त करने के लिए कह रहा है) और रुपये कम है (एलसीडी हम आदेश दे रहे हैं कह रही है)
2. स्क्रीन को साफ करने के लिए कमांड के रूप में डेटा पोर्ट के लिए 0x01 का मान देना
3. ई उच्च सेट (एलसीडी को डेटा प्राप्त करने के लिए कह रहा है) और आरएस उच्च सेट है (एलसीडी हम डेटा दे रहे हैं)
4. प्रत्येक पात्र को एक-एक करके एक-एक अक्षर में भेजना।
5. ई सेट कम है (एलसीडी को बता रहा है कि हम डेटा भेज रहे हैं)
6. अंतिम कमांड के बाद एलसीडी संचार को समाप्त करता है और डेटा को संसाधित करता है और स्क्रीन पर वर्णों की स्ट्रिंग प्रदर्शित करता है।
इस परिदृश्य में हम पात्रों को एक के बाद एक भेजने जा रहे हैं। पात्रों को एलसीडी ASCII कोड (सूचना मानक विनिमय के लिए अमेरिकी मानक कोड) द्वारा दिया जाता है।
ASCII कोड्स की तालिका ऊपर दिखाई गई है। यहां एलसीडी के लिए एक चरित्र "@" दिखाने के लिए हमें एक हेक्साडेसिमल कोड "64" भेजने की आवश्यकता है। अगर हम एलसीडी पर '0x62' भेजते हैं तो यह '>' सिंबल दिखाएगा। इस तरह हम एक नाम प्रदर्शित करने के लिए एलसीडी को उपयुक्त कोड भेजने जा रहे हैं।
एलसीडी और ATmega32 AVR माइक्रोकंट्रोलर के बीच संचार का तरीका नीचे दिए गए C कोड के चरण में सबसे अच्छा समझाया गया है,