पलक झपकना पहला कदम है जिसे आप इलेक्ट्रॉनिक्स के साथ शुरू करना चाहते हैं। इस ट्यूटोरियल में हम ATmega32 के साथ एक एलईडी कनेक्ट करने जा रहे हैं, जो एक AVR श्रृंखला माइक्रोकंट्रोलर है। हम दूसरी छमाही में एलईडी को ब्लिंक करने जा रहे हैं।
अवयव आवश्यक
हार्डवेयर:
ATmega32A माइक्रोकंट्रोलर
बिजली की आपूर्ति (5v)
एवीआर-आईएसपी प्रोग्रामर
100uF संधारित्र
एलईडी
220 रेसिस्टर
सॉफ्टवेयर
Atmel स्टूडियो 6.1
प्रोगिस्प या फ्लैश मैजिक
सर्किट और कार्य स्पष्टीकरण
जैसा कि एवीआर माइक्रोकंट्रोलर के साथ एलईडी को इंटरफेस करने के लिए उपरोक्त सर्किट आरेख में दिखाया गया है, यहां बाहरी क्रिस्टल को जोड़ने की कोई आवश्यकता नहीं है। क्योंकि ATMEGA डिफ़ॉल्ट रूप से आंतरिक 1MHz रेसिस्टर-कैपेसिटर ऑसिलेटर पर काम करता है। केवल तभी जब घड़ी की सटीकता की आवश्यकता होती है, उच्च परिशुद्धता गिनती के आवेदन के रूप में, बाहरी क्रिस्टल संलग्न होता है। जब नियंत्रक पहली बार खरीदा जाता है, तो यह डिफ़ॉल्ट रूप से आंतरिक क्रिस्टल पर काम करने के लिए जुड़ा हुआ है।
रोकनेवाला यहां एलईडी से वर्तमान ड्राइंग को सीमित करने के लिए जुड़ा हुआ है। याद रखें, नियंत्रक टर्मिनलों पर 30mA से अधिक प्रदान नहीं कर सकता है।
प्रोग्रामिंग स्पष्टीकरण
ATmega32 माइक्रोकंट्रोलर के लिए एक एलईडी ब्लिंक करने का कार्यक्रम नीचे दिखाया गया है। कोड में टिप्पणियां कोड की अलग-अलग लाइन का उद्देश्य बताती हैं।
पिनों पर डेटा प्रवाह नियंत्रण को सक्षम करने के लिए #include // हैडर
#define F_CPU 1000000 // नियंत्रक क्रिस्टल आवृत्ति बता रहा है
#शामिल
इंट मेन (शून्य)
{{
DDRD = 0xFF; // / या 0b1111 1111) AVRSTUDIO में एक निश्चित बिट पोर्ट का उपयोग करने के लिए नियंत्रित करने के लिए इनपुट के रूप में हम "ZERO" का उपयोग करते हैं, यह बताने के लिए कि आउटपुट का उपयोग हम "वन" के रूप में करते हैं। चूँकि हमने आठ “ONE” लगाए हैं, इसलिए PORTD के सभी पिन आउटपुट के रूप में सक्षम हैं। यदि हम "0b1111 0111" के रूप में एक शून्य डालते हैं, तो अब सभी पिन 0,1,2,4,5,6,7 इनपुट के रूप में सक्षम हैं और पिन 3 इनपुट के रूप में सक्षम है।
जबकि (1) // लूप हमेशा के लिए चला जाता है और एलईडी हमेशा के लिए निमिष होगा
{{
पोर्ट = 0xFF; // PORTD के सभी पिनों को 5v आउटपुट प्रदान करने के लिए कहा जाता है या उच्च (LED ON) खींचने के लिए कहा जाता है
_delay_ms (220); // 200ms के लिए देरी
_delay_ms (220);); // 200ms के लिए देरी
पोर्ट = 0x00; // PORTD के सभी पिन आउटपुट में जमीन प्रदान करने या नीचे खींचने के लिए कहे जाते हैं
_delay_ms (220);); // 200ms के लिए देरी
_delay_ms (220);); // 200ms के लिए देरी
}
}