- అవసరమైన భాగాలు:
- సర్క్యూట్ రేఖాచిత్రం:
- 8051 ఉపయోగించి LM35 తో ఉష్ణోగ్రతను కొలవడం:
- 16x2 LCD:
- ADC0804 IC:
- LM35 ఉష్ణోగ్రత సెన్సార్:
- కోడ్ వివరణ:
హెచ్చుతగ్గుల కారణంగా అనలాగ్ థర్మామీటర్ నుండి ఉష్ణోగ్రతను చదవడం కొన్నిసార్లు ప్రజలకు కష్టమవుతుంది. కాబట్టి ఇక్కడ మనం 8051 మైక్రోకంట్రోలర్ను ఉపయోగించి ఒక సాధారణ డిజిటల్ థర్మామీటర్ను నిర్మించబోతున్నాము, దీనిలో ఉష్ణోగ్రతను కొలవడానికి LM35 సెన్సార్ ఉపయోగించబడుతుంది. ఆర్డునో, నోడ్ఎంసియు, పిఐసి, రాస్ప్బెర్రీ పై మరియు ఇతర మైక్రోకంట్రోలర్లను ఉపయోగించి డిజిటల్ థర్మామీటర్ నిర్మించడానికి మేము ఎల్ఎమ్ 35 ను ఉపయోగించాము.
ఈ ప్రాజెక్ట్ 8051 తో ADC0804 మరియు 8051 మైక్రోకంట్రోలర్తో 16 * 2 LCD యొక్క సరైన ఇంటర్ఫేసింగ్గా ఉపయోగపడుతుంది.
అవసరమైన భాగాలు:
- 8051 అభివృద్ధి బోర్డు
- ADC0804 బోర్డు
- 16 * 2 ఎల్సిడి డిస్ప్లే
- LM35 సెన్సార్
- పొటెన్టోమీటర్
- జంపర్ వైర్లు
సర్క్యూట్ రేఖాచిత్రం:
LM35 ఉపయోగించి డిజిటల్ థర్మామీటర్ సర్క్యూట్ కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద ఇవ్వబడింది:
8051 ఉపయోగించి LM35 తో ఉష్ణోగ్రతను కొలవడం:
8051 మైక్రోకంట్రోలర్ 8 బిట్ మైక్రోకంట్రోలర్, దీనిలో చిప్ ర్యామ్లో 128 బైట్లు, చిప్ రామ్లో 4 కె బైట్లు, రెండు టైమర్లు, ఒక సీరియల్ పోర్ట్ మరియు నాలుగు 8 బిట్ పోర్ట్లు ఉన్నాయి. 8052 మైక్రోకంట్రోలర్ మైక్రోకంట్రోలర్ యొక్క పొడిగింపు. 8051 కుటుంబ సభ్యుల పోలికను క్రింది పట్టిక చూపిస్తుంది.
ఫీచర్ |
8051 |
8052 |
ROM (బైట్లలో) |
4 కె |
8 కె |
RAM (బైట్లు) |
128 |
256 |
టైమర్లు |
2 |
3 |
I / O పిన్స్ |
32 |
32 |
సీరియల్ పోర్ట్ |
1 |
1 |
అంతరాయ మూలాలు |
6 |
8 |
16x2 LCD:
16 * 2 ఎల్సిడి ఎంబెడెడ్ అనువర్తనాల కోసం విస్తృతంగా ఉపయోగించే ప్రదర్శన. పిన్స్ మరియు 16 * 2 ఎల్సిడి డిస్ప్లే యొక్క పని గురించి సంక్షిప్త వివరణ ఇక్కడ ఉంది. ఎల్సిడి లోపల రెండు చాలా ముఖ్యమైన రిజిస్టర్లు ఉన్నాయి. అవి డేటా రిజిస్టర్ మరియు కమాండ్ రిజిస్టర్. స్పష్టమైన ప్రదర్శన, ఇంట్లో కర్సర్ మొదలైన ఆదేశాలను పంపడానికి కమాండ్ రిజిస్టర్ ఉపయోగించబడుతుంది, డేటా రిజిస్టర్ 16 * 2 ఎల్సిడిలో ప్రదర్శించబడే డేటాను పంపడానికి ఉపయోగిస్తారు. క్రింద పట్టిక 16 * 2 ఎల్సిడి యొక్క పిన్ వివరణను చూపిస్తుంది.
పిన్ చేయండి |
చిహ్నం |
I / O. |
వివరణ |
1 |
Vss |
- |
గ్రౌండ్ |
2 |
Vdd |
- |
+ 5 వి విద్యుత్ సరఫరా |
3 |
వీ |
- |
కాంట్రాస్ట్ను నియంత్రించడానికి విద్యుత్ సరఫరా |
4 |
ఆర్ఎస్ |
నేను |
కమాండ్ రిజిస్టర్ కోసం RS = 0, డేటా రిజిస్టర్ కోసం RS = 1 |
5 |
ఆర్డబ్ల్యూ |
నేను |
రాయడానికి R / W = 0, చదవడానికి R / W = 1 |
6 |
ఇ |
I / O. |
ప్రారంభించండి |
7 |
డి 0 |
I / O. |
8-బిట్ డేటా బస్ (ఎల్ఎస్బి) |
8 |
డి 1 |
I / O. |
8-బిట్ డేటా బస్సు |
9 |
డి 2 |
I / O. |
8-బిట్ డేటా బస్సు |
10 |
డి 3 |
I / O. |
8-బిట్ డేటా బస్సు |
11 |
డి 4 |
I / O. |
8-బిట్ డేటా బస్సు |
12 |
డి 5 |
I / O. |
8-బిట్ డేటా బస్సు |
13 |
డి 6 |
I / O. |
8-బిట్ డేటా బస్సు |
14 |
డి 7 |
I / O. |
8-బిట్ డేటా బస్ (MSB) |
15 |
జ |
- |
బ్యాక్లైట్ కోసం + 5 వి |
16 |
కె |
- |
గ్రౌండ్ |
దిగువ పట్టిక తరచుగా ఉపయోగించే LCD కమాండ్ కోడ్లను చూపుతుంది.
కోడ్ (హెక్స్) |
వివరణ |
01 |
ప్రదర్శన స్క్రీన్ క్లియర్ |
06 |
పెరుగుదల కర్సర్ (కుడి షిఫ్ట్) |
0A |
ప్రదర్శించు, కర్సర్ ఆన్ |
0 సి |
ప్రదర్శించు, కర్సర్ ఆఫ్ |
0 ఎఫ్ |
ప్రదర్శించు, కర్సర్ మెరిసే |
80 |
1 వ పంక్తి ప్రారంభానికి కర్సర్ను బలవంతం చేయండి |
సి 0 |
కర్సర్ను 2 వ పంక్తి ప్రారంభానికి బలవంతం చేయండి |
38 |
2 పంక్తులు మరియు 5 * 7 మాతృక |
ADC0804 IC:
ADC0804 IC నేషనల్ సెమీకండక్టర్ నుండి ADC0800 సిరీస్ కుటుంబంలో ఒక 8-బిట్ సమాంతర ADC ఉంది. ఇది +5 వోల్ట్లతో పనిచేస్తుంది మరియు 8 బిట్స్ రిజల్యూషన్ కలిగి ఉంటుంది. Vref / 2 యొక్క విభిన్న విలువలకు దశల పరిమాణం మరియు విన్ పరిధి మారుతూ ఉంటాయి. దిగువ పట్టిక Vref / 2 మరియు Vin పరిధి మధ్య సంబంధాన్ని చూపుతుంది.
వ్రెఫ్ / 2 (వి) |
విన్ (వి) |
దశ పరిమాణం (mV) |
తెరిచి ఉంది |
0 నుండి 5 వరకు |
19.53 |
2.0 |
0 నుండి 4 వరకు |
15.62 |
1.5 |
0 నుండి 3 వరకు |
11.71 |
1.28 |
0 నుండి 2.56 వరకు |
10 |
మా విషయంలో Vref / 2 1.28 వోల్ట్లకు అనుసంధానించబడి ఉంది, కాబట్టి దశ పరిమాణం 10mV. ADC0804 కోసం దశ పరిమాణం (2 * Vref / 2) / 256 గా లెక్కించబడుతుంది.
అవుట్పుట్ వోల్టేజ్ను లెక్కించడానికి క్రింది సూత్రం ఉపయోగించబడుతుంది:
డౌట్ = విన్ / స్టెప్ సైజు
డౌట్ దశాంశంలో డిజిటల్ డేటా అవుట్పుట్ అయితే, విన్ = అనలాగ్ ఇన్పుట్ వోల్టేజ్ మరియు స్టెప్ సైజ్ (రిజల్యూషన్) అతి చిన్న మార్పు. ADC0804 గురించి ఇక్కడ మరింత తెలుసుకోండి, 8051 తో ADC0808 యొక్క ఇంటర్ఫేసింగ్ను కూడా తనిఖీ చేయండి.
LM35 ఉష్ణోగ్రత సెన్సార్:
LM35 ఒక ఉష్ణోగ్రత సెన్సార్, దీని అవుట్పుట్ వోల్టేజ్ సెల్సియస్ ఉష్ణోగ్రతకు సరళంగా ఉంటుంది. LM35 ఇప్పటికే క్రమాంకనం చేయబడింది కాబట్టి బాహ్య క్రమాంకనం అవసరం లేదు. ఇది సెల్సియస్ ఉష్ణోగ్రత యొక్క ప్రతి డిగ్రీకి 10mV ను ఉత్పత్తి చేస్తుంది.
LM35 సెన్సార్ ఉష్ణోగ్రతకు అనుగుణంగా వోల్టేజ్ను ఉత్పత్తి చేస్తుంది. ఈ వోల్టేజ్ ADC0804 చే డిజిటల్ (0 నుండి 256) గా మార్చబడుతుంది మరియు ఇది 8051 మైక్రోకంట్రోలర్కు ఇవ్వబడుతుంది. 8051 మైక్రోకంట్రోలర్ ఈ డిజిటల్ విలువను డిగ్రీ సెల్సియస్ ఉష్ణోగ్రతగా మారుస్తుంది. అప్పుడు ఈ ఉష్ణోగ్రత ప్రదర్శించడానికి అనువైన ascii రూపంలోకి మార్చబడుతుంది. ఈ ascii విలువలు 16 * 2 lcd కి ఇవ్వబడతాయి, ఇది దాని తెరపై ఉష్ణోగ్రతను ప్రదర్శిస్తుంది. పేర్కొన్న విరామం తర్వాత ఈ ప్రక్రియ పునరావృతమవుతుంది.
8051 ఉపయోగించి LM35 డిజిటల్ థర్మామీటర్ కోసం సెటప్ చిత్రం క్రింద ఉంది :
మీరు అన్ని LM35 ఆధారిత డిజిటల్ థర్మామీటర్లను ఇక్కడ కనుగొనవచ్చు.
కోడ్ వివరణ:
LM35 ఉపయోగించి ఈ డిజిటల్ థర్మామీటర్ కోసం పూర్తి సి ప్రోగ్రామ్ ఈ ప్రాజెక్ట్ చివరిలో ఇవ్వబడింది. కోడ్ చిన్న అర్ధవంతమైన భాగాలుగా విభజించబడింది మరియు క్రింద వివరించబడింది.
8051 మైక్రోకంట్రోలర్తో 16 * 2 ఎల్సిడి ఇంటర్ఫేసింగ్ కోసం, 16 * 2 ఎల్సిడి 8051 మైక్రోకంట్రోలర్కు అనుసంధానించబడిన పిన్లను నిర్వచించాలి. 16 * 2 ఎల్సిడి యొక్క ఆర్ఎస్ పిన్ పి 2.7 కి, 16 * 2 ఎల్సిడి యొక్క ఆర్డబ్ల్యు పిన్ పి 2.6 కి మరియు 16 * 2 ఎల్సిడి యొక్క ఇ పిన్ పి 2.5 కి కనెక్ట్ చేయబడింది. డేటా పిన్స్ 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 0 కి అనుసంధానించబడి ఉన్నాయి.
sbit rs = P2 ^ 7; // 16 * 2 ఎల్సిడి ఎస్బిట్ rw = పి 2 ^ 6 యొక్క రిజిస్టర్ సెలెక్ట్ (ఆర్ఎస్) పిన్; // 16 * 2 lcd sbit en = P2 ^ 5 యొక్క చదవండి / వ్రాయండి (RW) పిన్; // 16 * 2 ఎల్సిడి (ఇ) పిన్ను ప్రారంభించండి
అదేవిధంగా, 8051 మైక్రోకంట్రోలర్తో ADC0804 ఇంటర్ఫేసింగ్ కోసం, ADC0804 8051 మైక్రోకంట్రోలర్కు అనుసంధానించబడిన పిన్లను మేము నిర్వచించాలి. ADC0804 యొక్క RD పిన్ P3.0 కి, ADC0804 యొక్క WR పిన్ P3.1 కి మరియు ADC0804 యొక్క INTR పిన్ P3.2 కి అనుసంధానించబడి ఉంది. డేటా పిన్స్ 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 1 కి అనుసంధానించబడి ఉన్నాయి.
sbit rd_adc = P3 ^ 0; // ADC0804 sbit wr_adc = P3 ^ 1 యొక్క చదవండి (RD) పిన్; // ADC0804 sbit యొక్క వ్రాయండి (WR) పిన్ intr_adc = P3 ^ 2; // ADC0804 యొక్క అంతరాయం (INTR) పిన్
తరువాత మనం ప్రోగ్రామ్లో ఉపయోగించే కొన్ని ఫంక్షన్లను నిర్వచించాలి. పేర్కొన్న సమయం ఆలస్యాన్ని సృష్టించడానికి ఆలస్యం ఫంక్షన్ ఉపయోగించబడుతుంది, c mdwrt ఫంక్షన్ 16 * 2 lcd డిస్ప్లేకి ఆదేశాలను పంపడానికి ఉపయోగించబడుతుంది, డేటావర్ట్ ఫంక్షన్ 16 * 2 lcd డిస్ప్లేకు డేటాను పంపడానికి ఉపయోగించబడుతుంది మరియు ADC డేటాను ఉష్ణోగ్రతగా మార్చడానికి కన్వర్ట్_డిస్ప్లే ఫంక్షన్ ఉపయోగించబడుతుంది మరియు దానిని 16 * 2 ఎల్సిడి డిస్ప్లేలో ప్రదర్శించడానికి.
శూన్య ఆలస్యం (సంతకం చేయని పూర్ణాంకం); ఆలస్యం శూన్యమైన cmdwrt (సంతకం చేయని చార్) సృష్టించడానికి // ఫంక్షన్; 16 * 2 ఎల్సిడి డిస్ప్లే శూన్య డేటావర్ట్కు (సంతకం చేయని చార్) ఆదేశాలను పంపే // ఫంక్షన్; 16 * 2 ఎల్సిడి డిస్ప్లే శూన్య కన్వర్ట్_డిస్ప్లే (సంతకం చేయని చార్) కు డేటాను పంపే // ఫంక్షన్; // ADC విలువను ఉష్ణోగ్రతకు మార్చడానికి మరియు 16 * 2 lcd డిస్ప్లేలో ప్రదర్శించడానికి ఫంక్షన్
కోడ్ యొక్క దిగువ భాగంలో, మేము 16 * 2 lcd కి ఆదేశాలను పంపుతున్నాము. స్పష్టమైన ప్రదర్శన, ఇంక్రిమెంట్ కర్సర్, 1 వ పంక్తి ప్రారంభానికి కర్సర్ను బలవంతం చేయడం వంటి ఆదేశాలు కొన్ని నిర్దిష్ట సమయం ఆలస్యం తర్వాత 16 * 2 ఎల్సిడి ప్రదర్శనకు ఒక్కొక్కటిగా పంపబడతాయి.
(i = 0; i <5; i ++) // ఆదేశాలను 16 * 2 lcd కి పంపండి ఒక సమయంలో ఒక ఆదేశాన్ని ప్రదర్శిస్తుంది {cmdwrt (cmd); 16 * 2 ఎల్సిడి డిస్ప్లే ఆలస్యం (1) కు ఆదేశాలను పంపడానికి // ఫంక్షన్ కాల్; }
కోడ్ యొక్క ఈ భాగంలో, మేము 16 * 2 ఎల్సిడికి డేటాను పంపుతున్నాము. 16 * 2 ఎల్సిడి డిస్ప్లేలో ప్రదర్శించాల్సిన డేటా కొంత సమయం ఆలస్యం తర్వాత ఒక్కొక్కటిగా ప్రదర్శించడానికి పంపబడుతుంది.
(i = 0; i <12; i ++) // డేటాను 16 * 2 lcd కి పంపండి ఒక సమయంలో ఒక అక్షరాన్ని ప్రదర్శిస్తుంది {datawrt (data1); 16 * 2 ఎల్సిడి డిస్ప్లే ఆలస్యం (1) కు డేటాను పంపడానికి // ఫంక్షన్ కాల్; Code కోడ్ యొక్క ఈ భాగంలో మేము LM35 సెన్సార్ ద్వారా ఉత్పత్తి చేయబడిన అనలాగ్ వోల్టేజ్ను డిజిటల్ డేటాగా మారుస్తున్నాము మరియు అది ఉష్ణోగ్రతకు మార్చబడుతుంది మరియు 16 * 2 ఎల్సిడి డిస్ప్లేలో ప్రదర్శించబడుతుంది. ADC0804 మార్పిడిని ప్రారంభించడానికి మేము ADC0804 యొక్క WR పిన్పై తక్కువ నుండి అధిక పల్స్ పంపాలి, అప్పుడు మేము మార్పిడి ముగింపు కోసం వేచి ఉండాలి. మార్పిడి చివరిలో INTR తక్కువగా ఉంటుంది. INTR తక్కువగా మారిన తర్వాత, 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 0 కు డిజిటల్ డేటాను కాపీ చేయడానికి RD తక్కువగా ఉంటుంది. పేర్కొన్న సమయం ఆలస్యం తరువాత, తదుపరి చక్రం ప్రారంభమవుతుంది. ఈ ప్రక్రియ ఎప్పటికీ పునరావృతమవుతుంది.
(1) // ఎప్పటికీ పునరావృతం చేయండి {wr_adc = 0; // WR పిన్ ఆలస్యం (1) పై తక్కువ పల్స్కు తక్కువ పంపండి; wr_adc = 1; అయితే (intr_adc == 1); // మార్పిడి ముగింపు కోసం వేచి ఉండండి rd_adc = 0; // ADC0804 విలువ = P1 నుండి డేటాను చదవడానికి RD = 0 చేయండి; // కాపీ ADC డేటా కన్వర్ట్_డిస్ప్లే (విలువ); // ADC డేటాను ఉష్ణోగ్రతగా మార్చడానికి మరియు 16 * 2 lcd డిస్ప్లే ఆలస్యం (1000) లో ప్రదర్శించడానికి ఫంక్షన్ కాల్; ప్రతి చక్రాల మధ్య // విరామం rd_adc = 1; // తదుపరి చక్రానికి RD = 1 చేయండి}
కోడ్ యొక్క దిగువ భాగంలో, మేము 16 * 2 lcd డిస్ప్లేకి ఆదేశాలను పంపుతున్నాము. కమాండ్ 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 0 కు కాపీ చేయబడింది. కమాండ్ రైట్ కోసం RS తక్కువగా ఉంటుంది. వ్రాసే ఆపరేషన్ కోసం RW తక్కువగా ఉంటుంది. కమాండ్ రైట్ ఆపరేషన్ ప్రారంభించడానికి ఎనేబుల్ (ఇ) పిన్పై హై టు తక్కువ పల్స్ వర్తించబడుతుంది.
void cmdwrt (సంతకం చేయని చార్ x) {P0 = x; // పోర్ట్ 0 కి ఆదేశాన్ని పంపండి, దానిపై 16 * 2 ఎల్సిడి కనెక్ట్ చేయబడింది rs = 0; // rw = 0 కమాండ్ కోసం RS = 0 చేయండి; // వ్రాసే ఆపరేషన్ కోసం RW = 0 చేయండి en = 1; // కమాండ్రైట్ ఆపరేషన్ ఆలస్యం (1) ప్రారంభించడానికి ఎనేబుల్ (ఇ) పిన్పై తక్కువ పల్స్కు పంపండి; en = 0; }
కోడ్ యొక్క ఈ భాగంలో, మేము 16 * 2 ఎల్సిడి డిస్ప్లేకి డేటాను పంపుతున్నాము. డేటా 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 0 కు కాపీ చేయబడింది. కమాండ్ రైట్ కోసం RS అధికంగా తయారు చేయబడింది. వ్రాసే ఆపరేషన్ కోసం RW తక్కువగా ఉంటుంది. డేటా రైట్ ఆపరేషన్ ప్రారంభించడానికి ఎనేబుల్ (ఇ) పిన్పై హై టు తక్కువ పల్స్ వర్తించబడుతుంది.
void datawrt (సంతకం చేయని చార్ y) {P0 = y; // డేటాను పోర్ట్ 0 కి పంపండి, దానిపై 16 * 2 ఎల్సిడి కనెక్ట్ చేయబడింది rs = 1; // rw = 0 కమాండ్ కోసం RS = 1 చేయండి; // వ్రాసే ఆపరేషన్ కోసం RW = 0 చేయండి en = 1; // డేటారైట్ ఆపరేషన్ ఆలస్యం (1) ప్రారంభించడానికి ఎనేబుల్ (ఇ) పిన్పై తక్కువ పల్స్కు అధికంగా పంపండి; en = 0; }
కోడ్ యొక్క ఈ భాగంలో, మేము డిజిటల్ డేటాను ఉష్ణోగ్రతగా మారుస్తున్నాము మరియు దానిని 16 * 2 ఎల్సిడి డిస్ప్లేలో ప్రదర్శిస్తున్నాము.
void convert_display (సంతకం చేయని చార్ విలువ) {సంతకం చేయని చార్ x1, x2, x3; cmdwrt (0xc6); 16 * 2 lcd x1 = (విలువ / 10) పై కర్సర్ను 2 వ పంక్తి యొక్క 6 వ స్థానానికి సెట్ చేయడానికి // ఆదేశం; // విలువను 10 ద్వారా విభజించి, వేరియబుల్ x1 x1 = x1 + (0x30) లో స్టోర్ కొటెంట్; // 0x30 x2 = విలువ% 10 ను జోడించడం ద్వారా వేరియబుల్ x1 ను ascii గా మార్చండి; // విలువను 10 ద్వారా విభజించి, మిగిలినవి వేరియబుల్ x2 x2 = x2 + (0x30) లో నిల్వ చేయండి; // 0x30 x3 = 0xDF ని జోడించడం ద్వారా వేరియబుల్ x2 ను ascii గా మార్చండి; // డిగ్రీ (°) గుర్తు డేటావార్ట్ (x1) యొక్క ascii విలువ; // 16 * 2 ఎల్సిడి డిస్ప్లే డేటావర్ట్ (x2) పై ప్రదర్శన ఉష్ణోగ్రత; datawrt (x3); datawrt ('C'); }
అలాగే, వివిధ మైక్రోకంట్రోలర్లతో LM35 ఉపయోగించి ఇతర థర్మామీటర్లను తనిఖీ చేయండి:
- Arduino మరియు LM35 ఉపయోగించి డిజిటల్ థర్మామీటర్
- LM35 మరియు AVR మైక్రోకంట్రోలర్ ఉపయోగించి ఉష్ణోగ్రత కొలత
- రాస్ప్బెర్రీ పైతో గది ఉష్ణోగ్రత కొలత