- అవసరమైన భాగాలు:
- సర్క్యూట్ రేఖాచిత్రం:
- ఫ్రీక్వెన్సీని కొలవడానికి 8051 యొక్క TIMER ని ఉపయోగించడం:
- 555 టైమర్ ఫ్రీక్వెన్సీ మూలంగా:
- వర్కింగ్ మరియు కోడ్ వివరణ:
ఫ్రీక్వెన్సీని సెకనుకు చక్రాల సంఖ్యగా నిర్వచించారు. ఇది మొత్తం సమయం 'T' యొక్క పరస్పరం అని కూడా నిర్వచించవచ్చు. ఈ ప్రాజెక్ట్లో 8051 మైక్రోకంట్రోలర్లో పోర్ట్ 3.5 లోకి ప్రవేశించే పప్పుల సంఖ్యను లెక్కించి 16 * 2 ఎల్సిడి డిస్ప్లేలో ప్రదర్శించబోతున్నాం. కాబట్టి ప్రాథమికంగా మేము 8051 యొక్క పోర్ట్ 3.5 వద్ద సిగ్నల్ యొక్క ఫ్రీక్వెన్సీని కొలుస్తున్నాము. ఇక్కడ మేము AT89S52 8051 చిప్ను ఉపయోగించాము మరియు ప్రదర్శన కోసం నమూనా పల్స్ను ఉత్పత్తి చేయడానికి 555 IC అస్టేబుల్ మోడ్లో ఉపయోగించబడుతుంది. మేము ఇంతకుముందు ఆర్డునో ఉపయోగించి ఫ్రీక్వెన్సీ కౌంటర్ను నిర్మించాము.
అవసరమైన భాగాలు:
- 8051 మైక్రోకంట్రోలర్ (AT89S52)
- 16 * 2 ఎల్సిడి డిస్ప్లే
- ఫ్రీక్వెన్సీ సోర్స్ (555 టైమర్)
- పొటెన్టోమీటర్
- వైర్లను కనెక్ట్ చేస్తోంది
సర్క్యూట్ రేఖాచిత్రం:
ఫ్రీక్వెన్సీని కొలవడానికి 8051 యొక్క TIMER ని ఉపయోగించడం:
8051 మైక్రోకంట్రోలర్ 8 బిట్ మైక్రోకంట్రోలర్, దీనిలో చిప్ ర్యామ్లో 128 బైట్లు, చిప్ రామ్లో 4 కె బైట్లు, రెండు టైమర్లు, ఒక సీరియల్ పోర్ట్ మరియు నాలుగు 8 బిట్ పోర్ట్లు ఉన్నాయి. 8052 మైక్రోకంట్రోలర్ మైక్రోకంట్రోలర్ యొక్క పొడిగింపు. పోర్ట్ 3.5 ను కౌంటర్గా కాన్ఫిగర్ చేయడానికి, TMOD రిజిస్టర్ విలువలు 0x51 కు సెట్ చేయబడ్డాయి. క్రింద ఉన్న బొమ్మ TMOD రిజిస్టర్ను చూపిస్తుంది.
గేట్ | సి / టి | ఎం 1 | M0 | గేట్ | సి / టి | ఎం 1 | M2 |
టైమర్ 1 | TIMER 0 |
గేట్ - GATE సెట్ చేయబడినప్పుడు, INTx పిన్ HIGH మరియు TRx కంట్రోల్ పిన్ సెట్ చేయబడినప్పుడు మాత్రమే టైమర్ లేదా కౌంటర్ ప్రారంభించబడుతుంది. గేట్ క్లియర్ అయినప్పుడు, టిఆర్ఎక్స్ కంట్రోల్ బిట్ సెట్ అయినప్పుడు టైమర్ ప్రారంభించబడుతుంది.
సి / టి - సి / టి = 0 అయినప్పుడు, ఇది టైమర్గా పనిచేస్తుంది. C / T = 1 ఉన్నప్పుడు, ఇది కౌంటర్ వలె పనిచేస్తుంది.
M1 మరియు M0 ఆపరేషన్ మోడ్ను సూచిస్తుంది.
TMOD = 0x51 కొరకు, టైమర్ 1 కౌంటర్ వలె పనిచేస్తుంది మరియు ఇది మోడ్ 1 (16 బిట్) లో పనిచేస్తుంది.
సిగ్నల్ యొక్క ఫ్రీక్వెన్సీని హెర్ట్జ్ (Hz) లో ప్రదర్శించడానికి 16 * 2 LCD ఉపయోగించబడుతుంది. మీరు 16x2 LCD కి కొత్తగా ఉంటే, 16x2 LCD యొక్క పిన్స్ మరియు దాని ఆదేశాల గురించి ఇక్కడ మరింత తనిఖీ చేయండి. 8051 తో ఎల్సిడిని ఎలా ఇంటర్ఫేస్ చేయాలో కూడా తనిఖీ చేయండి.
555 టైమర్ ఫ్రీక్వెన్సీ మూలంగా:
ఫ్రీక్వెన్సీ మూలం చదరపు తరంగాలను ఉత్పత్తి చేయాలి మరియు గరిష్ట వ్యాప్తి 5V కి పరిమితం చేయబడింది, ఎందుకంటే 8051 మైక్రోకంట్రోలర్ యొక్క పోర్టులు 5V కన్నా ఎక్కువ వోల్టేజ్ను నిర్వహించలేవు. అది అంచనా వేయవచ్చు గరిష్ట ఫ్రీక్వెన్సీ 655.35 KHz ఉంది ఎందుకంటే Th1 మరియు TL1 రిజిష్టర్ను మెమరీ పరిమితి (ప్రతి 8bit) యొక్క. 100 మిల్లీసెకన్లలో, టిహెచ్ 1 మరియు టిఎల్ 1 65535 గణనలు కలిగి ఉంటాయి. అందువల్ల కొలవగల గరిష్ట పౌన frequency పున్యం 65535 * 10 = 655.35 KHz.
ఈ 8051 ఫ్రీక్వెన్సీ మీటర్ ప్రాజెక్ట్లో, వేరియబుల్ ఫ్రీక్వెన్సీ స్క్వేర్ తరంగాలను ఉత్పత్తి చేయడానికి నేను 555 టైమర్ను అస్టేబుల్ మోడ్లో ఉపయోగిస్తున్నాను. 555 IC ద్వారా ఉత్పత్తి చేయబడిన సిగ్నల్ యొక్క ఫ్రీక్వెన్సీ, ఈ ప్రాజెక్ట్ చివరిలో ఇచ్చిన వీడియోలో చూపిన విధంగా పొటెన్షియోమీటర్ను సర్దుబాటు చేయడం ద్వారా వైవిధ్యంగా ఉంటుంది.
ఈ ప్రాజెక్టులో, టైమర్ 1 (టి 1) 100 మిల్లీసెకన్లకు 8051 మైక్రోకంట్రోలర్లలో పోర్ట్ 3.5 లోకి ప్రవేశించే పప్పుల సంఖ్యను లెక్కిస్తుంది. కౌంట్ విలువలు వరుసగా TH1 మరియు TL1 రిజిస్టర్లలో నిల్వ చేయబడతాయి. TH1 మరియు TL1 రిజిస్టర్ విలువలను కలపడానికి, క్రింది ఫార్ములా ఉపయోగించబడుతుంది.
పప్పుధాన్యాలు = TH1 * (0x100) + TL1
ఇప్పుడు 'పల్స్' 100 మిల్లీసెకన్లలో చక్రాల సంఖ్యను కలిగి ఉంటుంది. కానీ సిగ్నల్ యొక్క ఫ్రీక్వెన్సీని సెకనుకు చక్రాల సంఖ్యగా నిర్వచించారు. దీన్ని ఫ్రీక్వెన్సీగా మార్చడానికి, క్రింద ఫార్ములా ఉపయోగించబడుతుంది.
పప్పుధాన్యాలు = పప్పుధాన్యాలు * 10
వర్కింగ్ మరియు కోడ్ వివరణ:
పూర్తి సి కార్యక్రమం ఈ ఫ్రీక్వెన్సీ కోసం మీటర్ ఈ ప్రాజెక్ట్ చివరిలో ఇవ్వబడుతుంది. కోడ్ చిన్న అర్ధవంతమైన భాగాలుగా విభజించబడింది మరియు క్రింద వివరించబడింది.
8051 మైక్రోకంట్రోలర్తో 16 * 2 ఎల్సిడి ఇంటర్ఫేసింగ్ కోసం, 16 * 2 ఎల్సిడి 8051 మైక్రోకంట్రోలర్కు అనుసంధానించబడిన పిన్లను నిర్వచించాలి. 16 * 2 ఎల్సిడి యొక్క ఆర్ఎస్ పిన్ పి 2.7 కి, 16 * 2 ఎల్సిడి యొక్క ఆర్డబ్ల్యు పిన్ పి 2.6 కి మరియు 16 * 2 ఎల్సిడి యొక్క ఇ పిన్ పి 2.5 కి కనెక్ట్ చేయబడింది. డేటా పిన్స్ 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 0 కి అనుసంధానించబడి ఉన్నాయి.
sbit rs = P2 ^ 7; sbit rw = P2 ^ 6; sbit en = P2 ^ 5;
తరువాత మనం ప్రోగ్రామ్లో ఉపయోగించే కొన్ని ఫంక్షన్లను నిర్వచించాలి. పేర్కొన్న సమయం ఆలస్యాన్ని సృష్టించడానికి ఆలస్యం ఫంక్షన్ ఉపయోగించబడుతుంది. Cmdwrt ఫంక్షన్ 16 * 2 lcd డిస్ప్లేకి ఆదేశాలను పంపడానికి ఉపయోగించబడుతుంది. డేటావర్ట్ ఫంక్షన్ 16 * 2 ఎల్సిడి డిస్ప్లేకి డేటాను పంపడానికి ఉపయోగించబడుతుంది.
శూన్య ఆలస్యం (సంతకం చేయని పూర్ణాంకం); void cmdwrt (సంతకం చేయని చార్); void datawrt (సంతకం చేయని చార్);
కోడ్ యొక్క ఈ భాగంలో, మేము 16 * 2 lcd కి ఆదేశాలను పంపుతున్నాము. స్పష్టమైన ప్రదర్శన, ఇంక్రిమెంట్ కర్సర్, 1 వ పంక్తి ప్రారంభానికి కర్సర్ను బలవంతం చేయడం వంటి ఆదేశాలు కొన్ని నిర్దిష్ట సమయం ఆలస్యం తర్వాత 16 * 2 ఎల్సిడి ప్రదర్శనకు ఒక్కొక్కటిగా పంపబడతాయి.
(i = 0; i <5; i ++) {cmdwrt (cmd); ఆలస్యం (1); }
కోడ్ యొక్క ఈ భాగంలో, టైమర్ 1 కౌంటర్గా కాన్ఫిగర్ చేయబడింది మరియు ఆపరేషన్ మోడ్ మోడ్ 1 కు సెట్ చేయబడింది.
టైమర్ 0 టైమర్గా కాన్ఫిగర్ చేయబడింది మరియు ఆపరేషన్ మోడ్ మోడ్ 1 కు సెట్ చేయబడింది. పప్పుధాన్యాల సంఖ్యను లెక్కించడానికి టైమర్ 1 ఉపయోగించబడుతుంది మరియు సమయం ఆలస్యాన్ని ఉత్పత్తి చేయడానికి టైమర్ 0 ఉపయోగించబడుతుంది. లెక్కింపు 0 నుండి మొదలవుతుందని నిర్ధారించడానికి TH1 మరియు TL1 విలువలు 0 కు సెట్ చేయబడ్డాయి.
TMOD = 0x51; టిఎల్ 1 = 0; TH1 = 0;
కోడ్ యొక్క ఈ భాగంలో, టైమర్ 100 మిల్లీసెకన్ల వరకు అమలు చేయడానికి తయారు చేయబడింది. ఆలస్యం ఫంక్షన్ ఉపయోగించి 100 మిల్లీసెకన్ల ఆలస్యం ఉత్పత్తి అవుతుంది. TR1 = 1 టైమర్ ప్రారంభించడానికి మరియు TR1 = 0 100 మిల్లీసెకన్ల తర్వాత టైమర్ను ఆపడానికి.
టిఆర్ 1 = 1; ఆలస్యం (100); టిఆర్ 1 = 0;
కోడ్ యొక్క ఈ భాగంలో, TH1 మరియు TL1 రిజిస్టర్లలో ఉన్న కౌంట్ విలువలు కలుపుతారు మరియు తరువాత 1 సెకనులో మొత్తం చక్రాల సంఖ్యను పొందడానికి 10 తో గుణించాలి.
పప్పుధాన్యాలు = TH1 * (0x100) + TL1; పప్పుధాన్యాలు = పప్పులు * 10;
కోడ్ యొక్క ఈ భాగంలో, ఫ్రీక్వెన్సీ విలువ 16 * 2 ఎల్సిడి డిస్ప్లేలో ప్రదర్శించడాన్ని సులభతరం చేయడానికి సింగిల్ బైట్లుగా మార్చబడుతుంది.
d1 = పప్పులు% 10; s1 = పప్పులు% 100; s2 = పప్పులు% 1000; s3 = పప్పులు% 10000; s4 = పప్పులు% 100000; d2 = (s1-d1) / 10; d3 = (s2-s1) / 100; d4 = (s3-s2) / 1000; d5 = (s4-s3) / 10000; d6 = (పప్పులు-ఎస్ 4) / 100000;
కోడ్ యొక్క ఈ భాగంలో, ఫ్రీక్వెన్సీ విలువ యొక్క వ్యక్తిగత అంకెలు ASCII ఆకృతికి మార్చబడతాయి మరియు ఇది 16 * 2 lcd డిస్ప్లేలో ప్రదర్శించబడుతుంది.
(పప్పులు> = 100000) డేటావార్ట్ (0x30 + d6) ఉంటే; if (పప్పులు> = 10000) డేటావార్ట్ (0x30 + d5); if (పప్పులు> = 1000) డేటావార్ట్ (0x30 + d4); if (పప్పులు> = 100) డేటావార్ట్ (0x30 + d3); if (పప్పులు> = 10) డేటావార్ట్ (0x30 + d2); datawrt (0x30 + d1);
కోడ్ యొక్క ఈ భాగంలో, మేము 16 * 2 ఎల్సిడి డిస్ప్లేకి ఆదేశాలను పంపుతున్నాము. కమాండ్ 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 0 కు కాపీ చేయబడింది. కమాండ్ రైట్ కోసం RS తక్కువగా ఉంటుంది. వ్రాసే ఆపరేషన్ కోసం RW తక్కువగా ఉంటుంది. కమాండ్ రైట్ ఆపరేషన్ ప్రారంభించడానికి ఎనేబుల్ (ఇ) పిన్పై హై టు తక్కువ పల్స్ వర్తించబడుతుంది.
void cmdwrt (సంతకం చేయని చార్ x) {P0 = x; rs = 0; rw = 0; en = 1; ఆలస్యం (1); en = 0; }
కోడ్ యొక్క ఈ భాగంలో, మేము 16 * 2 ఎల్సిడి డిస్ప్లేకి డేటాను పంపుతున్నాము. డేటా 8051 మైక్రోకంట్రోలర్ యొక్క పోర్ట్ 0 కు కాపీ చేయబడింది. కమాండ్ రైట్ కోసం RS అధికంగా తయారు చేయబడింది. వ్రాసే ఆపరేషన్ కోసం RW తక్కువగా ఉంటుంది. డేటా రైట్ ఆపరేషన్ ప్రారంభించడానికి ఎనేబుల్ (ఇ) పిన్పై హై టు తక్కువ పల్స్ వర్తించబడుతుంది.
void datawrt (సంతకం చేయని చార్ y) {P0 = y; rs = 1; rw = 0; en = 1; ఆలస్యం (1); en = 0; }
8051 మైక్రోకంట్రోలర్ ఉపయోగించి ఏదైనా సిగ్నల్ యొక్క ఫ్రీక్వెన్సీని మనం ఈ విధంగా కొలవగలము. దిగువ పూర్తి కోడ్ మరియు డెమో వీడియోను తనిఖీ చేయండి.