- పదార్థాలు అవసరం
- 16X2 LCD డిస్ప్లే మాడ్యూల్
- సర్క్యూట్ రేఖాచిత్రం మరియు కనెక్షన్లు
- ప్రోగ్రామింగ్ ARM7-LPC2148
ఏదైనా గృహోపకరణం లేదా పారిశ్రామిక యంత్రాలు అయినా యంత్రం యొక్క అవసరమైన భాగం ప్రదర్శన. ప్రదర్శన యంత్రాన్ని ఆపరేట్ చేయడానికి నియంత్రణ ఎంపికలను చూపించడమే కాక, ఆ యంత్రం చేసే పని యొక్క స్థితి మరియు అవుట్పుట్ను కూడా చూపిస్తుంది. వంటి 7-విభాగం ప్రదర్శన, LCD ప్రదర్శన, టీఎఫ్టీ టచ్ స్క్రీన్ డిస్ప్లే ఎలక్ట్రానిక్స్ ఉపయోగిస్తారు డిస్ప్లేలు అనేక రకాల, LED ప్రదర్శన మొదలైనవి ఉన్నాయి 16x2 LCD ప్రదర్శన కొన్ని చిన్న ఎలక్ట్రానిక్స్ పరికరాలు లో అత్యంత ప్రాధమిక మరియు కూడా ఉపయోగించే డిస్ప్లే, మేము పూర్తయ్యాయి చాలా ఉన్నాయి 16x2 LCD ని ఉపయోగించే ప్రాజెక్టులు ఇతర మైక్రోకంట్రోలర్లతో ప్రాథమిక ఇంటర్ఫేసింగ్తో సహా:
- 8051 మైక్రోకంట్రోలర్తో ఎల్సిడి ఇంటర్ఫేసింగ్
- ATmega32 మైక్రోకంట్రోలర్తో LCD ని ఇంటర్ఫేసింగ్
- పిఐసి మైక్రోకంట్రోలర్తో ఎల్సిడి ఇంటర్ఫేసింగ్
- ఆర్డునోతో 16x2 ఎల్సిడిని ఇంటర్ఫేసింగ్
- పైథాన్ ఉపయోగించి రాస్ప్బెర్రీ పైతో 16x2 ఎల్సిడి ఇంటర్ఫేసింగ్
ఈ ట్యుటోరియల్లో, ARM7-LPC2148 మైక్రోకంట్రోలర్తో 16x2 LCD ని ఎలా ఇంటర్ఫేస్ చేయాలో చూద్దాం మరియు సాధారణ స్వాగత సందేశాన్ని ప్రదర్శిస్తాము. మీరు ARM7 తో కొత్తగా ఉంటే, ARM7 LPC2148 యొక్క ప్రాథమిక విషయాలతో ప్రారంభించండి మరియు కైల్ uVision ఉపయోగించి దీన్ని ఎలా ప్రోగ్రామ్ చేయవచ్చో తెలుసుకోండి
పదార్థాలు అవసరం
హార్డ్వేర్
- ARM7-LPC2148 మైక్రోకంట్రోలర్ బోర్డు
- LCD (16X2)
- పొటెన్టోమీటర్
- 5 వి వోల్టేజ్ రెగ్యులేటర్ ఐసి
- బ్రెడ్బోర్డ్
- వైర్లను కనెక్ట్ చేస్తోంది
- 9 వి బ్యాటరీ
- మైక్రో USB కేబుల్
సాఫ్ట్వేర్
- కైల్ యువిజన్ 5
- మ్యాజిక్ ఫ్లాష్ సాధనం
ప్రాజెక్ట్లోకి రాకముందు ఎల్సిడి ఆపరేషన్ రీతుల గురించి మరియు ఎల్సిడి హెక్స్ కోడ్ల గురించి కొన్ని విషయాలు తెలుసుకోవాలి.
16X2 LCD డిస్ప్లే మాడ్యూల్
16X2 LCD కి 16 నిలువు వరుసలు మరియు 2 వరుసలు ఉన్నాయని చెప్పారు. ఈ ఎల్సిడిలో 16 పిన్స్ ఉన్నాయి. చిత్రం మరియు పట్టిక క్రింద LCD డిస్ప్లే యొక్క పిన్ పేర్లు మరియు దాని విధులను చూపిస్తుంది.
NAME |
ఫంక్షన్ |
వి.ఎస్.ఎస్ |
గ్రౌండ్ పిన్ |
VDD |
+ 5 వి ఇన్పుట్ పిన్ |
VEE |
కాంట్రాస్ట్ పిన్ సర్దుబాటు |
ఆర్ఎస్ |
రిజిస్టర్ ఎంచుకోండి |
R / W. |
పిన్ చదవండి / వ్రాయండి |
ఇ |
పిన్ ప్రారంభించండి |
డి 0-డి 7 |
డేటా పిన్స్ (8 పిన్స్) |
LED A. |
యానోడ్ పిన్ (+ 5 వి) |
LED కె |
కాథోడ్ పిన్ (GND) |
LCD రెండు వేర్వేరు రీతుల్లో పనిచేయగలదు, అవి 4-బిట్ మోడ్ మరియు 8-బిట్ మోడ్. 4 బిట్ మోడ్లో మేము డేటాను నిబ్బల్, మొదట ఎగువ నిబ్బల్ మరియు తరువాత తక్కువ నిబ్బల్ ద్వారా పంపుతాము. నిబ్బెల్ అంటే ఏమిటో తెలియని మీలో: ఒక నిబ్బెల్ అనేది నాలుగు బిట్ల సమూహం, కాబట్టి ఒక బైట్ యొక్క దిగువ నాలుగు బిట్స్ (D0-D3) తక్కువ నిబ్బెల్ను ఏర్పరుస్తాయి, ఎగువ నాలుగు బిట్స్ (D4-D7) ఒక బైట్ యొక్క అధిక నిబ్బల్ ఏర్పడుతుంది. ఇది 8 బిట్ డేటాను పంపడానికి మాకు సహాయపడుతుంది.
అయితే 8 బిట్ మోడ్లో మనం మొత్తం 8 డేటా లైన్లను ఉపయోగిస్తున్నందున 8-బిట్ డేటాను నేరుగా ఒక స్ట్రోక్లో పంపవచ్చు.
ఇక్కడ ఈ ప్రాజెక్ట్లో మనం 4-బిట్ మోడ్ అయిన సాధారణంగా ఉపయోగించే మోడ్ను ఉపయోగిస్తాము. నాలుగు బిట్ మోడ్లో మనం 4 పిన్స్ మైక్రోకంట్రోలర్ను ఆదా చేయవచ్చు మరియు వైరింగ్ ఓవర్హెడ్ను కూడా తగ్గించవచ్చు.
16x2 ఏదైనా ఆదేశాన్ని తీసుకోవడానికి HEX కోడ్ను ఉపయోగిస్తుంది, కర్సర్ను తరలించడం, మోడ్ను ఎంచుకోవడం, నియంత్రణను రెండవ పంక్తికి మార్చడం వంటి LCD కోసం చాలా హెక్స్ ఆదేశాలు ఉన్నాయి. 16X2 LCD డిస్ప్లే మాడ్యూల్ మరియు హెక్స్ ఆదేశాల గురించి మరింత తెలుసుకోవడానికి, లింక్ను అనుసరించండి.
సర్క్యూట్ రేఖాచిత్రం మరియు కనెక్షన్లు
క్రింద పట్టిక LCD & ARM7-LPC2148 మధ్య సర్క్యూట్ కనెక్షన్లను చూపుతుంది.
ARM7-LPC2148 |
LCD (16x2) |
పి.0.4 |
RS (రిజిస్టర్ సెలెక్ట్) |
పి.0.6 |
ఇ (ప్రారంభించు) |
పి.0.12 |
డి 4 (డేటా పిన్ 4) |
పి.0.13 |
డి 5 (డేటా పిన్ 5) |
పి.0.14 |
డి 6 (డేటా పిన్ 6) |
పి.0.15 |
డి 7 (డేటా పిన్ 7) |
LCD & ARM7 స్టిక్తో వోల్టేజ్ రెగ్యులేటర్ యొక్క కనెక్షన్లు
వోల్టేజ్ రెగ్యులేటర్తో ARM7 & LCD మధ్య కనెక్షన్లను క్రింద పట్టిక చూపిస్తుంది.
వోల్టేజ్ రెగ్యులేటర్ IC |
పిన్ ఫంక్షన్ |
LCD & ARM-7 LPC2148 |
1. ఎడమ పిన్ |
బ్యాటరీ 9 వి ఇన్పుట్ నుండి + వీ |
NC |
2.సెంటర్ పిన్ |
- బ్యాటరీ నుండి వె |
LCD యొక్క VSS, R / W, K. ARM7 యొక్క GND |
3.రైట్ పిన్ |
నియంత్రిత + 5 వి అవుట్పుట్ |
ఎల్సిడి యొక్క విడిడి, ఎ ARM7 యొక్క + 5V |
LCD తో పొటెన్టోమీటర్
LCD డిస్ప్లే యొక్క వ్యత్యాసాన్ని మార్చడానికి ఒక పొటెన్టోమీటర్ ఉపయోగించబడుతుంది. ఒక కుండలో మూడు పిన్స్ ఉన్నాయి, లెఫ్ట్ పిన్ (1) + 5 వికి మరియు సెంటర్ (2) ను ఎల్ఇసి మాడ్యూల్ యొక్క విఇఇ లేదా వి 0 కి మరియు కుడి పిన్ (3) జిఎన్డికి అనుసంధానించబడి ఉంది. నాబ్ను తిప్పడం ద్వారా మేము దీనికి విరుద్ధంగా సర్దుబాటు చేయవచ్చు.
జంపర్ సెట్టింగులు
ARM7- స్టిక్లో ఒక జంపర్ పిన్ ఉంది, తద్వారా మేము USB ని ఉపయోగించడం ద్వారా లేదా శక్తి కోసం 5V DC ఇన్పుట్ను ఉపయోగించడం ద్వారా కోడ్ను పవర్ & అప్లోడ్ చేయవచ్చు. మీరు క్రింది చిత్రాలను చూడవచ్చు.
క్రింద ఉన్న చిత్రం జంపర్ DC స్థానంలో ఉందని చూపిస్తుంది. అంటే మనం బాహ్య 5 వి సరఫరా నుండి బోర్డుకి శక్తినివ్వాలి.
మరియు ఈ చిత్రం జంపర్ USB మోడ్లో కనెక్ట్ చేయబడిందని చూపిస్తుంది. ఇక్కడ శక్తి మరియు కోడ్ మైక్రో యుఎస్బి పోర్ట్ ద్వారా అందించబడుతుంది.
గమనిక: ఇక్కడ ఈ ట్యుటోరియల్లో మనం జంపర్ను యుఎస్బికి సెట్ చేయడం ద్వారా యుఎస్బిని ఉపయోగించడం ద్వారా కోడ్ను అప్లోడ్ చేసాము, ఆపై జంపర్ను డిసి మోడ్కు 5 ఎల్పి రెగ్యులేటర్ నుండి ఎల్పిసి 2148 శక్తికి మార్చాము. చివరిలో ఇచ్చిన వీడియోలో మీరు దీన్ని చూడవచ్చు.
ARM7 మైక్రోకంట్రోలర్తో 16x2 LCD ని ఇంటర్ఫేసింగ్ చేయడానికి తుది సర్క్యూట్ ఇలా ఉంటుంది:
ప్రోగ్రామింగ్ ARM7-LPC2148
ARM7-LPC2148 ప్రోగ్రామ్ చేయడానికి మాకు కైల్ యువిజన్ & ఫ్లాష్ మ్యాజిక్ సాధనం అవసరం. మైక్రో USB పోర్ట్ ద్వారా ARM7 స్టిక్ ప్రోగ్రామ్ చేయడానికి మేము USB కేబుల్ ఉపయోగిస్తున్నాము. మేము కైల్ ఉపయోగించి కోడ్ వ్రాసి హెక్స్ ఫైల్ను క్రియేట్ చేస్తాము, ఆపై HEX ఫైల్ ఫ్లాష్ మ్యాజిక్ ఉపయోగించి ARM7 స్టిక్ కు ఫ్లాష్ అవుతుంది. కైల్ యువిజన్ మరియు ఫ్లాష్ మ్యాజిక్ను ఇన్స్టాల్ చేయడం గురించి మరియు వాటిని ఎలా ఉపయోగించాలో గురించి మరింత తెలుసుకోవడానికి లింక్ను అనుసరించండి ARM7 LPC2148 మైక్రోకంట్రోలర్తో ప్రారంభించండి మరియు కైల్ యువిజన్ ఉపయోగించి ప్రోగ్రామ్ చేయండి.
ARM 7 తో LCD ని ఇంటర్ఫేసింగ్ కోసం పూర్తి కోడ్ ఈ ట్యుటోరియల్ చివరిలో ఇవ్వబడింది, ఇక్కడ మేము దానిలోని కొన్ని భాగాలను వివరిస్తున్నాము.
మొదట మనం అవసరమైన హెడర్ ఫైళ్ళను చేర్చాలి
# చేర్చండి
ఎల్సిడి మాడ్యూల్ను ప్రారంభించడం చాలా ముఖ్యమైన దశ. ఆపరేషన్ మోడ్ (4-బిట్), ఎల్సిడి రకం (16x2), స్టార్ట్ లైన్ మొదలైన వాటి గురించి ఎల్సిడికి చెప్పడానికి ఇక్కడ మేము కొన్ని హెచ్ఎక్స్ కోడ్లను ఉపయోగిస్తాము.
void LCD_INITILIZE (శూన్యమైనది) // LCD ని సిద్ధం చేయడానికి ఫంక్షన్ { IO0DIR = 0x0000FFF0; // పిన్ P0.4, P0.6, P0.12, P0.13, P0.14, P0.15as OUTPUT delay_ms (20); LCD_SEND (0x02); // ఎల్సిడిని 4-బిట్ ఆపరేషన్ మోడ్లో ప్రారంభించండి LCD_SEND (0x28); // 2 పంక్తులు (16X2) LCD_SEND (0x0C); // కర్సర్ ఆఫ్ LCD_SEND (0x06) లో ప్రదర్శించు; // ఆటో ఇంక్రిమెంట్ కర్సర్ LCD_SEND (0x01); // స్పష్టమైన LCD_SEND (0x80) ను ప్రదర్శించు; // మొదటి పంక్తి మొదటి స్థానం }
4-బిట్ మోడ్ కోసం పిన్స్ కోసం మనకు వివిధ రకాల వ్రాసే ఫంక్షన్ ఉంది, అంటే ఎగువ & దిగువ నిబ్బల్ ఉపయోగించడం. ఇది ఎలా జరిగిందో చూద్దాం
void LCD_SEND (చార్ కమాండ్) // హెక్స్ ఆదేశాలను నిబ్బల్ ద్వారా నిబ్బల్ పంపే పని { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((కమాండ్ & 0xF0) << 8%); // కమాండ్ యొక్క ఎగువ నిబ్బల్ IO0SET = 0x00000040 పంపండి ; // మేకింగ్ ఎనేబుల్ HIGH IO0CLR = 0x00000030; // RS & RW తక్కువ ఆలస్యం_ఎంఎస్ (5); IO0CLR = 0x00000040; // మేకింగ్ తక్కువ ఆలస్యం_ఎంఎస్ (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((ఆదేశం & 0x0F) << 12%); // కమాండ్ యొక్క దిగువ నిబ్బల్ IO0SET = 0x00000040 పంపండి ; // ఎనేబుల్ హై IO0CLR = 0x00000030; // RS & RW LOW delay_ms (5); IO0CLR = 0x00000040; // తక్కువ ఆలస్యం_ఎమ్ (5); }
నిబుల్ సెండింగ్ లాజిక్
IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((ఆదేశం & 0x0F) << 12%); // కమాండ్ యొక్క దిగువ నిబ్బల్ను పంపండి IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((ఆదేశం & 0xF0) << 8%); // కమాండ్ యొక్క ఎగువ నిబ్బల్ పంపండి
ఈ కార్యక్రమంలో రెండు ప్రకటనలు ముఖ్యమైన పాత్ర పోషిస్తాయి. మొదటి ఆదేశం దిగువ నిబ్బల్ను పంపుతుంది & రెండవది ఎగువ నిబ్బల్ను పంపుతుంది. అది మనం చేసే ఇతర పిన్లను ప్రభావితం చేయకుండా ఉంటుంది. మొదట ఈ తర్కం గురించి తెలుసుకోవటానికి ముందు ఇది ఎలా జరుగుతుందో చూద్దాం
ORing- (A-0 = A), (A-1 = 1) ANDing- (A & 0 = 0), (A & 1 = A)
కాబట్టి మేము ఇతర పిన్లను ప్రభావితం చేయకుండా మాస్కింగ్ కాన్సెప్ట్ మరియు లాజికల్ షిఫ్ట్ ఆపరేషన్ను ఉపయోగిస్తాము. అంటే పిన్స్ (P0.12-P0.15) మాత్రమే ఉపయోగించబడతాయి మరియు P0.4, P0.6 వంటి ఇతర పిన్లు ప్రభావితం కావు. డేటాను నాలుగు బిట్లలో మార్చడం ద్వారా మరియు దిగువ నిబ్బెల్ స్థానంలో ఎగువ నిబ్బెల్ తయారు చేయడం మరియు ఎగువ నిబ్బెల్ను ముసుగు చేయడం ద్వారా ఇది జరుగుతుంది. ఆపై అవుట్పుట్ వద్ద ఎగువ నిబుల్ డేటాను పొందడానికి మేము తక్కువ బిట్స్ సున్నా (0XF0) మరియు నిబుల్ డేటాతో ORed చేస్తాము.
తక్కువ నిబ్బల్ డేటా కోసం ఇలాంటి ప్రక్రియ ఉపయోగించబడుతుంది కాని ఇక్కడ మనం డేటాను మార్చాల్సిన అవసరం లేదు.
అవుట్పుట్కు డేటాను వ్రాసేటప్పుడు, అంటే, కమాండ్ మోడ్లో RS తక్కువగా ఉండాలి మరియు ఎనేబుల్ చెయ్యడానికి ఎత్తైనదిగా ఉండాలి మరియు డేటా మోడ్లో RS అధికంగా ఉండాలి మరియు ఎనేబుల్ చెయ్యడానికి అధికంగా ఉండాలి.
ఇప్పుడు అవుట్పుట్ వద్ద ముద్రించాల్సిన స్ట్రింగ్ డేటాను పంపడం కోసం, అదే సూత్రం నిబ్బల్ ద్వారా నిబ్బల్ ఉపయోగించబడుతుంది. ఇక్కడ ముఖ్యమైన దశ డేటా మోడ్ కోసం రిజిస్టర్ సెలెక్ట్ (RS) తప్పనిసరిగా ఎక్కువగా ఉండాలి.
void LCD_DISPLAY (char * msg) // పంపిన అక్షరాలను ఒక్కొక్కటిగా ముద్రించే ఫంక్షన్ { uint8_t i = 0; అయితే (msg! = 0) { IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0xF0) << 8%); // ఎగువ నిబుల్ IO0SET = 0x00000050 పంపుతుంది ; డేటాను ముద్రించడానికి // RS HIGH & ENABLE HIGH IO0CLR = 0x00000020; // RW తక్కువ వ్రాసే మోడ్ ఆలస్యం ms (2); IO0CLR = 0x00000040; // EN = 0, RS మరియు RW మారదు (అనగా RS = 1, RW = 0) ఆలస్యం ms (5); IO0PIN = ((IO0PIN & 0xFFFF00FF) - ((msg & 0x0F) << 12%); // దిగువ నిబుల్ IO0SET = 0x00000050 పంపుతుంది ; // RS & EN HIGH IO0CLR = 0x00000020; ఆలస్యం ms (2); IO0CLR = 0x00000040; ఆలస్యం ms (5); i ++; }
పూర్తి కోడింగ్ & ప్రదర్శన వీడియో క్రింద ఇవ్వబడింది.