- 16x2 LCD డిస్ప్లే యొక్క పని
- STM8 మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ LCD కి సర్క్యూట్ రేఖాచిత్రం
- STM8 LCD లైబ్రరీ - STM8S103F3P6 కోసం హెడర్ ఫైల్
- STM8S మైక్రోకంట్రోలర్ కోసం LCD ప్రోగ్రామ్
- ఎల్సిడితో ఎస్టిఎం 8 - పనిచేస్తోంది
16x2 ఆల్ఫాన్యూమరిక్ ఎల్సిడి డిస్ప్లే అభిరుచి గలవారు మరియు.త్సాహికులలో ఎక్కువగా ఉపయోగించే ప్రదర్శన. మీరు వినియోగదారుకు ప్రాథమిక సమాచారాన్ని ప్రదర్శించాలనుకున్నప్పుడు ప్రదర్శన చాలా ఉపయోగకరంగా ఉంటుంది మరియు మా కోడ్ను పరీక్షించడానికి లేదా డీబగ్ చేయడానికి కూడా సహాయపడుతుంది. ఈ ప్రత్యేకమైన 16x2 LCD మాడ్యూల్ సులభంగా లభిస్తుంది మరియు చాలా కాలంగా ప్రాచుర్యం పొందింది. లింక్ చేసిన వ్యాసంలో మీరు 16x2 LCD మాడ్యూల్ యొక్క ప్రాథమిక విషయాల గురించి మరింత తెలుసుకోవచ్చు.
మా STM8 మైక్రోకంట్రోలర్ ట్యుటోరియల్తో కొనసాగడానికి, ఈ ట్యుటోరియల్లో, STM8 మైక్రోకంట్రోలర్తో LCD ని ఎలా ఇంటర్ఫేస్ చేయాలో నేర్చుకుంటాము. మేము ఇంతకుముందు 16x2 LCD ని అనేక ఇతర మైక్రోకంట్రోలర్లతో ఇంటర్ఫేస్ చేసాము, ట్యుటోరియల్స్ క్రింద ఇవ్వబడ్డాయి మరియు ఆసక్తి ఉంటే మీరు వాటిని తనిఖీ చేయవచ్చు.
మీరు STM8 కి క్రొత్తగా ఉంటే, కంట్రోలర్ బోర్డ్ మరియు ప్రోగ్రామింగ్ ఎన్విరాన్మెంట్ యొక్క ప్రాథమికాలను అర్థం చేసుకోవడానికి STM8 మైక్రోకంట్రోలర్ కథనంతో ప్రారంభించడాన్ని చూడండి. మేము ఈ ట్యుటోరియల్లోని ప్రాథమికాలను కవర్ చేయము.
16x2 LCD డిస్ప్లే యొక్క పని
పేరు సూచించినట్లుగా, 16x2 LCD లో 16 నిలువు వరుసలు మరియు 2 వరుసలు ఉంటాయి. కాబట్టి మొత్తంగా, మేము ఈ ప్రదర్శనలో 32 అక్షరాలను ప్రదర్శించగలుగుతాము మరియు ఈ అక్షరాలు వర్ణమాలలు లేదా సంఖ్యలు లేదా చిహ్నాలు కావచ్చు. ఈ ట్యుటోరియల్లో మనం ఉపయోగించే సాధారణ 16x2 LCD పిన్అవుట్ క్రింద చూపబడింది-
మీరు చూడగలిగినట్లుగా, డిస్ప్లేకి 16 పిన్స్ ఉన్నాయి మరియు ఈ క్రింది పట్టికలో చూపిన విధంగా పవర్ పిన్స్, కాంట్రాస్ట్ పిన్, కంట్రోల్ పిన్స్, డేటా పిన్స్ మరియు బ్యాక్లైట్ పిన్స్ అనే ఐదు విభాగాలుగా విభజించవచ్చు. మేము ఈ ట్యుటోరియల్ యొక్క సర్క్యూట్ రేఖాచిత్రాన్ని చర్చిస్తున్నప్పుడు ప్రతి పిన్ యొక్క వివరాలను పొందుతాము.
వర్గం | పిన్ లేదు. | పిన్ పేరు | ఫంక్షన్ |
పవర్ పిన్స్ | 1 | వి.ఎస్.ఎస్ | గ్రౌండ్ పిన్, గ్రౌండ్కు కనెక్ట్ చేయబడింది |
2 | VDD లేదా Vcc | వోల్టేజ్ పిన్ + 5 వి | |
కాంట్రాస్ట్ పిన్ | 3 | V0 లేదా VEE | కాంట్రాస్ట్ సెట్టింగ్, వేరియబుల్ రెసిస్టర్ ద్వారా Vcc కి కనెక్ట్ చేయబడింది. |
నియంత్రణ పిన్స్ | 4 | ఆర్ఎస్ | రిజిస్టర్ సెలెక్ట్ పిన్, RS = 0 కమాండ్ మోడ్, RS = 1 డేటా మోడ్ |
5 | ఆర్డబ్ల్యూ | పిన్ చదవండి / వ్రాయండి, RW = 0 రైట్ మోడ్, RW = 1 రీడ్ మోడ్ | |
6 | ఇ | ప్రారంభించండి, ఎల్సిడిని ప్రారంభించడానికి అధిక నుండి తక్కువ పల్స్ అవసరం | |
డేటా పిన్స్ | 7-14 | డి 0-డి 7 | డేటా పిన్స్, ఎల్సిడి లేదా కమాండ్ సూచనలపై ప్రదర్శించాల్సిన డేటాను నిల్వ చేస్తుంది |
బ్యాక్లైట్ పిన్లు | 15 | LED + లేదా A. | బ్యాక్లైట్ + 5 వికి శక్తినివ్వడానికి |
16 | LED- లేదా K. | బ్యాక్లైట్ గ్రౌండ్ |
LCD వెనుక వైపు, క్రింద ఉన్న చిత్రంలో చూపిన విధంగా, మీరు రెండు నల్ల చుక్కలను కనుగొంటారు, దాని లోపల మనకు HD44780 LCD డ్రైవర్ IC (ఎరుపు రంగులో చుట్టుముట్టబడింది) ఉంది. మా మైక్రోకంట్రోలర్ ఈ ఐసితో కమ్యూనికేట్ చేయాలి, ఇది ఎల్సిడిలో ప్రదర్శించబడే వాటిని నియంత్రిస్తుంది. ఇవన్నీ సరిగ్గా ఎలా పనిచేస్తాయో తెలుసుకోవాలనే ఆసక్తి మీకు ఉంటే, మీరు 16x2 LCD డిస్ప్లే యొక్క పనిని తనిఖీ చేయాలి, ఇక్కడ LCD ఎలా వివరంగా పనిచేస్తుందో మేము ఇప్పటికే చర్చించాము.
ఈ ట్యుటోరియల్లో, సాధారణ LCD_print _char మరియు LCD_print_string ఆదేశాలను ఉపయోగించి 16x2 LCD డిస్ప్లేలో ఆల్ఫామెరికల్ అక్షరాలను (వర్ణమాలలు మరియు సంఖ్యలు) ప్రదర్శించడానికి సర్క్యూట్ రేఖాచిత్రం మరియు కోడ్ గురించి చర్చిస్తాము. ఈ ఆదేశాలను మా హెడర్ ఫైల్ను చేర్చిన తర్వాత నేరుగా ప్రోగ్రామ్లో ఉపయోగించవచ్చు. హెడర్ ఫైల్ మీ కోసం అన్ని విషయాలతో వ్యవహరిస్తుంది కాబట్టి డిస్ప్లే లేదా HD44780 డ్రైవర్ IC ఎలా పనిచేస్తుందో తెలుసుకోవడం తప్పనిసరి కాదు.
STM8 మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ LCD కి సర్క్యూట్ రేఖాచిత్రం
పూర్తి STM8 LCD సర్క్యూట్ క్రింది చిత్రంలో చూడవచ్చు. LCD తో STM8S103F3P6 కంట్రోలర్ కోసం కనెక్షన్ చాలా సులభం అని మీరు చూడగలిగినట్లుగా, మాకు LCD డిస్ప్లే నేరుగా మా బోర్డుతో అనుసంధానించబడి ఉంది మరియు బోర్డును ప్రోగ్రామ్ చేయడానికి ST- లింక్ కూడా అనుసంధానించబడి ఉంది.
పవర్ పిన్స్ Vss మరియు Vcc లు STM8S బోర్డులోని 5V పిన్తో అనుసంధానించబడి ఉన్నాయి, LCD యొక్క ఆపరేటింగ్ వోల్టేజ్ 5V మరియు 3.3V పై పనిచేయడానికి అనుసంధానించబడిందని గమనించండి. కాబట్టి STM8S103F3P6 మైక్రోకంట్రోలర్ 3.3V పై పనిచేస్తున్నప్పటికీ LCD కి 5V సరఫరా తప్పనిసరి అయినప్పటికీ, మీరు ఛార్జ్ కంట్రోలర్ IC ని ఉపయోగించడం ద్వారా దీనిని నివారించవచ్చు కాని మేము ఈ ట్యుటోరియల్లో చర్చించము.
తరువాత, మనకు కాంట్రాస్ట్ పిన్ ఉంది, ఇది ఎల్సిడి యొక్క కాంట్రాస్ట్ను సెట్ చేయడానికి ఉపయోగించబడుతుంది, మేము దానిని పొటెన్షియోమీటర్కు అనుసంధానించాము, తద్వారా కాంట్రాస్ట్ను నియంత్రించవచ్చు. మేము 10 కే కుండను ఉపయోగించాము, కాని మీరు సమీపంలోని ఇతర విలువలను కూడా ఉపయోగించవచ్చు, కుండ కాంట్రాస్ట్ పిన్కు 0-5 V ని అందించడానికి సంభావ్య డివైడర్గా పనిచేస్తుంది, సాధారణంగా మీరు సహేతుకమైన కాంట్రాస్ట్ కోసం 2.2V చుట్టూ అందించడానికి నేరుగా రెసిస్టర్ను కూడా ఉపయోగించవచ్చు. విలువ. అప్పుడు మనకు రీసెట్ (RS), చదవడం / వ్రాయడం (RW) మరియు ఎనేబుల్ (E) పిన్లు ఉన్నాయి. రీడ్-రైట్ పిన్ గ్రౌన్దేడ్ చేయబడింది ఎందుకంటే మేము ఎల్సిడి నుండి ఏదైనా చదవలేము ఎందుకంటే మేము వ్రాసే కార్యకలాపాలను మాత్రమే చేస్తాము. మిగతా రెండు కంట్రోల్ పిన్స్ రూ. మరియు ఇ వరుసగా పిఏ 1, పిఎ 2 పిన్లకు అనుసంధానించబడి ఉన్నాయి.
అప్పుడు మనకు డేటా పిన్స్ DB0 నుండి DB7 వరకు ఉన్నాయి. 16x2 LCD రెండు మోడ్లలో పనిచేయగలదు, ఒకటి 8-బిట్ ఆపరేషన్ మోడ్, ఇక్కడ మేము LCD లోని మొత్తం 8 డేటా పిన్స్ (DB0-DB7) ను ఉపయోగించాలి మరియు మరొకటి 4-బిట్ ఆపరేషన్ మోడ్, ఇక్కడ మనకు 4 మాత్రమే అవసరం డేటా పిన్స్ (DB4-DB7). 4-బిట్ మోడ్ సాధారణంగా ఉపయోగించబడుతుంది ఎందుకంటే దీనికి కంట్రోలర్ నుండి తక్కువ GPIO పిన్స్ అవసరం, కాబట్టి మేము ఈ ట్యుటోరియల్లో 4-బిట్ మోడ్ను కూడా ఉపయోగించాము మరియు పిన్స్ DB4, DB5, DB6 మరియు DB7 లను పిన్లకు PD1, PD2, PD3 తో మాత్రమే కనెక్ట్ చేసాము., మరియు PD4 వరుసగా.
చివరి రెండు పిన్స్ BLA మరియు BLK అంతర్గత బ్యాక్లైట్ LED కి శక్తినిచ్చేందుకు ఉపయోగించబడతాయి, మేము 560-ఓం రెసిస్టర్ను ప్రస్తుత పరిమితి నిరోధకంగా ఉపయోగించాము. ST- లింక్ ప్రోగ్రామర్ మా మునుపటి ట్యుటోరియల్లో ఎప్పటిలాగే కనెక్ట్ చేయబడింది. నేను బ్రెడ్బోర్డ్లో పూర్తి కనెక్షన్ని చేసాను మరియు నా సెటప్ ఈ క్రింది చిత్రంలో చూపినట్లు కనిపిస్తోంది.
STM8 LCD లైబ్రరీ - STM8S103F3P6 కోసం హెడర్ ఫైల్
మేము సర్క్యూట్ రేఖాచిత్రంలో కొనసాగడానికి ముందు, కింది లింక్ను ఉపయోగించి గిట్హబ్ నుండి STM8 LCD హెడర్ ఫైల్ను తీసుకుందాం-
STM8S 16x2 LCD హెడర్ ఫైల్
మీరు పూర్తి రెపోను డౌన్లోడ్ చేసుకొని , stm8s103_LCD_16x2.h ఫైల్ను పొందవచ్చు లేదా పై లింక్ నుండి కోడ్ను సింపుల్ చేయవచ్చు. ప్రాజెక్ట్ను సెట్ చేస్తున్నప్పుడు, ఈ హెడర్ ఫైల్తో పాటు అవసరమైన అన్ని హెడర్ ఫైళ్ళను ఇంక్ డైరెక్టరీలో చేర్చారని నిర్ధారించుకోండి.
హెడర్ ఫైళ్ళను ఎలా జోడించాలో మరియు ప్రోగ్రామ్ను కంపైల్ చేయడం మీకు తెలియకపోతే, ఈ పేజీ దిగువన ఉన్న వీడియోను అనుసరించండి. మరియు హెడర్ ఫైల్ లోపల కోడ్ ఎలా పనిచేస్తుందనే దానిపై మీకు ఆసక్తి ఉంటే, మీరు ఎల్సిడి ట్యుటోరియల్తో పిఐసిని చూడవచ్చు. ఈ ప్రాజెక్ట్లో ఉపయోగించిన హెడర్ ఫైల్ అక్కడ వివరించిన ఫైల్తో సమానంగా ఉంటుంది, కాబట్టి మేము దాని వివరాలను పొందలేము.
STM8S మైక్రోకంట్రోలర్ కోసం LCD ప్రోగ్రామ్
ప్రదర్శన కోసం, “సర్క్యూట్ డైజెస్ట్” వంటి సరళమైన స్ట్రింగ్ను ప్రదర్శించడానికి మేము మా STM8S కంట్రోలర్ను ప్రోగ్రామ్ చేస్తాము, ఆపై రెండవ వరుసలో ప్రతి సెకనుకు “టెస్ట్” విలువను పెంచుతాము. పూర్తి ప్రోగ్రామ్ ఈ పేజీ దిగువన చూడవచ్చు. వివరణ ఈ క్రింది విధంగా ఉంది.
పిన్లను నిర్వచించడం ద్వారా మరియు అవసరమైన హెడర్ ఫైల్లను ఎప్పటిలాగే జోడించడం ద్వారా మేము మా ప్రోగ్రామ్ను ప్రారంభిస్తాము. మా పైన చర్చించిన సర్క్యూట్ రేఖాచిత్రంలో, మేము LCD_RS ను PA1 కి కనెక్ట్ చేసాము , కనుక దీనిని LCD_RS GPIOA, GPIO_PIN_1 గా నిర్వచించాము . అదేవిధంగా, మేము ఇతర పిన్ల కోసం కూడా అదే చేశాము. వారు వేరే సర్క్యూట్ను అనుసరిస్తుంటే, మీరు ఈ విలువలను తదనుగుణంగా మార్చారని నిర్ధారించుకోండి.
# define LCD_RS GPIOA, GPIO_PIN_1 # define LCD_EN GPIOA, GPIO_PIN_2 # define LCD_DB4 GPIOD, GPIO_PIN_1 # define LCD_DB5 GPIOD, GPIO_PIN_2 # define LCD_DB6 GPIOD, GPIO_PIN_3 # define LCD_DB7 GPIOD, GPIO_PIN_4 # ఉన్నాయి "STM8S.h" # ఉన్నాయి "stm8s103_LCD_16x2.h"
మా ప్రధాన ప్రోగ్రామ్ లోపల, ఈ నమూనా కోడ్కు అవసరమైన వేరియబుల్స్ని ప్రకటించాము. మనకు test_var అని పిలువబడే టెస్ట్ వేరియబుల్ ఉంది, ఇది సున్నాకి ప్రారంభించబడింది, మేము వేరియబుల్ ను పెంచుతాము మరియు దానిని LCD లో ప్రదర్శిస్తాము. D1 నుండి d4 అక్షరాలు పరీక్ష వేరియబుల్ యొక్క 4 అంకెలను సూచిస్తాయి ఎందుకంటే మా LCD పూర్ణాంక విలువను నేరుగా ప్రదర్శించదు, మేము వాటిని అక్షరాలకు మార్చాలి.
// వేరియబుల్ డిక్లరేషన్లు int test_var = 0; చార్ d4, d3, d2, d1;
LCD_Begin () ఫంక్షన్ LCD ప్రారంభించడం ఉపయోగిస్తారు. ఈ ఫంక్షన్ అవసరమైన అన్ని GPIO పిన్లను ప్రారంభిస్తుంది మరియు LCD ని 16x2 LCD మోడ్లో సెట్ చేస్తుంది. అప్పుడు మనకు LCD_Clear () ఫంక్షన్ ఉంది, ఇది LCD లోని అన్ని విలువలను క్లియర్ చేయడానికి ఉపయోగించబడుతుంది, ఇది LCD లోని ప్రతిదీ చెరిపివేస్తుంది, తద్వారా కొత్త విలువలను వ్రాయడం శుభ్రంగా ఉంటుంది. అప్పుడు మనకు LCD_Set_Cursor (x, y) ఫంక్షన్ ఉంది, ఇక్కడ x మరియు y మన క్రొత్త అక్షరాన్ని వ్రాయవలసిన స్థానాలు. ఉదాహరణకు, (1,1) అంటే మొదటి వరుస మరియు మొదటి కోలం, అదేవిధంగా (2,12) అంటే రెండవ వరుస 12 కాలమ్, అదేవిధంగా. మేము ఇంతకుముందు చర్చించినట్లు ఇక్కడ 2 వరుసలు మరియు 16 నిలువు వరుసలు ఉన్నాయని గమనించండి.
Lcd_Begin (); Lcd_Clear (); ఎల్సిడి_సెట్_ కర్సర్ (1,1);
ఇప్పుడు, LCD సెట్ చేయబడింది, క్లియర్ చేయబడింది మరియు కర్సర్ ఆ స్థలంలో ఉంది. తదుపరి విషయం ఏమిటంటే తెరపై ఏదో ముద్రించడం. LCD కి అక్షర విలువను ముద్రించడానికి LCD మరియు LCD_Print_Char (a) కు స్ట్రింగ్ను ముద్రించడానికి మేము LCD_Print_String (“నమూనా స్ట్రింగ్”) ను ఉపయోగించవచ్చు. ఇక్కడ మా ప్రోగ్రామ్లో “STM8S103F3P3 LCD” ను ముద్రించాము మరియు ఈ క్రింది కోడ్ను ఉపయోగించి 5 సెకన్ల ఆలస్యాన్ని సృష్టించాము.
Lcd_Print_String ("STM8S103F3P3 LCD"); delay_ms (5000);
5 సెకన్ల ఆలస్యం తరువాత, మేము మళ్ళీ LCD ని క్లియర్ చేసి, మొదటి వరుసలో “సర్క్యూట్ డైజెస్ట్” మరియు “టెస్ట్:” నేను రెండవ వరుసను ప్రదర్శిస్తాము.
Lcd_Clear (); ఎల్సిడి_సెట్_ కర్సర్ (1,1); Lcd_Print_String ("సర్క్యూట్ డైజెస్ట్"); ఎల్సిడి_సెట్_ కర్సర్ (2,1); Lcd_Print_String ("పరీక్ష:");
ఇన్సైడ్ అయితే లూప్, మేము పూర్ణాంక వేరియబుల్ విలువ విభజించబడింది కనిపిస్తుంది test_var కాబట్టి వ్యక్తిగత అక్షరాలు గా సాధారణ విభజన మరియు సాహచర్యం ఆపరేటర్లను ఉపయోగించి LCD ప్రదర్శించబడుతుంది చేసే. ASCII విలువను అక్షరానికి మార్చడానికి మేము '0' ను కూడా జోడించాము.
d4 = test_var% 10 + '0'; d3 = (test_var / 10)% 10 + '0'; d2 = (test_var / 100)% 10 + '0'; d1 = (test_var / 1000) + '0';
అప్పుడు మేము కర్సర్ను (2,6) కు సెట్ చేసాము, ఎందుకంటే రెండవ వరుసలో 6 అక్షరాలు ఉన్న “టెస్ట్:” ను ఇప్పటికే వ్రాసాము. మేము ఓవర్రైట్ చేస్తే, ఉన్న అక్షరం LCD లో కొత్త అక్షరంతో భర్తీ చేయబడుతుంది. మేము 1 సెకను ఆలస్యం చేసాము మరియు వేరియబుల్ పెంచండి.
ఎల్సిడి_సెట్_ కర్సర్ (2,6); ఎల్సిడి_ప్రింట్_చార్ (డి 1); ఎల్సిడి_ప్రింట్_చార్ (డి 2); ఎల్సిడి_ప్రింట్_చార్ (డి 3); ఎల్సిడి_ప్రింట్_చార్ (డి 4); delay_ms (1000); test_var ++;
ఎల్సిడితో ఎస్టిఎం 8 - పనిచేస్తోంది
మా ప్రోగ్రామ్ను పరీక్షించడానికి, కోడ్ను మా కంట్రోలర్కు అప్లోడ్ చేసి, మైక్రో-యుఎస్బి పోర్ట్తో శక్తినివ్వండి. LCD పని చేయడానికి 5V అవసరమని గమనించండి, కాబట్టి USB పోర్ట్ నుండి బోర్డుకి శక్తినివ్వడం తప్పనిసరి. 5V సరఫరా అవసరం లేనందున మేము ఇంతకుముందు నేరుగా ST- లింక్ నుండి శక్తినిచ్చాము.
మీరు చూడగలిగినట్లుగా, ప్రతి సెకనుకు పరీక్ష వేరియబుల్ విలువ ఇంక్రిమెంట్ కావడంతో LCD expected హించిన విధంగా పనిచేస్తోంది. అలాగే, మేము టైమర్లను ఉపయోగించలేదని మరియు ఈ ఆలస్యాన్ని సృష్టించడానికి ఆలస్యం ఫంక్షన్ను మాత్రమే ఉపయోగించామని గమనించండి, కాబట్టి ఆలస్యం వ్యవధి ఖచ్చితమైనదని ఆశించవద్దు, ఆ ప్రయోజనం కోసం మేము మరొక ట్యుటోరియల్లో టైమర్లను తరువాత ఉపయోగిస్తాము.
ప్రాజెక్ట్ యొక్క పూర్తి పనిని క్రింద లింక్ చేసిన వీడియోలో చూడవచ్చు. మీరు ట్యుటోరియల్ని ఆస్వాదించారని మరియు ఉపయోగకరమైనదాన్ని నేర్చుకున్నారని ఆశిస్తున్నాము. మీకు ఏవైనా ప్రశ్నలు ఉంటే, వాటిని వ్యాఖ్య విభాగంలో ఉంచండి లేదా ఇతర సాంకేతిక ప్రశ్నల కోసం మా ఫోరమ్లను ఉపయోగించండి.