- అవసరమైన పదార్థాలు:
- RTC మాడ్యూల్:
- DS3231 RTC ని PIC మైక్రోకంట్రోలర్తో కనెక్ట్ చేస్తోంది:
- RTC మాడ్యూల్ కోసం ప్రోగ్రామింగ్ PIC:
- PIC16F877a_DS3231.h హెడర్ ఫైల్ యొక్క సంక్షిప్త వివరణ:
- అనుకరణ:
- LCD లో సమయం మరియు తేదీని ప్రదర్శించండి:
దాదాపు అన్ని ఎంబెడెడ్ పరికరాలు వాస్తవ ప్రపంచంతో సంభాషించడానికి రూపొందించబడ్డాయి. వారు డిజిటల్ ప్రపంచం మరియు వాస్తవ ప్రపంచం మధ్య కమ్యూనికేట్ చేయడానికి ఒక వంతెన వలె పనిచేస్తారు. ఈ ప్రక్రియను సులభతరం మరియు సమర్థవంతంగా చేయడానికి, డిజిటల్ ప్రపంచం కొన్నిసార్లు వాస్తవ ప్రపంచం యొక్క సమయం మరియు తేదీని ట్రాక్ చేయాల్సి ఉంటుంది. ఈ విధంగా డిజిటల్ ప్రపంచం వాస్తవ ప్రపంచంలో సమయం / రోజు ఏమిటో తెలుసుకుంటుంది మరియు పగటి లేదా రాత్రి సమయాన్ని కూడా వేరు చేస్తుంది. ఇది నిర్దిష్ట సమయం లేదా తేదీలో కొన్ని పనులను నిర్వహించడానికి సమయ వనరుగా కూడా పనిచేస్తుంది. ఇక్కడ మేము RIC మాడ్యూల్ను PIC మైక్రోకంట్రోలర్తో ఇంటర్ఫేస్ చేస్తున్నాము మరియు సమయం మరియు తేదీని 16x2 LCD లో ప్రదర్శిస్తాము. ఈ ప్రాజెక్ట్ను డిజిటల్ క్లాక్గా కూడా ఉపయోగించవచ్చు.
అవసరమైన పదార్థాలు:
- నియంత్రిత 5 వి సరఫరా
- PIC16F877A
- క్రిస్టల్ ఆసిలేటర్ 20Mhz
- కెపాసిటర్ 33 పిఎఫ్ - 2 సంఖ్యలు
- 10 కె, 5.1 కె, 1 కె రెసిస్టర్
- DS3231 RTC మాడ్యూల్
- పాట్ -10 కె
- LCD మాడ్యూల్ 16 * 2
- వైర్లను కనెక్ట్ చేస్తోంది
RTC మాడ్యూల్:
మైక్రోకంట్రోలర్కు వాస్తవ ప్రపంచాల సమయం లేదా తేదీని ట్రాక్ చేయడానికి అత్యంత సాధారణ మార్గం RTC IC ని ఉపయోగించడం. RTC అనే పదం రియల్ టైమ్ క్లాక్; ఈ ఐసి వాస్తవ ప్రపంచ సమయం మరియు తేదీని ట్రాక్ చేస్తుంది మరియు అభ్యర్థించినప్పుడల్లా ఈ సమాచారాన్ని మైక్రోకంట్రోలర్తో పంచుకుంటుంది. మేము ఇక్కడ ఉపయోగిస్తున్న RTC IC అత్యంత ప్రజాదరణ పొందిన మరియు ఖచ్చితమైన DS3231. ఈ ఐసి ప్రతి సంవత్సరం కొన్ని సెకన్ల వ్యవధిలో మాత్రమే వెళుతుంది మరియు అందువల్ల అత్యంత నమ్మదగినది. ఈ ట్యుటోరియల్ కొరకు మేము DS3231 RTC మాడ్యూల్ను ఉపయోగిస్తున్నాము, వీటిని ఆన్లైన్లో లేదా స్థానిక హార్డ్వేర్ షాప్ నుండి సులభంగా కొనుగోలు చేయవచ్చు. మాడ్యూల్ 3V కాయిన్ సెల్ తో వస్తుంది, ఇది ఎల్లప్పుడూ RTC మాడ్యూల్కు శక్తినిస్తుంది మరియు అందువల్ల సమయం మరియు తేదీని సెట్ చేసిన తర్వాత కాయిన్ సెల్ సజీవంగా ఉన్నంత వరకు ఇది నవీకరించబడుతుంది.
DS3231 మాడ్యూల్ I2C ప్రోటోకాల్ సహాయంతో కమ్యూనికేట్ చేస్తుంది, కనుక ఇది ఏమిటో మరియు PIC తో ఎలా ఉపయోగించబడుతుందో మీకు తెలియకపోతే కొనసాగడానికి ముందు P2 ట్యుటోరియల్తో I2C ని చదవండి. ఈ ట్యుటోరియల్లో మనం మా ఆర్టీసీ మాడ్యూల్తో కమ్యూనికేట్ చేయడానికి ఉపయోగపడే హెడర్ ఫైల్ను సృష్టించబోతున్నాం మరియు ఎల్సిడి డిస్ప్లేలో సమయం మరియు తేదీని ప్రదర్శించడం ద్వారా హార్డ్వేర్పై కూడా పరీక్షించవచ్చు కాబట్టి ఎల్సిడిని ఎలా ఇంటర్ఫేస్ చేయాలో నేర్చుకోవడం కూడా ముఖ్యం PIC మైక్రోకంట్రోలర్తో ప్రదర్శించు. DS3231 కోసం ఈ ట్యుటోరియల్లో సృష్టించబడిన హెడర్ ఫైల్ తరువాత మీ అనువర్తనాలకు అనుగుణంగా ఉపయోగించబడుతుంది / సవరించబడుతుంది.
మేము ఇంతకుముందు DS3231 RTC ని Arduino తో ఈ క్రింది ప్రాజెక్టులలో ఉపయోగించాము:
- Arduino ఉపయోగించి ఆటోమేటిక్ పెట్ ఫీడర్
- ఆర్డునో డేటా లాగర్
DS3231 RTC ని PIC మైక్రోకంట్రోలర్తో కనెక్ట్ చేస్తోంది:
పిఐసి మైక్రోకంట్రోలర్ ఆధారిత డిజిటల్ క్లాక్ కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద ఇవ్వబడింది. ఇంతకు ముందే చెప్పినట్లుగా DS3231 I2C కమ్యూనికేషన్ సహాయంతో పనిచేస్తుంది కాబట్టి దీనికి సీరియల్ క్లాక్ (SCL) మరియు సీరియల్ డేటా (SDA) పిన్ ఉంటుంది, ఇది మా PIC లోని I2C పిన్లతో అనుసంధానించబడి ఉండాలి, ఇది పిన్ 18 (SCL) మరియు పిన్ 23 (SDA). పనిలేకుండా ఉన్నప్పుడు బస్సును అధిక స్థితిలో ఉంచడానికి 4.7 కె విలువ యొక్క పుల్ అప్ రెసిస్టర్ ఉపయోగించబడుతుంది.
ప్రస్తుత తేదీ మరియు సమయాన్ని ప్రదర్శించడానికి పోర్ట్ D లోని పిన్లకు LCD డిస్ప్లే కూడా అనుసంధానించబడి ఉంది. పూర్తి సర్క్యూట్ రేఖాచిత్రం ప్రోటీస్పై రూపొందించబడింది మరియు క్రింద చూపబడింది. ఈ ట్యుటోరియల్లో తరువాత అనుకరించడానికి లేదా ప్రోగ్రామ్ చేయడానికి మేము అదే ఉపయోగించబోతున్నాము.
సర్క్యూట్ రేఖాచిత్రాన్ని అనుసరించండి మరియు తదనుగుణంగా కనెక్షన్లు చేయండి, పైన చూపిన I2C బాక్స్ I2C డీబగ్గింగ్ కోసం ఉపయోగించబడుతుంది కాబట్టి మేము దానిని మా కనెక్షన్లలో చేర్చము. RTC మాడ్యూల్ మాడ్యూల్లోని Vcc మరియు గ్రౌండ్ పిన్లను ఉపయోగించి + 5V సరఫరాతో శక్తినివ్వాలని చూపబడలేదు. కనెక్షన్ చేయడానికి నేను నా బ్రెడ్బోర్డ్ను ఉపయోగించాను మరియు అవసరమైన కనెక్షన్లు చేసిన తర్వాత నా సెటప్ ఈ విధంగా కనిపిస్తుంది.
మీరు పిఐసి మైక్రోకంట్రోలర్కు కొత్తగా ఉంటే పిఐసి మైక్రోకంట్రోలర్తో ప్రారంభించండి.
RTC మాడ్యూల్ కోసం ప్రోగ్రామింగ్ PIC:
పూర్తి కార్యక్రమం ఈ డిజిటల్ గడియారం ఇక్కడ జిప్ ఫైల్ నుండి డౌన్లోడ్ చేసుకోవచ్చు. ప్రోగ్రామ్లో మొత్తం మూడు హెడర్ ఫైళ్లు ఉన్నాయి. అవి lcd.h LCD ప్రదర్శన, పని ఫైలు PIC16F877a_I2C.h PIC తో I2C కమ్యూనికేషన్ తో పని మరియు చివరకు ఫైలు PIC16F877a_DS3231.h RTC మాడ్యూళ్ళతో పనిచేయడానికి ఫైల్. ఈ ప్రోగ్రామ్ కోసం మూడు హెడర్ ఫైల్స్ అవసరం మరియు పై జిప్ ఫైల్ లో అందుబాటులో ఉన్నాయి. RTC మాడ్యూల్ నుండి సమయం మరియు తేదీని చదవడానికి మరియు LCD తెరపై ప్రదర్శించడానికి ఈ హెడర్ ఫైల్ను ఉపయోగించే ప్రధాన ప్రోగ్రామ్ను మరింత క్రింద వివరిస్తాను. ఆ తరువాత నేను నిజంగా RTC హెడర్ ఫైల్ లోపల ఏమి జరుగుతుందో వివరిస్తాను. కాన్ఫిగరేషన్ బిట్లను సెటప్ చేయడం ద్వారా మరియు క్లాక్ ఫ్రీక్వెన్సీని 20MHz గా సెట్ చేయడం ద్వారా ప్రోగ్రామ్ను ఎల్లప్పుడూ ప్రారంభించండి, ఎందుకంటే ఇది మన హార్డ్వేర్లో ఉపయోగించాము.
#pragma config FOSC = HS // ఓసిలేటర్ ఎంపిక బిట్స్ (HS ఓసిలేటర్) #pragma config WDTE = OFF // వాచ్డాగ్ టైమర్ బిట్ను ప్రారంభించండి (WDT నిలిపివేయబడింది) #pragma config PWRTE = ON // పవర్-అప్ టైమర్ ఎనేబుల్ బిట్ (PWRT ప్రారంభించబడింది) # pragma config బోరెన్ = ON // బ్రౌన్ అవుట్ రీసెట్ బిట్ ప్రారంభించు (బోర్ ఎనేబుల్) #pragma config LVP OFF = // తక్కువ వోల్టేజ్ (సింగిల్-సప్లై) లో-సర్క్యూట్ సీరియల్ ప్రోగ్రామింగ్ బిట్ ప్రారంభించు (RB3 డిజిటల్ I / O, HV ఉంది MCLR ప్రోగ్రామింగ్ కోసం ఉపయోగిస్తారు తప్పక) #pragma config CPD OFF = // డేటా EEPROM మెమరీ కోడ్ రక్షణ బిట్ (డేటా EEPROM కోడ్ రక్షణ ఆఫ్) #pragma config wrt OFF = // ఫ్లాష్ ప్రోగ్రామ్ మెమరీ వ్రాయండి బిట్స్ (వ్రాయండి రక్షణ ఆఫ్ ప్రారంభించండి; అన్ని కార్యక్రమం మెమరీ EECON నియంత్రణ ద్వారా వ్రాయవచ్చు) # ప్రాగ్మా కాన్ఫిగర్ CP = OFF // ఫ్లాష్ ప్రోగ్రామ్ మెమరీ కోడ్ ప్రొటెక్షన్ బిట్ (కోడ్ ప్రొటెక్షన్ ఆఫ్) # _XTAL_FREQ 20000000 ని నిర్వచించండి
తరువాతి దశ LCD పిన్లను నిర్వచించడం, మీరు హార్డ్వేర్ను పరిశీలిస్తే, మేము LCD యొక్క పిన్లను PORT D కి RD2 నుండి RD7 కి కనెక్ట్ చేశామని మీరు గమనించవచ్చు, కాబట్టి మేము క్రింద చూపిన విధంగానే నిర్వచించాము.
# RS RD2 ని నిర్వచించండి # EN RD3 ని నిర్వచించండి # D4 RD4 ని నిర్వచించండి # D5 RD5 ని నిర్వచించండి # D6 RD6 ని నిర్వచించండి # D7 RD7 ని నిర్వచించండి
అప్రమేయంగా మీరు RTC మాడ్యూల్ను కొనుగోలు చేసినప్పుడు సరైన సమయం మరియు తేదీ దానిలో సెట్ చేయబడదు, కాబట్టి మేము దానిని మా ప్రోగ్రామ్ ద్వారా సెట్ చేయాలి. కాబట్టి మేము ప్రతి డేటాకు వేరియబుల్ డిక్లేర్ చేస్తాము మరియు క్రింద చూపిన విధంగా వాస్తవ ప్రపంచ సమయం మరియు తేదీలో ఫీడ్ చేస్తాము. ప్రోగ్రామ్ను అప్లోడ్ చేసే సమయంలో నా సమయం మరియు తేదీ 6-5-2018న ఉదయం 10:55. కాబట్టి నేను ఈ క్రింది విధంగా వేరియబుల్స్ సెట్ చేసాను. మీ అసలు అప్లికేషన్ ప్రకారం మీరు సరైన సమయం మరియు తేదీని సెట్ చేయవచ్చు
/ * తేదీ మరియు సమయం యొక్క ప్రస్తుత విలువను క్రింద సెట్ చేయండి * / int sec = 00; int min = 55; పూర్ణాంక గంట = 10; పూర్ణాంక తేదీ = 06; పూర్ణాంకం = 05; పూర్ణాంక సంవత్సరం = 18; / * సమయం మరియు తేదీ సెట్ * /
తరువాత మనం చర్చించిన అన్ని హెడర్ ఫైళ్ళను చేర్చుతాము. మీరు జిప్ ఫైల్ నుండి ప్రోగ్రామ్ను డౌన్లోడ్ చేసి తెరిచినట్లయితే అది సమస్య కాదు, అన్ని హెడర్ ఫైళ్లు మీ సోర్స్ ఫైల్కు లేదా మీ ప్రాజెక్ట్ డైరెక్టరీకి జోడించబడిందని నిర్ధారించుకోండి.
# చేర్చండి
LCD ని ఇంటర్ఫేస్ చేయడానికి మేము PORT D ని అవుట్పుట్ పిన్లుగా ఉపయోగించినందున, వాటిని మా ప్రోగ్రామ్లో అవుట్పుట్ పిన్లుగా ప్రకటించాలి మరియు క్రింద చూపిన విధంగా LCD డిస్ప్లేని ప్రారంభించాలి
TRISD = 0x00; // ఎల్సిడి ఇంటర్ఫేసింగ్ ఎల్సిడి_స్టార్ట్ () కోసం పోర్ట్ డి పిన్లను అవుట్పుట్గా చేయండి ; // ఎల్సిడి మాడ్యూల్ను ప్రారంభించండి
RTC మాడ్యూల్ I2C ప్రోటోకాల్ సహాయంతో కమ్యూనికేట్ చేస్తుంది కాబట్టి మేము I2C కమ్యూనికేషన్ను మా PIC మైక్రోకంట్రోలర్ను ప్రారంభించాలి. మా DS3231 మాడ్యూళ్ళతో సహా చాలా పరికరాలు 100KHz యొక్క I2C ఆపరేటింగ్ ఫ్రీక్వెన్సీని కలిగి ఉన్నాయి, కాబట్టి మేము క్రింద చూపిన విధంగా 100KHz పౌన frequency పున్యంతో I2C కమ్యూనికేషన్ను ప్రారంభిస్తాము
I2C_ ప్రారంభించు (100); // 100KHz గడియారంతో I2C మాస్టర్ను ప్రారంభించండి
మేము RTC మాడ్యూల్తో I2C కమ్యూనికేషన్ను స్థాపించిన వెంటనే , మన ప్రోగ్రామ్లో మేము ప్రవేశించిన ప్రస్తుత సమయం మరియు తేదీని సెట్ చేయడం. క్రింద చూపిన విధంగా set_Time_Date ఫంక్షన్కు కాల్ చేయడం ద్వారా ఇది చేయవచ్చు. సమయం మరియు తేదీని సెట్ చేసిన తర్వాత మాడ్యూల్ స్వయంచాలకంగా దాన్ని ట్రాక్ చేస్తుంది మరియు వాటిని డిజిటల్ గడియారం వలె పెంచుతుంది.
సెట్_టైమ్_ తేదీ (); // RTC మాడ్యూల్లో సమయం మరియు తేదీని సెట్ చేయండి
ప్రోగ్రామ్ ప్రారంభమైందని సూచించడానికి మేము ఒక చిన్న పరిచయ సందేశాన్ని ప్రదర్శిస్తాము, దాని కోసం 2 సెకన్ల పాటు తెరపై ఉంటుంది. ఈ సందేశం తెరపై PIC -Circuit Digest తో RTC ని ప్రదర్శిస్తుంది. దాని కోసం ప్రోగ్రామ్ క్రింద చూపబడింది
Lcd_Clear (); ఎల్సిడి_సెట్_ కర్సర్ (1,1); Lcd_Print_String ("PIC తో RTC"); ఎల్సిడి_సెట్_ కర్సర్ (2,1); Lcd_Print_String ("-సర్క్యూట్ డైజెస్ట్"); __ ఆలస్యం_ఎంఎస్ (1500);
మా అనంతం ఇన్సైడ్ అయితే లూప్ మేము చేయాలి ప్రస్తుత సమయం మరియు తేదీ చదివి అప్పుడు మా LCD స్క్రీన్ విలువలు ప్రదర్శించడానికి. RTC మాడ్యూల్ నుండి సమయం మరియు తేదీని చదవడానికి Update_Current_Time_Date ఫంక్షన్ క్రింద చూపిన విధంగా ఉపయోగించవచ్చు. ఈ ఫంక్షన్ విలువ RTC మాడ్యూల్ను చదువుతుంది మరియు ప్రస్తుత విలువలతో సెకను, నిమిషం, గంట, తేదీ, నెల మరియు సంవత్సరం వేరియబుల్లను నవీకరిస్తుంది. అప్పుడు మనం వాటిని మన ప్రయోజనం కోసం ఉపయోగించవచ్చు.
నవీకరణ_ ప్రస్తుత_డేట్_టైమ్ (); // ఆర్టీసీ మాడ్యూల్ నుండి ప్రస్తుత తేదీ మరియు సమయాన్ని చదవండి
వేరియబుల్స్ పూర్ణాంక డేటా రకానికి చెందినవి, మేము వాటిని వ్యక్తిగత అక్షరాలకు మార్చాలి, తద్వారా వాటిని LCD స్క్రీన్లో ప్రదర్శించవచ్చు. కాబట్టి మేము మాడ్యులస్ ఆపరేటర్ను ఒకసారి అంకెను పొందడానికి మరియు వేరియబుల్ను 10 ద్వారా విభజించి పదుల అంకెలను పొందుతాము. అన్ని వేరియబుల్స్ కోసం అదే జరుగుతుంది.
// ఎల్సిడి చార్లో ప్రదర్శించడానికి చార్లోకి విభజించండి sec_0 = sec% 10; చార్ sec_1 = (సెక / 10); చార్ min_0 = నిమి% 10; చార్ min_1 = నిమి / 10; చార్ గంట_0 = గంట% 10; చార్ గంట_1 = గంట / 10; చార్ తేదీ_0 = తేదీ% 10; చార్ తేదీ_1 = తేదీ / 10; చార్ నెల_0 = నెల% 10; చార్ నెల_1 = నెల / 10; చార్ సంవత్సరం_0 = సంవత్సరం% 10; చార్ సంవత్సరం_1 = సంవత్సరం / 10;
ఎల్సిడి స్క్రీన్లో మేము సంపాదించిన సమాచారాన్ని ప్రదర్శించడమే మిగిలి ఉంది. మన ఎల్సిడి ట్యుటోరియల్లో ఇంతకుముందు చర్చించిన ఎల్సిడి ఫంక్షన్లతో దీన్ని సులభంగా చేయవచ్చు. కాబట్టి సమయాన్ని ప్రదర్శించే కోడ్ క్రింద ఇవ్వబడింది, తేదీని ప్రదర్శించడానికి అదే పద్ధతి ఉపయోగించబడుతుంది. డేటాను ప్రదర్శించిన తర్వాత 500 ఎంఎస్ల ఆలస్యం ఇవ్వబడుతుంది, తద్వారా ఇది నవీకరణ విరామంగా పనిచేస్తుంది.
Lcd_Clear (); ఎల్సిడి_సెట్_ కర్సర్ (1,1); Lcd_Print_String ("TIME:"); Lcd_Print_Char (గంట_1 + '0'); Lcd_Print_Char (గంట_0 + '0'); Lcd_Print_Char (':'); Lcd_Print_Char (min_1 + '0'); Lcd_Print_Char (min_0 + '0'); Lcd_Print_Char (':'); Lcd_Print_Char (sec_1 + '0'); Lcd_Print_Char (sec_0 + '0');
PIC16F877a_DS3231.h హెడర్ ఫైల్ యొక్క సంక్షిప్త వివరణ:
మీ స్వంత ప్రాజెక్టుల కోసం పిఐసితో డిఎస్ 3231 మాడ్యూల్ను ఉపయోగించటానికి ఇప్పటివరకు వివరించిన విషయాలు సరిపోతాయి, కాని అక్కడ ఉన్న ఆసక్తిగల మనస్సులకు హెడర్ ఫైల్ లోపల అసలు ఏమి జరుగుతుందో తెలుసుకోవాలనుకుంటున్నారు మరియు డేటా వాస్తవానికి పిటిసి ద్వారా ఆర్టిసి మాడ్యూల్ నుండి స్వీకరించబడింది, కేవలం మరింత చదవండి.
DS3231 యొక్క డేటాషీట్ను పూర్తిగా చదవడం ద్వారా దీని ద్వారా వెళ్ళడానికి ఉత్తమ మార్గం. అవసరమైన దాని గురించి క్లుప్తంగా చెప్పడానికి, మాడ్యూల్ PIC కి బానిసగా పనిచేస్తుంది మరియు అన్ని DS3231 మాడ్యూల్ యొక్క చిరునామా D0. కాబట్టి మాడ్యూల్కు డేటాను వ్రాసి మనం D0 చిరునామాను పాస్ చేయాలి మరియు RTC నుండి డేటాను చదవడానికి మేము D1 చిరునామాను పాస్ చేయాలి. మేము వ్రాతపూర్వక చిరునామాను ఆర్టిసి మాడ్యూల్ పాస్ చేస్తే, పిఐసి నుండి డేటాను పొందటానికి మేము సిద్ధమవుతాము, అందువల్ల పిఐసి రాసిన పర్యవసాన డేటా ఆర్టిసి మాడ్యూల్లో స్వీకరించబడుతుంది మరియు సేవ్ చేయబడుతుంది. అదేవిధంగా మేము చదవడానికి చిరునామాను పంపితేRTC మాడ్యూల్ దానిలోని మొత్తం డేటాను పంపడం ప్రారంభిస్తుంది కాబట్టి PIC RTC నుండి విలువలను చదవడానికి సిద్ధంగా ఉండాలి. డేటాషీట్ నుండి D0 మరియు D1 రెండింటికి బిట్ క్రమం క్రింద చూపబడింది. చిరునామా 0b11010000 అంటే D0 (వ్రాయండి) మరియు 0b11010001 అంటే D01 (చదవండి)
PIC వ్రాయడానికి లేదా చదవడానికి D0 లేదా D1 చిరునామాను పంపినప్పుడు, కింది డేటా ఒక క్రమంలో చదవాలి లేదా వ్రాయబడాలి. ఈ ఆర్డర్ క్రింది పట్టికలో చూపబడింది. కాబట్టి మొదటి డేటా సెకను (00 గం) తరువాత నిమిషాలు (01 గం) తరువాత గంటలు (02 గం) తరువాత రోజు (03 గం) మరియు ఉష్ణోగ్రత ఎంఎస్బి వరకు ఉంటుంది.
RTC మాడ్యూల్ దశాంశ విలువలను అర్థం చేసుకోదు, ఇది BCD విలువల ద్వారా మాత్రమే కమ్యూనికేట్ చేస్తుంది. కాబట్టి ఆర్టీసీ మాడ్యూల్కు ఏదైనా విలువలను వ్రాసే ముందు దానిని బిసిడికి మార్చాలి మరియు ఆర్టిసి మాడ్యూల్ నుండి అందుకున్న విలువలు బిసిడి ఆకృతిలో ఉంటాయి మరియు అది మనకు అర్ధమయ్యేలా దశాంశానికి మార్చాలి. దీన్ని దృష్టిలో ఉంచుకుని RTC మాడ్యూల్ ఉపయోగించడానికి అవసరమైన అన్ని ఫంక్షన్లను సృష్టించండి.
BCD_2_DEC మరియు DEC_2_BCD విధులు:
మొదటి రెండు ఫంక్షన్లు బిసిడి డేటాను దశాంశానికి మరియు దశాంశ డేటాను బిసిడికి మార్చడానికి ఉపయోగించబడతాయి, ఎందుకంటే ఆర్టిసి మాడ్యూల్ బిసిడిని మాత్రమే అర్థం చేసుకుంటుంది. బిసిడిని దశాంశంగా మరియు బిసిడిని దశాంశంగా మార్చడానికి సూత్రాలు
దశాంశ = (BCD >> 4) * 10 + (BCD & 0x0F) BCD = ((దశాంశ / 10) << 4) + (దశాంశ% 10)
వ్యతిరేక యూనిట్లో పారామితిగా తీసుకొని దానిని అవసరమైన ఫార్మాట్గా మార్చి దాన్ని తిరిగి ఇచ్చే ఫంక్షన్ను సృష్టించడానికి మనం ఈ రెండు సూత్రాలను ఉపయోగించాలి, అదే చేసే ఫంక్షన్ క్రింద చూపబడింది
int BCD_2_DEC (int to_convert) { తిరిగి (to_convert >> 4) * 10 + (to_convert & 0x0F); } int DEC_2_BCD (int to_convert) { తిరిగి ((to_convert / 10) << 4) + (to_convert% 10); }
సెట్_టైమ్_ తేదీ () ఫంక్షన్:
ఈ ఫంక్షన్ సమయం మరియు తేదీ యొక్క విలువను PIC నుండి RTC మాడ్యూల్ వరకు వ్రాస్తుంది. నిజ సమయం మరియు తేదీ విలువలు వినియోగదారుడు సెకను, నిమిషం, గంట, తేదీ, నెల మరియు సంవత్సరం వేరియబుల్స్లో నవీకరించాలి. ఈ విలువలు BCD గా మార్చబడతాయి మరియు RTC మాడ్యూల్కు వ్రాయబడతాయి.
మేము చర్చించినట్లుగా, RTC మాడ్యూల్కు ఒక విలువను వ్రాయడానికి మనం D0 చిరునామాను పాస్ చేయాలి మరియు వ్రాసే విధానాన్ని ప్రారంభించడానికి బుల్ బిట్ 0 వ్రాయాలి. పై పట్టికలో చూపిన విధంగా మనం డేటాను క్రమంలో పంపవచ్చు.
శూన్య సెట్_టైమ్_ తేదీ () { I2C_Begin (); I2C_Write (0xD0); I2C_ రైట్ (0); I2C_ రైట్ (DEC_2_BCD (సెకను)); // నవీకరణ సెకను I2C_Write (DEC_2_BCD (నిమి)); // నవీకరణ నిమిషం I2C_Write (DEC_2_BCD (గంట)); // నవీకరణ గంట I2C_Write (1); // రోజు I2C_Write (DEC_2_BCD (తేదీ)) ను నవీకరించడాన్ని విస్మరించండి ; // నవీకరణ తేదీ I2C_Write (DEC_2_BCD (నెల)); // నవీకరణ నెల I2C_ రైట్ (DEC_2_BCD (సంవత్సరం)); // నవీకరణ సంవత్సరం I2C_End (); }
నవీకరణ_ ప్రస్తుత_డేట్_టైమ్ () ఫంక్షన్:
లైబ్రరీలో చివరి ఫంక్షన్ ఆర్టీసీ మాడ్యూల్ నుండి సమయం మరియు తేదీని చదివి పిఐసి మైక్రోకంట్రోలర్కు పంపించడానికి ఉపయోగించేది. ఈ ఫంక్షన్ మూడు విభాగాలుగా విభజించబడింది, ఒకటి పఠనం ప్రక్రియను రెండవది విలువలను చదవడం మరియు సెకను, నిమిషం, గంట, తేదీ, నెల మరియు సంవత్సరం వంటి గ్లోబల్ వేరియబుల్స్లో సేవ్ చేయడం. మరియు మూడవది పఠనం విజయవంతమైందని అంగీకరించడం.
ప్రతి చర్యకు I2C కమ్యూనికేషన్ ప్రారంభించబడాలి మరియు ముగించాలి.
RTC నుండి విలువలను చదవడానికి మేము D0 చిరునామాను 0 తరువాత పంపాలి. ఇది RTC మాడ్యూల్ పై పట్టికలో చూపిన క్రమంలో ఉన్న అన్ని విలువలను పంపేలా చేస్తుంది. మనం వాటిని దశాంశానికి మార్చగలము మరియు అదే క్రమంలో వేరియబుల్స్కు సేవ్ చేయవచ్చు.
చివరగా, పఠనం పూర్తయిన తర్వాత ఆర్టీసీ మాడ్యూల్ ఒక రసీదు బిట్ను పంపుతుంది, అది కూడా చదవాలి మరియు అంగీకరించాలి.
I2C_Begin () చదవడానికి Update_Current_Date_Time () { // START ; I2C_Write (0xD0); I2C_ రైట్ (0); I2C_End (); // చదవండి I2C_Begin (); I2C_Write (0xD1); // డేటాను చదవడం ప్రారంభించండి sec = BCD_2_DEC (I2C_Read (1)); min = BCD_2_DEC (I2C_Read (1%); గంట = BCD_2_DEC (I2C_Read (1%); I2C_ రీడ్ (1); తేదీ = BCD_2_DEC (I2C_Read (1%); నెల = BCD_2_DEC (I2C_Read (1%); సంవత్సరం = BCD_2_DEC (I2C_Read (1%); I2C_End (); // END పఠనం I2C_Begin (); I2C_Write (0xD1); // డేటాను చదవడం ప్రారంభించండి I2C_Read (1); I2C_End (); }
అనుకరణ:
ప్రోటీస్ అనుకరణ సాఫ్ట్వేర్ను ఉపయోగించి ఈ ప్రాజెక్టును అనుకరించవచ్చు. సర్క్యూట్ రేఖాచిత్రంలో చూపిన విధంగా కనెక్షన్లను తయారు చేసి, హెక్స్ ఫైల్ను PIC కంట్రోలర్కు లోడ్ చేయండి. మీరు దానిని అనుకరించినప్పుడు మీరు రెండు పాప్-అప్ బాక్సులను మరియు క్రింద చూపిన విధంగా LCD లో ప్రదర్శించబడిన తేదీ మరియు సమయాన్ని కనుగొంటారు.
పైన ఉన్న చిన్నది RTC మాడ్యూల్ లోపల ప్రస్తుత సమయం మరియు తేదీని చూపిస్తుంది మరియు రెండవ పాప్-అప్ I2C డీబగ్గర్. I2C బగ్లోకి మరియు బయటికి వాస్తవానికి ఏ డేటా పంపబడుతుందో తనిఖీ చేయడానికి ఇది ఒక అద్భుతమైన సాధనం.
LCD లో సమయం మరియు తేదీని ప్రదర్శించండి:
మీ హార్డ్వేర్ సిద్ధమైన తర్వాత మరియు ఇచ్చిన లింక్ ద్వారా కోడ్ జిప్ ఫైల్గా డౌన్లోడ్ చేయబడితే MPLABX IDE ని ఉపయోగించి ప్రోగ్రామ్ను తెరవండి. మీరు మొదట IDE ని ప్రారంభించాలి మరియు ఓపెన్ ప్రాజెక్ట్ ఎంపికను ఉపయోగించాలి మరియు జిప్ ఫైల్ లోపల ఉన్న విషయాలను బ్రౌజ్ చేసి.X ఫోల్డర్ను తెరవండి.
ప్రోగ్రామ్ కంపైల్ చేస్తుందో లేదో తనిఖీ చేసి, పిక్కిట్ 3 ని ఉపయోగించి కోడ్ను మీ హార్డ్వేర్లోకి అప్లోడ్ చేయండి. ప్రోగ్రామ్ అప్లోడ్ అయిన వెంటనే మీరు పరిచయ సందేశాన్ని చూడాలి, ఆపై క్రింద చూపిన విధంగా సమయం మరియు తేదీని ప్రదర్శించాలి.
LCD లో ఏమీ లేకపోతే మీ కనెక్షన్లను తనిఖీ చేయండి మరియు పొటెన్షియోమీటర్ను మార్చడం ద్వారా కాంట్రాస్ట్ స్థాయి సరిగ్గా సెట్ చేయబడిందని నిర్ధారించుకోండి. మీ అన్ని PIC మైక్రోకంట్రోలర్ ప్రాజెక్టులకు మీరు సమయం మరియు తేదీని ఎలా చూపించగలరు మరియు దీన్ని డిజిటల్ క్లాక్గా ఉపయోగించవచ్చు. మీరు క్రొత్తదాన్ని నేర్చుకున్నారని మరియు ఈ ట్యుటోరియల్ నేర్చుకోవడం ఆనందించారని ఆశిస్తున్నాము. మీరు ఏదైనా సమస్యను ఎదుర్కొన్నట్లయితే వాటిని సాంకేతిక వ్యాఖ్య కోసం క్రింది వ్యాఖ్యలలో లేదా ఫోరమ్లలో పోస్ట్ చేయండి.
ఇక్కడ నుండి హెడర్ ఫైళ్ళతో ఈ ప్రాజెక్ట్ కోసం పూర్తి PIC ప్రోగ్రామ్ను డౌన్లోడ్ చేయండి మరియు ఇక్కడ మా అన్ని PIC ట్యుటోరియల్లను తనిఖీ చేయండి.