- 16x2 अल्फ़ान्यूमेरिक एलसीडी डिस्प्ले
- MSP430 के लिए 16x2 एलसीडी सीसीएस लाइब्रेरी
- MSP430 पर 16x2 एलसीडी डिस्प्ले के लिए एलसीडी फ़ंक्शंस
- सर्किट आरेख MSP430 के साथ इंटरफेस एलसीडी के लिए
- एलसीडी डिस्प्ले के लिए कोड कम्पोजर स्टूडियो का उपयोग करके MSP430 प्रोग्रामिंग
यह लेख कोड कम्पोज़र स्टूडियो का उपयोग करके MSP430 प्रोग्रामिंग पर हमारे ट्यूटोरियल श्रृंखला की निरंतरता है। अंतिम ट्यूटोरियल GPIO पिन का उपयोग करके MSP430 पर बाहरी व्यवधान पर आधारित था । यह ट्यूटोरियल MSP430 के साथ एक डिस्प्ले को बाधित करने के बारे में है, जब यह 16 * 2 एलसीडी डिस्प्ले प्रदर्शित करने की बात आती है, तो यह किसी भी इलेक्ट्रॉनिक हॉबीस्ट के लिए पहली पसंद है। पहले हमने Arduino IDE का उपयोग करके MSP430 के साथ LCD को भी बाधित किया है, इस ट्यूटोरियल में, हम Arduino IDE का उपयोग करने के बजाय देशी कोड कम्पोज़र स्टूडियो प्लेटफ़ॉर्म का उपयोग करेंगे, इस तरह से एक डिज़ाइनर के रूप में, हमें अधिक लचीलापन मिलता है।
16x2 एलसीडी डिस्प्ले के बारे में और जानने के लिए और अन्य माइक्रोकंट्रोलर के साथ इसका उपयोग करने के लिए, कृपया नीचे दिए गए ट्यूटोरियल देखें।
- ATmega16 के साथ एलसीडी की जगह
- रास्पबेरी पाई के साथ एलसीडी को इंटरफैस करना
- PIC Microcontroller के साथ एलसीडी Interfacing
- ARM7-LPC2148 के साथ Interfacing एलसीडी
- NodeMCU के साथ एलसीडी को इंटरफैस करना
- STM32 के साथ एलसीडी को इंटरफैस करना
- MSP430G2 के साथ एलसीडी को इंटरफैस करना
- STM8 के साथ एलसीडी को इंटरफैस करना
इसमें एक इन-बिल्ट IC HD44780 है जो इसमें दिए गए कमांड और डेटा को स्टोर कर सकता है। एलसीडी मॉड्यूल में लगभग 16 पिन हैं। जिनमें से 8 डेटा पिन हैं, उनमें से 4 बैकलाइट एलईडी और पूरे एलसीडी मॉड्यूल के लिए पिन की आपूर्ति करते हैं, ऑपरेशन को नियंत्रित करने के लिए 3, और कंट्रास्ट समायोजन के लिए 1 पिन। ट्यूटोरियल डेनिस इचमैन द्वारा बनाई गई लाइब्रेरी पर आधारित है। विभिन्न प्रकार के डेटा को प्रिंट करने के लिए अलग-अलग फ़ंक्शन के साथ लाइब्रेरी का उपयोग करना बहुत आसान है। इसमें अग्रणी, रिक्त, और हटाए गए शून्य के साथ डेटा को विभिन्न रूपों में प्रदर्शित करने के प्रावधान हैं। यह एक विस्तृत और व्यापक पुस्तकालय है और विभिन्न कनेक्शनों के लिए विन्यास योग्य है। यहां, डेटा संचार के लिए 8-पिन समानांतर कॉन्फ़िगरेशन को समायोजित करने के लिए हेडर फ़ाइल को संशोधित किया गया है।
16x2 अल्फ़ान्यूमेरिक एलसीडी डिस्प्ले
एक सामान्य 16x2 डिस्प्ले में एक इनबिल्ट hd44780 आईसी (नीचे लाल रंग में परिक्रमा) है, जो इसे पारित कमांड और डेटा को स्टोर कर सकता है। एलसीडी मॉड्यूल में लगभग 16 पिन हैं। जिनमें से 8 डेटा पिन हैं, उनमें से 4 बैकलाइट एलईडी और पूरे एलसीडी मॉड्यूल के लिए पिन की आपूर्ति करते हैं, ऑपरेशन को नियंत्रित करने के लिए 3, और कंट्रास्ट समायोजन के लिए 1 पिन।
यह एलसीडी मॉड्यूल बहुमुखी से ऊपर दिखाया गया है और अन्य खंडित एलसीडी की तुलना में न्यूनतम पिन का उपयोग करता है। यदि आप यह जानने के लिए उत्सुक हैं कि यह सब कैसे काम करता है, तो आपको 16x2 एलसीडी डिस्प्ले के कामकाज की जांच करनी चाहिए, जहां हमने पहले ही चर्चा की है कि एलसीडी कैसे काम करता है।
आरएस पिन: आरएस = 1 एलसीडी में डेटा रजिस्टर को सक्षम करेगा, जिसका उपयोग एलसीडी में डेटा रजिस्टर के मूल्यों को लिखने के लिए किया जाता है। आरएस = 0 एलसीडी के निर्देश रजिस्टर को सक्षम करेगा।
पिन सक्षम करें: नकारात्मक किनारे-ट्रिगर; जब पिन को हाई स्टेट से LOW अवस्था में बदला जाता है, तो LCD को डेटा पिन पर लिखने के लिए प्रेरित किया जाता है। सकारात्मक बढ़त-ट्रिगर; जब पिन को LOW अवस्था से उच्च अवस्था में बदल दिया जाता है, तो LCD को डेटा पिन से पढ़ने के लिए प्रेरित किया जाता है।
आर / डब्ल्यू पिन: आर / डब्ल्यू = 0 आरएस पिन के चयन के अनुसार निर्देश रजिस्टर या डेटा रजिस्टर को लिखेंगे। आरएस पिन के चयन के अनुसार आर / डब्ल्यू = 1 आईआर या डीआर से पढ़ा जाएगा।
आरएस आर / डब्ल्यू ऑपरेशन
0 0 आईआर एक आंतरिक ऑपरेशन के रूप में लिखते हैं (स्पष्ट आदि)
0 1 व्यस्त ध्वज (DB7) और पता काउंटर (DB0 से DB6) पढ़ें
1 0 DR एक आंतरिक ऑपरेशन के रूप में लिखते हैं (DR to DDRAM या CGRAM)
1 1 DR एक आंतरिक ऑपरेशन (DDRAM या CGRAM to DR) के रूप में पढ़ा गया
D0-D7 पिन: डेटा को कमांड से और इन पिन के माध्यम से डेटा रजिस्टर में स्थानांतरित किया जाता है।
सप्लाई पिन: एलसीडी मॉड्यूल को पावर देने के लिए V ss, V dd पिन का उपयोग किया जाता है। ए, के पिन एलईडी बैकलाइट को शक्ति देगा। कंट्रास्ट को नियंत्रित करने के लिए V 0 पिन का उपयोग किया जाता है।
MSP430 के लिए 16x2 एलसीडी सीसीएस लाइब्रेरी
ट्यूटोरियल डेनिस इचमैन द्वारा बनाई गई लाइब्रेरी पर आधारित है। विभिन्न प्रकार के डेटा को प्रिंट करने के लिए अलग-अलग फ़ंक्शन के साथ लाइब्रेरी का उपयोग करना बहुत आसान है। इसमें अग्रणी, रिक्त, और हटाए गए शून्य के साथ डेटा को विभिन्न रूपों में प्रदर्शित करने के प्रावधान हैं। यह एक विस्तृत और व्यापक पुस्तकालय है और विभिन्न कनेक्शनों के लिए विन्यास योग्य है। यहां, डेटा संचार के लिए 8-पिन समानांतर कॉन्फ़िगरेशन को समायोजित करने के लिए हेडर फ़ाइल को संशोधित किया गया है। लाइब्रेरी को नीचे दिए गए लिंक से डाउनलोड किया जा सकता है, डाउनलोड करने के बाद आप CCS में लाइब्रेरी को जोड़ने के लिए नीचे दिए गए चरणों का पालन करें।
MSP430 के लिए 16x2 लाइब्रेरी डाउनलोड करें - कोड कम्पोज़र स्टूडियो
चरण 1: फ़ाइलें और प्रोजेक्ट बनाना
एक डिफ़ॉल्ट CCS परियोजना फ़ाइल मेनू का उपयोग करके बनाई गई है। प्रोजेक्ट बनाएँ संवाद बॉक्स में, डिवाइस का चयन करें और प्रोजेक्ट नाम के रूप में HD44780 दें। प्रोजेक्ट प्रकार और टूलचैन के तहत, स्टेटिक लाइब्रेरी के रूप में आउटपुट प्रकार का चयन करें और प्रोजेक्ट बनाएं।
प्रोजेक्ट एक्सप्लोरर लेन (बाईं ओर) में, शामिल फ़ोल्डर के भीतर एक हेडर फ़ाइल बनाएं और इसे hd44780.h नाम दें । फिर डाउनलोड किए गए HD44780.h फ़ाइल की सामग्री को इस नए बनाए गए एक में कॉपी करें ।
अब आउटपुट प्रकार को एक निष्पादन योग्य में बदलकर मुख्य परियोजना बनाएं और CCS_LCD नामक एक प्रोजेक्ट बनाएं ।
चरण 2: खोज पथ को मुख्य परियोजना में शामिल करें
HD44780 प्रोजेक्ट के गुण संवाद बॉक्स में और MSP430 संकलक के लिए विकल्प शामिल करें, खोज पथ फ़ाइल में फ़ोल्डर शामिल करें।
उसके बाद, इस परियोजना का निर्माण आवश्यक लिंकर फ़ाइलों को बनाने के लिए करें । इसे बनाने से डीबग फ़ोल्डर के अंदर HD44780.lib फ़ाइल बन जाएगी ।
चरण 3: लिंकर के लिए खोज पथ शामिल करें
CCS_LCD प्रोजेक्ट के लिए गुण संवाद बॉक्स में और MSP430 लिंकर टैब के फ़ाइल खोज पथ में, HD44780 प्रोजेक्ट के डीबग फ़ोल्डर के अंदर स्थित HD44780.lib शामिल करें । डिबग फ़ोल्डर फ़ाइल खोज पथ में भी शामिल है।
शामिल फ़ोल्डर को फिर से CCS_LCD प्रोजेक्ट के MSP430 संकलक के विकल्प में शामिल किया गया है ।
पुस्तकालय को सफलतापूर्वक संकलित किया जाता है और मुख्य परियोजना के लिंकर में जोड़ा जाता है।
MSP430 पर 16x2 एलसीडी डिस्प्ले के लिए एलसीडी फ़ंक्शंस
void hd44780_timer_isr (void): इसे समय-समय पर ISR में टाइमर ए में बुलाया जाता है। समय-समय पर एलसीडी को स्क्रीन साफ़ करने, कर्सर सेट करने और डेटा प्रदर्शित करने जैसे कार्य किए जाते हैं। समारोह का उपयोग ISR में किया जाना है। यह कुछ भी नहीं लौटाता है।
uint8_t hd44780_write_string (चार * ch__string, uint8_t u8__row, uint8_t u8__column, u8__cr_lf uint8_t): यह स्ट्रिंग पहले तर्क में निर्दिष्ट लिखेंगे।
char * ch__string: डेटा बफ़र (HD44780_timer_isr फ़ंक्शन के अंदर) लिखा जाने वाला स्ट्रिंग । जब HD44780_timer_isr को समय-समय पर कॉल किया जाता है, तो डेटा को एलसीडी आईसी के डेटा रजिस्टर और निर्देश रजिस्टर में कॉपी किया जाएगा ।
uint8_t u8__row: यह उस पंक्ति को परिभाषित करता है जिसमें स्ट्रिंग लिखा जाएगा।
uint8_t u8__column: यह उस कॉलम को परिभाषित करता है जिसमें स्ट्रिंग लिखा जाएगा।
uint8_t u8__cr_lf: यदि यह 1 सेट है, तो पंक्ति को अगले एक पर ले जाया जाएगा। यदि यह 0 है, तो छपाई एक ही पंक्ति में रुक जाती है।
void hd44780_clear_screen (शून्य): यह फ़ंक्शन पूरी स्क्रीन को साफ़ करेगा। यह कुछ भी नहीं लौटाता है।
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, u8__cr_lf uint8_t): समारोह एलसीडी के इच्छित स्थान पर अहस्ताक्षरित 16-बिट मूल्य प्रदर्शित करेगा।
uint16_t u16__value: प्रदर्शित किया जाने वाला पूर्णांक पहले तर्क में दिया गया है।
uint8_t u8__leading_zero_handling: यदि 0 पारित हो जाता है, तो प्रमुख शून्य को पूर्णांक मान को दिखाया जाएगा। यदि 1 पास हो जाता है, तो जीरो को खाली कर दिया जाएगा। यदि 2 को एक पैरामीटर के रूप में पारित किया जाता है, तो केवल महत्वपूर्ण अंक दिखाए जाएंगे।
uint8_t u8__row: वह पंक्ति जिसमें पूर्णांक प्रदर्शित किया जाता है।
uint8_t u8__column: मुद्रित किए जाने वाले कॉलम को तर्क का उपयोग करके चुना जाता है।
uint8_t u8__cr_lf: यदि यह 1 सेट है, तो पंक्ति को अगले एक पर ले जाया जाएगा। यदि यह 0 है, तो छपाई एक ही पंक्ति में रुक जाती है।
सर्किट आरेख MSP430 के साथ इंटरफेस एलसीडी के लिए
पूरा सर्किट आरेख नीचे की छवि में चित्रित किया गया है। जैसा कि आप देख सकते हैं, हार्डवेयर कनेक्शन बहुत सरल हैं और हमने 5 वी एडाप्टर का उपयोग करके पूरा बोर्ड संचालित किया है।
कनेक्शन उपरोक्त स्केच के अनुसार किए गए हैं। कृपया विस्तृत कनेक्शन के लिए नीचे दी गई तालिका देखें।
वीएसएस | 5 वी पावर सप्लाई का ग्राउंड |
Vdd | 5 वी |
वि ० | पोटेंशियोमीटर आउटपुट |
रुपये | P2.1 |
आर / डब्ल्यू | भूमि |
इ | P2.0 |
डी ० | P1.0 |
डी 1 | P1.1 |
डी 2 | P1.2 |
डी 3 | P1.3 |
डी 4 | P1.4 |
D5 | P1.5 |
डी 6 | P1.6 |
डी 7 | P1.7 |
ए | 220 ओम रेसिस्टर |
क | भूमि |
LED बैकलाइट के एनोड को 5V सप्लाई से सीधे नहीं जोड़ा जा सकता है। यह एलसीडी मॉड्यूल के माध्यम से वर्तमान प्रवाह को कम करने के लिए एक प्रतिरोध से जुड़ा होना चाहिए। मैंने एलसीडी को मिलाप करने के लिए एक परफेक्ट बोर्ड का उपयोग करके अपने कनेक्शन बनाए हैं और फिर एलसीडी को MSP430 बोर्ड से जोड़ने के लिए जम्पर तारों का उपयोग किया है, मेरा सेट-अप इस तरह दिखता है, लेकिन आप अपने कनेक्शन बनाने के लिए ब्रेडबोर्ड का उपयोग भी कर सकते हैं।
एलसीडी डिस्प्ले के लिए कोड कम्पोजर स्टूडियो का उपयोग करके MSP430 प्रोग्रामिंग
इस परियोजना में प्रयुक्त पूरा कोड इस पृष्ठ के नीचे दिया गया है। कोड का उपयोग करने की व्याख्या इस प्रकार है। सबसे पहले, शीर्ष लेख फ़ाइल (HD44780.h) खोलें और फ़ाइल के पहले भाग में माइक्रोकंट्रोलर भाग संख्या शामिल करें।
#include "msp430g2553.h"
पहरेदार टाइमर को पहले बंद करना होगा। DCOCTL और BCSCTL1 नियंत्रण रजिस्टर का उपयोग माइक्रोकंट्रोलर के थरथरानवाला को कॉन्फ़िगर करने के लिए किया जाता है। नीचे दी गई पंक्तियाँ MCLK को 1MHZ कॉन्फ़िगर करेंगी।
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
पोर्ट 1 पिन को आउटपुट के रूप में उल्लेख किया जाना है, जिसका उपयोग डेटा पिन के लिए किया जाना है। पिन 0 और पिन 1 को भी पोर्ट 2 में आउटपुट के रूप में उल्लेख किया जाना है, जिसका उपयोग RS और R / W पिन के लिए किया जाएगा।
P1DIR = 0xFF; पी 2 डीआईआर = (0x01 - 0x02);
इनबिल्ट टाइमर का उपयोग समय-समय पर मूल्यों को प्रदर्शित करने के लिए किया जा रहा है। घड़ी स्रोत के रूप में टाइमर ए को SMCLK (1MHZ) के साथ चुना गया है और निरंतर मोड ऑपरेशन का तरीका है।
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
तुलना चैनलों 1 और 2 और टाइमर अतिप्रवाह के बीच की रुकावट के लिए एक ही रुकावट वेक्टर ( TIMER0_A1_VECTOR ) विभिन्न शुरुआती पतों के साथ साझा करते हैं । कैप्चर तुलना चैनल 1 (CCR1) 2 का उपयोग पते के रूप में करता है, जिसका उपयोग स्विच केस में किया जा रहा है।
#pragma वेक्टर = TIMER0_A1_VECTOR __interrupt void टाइमर_0_a1_isr (शून्य) { स्विच (TA0IV) { केस 2: { hd44780_timer-isr (); टूटना; } } }
एक बार जब आपका कोड संकलित हो जाता है, तो आप इसे MSP430 बोर्ड पर अपलोड कर सकते हैं, जैसा कि MSP430 ट्यूटोरियल के साथ शुरू होने में बताया गया है। यदि सब कुछ अपेक्षा के अनुसार हो जाता है, तो आपको अपने एलसीडी डिस्प्ले को नीचे दिखाए गए अनुसार कुछ विपरीत देखना चाहिए।
यदि आपका परीक्षण बहुत मंद है, तो आप बेहतर कंट्रास्ट प्राप्त करने के लिए पोटेंशियोमीटर को समायोजित करने का प्रयास कर सकते हैं। परियोजना का पूरा काम नीचे दिए गए वीडियो में भी पाया जा सकता है। आशा है कि आपने इस परियोजना का आनंद लिया है और इसे अपने स्वयं के निर्माण के लिए दिलचस्प पाया। यदि आपके कोई प्रश्न हैं, तो कृपया उन्हें नीचे टिप्पणी अनुभाग में छोड़ दें। आप उन्हें जवाब देने या चर्चा शुरू करने के लिए मंचों पर अपने सभी तकनीकी प्रश्न भी लिख सकते हैं।