- مطلوبہ مواد:
- آر ٹی سی ماڈیول:
- DS3231 RTC کو PIC مائکروکانٹرولر کے ساتھ مربوط کرنا:
- پروگرامنگ PIC برائے RTC ماڈیول:
- PIC16F877a_DS3231.h ہیڈر فائل کی مختصر وضاحت:
- نقلی:
- LCD پر ڈسپلے کا وقت اور تاریخ:
تقریبا تمام سرایت شدہ ڈیوائسز کو حقیقی دنیا کے ساتھ تعامل کے ل designed تیار کیا گیا ہے۔ وہ ڈیجیٹل دنیا اور حقیقی دنیا کے مابین رابطے کے لئے پل کی حیثیت سے کام کرتے ہیں۔ اس عمل کو آسان اور موثر بنانے کے لئے ، ڈیجیٹل دنیا کو بعض اوقات حقیقی دنیا کے وقت اور تاریخ سے باخبر رہنا پڑتا ہے۔ اس طرح ڈیجیٹل دنیا کو پتہ چل جائے گا کہ اصل دنیا میں یہ کیا وقت / دن ہے اور دن اور رات کے وقت میں بھی فرق کرسکتا ہے۔ یہ کسی مخصوص وقت یا تاریخ پر کچھ کام انجام دینے کے لئے ٹائم ماخذ کی حیثیت سے بھی کام کرسکتا ہے۔ لہذا ہم یہاں PIC مائکروکونٹرولر کے ساتھ RTC ماڈیول میں مداخلت کر رہے ہیں اور 16x2 LCD پر وقت اور تاریخ ظاہر کرتے ہیں۔ اس پروجیکٹ کو ڈیجیٹل کلاک کے بطور بھی استعمال کیا جاسکتا ہے ۔
مطلوبہ مواد:
- ریگولیٹ 5V سپلائی
- PIC16F877A
- کرسٹل آسیلیٹر 20 میگاہرٹز
- کاپاکیٹر 33pf - 2 نہیں
- 10K ، 5.1K ، 1K مزاحم
- DS3231 RTC ماڈیول
- POT -10k
- LCD ماڈیول 16 * 2
- مربوط تاروں
آر ٹی سی ماڈیول:
مائکروقانت کنٹرولر کے لئے حقیقی دنیاوں کے وقت یا تاریخ سے باخبر رہنے کا سب سے عام طریقہ ایک آر ٹی سی آئی سی کا استعمال کرنا ہے ۔ آر ٹی سی کی اصطلاح ریئل ٹائم گھڑی ہے۔ یہ آئی سی حقیقی دنیا کے وقت اور تاریخ کو باخبر رکھتا ہے اور جب بھی درخواست کی جاتی ہے اس معلومات کو مائکروکونٹرولر کے ساتھ شیئر کرتا ہے۔ ہم یہاں جو RTC IC استعمال کررہے ہیں وہ سب سے زیادہ مقبول اور درست DS3231 ہے ۔ یہ آئی سی ہر سال صرف چند سیکنڈ کے فاصلے پر جاتا ہے لہذا یہ انتہائی قابل اعتماد ہے۔ اس ٹیوٹوریل کی خاطر ہم DS3231 RTC ماڈیول استعمال کر رہے ہیں جسے آسانی سے آن لائن یا مقامی ہارڈ ویئر شاپ سے خریدا جاسکتا ہے۔ ماڈیول 3V سکے سیل کے ساتھ آتا ہے جو آر ٹی سی ماڈیول کو ہمیشہ طاقت دیتا ہے اور اس لئے ایک بار وقت اور تاریخ طے ہوجاتا ہے جب تک سکے سیل زندہ ہے اس کو اپ ڈیٹ کیا جائے گا۔
DS3231 ماڈیول I2C پروٹوکول کی مدد سے بات چیت کرتا ہے ، لہذا اگر آپ کو معلوم نہیں ہے کہ یہ کیا ہے اور اسے PIC کے ساتھ کس طرح استعمال کیا جاتا ہے تو آگے بڑھنے سے پہلے I2C کو PIC ٹیوٹوریل کے ساتھ پڑھیں۔ نیز اس ٹیوٹوریل میں ہم ایک ہیڈر فائل بنانے جا رہے ہیں جس کو ہمارے RTC ماڈیول کے ساتھ بات چیت کرنے اور LCD ڈسپلے میں وقت اور تاریخ ڈسپلے کرکے ہارڈ ویئر پر بھی جانچ کر سکتے ہیں لہذا LCD کو انٹرفیس کرنے کا طریقہ سیکھنا بھی ضروری ہے۔ پی آئی سی مائکروکانٹرولر کے ساتھ ڈسپلے کریں۔ DS3231 کے لئے اس ٹیوٹوریل میں تیار کردہ ہیڈر فائل کو بعد میں استعمال / ترمیم کرکے آپ کی درخواستوں کے مطابق کیا جاسکتا ہے۔
اس سے پہلے ہم ذیل میں پروجیکٹس میں آرڈینو کے ساتھ DS3231 RTC استعمال کر چکے ہیں۔
- آرڈینوو کا استعمال کرتے ہوئے خودکار پالتو جانوروں کا فیڈر
- اردوینو ڈیٹا لاگر
DS3231 RTC کو PIC مائکروکانٹرولر کے ساتھ مربوط کرنا:
پی آئی سی مائکروکنٹرولر پر مبنی ڈیجیٹل گھڑی کیلئے سرکٹ ڈایاگرام ذیل میں دیا گیا ہے۔ جیسا کہ پہلے بتایا گیا ہے کہ DS3231 آئی 2 سی مواصلات کی مدد سے کام کرتا ہے لہذا اس میں سیریل کلاک (ایس سی ایل) اور سیریل ڈیٹا (ایس ڈی اے) پن ہوگا جس کو ہماری پی آئی سی پر آئی 2 سی پنوں سے جوڑنا ہے جو پن 18 (ایس سی ایل) ہے۔ اور پن 23 (ایس ڈی اے)۔ بیک اپ ہونے پر بس کو اونچی حالت میں رکھنے کے لئے 7.7 کلو قیمت کا پل اپ ریزٹر استعمال کیا جاتا ہے۔
موجودہ تاریخ اور وقت کو ظاہر کرنے کے لئے پورٹ ڈی پر پنوں سے LCD ڈسپلے بھی منسلک ہے۔ مکمل سرکٹ آریھ پروٹیوس پر ڈیزائن کیا گیا تھا اور نیچے دکھایا گیا ہے۔ ہم اسی ٹیوٹوریل میں بعد میں مصنوع یا پروگرام بنانے کے لئے استعمال کریں گے۔
سرکٹ آریگرام پر عمل کریں اور اسی کے مطابق رابطے کریں ، اوپر دکھایا گیا I2C باکس I2C ڈیبگنگ کے لئے استعمال کیا جاتا ہے لہذا ہم اسے اپنے کنیکشن میں شامل نہیں کریں گے۔ نیز یہ بھی نہیں دکھایا گیا ہے کہ ماڈیول میں وی سی سی اور گراؤنڈ پنوں کا استعمال کرتے ہوئے آر ٹی سی ماڈیول کو + 5V سپلائی فراہم کرنا ہوگی۔ میں نے روٹی بورڈ کو کنکشن بنانے کے لئے استعمال کیا اور مطلوبہ رابطے کرنے کے بعد میرا سیٹ اپ کچھ اس طرح نظر آیا۔
اگر آپ پی آئی سی مائکروکنٹرولر کے لئے نئے ہیں تو پھر پی آئی سی مائکروکانٹرولر کے ساتھ شروعات کرنا شروع کریں۔
پروگرامنگ PIC برائے RTC ماڈیول:
مکمل پروگرام ہے یہ ڈیجیٹل گھڑی کے لئے یہاں زپ فائل سے ڈاؤن لوڈ کیا جا سکتا ہے. پروگرام میں مجموعی طور پر تین ہیڈر فائلیں شامل ہیں۔ LCD ڈسپلے کے ساتھ کام کرنے کے لئے وہ lcd.h فائل ہیں ، PIC کے ساتھ I2C مواصلات کے ساتھ کام کرنے کے لئے PIC16F877a_I2C.h فائل اور آخر میں PIC16F877a_DS3231.h RTC ماڈیول کے ساتھ کام کرنے کے لئے فائل. اس پروگرام کے لئے تینوں ہیڈر فائلوں کی ضرورت ہے اور وہ اوپر کی فائل میں دستیاب ہیں۔ مزید نیچے میں مرکزی پروگرام کی وضاحت کروں گا جو RTC ماڈیول سے وقت اور تاریخ پڑھنے اور اسے LCD اسکرین پر ظاہر کرنے کے لئے ان تمام ہیڈر فائل کو استعمال کرتا ہے۔ اس کے بعد میں وضاحت کروں گا کہ اصل میں آر ٹی سی ہیڈر فائل کے اندر کیا ہو رہا ہے۔ ہمیشہ کی طرح ترتیب بٹس ترتیب دے کر اور گھڑی کی تعدد کو 20 میگا ہرٹز کے طور پر ترتیب دے کر پروگرام کا آغاز کریں کیونکہ ہم نے اپنے ہارڈ ویئر میں یہی استعمال کیا ہے۔
#pragma config FOSC = HS // Oscillator Selection Bits (HS oscillator) #pragma config WDTE = OFF // واچ ڈاگ ٹائمر بٹ (WDT غیر فعال) # پراگما تشکیل PWRTE = آن // پاور اپ ٹائمر قابل بٹ (PWRT सक्षम) # pragma تشکیل Boren کے = ON // براؤن باہر ری سیٹ سا فعال (BOR فعال) #pragma تشکیل LVP = OFF // کم وولٹیج (سنگل فراہمی) میں سرکٹ سیریل پروگرامنگ سا فعال (RB3 ڈیجیٹل I / O، پر HV ہے پروگرامنگ کے لئے ایم سی ایل آر کا استعمال لازمی ہے) # پراگما کنفیگریشن سی پی ڈی = آف // ڈیٹا ایپروم میموری کوڈ پروٹیکشن بٹ (ڈیٹا ایئپروم کوڈ پروٹیکشن آف) # پیراگما کنفگریشن WRT = OFF // فلیش پروگرام میموری تحریر کو چالو کریں بٹ (تحریری تحریر؛ تمام پروگرام میموری EECON کنٹرول کے ذریعہ لکھا جاسکتا ہے) # پراگما کنفیگریشن سی پی = آف // فلیش پروگرام میموری کوڈ پروٹیکشن بٹ (کوڈ پروٹیکشن آف) # متعین _XTAL_FREQ 20000000
اگلا مرحلہ ایل سی ڈی پنوں کی تعریف کرنا ہے ، اگر آپ ہارڈویئر پر نگاہ ڈالیں تو آپ محسوس کرسکتے ہیں کہ ہم نے LCD کے پنوں کو PDT D سے RD2 سے RD7 سے جوڑ دیا ہے ، لہذا ہم ذیل کی طرح تعریف کرتے ہیں۔
# ڈیفائن آر ایس آر ڈی 2 # ڈیفائن این آر ڈی 3 # ڈیفائن ڈی 4 آر ڈی 4 # ڈیفائن ڈی 5 آر ڈی 5 # ڈیفائن ڈی 6 آر ڈی 6 # ڈیفائن ڈی 7 آر ڈی 7
پہلے سے طے شدہ طور پر جب آپ نے آر ٹی سی ماڈیول خریدا ہو تو صحیح وقت اور تاریخ اس میں متعین نہیں ہوگی ، لہذا ہمیں اسے اپنے پروگرام کے ذریعہ طے کرنا ہوگا۔ لہذا ہم ہر اعداد و شمار کے لئے متغیر کا اعلان کرتے ہیں اور ذیل میں دکھائے جانے والے حقیقی وقت اور تاریخ میں فیڈ دیتے ہیں۔ پروگرام اپ لوڈ کرنے کے وقت میرا وقت اور تاریخ 6-5-58 بجے صبح 10:55 بجے کا تھا لہذا میں نے متغیرات کو ذیل میں ترتیب دیا ہے۔ آپ اپنی اصل درخواست کے مطابق صحیح وقت اور تاریخ طے کرسکتے ہیں
/ * تاریخ اور وقت کی موجودہ قیمت ذیل میں طے کریں * / INT سیکنڈ = 00؛ انٹ منٹ = 55؛ انٹ گھنٹہ = 10؛ INT == 06؛ انٹ ماہ = 05؛ انٹ سال = 18؛ / * وقت اور تاریخ سیٹ * /
اگلا ہم ان ہیڈر فائلوں کو شامل کریں جن کے بارے میں ہم نے تبادلہ خیال کیا۔ اگر آپ نے پروگرام کو زپ فائل سے ڈاؤن لوڈ اور کھول دیا ہے تو پھر یہ کوئی مسئلہ نہیں ہوگا ورنہ یہ یقینی بنائیں کہ تمام ہیڈر فائلوں کو آپ کے سورس فائل یا آپ کے پروجیکٹ ڈائرکٹری میں شامل کیا گیا ہے۔
# شامل کریں
چونکہ ہم LCD کو مداخلت کرنے کے لئے PORT D کو آؤٹ پٹ پن کے طور پر استعمال کرتے ہیں لہذا ہمیں انہیں اپنے پروگرام میں آؤٹ پٹ پن کے طور پر اعلان کرنا ہے اور LCD ڈسپلے کو شروع کرنا ہے جیسا کہ ذیل میں دکھایا گیا ہے۔
TRISD = 0x00؛ // LCD انٹرفیسنگ Lcd_Start () کے لئے آؤٹ پٹو کے طور پر پورٹ D پنوں بنائیں ؛ // LCD ماڈیول شروع کریں
آر ٹی سی ماڈیول آئی 2 سی پروٹوکول کی مدد سے مواصلت کرتا ہے لہذا ہمیں اپنے پی آئی سی مائکروقابو کنٹرولر کو I2C مواصلات کو اہل بنانا ہے ۔ ہمارے DS3231 ماڈیولز سمیت زیادہ تر آلات میں IKC آپریٹنگ فریکوئینسی 100KHz ہے لہذا ہم ذیل میں دکھایا گیا ہے کے طور پر 100KHz کی تعدد کے ساتھ I2C مواصلات کا آغاز کرتے ہیں۔
I2C_Initialize (100)؛ // 100KHz گھڑی کے ساتھ I2C ماسٹر شروع کریں
جیسے ہی ہم نے RTC ماڈیول کے ساتھ I2C مواصلات کو قائم کیا ہے اس کے ساتھ ہی ہم اپنے پروگرام میں داخل ہونے والی موجودہ وقت اور تاریخ کا تعین کرتے ہیں ۔ یہ ذیل میں دکھایا گیا ہے کے مطابق set_Time_Date فنکشن پر کال کرکے کیا جاسکتا ہے ۔ ایک بار وقت اور تاریخ طے ہونے کے بعد ماڈیول خود بخود اس سے باخبر رہتا ہے اور ڈیجیٹل گھڑی کی طرح ان میں اضافہ ہوجاتا ہے۔
سیٹ_ ٹائم_ڈیٹ ()؛ // آر ٹی سی ماڈیول پر وقت اور تاریخ طے کریں
اس بات کی نشاندہی کرنے کے لئے کہ یہ پروگرام شروع ہوا ہے ہم ایک چھوٹا تعارف پیغام پیش کریں گے جس کے لئے اسکرین پر 2 سیکنڈ رہیں گے۔ اس پیغام میں سکرین پر PIC ircCircuit Digest کے ساتھ RTC ڈسپلے ہوگا۔ اس کے لئے پروگرام ذیل میں دکھایا گیا ہے
ایل سی ڈی_کلیئر ()؛ ایل سی ڈی_سیٹ_کرسر (1،1)؛ ایل سی ڈی_پرینٹ_اسٹرنگ ("PIC کے ساتھ آر ٹی سی")؛ ایل سی ڈی_سیٹ_کرسر (2،1)؛ ایل سی ڈی_پرینٹ_اسٹرنگ ("سرکٹ ڈائجسٹ")؛ __Dlay_ms (1500)؛
ہماری لامحدود اندر جبکہ لوپ ہم چاہئے موجودہ وقت اور تاریخ کو پڑھنے اور اس کے بعد ہمارے یلسیڈی سکرین میں اقدار کو ظاہر. آر ٹی سی ماڈیول سے وقت اور تاریخ پڑھنے کے لئے اپ ڈیٹ_کورنٹ_ٹائم_ڈیٹ فنکشن کو ذیل میں دکھائے جانے کے مطابق استعمال کیا جاسکتا ہے۔ یہ فنکشن آر ٹی سی ماڈیول کی قدر کو پڑھے گا اور موجودہ اقدار کے ساتھ سیکنڈ ، منٹ ، گھنٹہ ، تاریخ ، مہینہ اور سال کو متغیر کرے گا۔ تب ہم انہیں اپنے مقصد کے لئے استعمال کرسکتے ہیں۔
اپ ڈیٹ_کرنین_ڈیٹ_ٹائم ()؛ // موجودہ تاریخ اور وقت آر ٹی سی ماڈیول سے پڑھیں
متغیرات اعداد و شمار کی قسم کے ہیں ، ہمیں انفرادی حروف میں تبدیل کرنا ہوگا تاکہ ہم انہیں LCD اسکرین پر ظاہر کرسکیں۔ لہذا ہم ماڈیولس آپریٹر کا استعمال ایک بار ہندسہ حاصل کرنے کے لئے کرتے ہیں اور دسیوں کا ہندسہ حاصل کرنے کے لئے متغیر کو 10 سے تقسیم کرتے ہیں۔ تمام متغیروں کے لئے بھی ایسا ہی کیا جاتا ہے۔
// ایل سی ڈی چار پر ظاہر کرنے کے لئے چار میں تقسیم کریں سیکنڈ = سیکنڈ٪ 10؛ چار سیک_1 = (سیکنڈ / 10)؛ چار منٹ_0 = منٹ٪ 10؛ چار منٹ_1 = منٹ / 10؛ چار گھنٹہ = گھنٹہ٪ 10؛ چار گھنٹہ_ = گھنٹہ / 10؛ چارٹ ڈेट ٹائم = تاریخ٪ 10؛ چار تاریخ_1 = تاریخ / 10؛ چار ماہ_0 = مہینہ٪ 10؛ چار ماہ_1 = مہینہ / 10؛ چار سال_0 = سال٪ 10؛ چار سال_1 = سال / 10؛
LCD اسکرین میں حاصل کردہ معلومات کی نمائش کرنا باقی ہے ۔ یہ LCD افعال کے ساتھ آسانی سے کیا جاسکتا ہے جس پر ہم نے پہلے اپنے LCD سبق پر گفتگو کی ہے۔ تو وقت ظاہر کرنے کے لئے کوڈ ذیل میں دیا گیا ہے ، تاریخ کو ظاہر کرنے کے لئے بھی یہی طریقہ استعمال کیا جاتا ہے۔ اعداد و شمار کی نمائش کے بعد 500 ایم ایس کی تاخیر کی گئی ہے تاکہ یہ اپ ڈیٹ وقفہ کا کام کرے۔
ایل سی ڈی_کلیئر ()؛ ایل سی ڈی_سیٹ_کرسر (1،1)؛ ایل سی ڈی_پرینٹ_اسٹرنگ ("ٹائم:")؛ ایل سی ڈی_پرینٹ_چار (گھنٹہ_1 + '0')؛ ایل سی ڈی_پرنٹ_چار (گھنٹہ ++ '0')؛ ایل سی ڈی_پرنٹ_چار (':')؛ ایل سی ڈی_پرنٹ_چار (منٹ_1 + '0')؛ ایل سی ڈی_پرنٹ_چار (منٹ ++ '0')؛ ایل سی ڈی_پرنٹ_چار (':')؛ ایل سی ڈی_پرینٹ_چار (سیکنڈ_1 + '0')؛ ایل سی ڈی_پرینٹ_چار (سیکنڈ + '0')؛
PIC16F877a_DS3231.h ہیڈر فائل کی مختصر وضاحت:
اب تک جو چیزیں بتائی گئیں وہ آپ کے اپنے منصوبوں کے لئے DS3231 ماڈیول PIC کے ساتھ استعمال کرنے کے ل sufficient کافی ہیں ، لیکن جاننے والے ذہنوں کے ل for یہ جاننا چاہیں گے کہ اصل میں ہیڈر فائل کے اندر کیا ہوتا ہے اور PIC کے ذریعہ ، اصل میں RTC ماڈیول سے اعداد و شمار موصول ہوتے ہیں۔ مزید پڑھیں
اس سے گزرنے کا بہترین طریقہ ، DS3231 کے ڈیٹاشیٹ کو مکمل طور پر پڑھنا ہے۔ جس چیز کی ضرورت ہے اس کا ایک مختصر بیان کرنے کے لئے ، ماڈیول PIC کے غلام کی حیثیت سے کام کرتا ہے اور تمام DS3231 ماڈیول کا پتہ D0 ہے۔ لہذا ، ماڈیول میں ڈیٹا لکھیں جس میں ہمیں ایڈریس D0 پاس کرنا ہوتا ہے اور RTC سے ڈیٹا پڑھنے کے ل. ہمیں ایڈریس D1 پاس کرنا ہوتا ہے۔ اگر ہم تحریری پتے RTC ماڈیول کو منتقل کرتے ہیں تو ہم PIC سے ڈیٹا حاصل کرنے کے ل prepared تیار ہوجاتے ہیں لہذا PIC کے ذریعہ لکھا ہوا نتیجہ ڈیٹا موصول ہوجائے گا اور RTC ماڈیول میں محفوظ ہوجائے گا۔ اسی طرح اگر ہم پڑھنے کے لئے ایڈریس بھیجیںپھر PIC کو RTC سے اقدار پڑھنے کے لئے تیار ہوجانا چاہئے کیونکہ RTC ماڈیول اپنے پاس موجود تمام کوائف بھیجنا شروع کردے گا۔ ڈیٹا اور ڈی 1 دونوں کے لئے بٹ تسلسل ڈیٹاشیٹ سے نیچے دکھایا گیا ہے۔ پتہ کریں پتہ 0b11010000 D0 (لکھیں) اور 0b11010001 کا مطلب D01 ہے (پڑھیں)
جب پی آئی سی ایڈریس D0 یا D1 بھیجتی ہے یا پڑھنے کے لs بھیجتی ہے تو ، مندرجہ ذیل اعداد و شمار کو ترتیب میں لکھنا یا لکھنا چاہئے۔ یہ آرڈر نیچے دیئے گئے جدول میں دکھایا گیا ہے۔ لہذا پہلا اعداد و شمار سیکنڈ (00 ہ) ہوگا اس کے بعد منٹ (01 ہ) کے بعد گھنٹے (02 ہ) کے بعد دن (03 ہ) اور ایم ایس بی آف ٹمپریچر ہوں گے۔
آر ٹی سی ماڈیول اعشاریہ اقدار کو نہیں سمجھتا ہے ، یہ صرف بی سی ڈی اقدار کے ذریعہ بات چیت کرتا ہے۔ لہذا کسی بھی اقدار کو آر ٹی سی ماڈیول میں لکھنے سے پہلے اسے بی سی ڈی میں تبدیل کرنا چاہئے اور آر ٹی سی ماڈیول سے ملنے والی اقدار بھی بی سی ڈی فارمیٹ میں ہوں گی اور ہمارے لئے سمجھ میں آنے کے ل it اسے ڈیشمال میں تبدیل کیا جانا چاہئے۔ اس کو ذہن میں رکھتے ہوئے آر ٹی سی ماڈیول کے استعمال کے ل required مطلوبہ تمام فنکشن تشکیل دیں۔
BCD_2_DEC اور DEC_2_BCD کام کرتا ہے:
پہلے دو کام بی سی ڈی ڈیٹا کو اعشاریہ اور اعشاریہ ڈیٹا کو بی سی ڈی میں تبدیل کرنے کے لئے استعمال کیے جائیں گے کیونکہ آر ٹی سی ماڈیول صرف بی سی ڈی کو سمجھتا ہے ۔ بی سی ڈی کو اعشاریہ میں تبدیل کرنے کے فارمولے اور بی سی ڈی کو اعشاریہ میں تبدیل کرنا ہے
اعشاریہ ((BCD >> 4) * 10 + (BCD & 0x0F) BCD = ((اعشاریہ / 10) << 4) + (اعشاریہ 10)
ہمیں صرف یہ دو فارمولے استعمال کرنا ہوں گے جو فنکشن بنانے کے ل to مخالف یونٹ میں پیرامیٹر کی حیثیت سے لیتا ہو اور اسے مطلوبہ فارمیٹ میں تبدیل کرتا ہو اور اسے واپس کردے ، ایسا کرنے کا فنکشن نیچے دکھایا گیا ہے
# 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 ماڈیول میں لکھا جائے گا۔
جیسا کہ ہم نے تبادلہ خیال کیا ، آر ٹی سی ماڈیول کی قیمت لکھنے کے ل we ہمیں ایڈریس D0 پاس کرنا ہوگا اور لکھنے کے عمل کو شروع کرنے کے لئے بیل بٹ 0 لکھنا ہوگا۔ پھر ہم مندرجہ بالا جدول میں دکھایا گیا ترتیب کے مطابق اعداد و شمار بھیج سکتے ہیں۔
باطل سیٹ_ٹائم_ڈیٹ () { I2C_Begin ()؛ I2C_Write (0xD0)؛ I2C_Write (0)؛ I2C_Write (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_Write (DEC_2_BCD (سال))؛ // تازہ ترین سال I2C_End ()؛ }
اپ ڈیٹ_کرنین_ڈیٹ_ٹائم () فنکشن:
لائبریری میں آخری کام وہی ہے جو آر ٹی سی ماڈیول سے وقت اور تاریخ پڑھتا ہے اور اسے پی آئی سی مائکروکانٹرولر کے پاس بھیجتا ہے۔ اس فنکشن کو تین حصوں میں تقسیم کیا گیا ہے ، ایک اقدار کو پڑھنے کے لئے دوسرا پڑھنے کا عمل شروع کرنا اور اسے سیکنڈ ، منٹ ، گھنٹہ ، تاریخ ، مہینہ اور سال جیسے عالمی متغیر میں محفوظ کرنا۔ اور تیسرا یہ تسلیم کرنا ہے کہ پڑھنا کامیاب رہا۔
نوٹ کریں کہ ہر ایک عمل کے لئے I2C مواصلات کو شروع اور ختم ہونا چاہئے۔
آر ٹی سی سے اقدار کو پڑھنے کے ل we ہمیں ایڈریس D0 بھیجنا ہوگا جس کے بعد 0 کا 0 ہو گا۔ ہم صرف انہیں پڑھ سکتے ہیں کہ وہ انہیں اعشاریہ میں تبدیل کریں اور اسی ترتیب سے متغیر میں محفوظ کریں۔
آخر میں ، پڑھنے کے بعد آر ٹی سی ماڈیول ایک اعتراف بٹ بھیجے گا جسے پڑھنا اور تسلیم کرنا چاہئے۔
باطل اپ ڈیٹ_کرنین_ڈیٹ_ٹائم () { // پڑھنے کیلئے I2C_Begin ()؛ I2C_Write (0xD0)؛ I2C_Write (0)؛ I2C_End ()؛ // پڑھیں I2C_Begin ()؛ I2C_Write (0xD1)؛ // اعداد و شمار کو پڑھنا سیکنڈ = BCD_2_DEC (I2C_Read (1)) پڑھیں؛ منٹ = BCD_2_DEC (I2C_Read (1))؛ گھنٹہ = BCD_2_DEC (I2C_Read (1))؛ I2C_Redad (1)؛ تاریخ = BCD_2_DEC (I2C_Read (1))؛ مہینہ = BCD_2_DEC (I2C_Read (1))؛ سال = BCD_2_DEC (I2C_Read (1))؛ I2C_End ()؛ // آخر I2C_Begin پڑھنا ()؛ I2C_Write (0xD1)؛ // اعداد و شمار کو پڑھیں I2C_Read پڑھیں (1)؛ I2C_End ()؛ }
نقلی:
پروٹیز تخروپن سافٹ ویئر کا استعمال کرتے ہوئے اس منصوبے کی نقالی کی جاسکتی ہے۔ سرکٹ ڈایاگرام میں دکھائے جانے والے روابط کو بنائیں اور ہیکس فائل کو PIC کنٹرولر میں لوڈ کریں۔ جب آپ اس کی نقالی کرتے ہیں تو آپ LCD پر دکھائے جانے والے دو پاپ اپ بکس اور تاریخ اور وقت ملیں گے جیسا کہ ذیل میں دکھایا گیا ہے۔
سب سے اوپر والا چھوٹا سا وہ وقت اور تاریخ دکھاتا ہے جو موجودہ وقت میں RTC ماڈیول کے اندر موجود ہے اور دوسرا پاپ اپ I2C ڈیبگر ہے۔ یہ چیک کرنے کے لئے ایک عمدہ ٹول ہے کہ اصل میں I2C بگ میں کون سا ڈیٹا پاس کیا جارہا ہے۔
LCD پر ڈسپلے کا وقت اور تاریخ:
ایک بار جب آپ کا ہارڈویئر تیار ہوجاتا ہے اور دیئے گئے لنک کے ذریعہ کوڈ کو زپ فائل کے طور پر ڈاؤن لوڈ کیا جاتا ہے تو ، MPLABX IDE کا استعمال کرکے پروگرام کھولیں۔ آپ کو پہلے IDE لانچ کرنا ہوگا اور اوپن پروجیکٹ آپشن کا استعمال کرنا ہوگا اور زپ فائل کے اندر موجود مواد کو براؤز کرنا ہوگا اور.X فولڈر کھولنا ہے۔
بس یہ چیک کریں کہ آیا پروگرام PicKit3 کا استعمال کرکے کوڈ کو مرتب کرکے اپنے ہارڈ ویئر میں اپ لوڈ کررہا ہے۔ جیسے ہی یہ پروگرام اپلوڈ ہوگا آپ کو تعارفی پیغام دیکھنا چاہئے اور پھر وقت اور تاریخ کو ذیل میں دکھایا جانا چاہئے۔
اگر LCD میں کچھ نہیں ہے تو اپنے کنیکشن کو چیک کریں اور اس بات کو یقینی بنائیں کہ پوٹینومیٹر میں مختلف قسم کے ذریعہ اس کے برعکس کی سطح کو صحیح طریقے سے ترتیب دیا گیا ہے۔ یہی وجہ ہے کہ آپ اپنے تمام PIC مائکرو قابو پانے والے منصوبوں کو وقت اور تاریخ ظاہر کرسکتے ہیں اور اسے ڈیجیٹل گھڑی کے بطور استعمال کرسکتے ہیں۔ امید ہے کہ آپ نے کچھ نیا سیکھا ہے اور اس ٹیوٹوریل کو سیکھنے میں لطف اندوز ہوں گے اگر آپ کو کسی پریشانی کا سامنا کرنا پڑا ہے تو تکنیکی مدد کے لئے انہیں نیچے دیئے گئے تبصروں یا فورموں پر پوسٹ کریں۔
یہاں سے ہیڈر فائلوں کے ساتھ اس پروجیکٹ کے لئے مکمل PIC پروگرام ڈاؤن لوڈ کریں اور مزید ہمارے PIC سبق یہاں چیک کریں۔