ఏదైనా యంత్రం ఏదైనా గృహోపకరణం లేదా పారిశ్రామిక యంత్రాలు అయినా ప్రదర్శన అవసరమైన భాగం. ప్రదర్శన యంత్రాన్ని ఆపరేట్ చేయడానికి నియంత్రణ ఎంపికలను చూపించడమే కాక, ఆ యంత్రం చేసే పని యొక్క స్థితి మరియు అవుట్పుట్ను కూడా చూపిస్తుంది. 7-సెగ్మెంట్ డిస్ప్లే, 16x2 ఎల్సిడి డిస్ప్లే, టిఎఫ్టి టచ్ స్క్రీన్ డిస్ప్లే, ఒఎల్ఇడి డిస్ప్లే వంటి ఎలక్ట్రానిక్స్లో అనేక రకాల డిస్ప్లేలు ఉన్నాయి.
16x2 LCD డిస్ప్లే అత్యంత ప్రాధమిక డిస్ప్లే మాడ్యూల్ మరియు కాలిక్యులేటర్, డిజిటల్ మీటర్ వంటి కొన్ని చిన్న ఎలక్ట్రానిక్స్ పరికరాలలో కూడా ఉపయోగించబడుతుంది. ఇతర మైక్రోకంట్రోలర్లతో ప్రాథమిక ఇంటర్ఫేసింగ్తో సహా 16x2 LCD ని ఉపయోగించి మేము చాలా ప్రాజెక్టులు చేసాము:
- 8051 మైక్రోకంట్రోలర్తో ఎల్సిడి ఇంటర్ఫేసింగ్
- ATmega32 మైక్రోకంట్రోలర్తో LCD ని ఇంటర్ఫేసింగ్
- పిఐసి మైక్రోకంట్రోలర్తో ఎల్సిడి ఇంటర్ఫేసింగ్
- ఆర్డునోతో 16x2 ఎల్సిడిని ఇంటర్ఫేసింగ్
- పైథాన్ ఉపయోగించి రాస్ప్బెర్రీ పైతో 16x2 ఎల్సిడి ఇంటర్ఫేసింగ్
ఈ ట్యుటోరియల్లో, 16x2 LCD ని Atmega16 AVR మైక్రోకంట్రోలర్తో ఎలా ఇంటర్ఫేస్ చేయాలో చూద్దాం మరియు సాధారణ స్వాగత సందేశాన్ని ప్రదర్శిస్తాము.
భాగాలు అవసరం
- Atmega16
- 16x2 LCD మాడ్యూల్
- జంపర్స్
- బ్రెడ్బోర్డ్
సర్క్యూట్ రేఖాచిత్రం
16x2 LCD డిస్ప్లే కోసం ప్రోగ్రామింగ్ Atmega16
ప్రోగ్రామింగ్కు బాహ్య లైబ్రరీలు అవసరం లేదు. ఇక్కడ Atmega16 USBASP మరియు Atmel Studio7.0 ఉపయోగించి ప్రోగ్రామ్ చేయబడింది. ప్రాజెక్ట్ చివరిలో పూర్తి ప్రోగ్రామ్ మరియు వర్కింగ్ వీడియో ఇవ్వబడింది, ప్రోగ్రామ్ను Atmega16 లో అప్లోడ్ చేయండి మరియు LCD యొక్క ప్రకాశాన్ని సర్దుబాటు చేయడానికి 10k POT ని తిప్పండి.ప్రారంభంలో CPU ఫ్రీక్వెన్సీని నిర్వచించండి మరియు IO పిన్లను యాక్సెస్ చేయడం మరియు అట్మెల్ స్టూడియో ప్యాకేజీతో అవసరమైన లైబ్రరీలను చేర్చండి.
ప్రోగ్రామ్లో LCD యొక్క RS మరియు EN పిన్లను నిర్వచించండి. డేటా మరియు కమాండ్ రిజిస్టర్ ఎంచుకోవడానికి RS పిన్స్ ఉపయోగించబడుతుంది. ఎనేబుల్ పిన్ డేటాను లాచ్ చేస్తుంది.
# PA3 ని నిర్వచించండి # rs PA2 ని నిర్వచించండి
LCD ని ఇంటర్ఫేస్ చేయడానికి Atmega16 యొక్క PORT ఉపయోగించబడుతుందని కూడా నిర్వచించండి. ఇక్కడ, పోర్టా ఉపయోగించబడుతుంది.
# lcdDirection DDRA ని నిర్వచించండి # lcdPort PORTA ని నిర్వచించండి
తదుపరి దశ పరామితిని దాటడం ద్వారా ఆదేశాన్ని అంగీకరించే ఫంక్షన్ను నిర్మించడం. చాలా LCD HEX ఆదేశాలు ఉన్నాయి. LCD యొక్క పనితీరును నిర్వచించడానికి హెక్స్ ఆదేశాలను ఉపయోగిస్తారు. మేము LCD యొక్క 4-బిట్ మోడ్ను ఉపయోగిస్తున్నందున, బైట్ (8-బిట్) రెండు ప్యాకెట్లలో పంపబడుతుంది. ఒక ప్యాకెట్లు ఎగువ నిబ్బెల్ (4-బిట్) మరియు ఇతర ప్యాకెట్ లోయర్ నిబుల్ (4-బిట్) గా ఉంటుంది.
void lcdCommand (సంతకం చేయని చార్ ఆదేశాలు) { lcdPort = (lcdPort & 0x0F) - (ఆదేశాలు & 0xF0); lcdPort & = ~ (1 <
తదుపరి దశ అక్షరాలను అంగీకరించడం మరియు దానిని LCD పోర్టుకు లాచ్ చేయడం. అందుకున్న అక్షరాలు నిబ్బల్ ద్వారా LCD నిబ్బెల్కు పంపబడతాయి. ఫంక్షన్ పాస్ బై పారామితిని ఉపయోగించి అక్షరాన్ని తీసుకుంటుంది మరియు తరువాత ఎగువ మరియు దిగువ నిబ్బల్ తీసుకుంటుంది. డేటా రిజిస్టర్ కోసం 'rs' పిన్ అధికంగా సెట్ చేయబడుతుంది మరియు తరువాత డేటాను లాచ్ చేయడానికి పెరుగుతున్న పల్స్ పంపబడుతుంది. అదేవిధంగా ఎనేబుల్ యొక్క విలువను మార్చడం ద్వారా మరియు ఎనేబుల్ కోసం పెరుగుతున్న పల్స్ను పంపడం ద్వారా పంపిన దిగువ నిబ్బెల్.
void lcdChar (సంతకం చేయని చార్ స్ట్రింగ్) { lcdPort = (lcdPort & 0x0F) - (స్ట్రింగ్ & 0xF0); lcdPort - = (1 <
ఈ ఫంక్షన్ అక్షరాన్ని స్ట్రింగ్గా మారుస్తుంది మరియు స్ట్రింగ్ రాయడానికి అవసరమైన ప్రోగ్రామ్లో తరువాత ఉపయోగించవచ్చు.
void lcdString (char * str) { int j; (j = 0; str! = 0; j ++) { lcdChar (str); } }
ఇప్పుడు స్క్రీన్ క్లియర్ చేయడానికి ఒక ఫంక్షన్ వ్రాయబడింది. మీరు HEX లో కమాండ్ 01 ను పంపించి, ఆపై కర్సర్ను ప్రారంభ స్థానానికి సెట్ చేయాలి.
void lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
ఇప్పుడు ప్రధాన ఫంక్షన్లో, LCD ప్రారంభించబడింది. ప్రారంభంలో LCD కోసం PORT దిశను ఇంటర్ఫేస్కు సెట్ చేయండి. ఇక్కడ, PORT OUTPUT గా సెట్ చేయబడింది కాబట్టి FF ని సెట్ చేయండి.
lcdDirection = 0xFF; _delay_ms (20)
అప్పుడు హెక్స్లో 02 పంపడం ద్వారా ఎల్సిడిని 4-బిట్ మోడ్లో సెట్ చేయండి. 2 లైన్లో, 15x7 మ్యాట్రిక్స్ పిక్సెల్లను 4-బిట్ మోడ్లో సెట్ చేయడానికి హెక్స్లో 28 పంపండి.
lcdCommand (0x02); lcdCommand (0x28);
కమాండ్ 0c మరియు 06 కర్సర్ స్థానాన్ని నియంత్రించేందుకు ఉపయోగిస్తారు. చివరకు హెక్స్లో 01 పంపడం ద్వారా స్క్రీన్ను క్లియర్ చేయండి. ఇది ఎల్సిడి ప్రారంభించడం పూర్తి చేస్తుంది.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
ప్రారంభించడం పూర్తయిన తర్వాత స్ట్రింగ్ పంపడం ద్వారా LCD ని పరీక్షించండి. ఇక్కడ మేము 1 వ వరుసలో స్ట్రింగ్ " ఇంటర్ఫేసింగ్ ఎల్సిడి " ను పంపుతున్నాము.
lcdString ("ఇంటర్ఫేసింగ్ LCD");
అప్పుడు తదుపరి వరుస కర్సరును మరల్చటానికి హెక్స్ ఆదేశం C0 పంపడం ద్వారా. చివరకు ఈ స్థానంలో, " Atmega1 6 తో" స్ట్రింగ్ రాయండి.
lcdCommand (0xC0); lcdString ("Atmega16 తో");
ఇది Atmega16 తో 16x2 LCD ని ఇంటర్ఫేసింగ్పై పూర్తి ట్యుటోరియల్ను పూర్తి చేస్తుంది. మీకు ఏ ఇమేజ్ లేదా పిక్సెల్స్ రాకపోతే కోడ్ మరియు సర్క్యూట్ రేఖాచిత్రం ప్రకారం మీ వైరింగ్ను తనిఖీ చేయండి లేదా ఎల్సిడి యొక్క V0 పిన్కు జోడించిన POT విలువను మార్చండి. మీకు ఏమైనా సందేహం లేదా సలహా ఉంటే, అప్పుడు మీరు మా ఫోరమ్కు వ్రాయడం ద్వారా లేదా క్రింద వ్యాఖ్యానించడం ద్వారా మమ్మల్ని చేరుకోవచ్చు.