- అవసరమైన పదార్థాలు:
- ముందస్తు అవసరాలు:
- సర్క్యూట్ రేఖాచిత్రం:
- అలారం గడియారం కోసం ప్రోగ్రామింగ్:
- అనుకరణ:
- PIC16F877A ఉపయోగించి డిజిటల్ అలారం గడియారం యొక్క పని:
1950 లో ప్రారంభమైన డిజిటల్ విప్లవం ప్రస్తుతం ఉన్న అన్ని యాంత్రిక మరియు అనలాగ్ ఎలక్ట్రానిక్ నిర్మాణాలను డిజిటల్ కంప్యూటర్లుగా మారుస్తుంది. డిజిటల్ ఎలక్ట్రానిక్స్ యొక్క పెరుగుదల ఘాతాంకం అయినందున, ఈ రోజు ఒక వ్యక్తి ఏదైనా ఎలక్ట్రానిక్ పరికరాలను ఉపయోగించడాన్ని నిరోధించడం దాదాపు అసాధ్యం. మిమ్మల్ని మేల్కొనే అలారం గడియారం మరియు మీకు అల్పాహారం అందించే టోస్టర్ నుండి మొదలుకొని, ప్రతిదీ డిజిటల్ ఎలక్ట్రానిక్స్ నుండి అందించబడిన సహకారం. వీటన్నిటి గురించి ఆలోచిస్తే, పిఐసి మైక్రోకంట్రోలర్తో ఈ ప్రాజెక్టులో మనం నిర్మించబోయే అలారం క్లాక్ వంటి సరళమైన ఇంకా ఉపయోగకరమైన పనులను చేయగల మా స్వంత విషయాలను ప్రోగ్రామ్ చేయడం నిజంగా ఉత్తేజకరమైనది. మేము ఇంతకుముందు ఇతర మైక్రోకంట్రోలర్లతో అలారం గడియారాన్ని నిర్మించాము:
- RTC మాడ్యూల్ DS1307 ఉపయోగించి రాస్ప్బెర్రీ పై అలారం గడియారం
- అలారంతో ఆర్డునో బేస్డ్ డిజిటల్ క్లాక్
- ATmega32 మైక్రోకంట్రోలర్ ఉపయోగించి అలారం గడియారం
ఈ అలారం గడియారంలో 16x2 ఎల్సిడి డిస్ప్లే ఉంటుంది, ఇది ప్రస్తుత సమయాన్ని మరియు సమయాన్ని సెట్ చేస్తుంది. అవసరమైనప్పుడు అలారం సమయాన్ని సెట్ చేయడానికి మేము కొన్ని పుష్ బటన్లను ఉపయోగిస్తాము. ప్రస్తుత సమయం DS3231 RTC మాడ్యూల్ ఉపయోగించి ట్రాక్లో ఉంచబడుతుంది మరియు RTC మాడ్యూల్ నుండి ఈ విలువలను పొందడానికి మేము IIC కమ్యూనికేషన్ను ఉపయోగిస్తాము. మేము ఇప్పటికే RTC మాడ్యూల్ గురించి మరియు దానిని PIC తో ఎలా ఇంటర్ఫేస్ చేయాలో నేర్చుకున్నాము. కాబట్టి ఆ ట్యుటోరియల్ ద్వారా చదవమని సిఫార్సు చేయబడింది, మేము ఆ ట్యుటోరియల్లోని చాలా సమాచారాన్ని దాటవేస్తాము.
అవసరమైన పదార్థాలు:
- బ్రెడ్ బోర్డు - 2 సంఖ్యలు
- PIC16F877A
- 5 వి విద్యుత్ వనరు - సరఫరా మాడ్యూల్
- 20 MHz క్రిస్టల్
- 33 పిఎఫ్ కెపాసిటర్ - 2 సంఖ్యలు
- DS3231 RTC మాడ్యూల్
- 16 * 2 ఎల్సిడి డిస్ప్లే మాడ్యూల్
- 10 కె పాట్
- 10 కె మరియు 1 కె రెసిస్టర్
- పుష్ బటన్లు - 5 సంఖ్యలు
- బజర్
- వైర్లను కనెక్ట్ చేస్తోంది
ముందస్తు అవసరాలు:
ఈ ప్రాజెక్ట్ మీకు PIC మైక్రోకంట్రోలర్ గురించి కొన్ని ప్రాథమికాలను తెలుసుకోవాలి మరియు దానిని ఎలా ప్రోగ్రామ్ చేయాలి. మేము ఈ ప్రాజెక్ట్ కోసం GPIO లు, LCD డిస్ప్లే మరియు RTC మాడ్యూల్ని ఉపయోగిస్తాము. కాబట్టి ఈ మాడ్యూళ్ళను ఎలా ఉపయోగించాలో ముందే తెలుసుకోవడం మంచిది. కింది లింకులు అదే తెలుసుకోవడానికి మీకు సహాయపడతాయి
- మీ మొదటి ప్రోగ్రామ్ను పిఐసి మైక్రోకంట్రోలర్తో రాయడం
- పిఐసితో ఎల్సిడిని ఇంటర్ఫేసింగ్
- PIC ఉపయోగించి I2C కమ్యూనికేషన్
- పిఐసితో డిఎస్ 3231 ఆర్టీసీ ఇంటర్ఫేసింగ్
సర్క్యూట్ రేఖాచిత్రం:
ఈ పిఐసి ఆధారిత అలారం క్లాక్ ప్రాజెక్ట్ కోసం సర్క్యూట్ రేఖాచిత్రం క్రింద చూపబడింది, ఇది ప్రోటీస్ సాఫ్ట్వేర్ను ఉపయోగించి సృష్టించబడింది. ఈ ప్రాజెక్ట్లో మరింత అనుకరణ కోసం కూడా ఉపయోగించబడుతుంది.
ఐదు పుష్ బటన్లు అవసరమైన సమయానికి అలారం సెట్ చేయడానికి ఇన్పుట్గా పనిచేస్తాయి. కాబట్టి అన్ని పుష్ బటన్లలో ఒక చివర భూమికి అనుసంధానించబడి ఉంటుంది మరియు మరొక చివరలను PORTB పిన్తో అనుసంధానించబడి ఉంటుంది, పిన్లు తేలుతూ ఉండటానికి ఈ పిన్లపై అంతర్గత పుల్-అప్ రెసిస్టర్ ఉపయోగించబడుతుంది. బజర్ అవుట్పుట్గా పనిచేస్తుంది మరియు అలారం ప్రేరేపించబడినప్పుడు మరియు PORT S పిన్తో అనుసంధానించబడినప్పుడు మాకు బీప్ ఇస్తుంది. ప్రస్తుత సమయం ఎల్లప్పుడూ DS3231 RTC మాడ్యూల్ ద్వారా ట్రాక్లో ఉంచబడుతుంది, దీని నుండి PIC డేటాను I2C బస్సు ద్వారా స్వీకరిస్తుంది, కాబట్టి RTC మాడ్యూల్ యొక్క SCL మరియు SDA పిన్లు PIC కంట్రోలర్ యొక్క SCL మరియు SDA పిన్తో అనుసంధానించబడి ఉంటాయి. PIC యొక్క PORTD కి LCD డిస్ప్లే జతచేయబడింది, ఇది ప్రస్తుత సమయం మరియు సమయాన్ని సెట్ చేయడానికి ఉపయోగించబడుతుంది. PIC తో DS3231 RTC మాడ్యూల్ ఉపయోగించడం గురించి ఇక్కడ మరింత తెలుసుకోండి.
పూర్తి సర్క్యూట్ను బ్రెడ్బోర్డుపై నిర్మించవచ్చు. కనెక్ట్ చేయడానికి డజను వైర్లు ఉన్నాయి కాబట్టి సహనం కలిగి ఉండండి మరియు కనెక్షన్లు సరైనవని నిర్ధారించుకోండి. నేను కనెక్షన్లతో పూర్తి చేసిన తర్వాత నా హార్డ్వేర్ సెటప్ ఈ క్రింది విధంగా ఉంది
మాడ్యూల్ను శక్తివంతం చేయడానికి నేను బ్రెడ్బోర్డ్ మాడ్యూల్ మరియు 12 వి అడాప్టర్ను ఉపయోగించాను. ఇది + 5 వి సరఫరా వోల్టేజ్ యొక్క నా మూలం. సర్క్యూట్ శుభ్రంగా ఉంచడానికి నేను రెండు బ్రెడ్బోర్డులను ఉపయోగించాలి. మీరు మరింత దృ project మైన ప్రాజెక్ట్ చేయాలనుకుంటే మీరు మొత్తం సర్క్యూట్ను పెర్ఫ్ బోర్డుకు టంకము చేయవచ్చు.
అలారం గడియారం కోసం ప్రోగ్రామింగ్:
ఈ అలారం క్లాక్ ప్రాజెక్ట్ కోసం పూర్తి PIC కార్యక్రమం ఈ పేజీ దిగువన చూడవచ్చు. ఈ ప్రాజెక్టుకు పిఐసితో ఎల్సిడి, ఐ 2 సి, ఆర్టిసిలను ఉపయోగించడానికి మూడు లైబ్రరీలు అవసరం. హెడర్ ఫైళ్ళతో కూడిన పూర్తి కోడ్ను ఇక్కడ జిప్ ఫైల్ నుండి డౌన్లోడ్ చేసుకోవచ్చు మరియు సంగ్రహించిన తర్వాత MPLABX ఉపయోగించి తెరవవచ్చు. మరింత క్రింద నేను ప్రధాన సి ఫైల్ను చిన్న స్నిప్పెట్స్గా వివరిస్తున్నాను. హెడర్ ఫైల్స్ ఎలా పనిచేస్తాయో తెలుసుకోవాలంటే మీరు పైన పేర్కొన్న ట్యుటోరియల్స్ కు తిరిగి వస్తారు.
ప్రధాన ప్రోగ్రామ్లోకి రాకముందు, మనం ఉపయోగించిన పిన్లను మరింత అర్ధవంతమైన పేరుతో నిర్వచించాలి. ఈ విధంగా ప్రోగ్రామింగ్ సమయంలో వాటిని ఉపయోగించడం సులభం అవుతుంది. మా ప్రోగ్రామ్లో నిర్వచించిన పిన్లు క్రింద చూపించబడ్డాయి
// LCD పిన్లను నిర్వచించండి # RS RD2 ని నిర్వచించండి // LCD యొక్క పిన్ను రీసెట్ చేయండి # EN RD3 ని నిర్వచించండి // LCD యొక్క పిన్ను ప్రారంభించండి # D4 RD4 ని నిర్వచించండి // LCD యొక్క డేటా బిట్ 0 # D5 RD5 ని నిర్వచించండి D6 RD6 // LCD యొక్క డేటా బిట్ 2 # D7 RD7 ని నిర్వచించండి // LCD యొక్క డేటా బిట్ 3 // బటన్లను నిర్వచించండి # MB RB1 ని నిర్వచించండి // మధ్య బటన్ # LB RB0 ని నిర్వచించండి // ఎడమ బటన్ # RB RB2 ని నిర్వచించండి // కుడి బటన్ # UB RB3 ని నిర్వచించండి // ఎగువ బటన్ # BB RB4 ని నిర్వచించండి // దిగువ బటన్ // Buzz ని నిర్వచించండి # BUZZ RD1 ని నిర్వచించండి // బజర్ RD1 కి కనెక్ట్ చేయబడింది
ఇన్పుట్ మరియు అవుట్పుట్ పిన్నులను ప్రకటించడం ద్వారా మేము ప్రారంభించే ప్రధాన ఫంక్షన్ లోపల. మా ప్రాజెక్ట్లో PORTB పుష్ బటన్ల కోసం ఉపయోగించబడుతుంది, ఇది ఇన్పుట్ పరికరం కాబట్టి మేము వారి పిన్లను ఇన్పుట్లుగా సెట్ చేస్తాము మరియు PORTD LCD మరియు బజర్ కోసం ఉపయోగించబడుతుంది కాబట్టి మేము వారి పిన్లను అవుట్పుట్గా సెట్ చేస్తాము. పిన్ ఎప్పుడూ తేలియాడే అర్థాన్ని వదిలివేయకూడదు, I / O పిన్స్ ఎల్లప్పుడూ గ్రౌండ్ లేదా + 5 వి వోల్టేజ్కు అనుసంధానించబడి ఉండాలి. పుష్ బటన్ల కోసం మా విషయంలో బటన్ నొక్కినప్పుడు పిన్స్ దేనికీ కనెక్ట్ చేయబడవు కాబట్టి మేము అంతర్గత పుల్-అప్ రెసిస్టర్ను ఉపయోగిస్తాము, ఇది ఉపయోగంలో లేనప్పుడు పిన్ను హైకి సెట్ చేస్తుంది. క్రింద చూపిన విధంగా కంట్రోల్ రిజిస్టర్లను ఉపయోగించి ఇది జరుగుతుంది
TRISD = 0x00; // LCD ఇంటర్ఫేసింగ్ TRISB = 0xFF కోసం పోర్ట్ D పిన్లను అవుట్పుట్గా చేయండి ; // Switchs ఇన్పుట్ సూదులు వంటి నిర్ధారించబడిన OPTION_REG = 0b00000000; // స్విచ్ల కోసం పోర్ట్ B లో పుల్ అప్ రెసిస్టర్ను ప్రారంభించండి BUZZ = 0; // బజర్ యొక్క మలుపు
మాకు ప్రధాన ప్రోగ్రామ్తో అనుసంధానించబడిన LCD మరియు I2C హెడర్ ఫైల్ ఉన్నందున, మేము ఒక సాధారణ ఫంక్షన్కు కాల్ చేయడం ద్వారా LCD ప్రారంభించడం ప్రారంభించవచ్చు. I2C ప్రారంభానికి కూడా ఇదే చేయవచ్చు. RTC మాడ్యూల్ 100kHz తో పనిచేస్తున్నందున ఇక్కడ మేము 100kHz వద్ద I2C కమ్యూనికేషన్ను ప్రారంభిస్తున్నాము.
ఎల్సిడి_స్టార్ట్ (); // LCD మాడ్యూల్ I2C_ ప్రారంభించండి (100); // 100KHz గడియారంతో I2C మాస్టర్ను ప్రారంభించండి
RTC మాడ్యూల్లో సమయం మరియు తేదీని సెట్ చేయడానికి క్రింది ఫంక్షన్ ఉపయోగించబడుతుంది, సమయం మరియు తేదీని సెట్ చేసిన తర్వాత ఈ పంక్తిని తొలగించండి. మీరు ప్రోగ్రామ్ను ప్రారంభించిన ప్రతిసారీ సమయం మరియు తేదీ మళ్లీ మళ్లీ సెట్ చేయబడతాయి
ఒకసారి సమయం మరియు తేదీ // రేఖకు దిగువన తొలగించు ఉంది మొదటిసారి సెట్. సెట్_టైమ్_ తేదీ (); // RTC మాడ్యూల్లో సమయం మరియు తేదీని సెట్ చేయండి
ప్రోగ్రామ్ ప్రారంభమవుతోందని సూచించడానికి మేము ఒక చిన్న పరిచయ స్క్రీన్ను ప్రదర్శిస్తాము, ఇది క్రింద చూపిన విధంగా ప్రాజెక్ట్ మరియు వెబ్సైట్ పేరును ప్రదర్శిస్తుంది
// LCD Lcd_Clear () పై పరిచయ సందేశం ఇవ్వండి ; ఎల్సిడి_సెట్_ కర్సర్ (1,1); Lcd_Print_String ("అలారం గడియారం"); ఎల్సిడి_సెట్_ కర్సర్ (2,1); Lcd_Print_String ("-సర్క్యూట్ డైజెస్ట్"); __ ఆలస్యం_ఎంఎస్ (1500);
ఆర్టిసి మాడ్యూల్ నుండి ప్రస్తుత సమయం మరియు తేదీని మనం చదవవలసిన సమయంలో లూప్ లోపల, ఈ క్రింది ఫంక్షన్కు కాల్ చేయడం ద్వారా ఇది చేయవచ్చు.
నవీకరణ_ ప్రస్తుత_డేట్_టైమ్ (); // ఆర్టీసీ మాడ్యూల్ నుండి ప్రస్తుత తేదీ మరియు సమయాన్ని చదవండి
పై ఫంక్షన్కు కాల్ చేస్తే ప్రస్తుత విలువతో సెకను, నిమిషం మరియు గంట వేరియబుల్స్ అప్డేట్ అవుతాయి. చేయడానికి LCD తెరపై వాటిని ప్రదర్శించడానికి మేము వ్యక్తిగత అక్షరాలు వాటిని విడిపోయినట్లు కలిగి క్రింద కోడ్ ఉపయోగించి.
// మీద స్ప్లిట్ ప్రదర్శనకు చార్ లోకి LCD చార్ sec_0 = క్షణ% 10; చార్ sec_1 = (సెక / 10); చార్ min_0 = నిమి% 10; చార్ min_1 = నిమి / 10; చార్ గంట_0 = గంట% 10; చార్ గంట_1 = గంట / 10;
తరువాత, మేము విలువలను LCD స్క్రీన్ ద్వారా నవీకరిస్తాము. ప్రస్తుత సమయం మొదటి వరుసలో ప్రదర్శించబడుతుంది మరియు అలారం ప్రేరేపించాల్సిన సెట్ సమయం రెండవ పంక్తిలో ప్రదర్శించబడుతుంది. అదే చేసే కోడ్ క్రింద చూపబడింది.
// ప్రస్తుత సమయాన్ని LCD స్క్రీన్లో ప్రదర్శించండి Lcd_Clear (); Lcd_Set_Cursor (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'); // తేదీని LCD స్క్రీన్లో ప్రదర్శించు Lcd_Set_Cursor (2, 1); Lcd_Print_String ("అలారం:"); Lcd_Print_Char (అలారం_వాల్ + '0'); Lcd_Print_Char (అలారం_వాల్ + '0'); Lcd_Print_Char (':'); Lcd_Print_Char (అలారం_వాల్ + '0 '); Lcd_Print_Char (అలారం_వాల్ + '0');
ఇప్పుడు, మేము సమయాన్ని ప్రదర్శించాము మరియు LCD లో సమయాన్ని సెట్ చేసాము , వినియోగదారు అలారం సమయాన్ని సెట్ చేయడానికి ప్రయత్నిస్తున్నారో లేదో తనిఖీ చేయాలి. దీన్ని చేయడానికి వినియోగదారు మిడిల్ బటన్ను నొక్కాలి, కాబట్టి మిడిల్ బటన్ నొక్కినట్లు మేము తనిఖీ చేస్తాము మరియు అలారం సెట్ మోడ్లోకి ప్రవేశించడానికి వేరియబుల్ను టోగుల్ చేయండి. విలువలు సెట్ చేయబడిందని ధృవీకరించడానికి అదే బటన్ మళ్లీ నొక్కబడుతుంది మరియు ఆ సందర్భంలో మనం అలారం సెట్ మోడ్ నుండి బయటకు రావాలి. కాబట్టి వేరియబుల్ సెట్_అలార్మ్ యొక్క స్థితిని మార్చడానికి మేము ఈ క్రింది కోడ్ను ఉపయోగిస్తాము.
// అలారం సెట్ చేయాలా అని తనిఖీ చేయడానికి మధ్య బటన్ను ఉపయోగించండి (MB == 0 && set_alarm == 0) {// మధ్య బటన్ నొక్కితే మరియు అలారం ఆన్ చేయకపోతే (! MB); // బటన్ విడుదలయ్యే వరకు వేచి ఉండండి set_alarm = 1; // అలారం విలువను సెట్ చేయడం ప్రారంభించండి } if (MB == 0 && set_alarm == 1) {// మధ్య బటన్ నొక్కితే మరియు అలారం ఆపివేయబడకపోతే (! MB); // బటన్ విడుదలయ్యే వరకు వేచి ఉండండి set_alarm = 0; // అలారం విలువను సెట్ చేయడాన్ని ఆపివేయండి }
వినియోగదారు మిడిల్ బటన్ను నొక్కినట్లయితే, అతను అలారం సమయాన్ని సెట్ చేయడానికి ప్రయత్నిస్తున్నాడని అర్థం. ఈ సందర్భంలో ప్రోగ్రామ్ పై కోడ్ ఉపయోగించి అలారం సెట్ మోడ్లోకి ప్రవేశిస్తుంది. అలారం సెట్ మోడ్ లోపల వినియోగదారు ఎడమ లేదా కుడి బటన్ను నొక్కితే దాని అర్థం మనం కర్సర్ను ఎడమ లేదా కుడి వైపుకు తరలించాలి. ఇది చేయుటకు కర్సర్ ఉంచవలసిన స్థానం విలువ తగ్గుదల పెరుగుతుంది
if (LB == 0) {// ఎడమ బటన్ నొక్కినప్పుడు (! LB); // బటన్ విడుదలయ్యే వరకు వేచి ఉండండి pos--; // అప్పుడు కర్సర్ను ఎడమ వైపుకు తరలించండి } if (RB == 0) {// కుడి బటన్ నొక్కితే (! RB); // బటన్ విడుదలయ్యే వరకు వేచి ఉండండి pos ++; // కర్సర్ను కుడి వైపుకు తరలించండి }
మైక్రోకంట్రోలర్ లేదా మైక్రోప్రాసెసర్తో పుష్ బటన్ను ఉపయోగిస్తున్నప్పుడు పరిష్కరించడానికి ఒక సాధారణ సమస్య ఉంది. ఈ సమస్యను స్విచ్ బౌన్స్ అంటారు. బటన్ నొక్కినప్పుడు అది MCU / MPU కి ధ్వనించే పప్పులను ఇవ్వవచ్చు, ఇది బహుళ ఎంట్రీల కోసం MCU ని నకిలీ చేస్తుంది. స్విచ్లో కెపాసిటర్ను జోడించడం ద్వారా లేదా బటన్ ప్రెస్ గుర్తించిన వెంటనే ఆలస్యం ఫంక్షన్ను ఉపయోగించడం ద్వారా ఈ సమస్యను పరిష్కరించవచ్చు. ఈ రకమైన పరిష్కారాన్ని డి-బౌన్స్ అంటారు. బటన్ విడుదలయ్యే వరకు ప్రోగ్రామ్ను ఉంచడానికి ఇక్కడ మేము కాసేపు లూప్ను ఉపయోగించాము. ఇది ఉత్తమమైన డి-బౌన్స్ పరిష్కారం కాదు కాని మాకు ఇది బాగా పనిచేస్తుంది.
అయితే (! RB);
ఎడమ మరియు కుడి బటన్ మాదిరిగానే, మనకు ఎగువ మరియు దిగువ బటన్లు కూడా ఉన్నాయి, ఇవి అలారం సమయం విలువను పెంచడానికి లేదా తగ్గించడానికి ఉపయోగపడతాయి. అదే చేయవలసిన కోడ్ క్రింద చూపబడింది. సెట్ అలారం సమయం యొక్క ప్రతి అక్షరం శ్రేణి యొక్క సూచిక విలువ ద్వారా పరిష్కరించబడుతుంది. విలువలను మార్చాల్సిన అవసరమైన అక్షరాన్ని మేము సులభంగా యాక్సెస్ చేయవచ్చు.
if (UB == 0) {// ఎగువ బటన్ నొక్కినప్పుడు (! UB); // బటన్ విడుదలయ్యే వరకు వేచి ఉండండి అలారం_వాల్ ++; // నిర్దిష్ట చార్ విలువను పెంచండి } if (BB == 0) {// (! UB) అయితే తక్కువ బటన్ నొక్కితే; // బటన్ విడుదలయ్యే వరకు వేచి ఉండండి అలారం_వాల్--; // నిర్దిష్ట చార్ విలువను తగ్గించండి }
అలారం సమయం సెట్ చేయబడిన తర్వాత వినియోగదారు మధ్య బటన్ను మళ్లీ నొక్కండి. అప్పుడు మేము ప్రస్తుత సమయాన్ని సెట్ సమయంతో పోల్చడం ప్రారంభించవచ్చు. ప్రస్తుత సమయం యొక్క ప్రతి అక్షరం సెట్ సమయం యొక్క అక్షరానికి సమానంగా ఉందో లేదో తనిఖీ చేయడం ద్వారా పోలిక. విలువలు సమానంగా ఉంటే, ట్రిగ్గర్_అలార్మ్ వేరియబుల్ను సెట్ చేయడం ద్వారా అలారంను ట్రిగ్గర్ చేస్తాము .
// IF అలారం సెట్ చేయబడితే సెట్ విలువ ప్రస్తుత విలువకు సమానంగా ఉందో లేదో తనిఖీ చేయండి (set_alarm == 0 && అలారం_వాల్ == గంట_1 && అలారం_వాల్ == గంట_0 && అలారం_వాల్ == min_1 && అలారం_వాల్ == min_0) ట్రిగ్గర్_అలార్మ్ = 1; // విలువ సరిపోలితే ట్రిగ్గర్ను ఆన్ చేయండి
అలారం సెట్ చేయబడితే, అలారం కోసం వినియోగదారుని అప్రమత్తం చేయడానికి మేము బజర్ను బీప్ చేయాలి. దిగువ చూపిన విధంగా సాధారణ విరామంలో బజర్ను టోగుల్ చేయడం ద్వారా ఇది చేయవచ్చు.
if (ట్రిగ్గర్_అలార్మ్) {// అలారం ప్రేరేపించబడితే // బజర్ బీప్ BUZZ = 1; __ ఆలస్యం_ఎంఎస్ (500); BUZZ = 0; __ ఆలస్యం_ఎంఎస్ (500); }
అనుకరణ:
ఈ ప్రోగ్రామ్ను ప్రోటీస్ సాఫ్ట్వేర్ను ఉపయోగించి కూడా అనుకరించవచ్చు. పైన చూపిన సర్క్యూట్ను తిరిగి సృష్టించండి మరియు హెక్స్ ఫైల్ను PIC లోకి లోడ్ చేయండి. ఈ ప్రాజెక్ట్ కోసం హెక్స్ కోడ్ ఇక్కడ లింక్ చేయబడిన జిప్ ఫైల్ వద్ద చూడవచ్చు. అనుకరణ సమయంలో తీసిన స్క్రీన్ షాట్ క్రింద చూపబడింది
మీరు ప్రాజెక్ట్కు క్రొత్త లక్షణాలను జోడించడానికి ప్రయత్నిస్తున్నప్పుడు అనుకరణ చాలా ఉపయోగకరంగా ఉంటుంది. మీరు I2C డీబగ్గర్ మాడ్యూల్ను ఉపయోగించి ఏ డేటా వెళుతుందో మరియు I2C బస్సు ద్వారా బయటకు వస్తోందో లేదో తనిఖీ చేయవచ్చు. మీరు బటన్లను నొక్కడానికి ప్రయత్నించవచ్చు మరియు అలారం సమయాన్ని కూడా సెట్ చేయవచ్చు. సెట్ సమయం ప్రస్తుత సమయానికి సమానంగా ఉన్నప్పుడు బజర్ అధికంగా ఉంటుంది.
PIC16F877A ఉపయోగించి డిజిటల్ అలారం గడియారం యొక్క పని:
బ్రెడ్బోర్డ్లో సర్క్యూట్ను రూపొందించండి, డౌన్లోడ్ లింక్ నుండి కోడ్ను పొందండి మరియు MplabX మరియు XC8 కంపైలర్ ఉపయోగించి కంపైల్ చేయండి. మీరు ఇక్కడ అందించిన జిప్ ఫైల్ నుండి కోడ్ను డౌన్లోడ్ చేసి ఉంటే, హెడర్ ఫైళ్లు ఇప్పటికే జతచేయబడినందున దాన్ని కంపైల్ చేయడంలో మీకు సమస్య లేదు.
కంపైల్ చేసిన తరువాత PicKit3 ప్రోగ్రామర్ ఉపయోగించి ప్రోగ్రామ్ను మీ హార్డ్వేర్కు అప్లోడ్ చేయండి. పికిట్ ప్రోగ్రామర్ను పిఐసి ఐసికి కనెక్ట్ చేసే కనెక్షన్ కూడా సర్క్యూట్ రేఖాచిత్రంలో చూపబడింది. ప్రోగ్రామ్ అప్లోడ్ అయిన తర్వాత మీరు పరిచయ స్క్రీన్ను చూడాలి, ఆపై ప్రదర్శించబడే సమయం మీరు అలారం సమయాన్ని సెట్ చేయడానికి పుష్ బటన్లను ఉపయోగించవచ్చు. శక్తితో ఉన్నప్పుడు నా హార్డ్వేర్ సెటప్ క్రింద కనిపిస్తుంది.
అలారం సమయం ప్రస్తుత సమయంతో సరిపోలినప్పుడు, బజర్ వినియోగదారుని అలారం చేయడానికి బీప్ చేయడం ప్రారంభిస్తుంది. పూర్తి పనిని ఈ క్రింది వీడియోలో చూడవచ్చు. ఈ ప్రాజెక్ట్ నిర్మించడానికి అనేక ఎంపికలు ఉన్నాయి. RTC మాడ్యూల్ ఎప్పుడైనా సమయం మరియు తేదీని ట్రాక్ చేయవచ్చు, కాబట్టి మీరు ఎప్పుడైనా / తేదీకి అవసరమైన పనిని షెడ్యూల్ చేయవచ్చు. మీరు అభిమాని లేదా కాంతి వంటి AC ఉపకరణాన్ని కూడా కనెక్ట్ చేయవచ్చు మరియు అవసరమైనప్పుడు దాన్ని ఆన్ లేదా ఆఫ్ చేయడానికి షెడ్యూల్ చేయవచ్చు. ఈ ప్రాజెక్ట్పై మీరు ఇంకా చాలా ఎక్కువ నిర్మించగలరు, ఈ ప్రాజెక్ట్కు అప్గ్రేడ్గా మీ మనసులో ఏ ఆలోచన వస్తుందో నాకు తెలియజేయండి మరియు మీ నుండి వినడానికి నేను సంతోషంగా ఉంటాను.
మీరు ప్రాజెక్ట్ను అర్థం చేసుకున్నారని మరియు ప్రక్రియ నుండి ఉపయోగకరమైనదాన్ని నేర్చుకున్నారని ఆశిస్తున్నాము. ఈ ప్రాజెక్ట్లో మీకు ఏమైనా సందేహాలు ఉంటే వాటిని పోస్ట్ చేయడానికి వ్యాఖ్య విభాగాన్ని ఉపయోగించండి లేదా ఏదైనా సాంకేతిక సహాయం కోసం ఫోరమ్లను ఉపయోగించండి.
హెడర్ ఫైళ్ళతో పూర్తి PIC కోడ్ ఇక్కడ చూడవచ్చు