قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:106
قديم 29-12-2011, 03:16 PM المشاركة 1   
افتراضي دعوة للاعضاء لعمل ساعة توقيت زمنية باستخدام DS1307 .. Twitter FaceBook Google+



السلام عليكم

قمت بكتابة هذا الموضوع ليفتح المجال لجميع الاعضاء للمشاركة في صياغة برنامج لعمل ساعة حقيقية تعتمد المتكاملة DS1307 كحجر اساس لحساب الوقت ، بعدها يمكن ان يطورها كل واحد بما يناسب احتياجته ، فقد يطور احدهم المشروع لعمل ساعة تحتوي منبه داخلي مثلا وغيرها من الافكار الجميلة التي يملكها اعضائنا الاعزاء .

هذا المشروع هو عبارة عن التطبيق العملي لبروتوكول I2C الموجود على الرابط :

http://www.qariya.com/vb/showthread.php?t=100373

في البداية ساقوم بوضع بعض المعلومات الواردة في الداتاشيت :

1 - استهلاك طاقة منخفض .
2 - تستخدم نظام عشري مرمز ثنائيا ( BCD ) : وهو نظام يعتمد على تحويل كل رقم عشري الى القيمة الثنائية المكافئة له ومن ثم ترتيب القيم وفقا لمنزلتها (هل هي احاد او عشرات او مئات بنفس الترتيب ).
3 - تحتوي 56 بايت في الرام غير متطايرة ( تعتمد على بطارية لحفظ هذه البايتات ) .
4 - يتم نقل الداتا تسلسيا من والى هذه الساعة بواسطة طرفين عبر بروتوكول I2C .
5 – تعطي معلومات عن الساعة ( الثواني ،الدقائق ، الساعات ) وعن التاريخ ( ترتيب اليوم في الاسبوع ، اليوم ، الشهر ، السنة ) ، حيث يتم تعديل الاشهر تلقائيا ( بعض الاشهر 31 وبعضها 30 .. الخ ) مع تعديل للسنة الكبيسة ، هذه التعديلات تصلح حتى عام 2100 .
6 – يمكن ان تعمل في نظام 24 ساعة او نظام 12 ساعة مع مؤشر AM / PM .
7 – تحتوي دارة احساس لمستوى التغذية ، بحيث تقوم بالتحويل الى البطارية الاحتياطية عند اللزوم .
8 - واهم شي هو عدد الاطراف المنخفض فهي تحتوي على 8 اطراف فقط .


ملاحظة مهمة تتعلق بالنظام المستخدم في ترميز البيانات ( BCD ) :

سنقوم بتوضيح هذا النظام المستخدم في هذه المتكاملة فمثلا في حال كان لدينا العدد العشري ( 94 ) وأردنا تحويله النظام الثنائي والنظام السداسي عشر ( استخدم أي برنامج يقوم بهذه المهمة للتأكد ) :


كود:
84 (Decimal) = 0101 0100 ( Binary )

حيث ان القيمة تعتمد على النظام الثنائي ومبدأ القسمة وباقي القسمة.

اما في حال اردنا تحويل نفس الرقم من خلال نظام ( BCD ) :



كود:
84(Decimal) = 1000 0100 ( BCD )

نلاحظ وجود فارق بين نفس القيمة العشرية بالنسبة للنظامين السابقين ، فلو حاولنا ان نحول الرقم الثاني الى النظام العشري فستكون القيمة فعليا هي 132، لذلك يجب الحذر عند استخدام النظامين في نفس البرنامج .

وآخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.


التعديل الأخير تم بواسطة : geniusse01 بتاريخ 29-12-2011 الساعة 04:27 PM
اعلانات

geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:106
قديم 29-12-2011, 05:47 PM المشاركة 2   
افتراضي الدارة المستخدمة في المشروع


السلام عليكم

للحصول على برنامج متقارب للجميع قمت برسم الدارة التالية :



ملف البروتوس نسخة 7.7 موجود على الرابط التالي:

http://www.mediafire.com/?4a1kbtpaf4imand


واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.

اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:106
قديم 30-12-2011, 06:30 AM المشاركة 3   
افتراضي الاطراف الخارجية للمتكاملة ، وتوضيح السجلات الداخلية


السلام عليكم


نتابع اليوم مع توضيح الاطراف الخارجية لمتكاملة الزمن الحقيقي DS1307 والتي تتكون من 8 اطراف وترتيبها :

1 + 2 - اطراف توصيل الكريستالة X1,X2 : ويتم توصيلها مع كريستالة بتردد 32768 هيرتز ، يتم توصيل مكثفات غير قطبية 12.5 بيكو فاراد .

3 – جهد البطارية الاحتياطية V battery : تستخدم أي بطارية بجهد 3 فولت ، في حال عدم الحاجة الى استخدام هذا الطرف فيتم وصله مع طرف التغذية الارضي.

4 - طرف التغذية الارضي Gnd : طرف التغذية السالبة للمتكاملة .

5 – طرف الداتا ( SDA) : وهو الطرف الذي يتم نقل الداتا من خلاله بواسطة بروتوكول I2C ، يحتوي هذا الطرف على Open Drain لذلك يجب وصل مقاومة رفع خارجية ليعمل هذا الطرف بشكل طبيعي.

6 – طرف نبضات الساعة : وهو الطرف الذي يتم استقبال نبضات الساعة من خلاله بواسطة بوتوكول I2C ، يحتوي هذا الطرف على Open Drain لذلك يجب وصل مقاومة رفع خارجية ليعمل هذا الطرف بشكل طبيعي.

7 – مخرج قيادة للنبضات المربعة ( SQW/OUT) : في حال تفعيل هذا الطرف فانه يتم اخراح نبضات مربعة باحد الترددات التالية (1Hz,4.096KHz,8.192KHz,32.768KHz) وفقا لمسجل التحكم الداخلي ، يحتوي هذا الطرف على Open Drain لذلك يجب وصل مقاومة رفع خارجية ليعمل هذا الطرف بشكل طبيعي، في حال عدم الحاجة الى استعمال هذا الطرف يمكن تركه بدون توصيل .

8 - طرف التغذية الموجبة Vcc : في حال كان جهد التغذية على هذا الطرف بالمستويات الطبيعية يمكن ان تتم عملية الكتابة والقراءة من المتكاملة ، اما في حال التغذية الاحتياطية وانخفض الجهد عن مستوى معين Vtp فانه سيتم منع القراءة والكتابة الى المتكاملة ، ولكن المتكاملة ستقوم بوظيفة حساب الوقت والتاريخ داخليا .



ننتقل الان الى السجلات الداخلية لهذه المتكاملة ، لننظر الى الصورة التالية لتتوضح الصورة بشكل اكبر :



تتكون هذه المتكاملة من سجلات داخلية بحجم 8 بت لكل موقع ذاكرة ، يمكن الملاحظة بأن هذه المتكاملة تتكون من نوعين من السجلات الداخلية :

1 – سجلات لحفظ التوقيت الزمني بالاضافة الى التاريخ : وهي محصورة في العناوين ( 00h – 07h ) .
2 – سجلات اغراض عامة : ويمكن استخدامها لحفظ أي معلومات يحتاجها المستخدم ، وهي محصورة في العناوين (08h-3Fh ) .


ما يهمنا هنا هو النوع الاول وهو المستخدم لحساب الزمن الحقيقي (والذي يحتوي وظيفة التحكم بالوقت والتاريخ ) والذي سنقوم بتوضيح كل المسجلات الزمنية :

1 - المسجل 00h)) : وهو المسجل المستخدم لعد الثواني ، حيث تستخدم البتات ( B0-B3) لخانة الاحاد ، والبتات (B4-B6) تستخدم لخانة العشرات ، أما البت الثامن (B7) فهو يتحكم بالهزاز ، في حال تم وضع القيمة (1) في هذا البت فان الهزاز
سيتم ايقافه ولن تعمل المتكاملة ، اما في حال تم وضع القيمة (0 ) فيتم تفعيل الهزاز وتبدأ عملية حساب التوقيت .

ملاحظة : عند بداية تشغيل هذه المتكاملة في أي مشروع عملي فان البت الثامن B7 يساوي (1) ، مما يعني ان المتكاملة لا تعمل (من اجل توفير الطاقة ) ، لذلك يجب تصفير هذا البت خلال البرنامج ليبدأ عمل المتكاملة .


2 - المسجل (01h) : وهو المسجل المستخدم لعد الدقائق ، حيث تستخدم البتات ( B0-B3) لخانة الاحاد ، والبتات (B4-B6) تستخدم لخانة العشرات ، أما البت الثامن (B7) فهو دائما يحوي القيمة ( 0 ) .


3 – المسجل (02h) : وهو المسجل المستخدم لعد الساعات ، وهنا نتحكم بنظام عمل المتكاملة ( 12 او 24 ساعة ) من خلال البت ( B6) كالتالي :
أ – نظام 12 ساعة : في حال ( BIT6 = 1 ) فان المتكاملة تعمل في نظام 12 ساعة ، حيث تستخدم البتات (B0-B3) لخانة الاحاد ، والبت (B4) لخانة العشرات ، أما البت (B5) فهو يحدد هل نحن الان بعد الظهر PM حيث تكون القيمة في هذا البت هي (1( ، أم اننا بعد منتصف الليل (AM) وهنا تكون قيمة هذا البت (0( ، أما البت الثامن (B7) فهو دائما يحوي القيمة ( 0 ) .
ب – نظام 24 ساعة : في حال ( BIT6 = 0 ) فان المتكاملة تعمل في نظام 24 ساعة ، حيث تستخدم البتات (B0-B3) لخانة الاحاد، والبتات ( B4-B5) تستخدم لخانة العشرات ، أما البت الثامن (B7) فهو دائما يحوي القيمة ( 0 ).


4 – المسجل (03h) : وهو سجل ترتيب اليوم بالنسبة للاسبوع ، فكما نعلم لدينا سبع ايام في الاسبوع هنا يتم تحديد مثلا اول يوم في الاسبوع هو السبت ام غيره ، حيث يزداد اليوم عند منتصف الليل ، وهو يستخدم البتات (B0-B2) لاخيار قيمة بين 1-7 وفقا لترتيب اليوم خلال الاسبوع .


5 – المسجل (04h) : وهو المسجل المستخدم لعد الايام خلال الشهر ، ، حيث تستخدم البتات (B0-B3) لخانة الاحاد ، والبت (B4) لخانة العشرات ، اما البتات (B5-B7) فهي دائما تحوي القيمة (0( .


6 – المسجل (05h) : وهو المسجل المستخدم لعد السنوات ، حيث تستخدم البتات ( B0-B3) لخانة الاحاد ، والبتات (B4-B7) تستخدم لخانة العشرات ، يجب الملاحظة ان العد يكون من 00 – 99 ، لذلك يجب التعديل في البرنامج لزيادة السنوات على 2000 .

7 – المسجل (07h) : وهو مسجل التحكم الرئيسي في هذه المتكاملة من خلال بعض البتات كالتالي :
أ – البت B7 : يتحكم هذا البت بالجهد على الطرف الخارجي(SQW/OUT) في حال الغاء خاصية الموجة المربعة على الخرج (عندما BIT4=0) ، ففي حال كان البت B7 يساوي (1( فالجهد الخارجي يساوي 1 منطقي (جهد مرتفع) اما في حال كان هذا البت يساوي(0( فالجهد الخارجي يساوي 0 منطقي (جهد منخفض).
ب – البت B4 : يتحكم هذا بتفعيل خاصية الموجة المربعة على الخرج ، فعند وضع القيمة (1( يتم اخراج موجة مربعة على الطرف الخارجي (SQW/OUT) باحد الترددات ( 1Hz,4.096KHz,8.192KHz,32.768KHz) ،حيث يتم تحديد التردد باستخدام البتات (B0-B1) في مسجل التحكم ، اما عند وضع القيمة (0( فيتم الغاء خاصية الموجة المربعة .
ج - البتات (B0-B1) :كما قلنا فان الطرف الخارجي SQW/OUT يستخدم لتوليد موجة مربعة خارجة من هذه المتكاملة ، ويمكن التحكم بالتردد كالتالي:


كود:
BIT1 = 0 , BIT0 = 0 ---- output frequency = 1 Hz BIT1 = 0 , BIT0 = 1 ---- output frequency = 4.096 KHz BIT1 = 1 , BIT0 = 0 ---- output frequency = 8.192 KHz BIT1 = 1 , BIT0 = 1 ---- output frequency = 32.768 KHz
أما البتات ( B6/B5/B3/B2 ) فهي دائما تحوي القيمة ( 0 ) .

ملاحظة عملية : كما قلنا فان النظام المستخدم في المتكاملة هو (BCD) وهو يختلف عن النظام العشري المستخدم في الميكروسي وغيرها من الكمبايلر ، لذلك يجب التحويل من النظام العشري العادي الى (BCD) ، لحسن الحظ فان الميكروسي تحتوي دوال جاهزة للتحويل ، فالدالة Dec2Bcd( )تقوم بالتحويل من عشري الى BCD ، أما الدالة Bcd2Dec ( ) فتقوم بالعكس .

يجب قراءة هذا الدرس بتركيز لاننا سنبدا القسم العملي قريبا ، والان اصبحت كل المعلومات التي نحتاجها جاهزة للبدء في برنامج الساعة الرقمية باستخدام DS1307 ، واي سؤال فالموضوع مفتوح للنقاش .

وآخر دعوانا ان الحمدلله رب العالمين ..وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم .


geniusse01
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2008
الدولة: Jordan - Amman
المشاركات: 1,139
نشاط [ geniusse01 ]
قوة السمعة:106
قديم 31-12-2011, 08:39 PM المشاركة 4   
افتراضي


السلام عليكم جميعا

قمت بوضع هذه المشاركة للحصول على افكار واسئلة بما يخص الساعة الرقمية ..

ارجو وضع الافكار والاقتراحات لنكمل المشروع بمساعدتكم اخواني


يمكن ان يتم برمجة الموضوع باكثر من لغة برمجة


واخر دعوانا ان الحمدلله رب العالمين .. وصلى الله على سيدنا محمد وعلى اله وصحبه وسلم.


الصورة الرمزية نوفلsys
نوفلsys
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2009
الدولة: الاردن
المشاركات: 51
نشاط [ نوفلsys ]
قوة السمعة:0
قديم 01-01-2012, 11:27 AM المشاركة 5   
افتراضي


سلام عليكم
بارك الله فيك


الصورة الرمزية اشرف كمال2
اشرف كمال2
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2010
الدولة: القاهرة_مهندس كهرباء
المشاركات: 101
نشاط [ اشرف كمال2 ]
قوة السمعة:0
قديم 02-01-2012, 02:17 PM المشاركة 6   
افتراضي


شكرا جزيلا على الموضوع الرائع..

سوف اتابع معك فى هذا الموضوع و وجدت رابط مفيد بخصوص الReal Time Clock IC (DS1307)

ارجو ان يكون مفيد و ساتعمق فى الموضوع ان شاء الله فى الايام القادمة


لتحميل البرنامج بلغة الميكرو سى الساعة الحقيقية باستخدام المتكاملة DS1307 على الرابط

http://www.4shared.com/zip/harLElkO/...k-ic-opi9.html
و لمشاهدة الموضوع الساعة الحقيقية باستخدام المتكاملة DS1307 كامل على اللنك التالى

http://www.best-microcontroller-proj...-clock-ic.html

و حبذا لو تم شرح الموضوع لمن استطاع تغطيتة كاملا و سابدا بمحاولة فك طلاسمة ان شاء الله .


التعديل الأخير تم بواسطة : اشرف كمال2 بتاريخ 02-01-2012 الساعة 02:33 PM

hocinech
:: مهندس ::
تاريخ التسجيل: Oct 2009
المشاركات: 46
نشاط [ hocinech ]
قوة السمعة:0
قديم 03-01-2012, 06:47 PM المشاركة 7   
افتراضي


شكرا على المجهودات


الصورة الرمزية اشرف كمال2
اشرف كمال2
:: مهندس متواجد ::
تاريخ التسجيل: Nov 2010
الدولة: القاهرة_مهندس كهرباء
المشاركات: 101
نشاط [ اشرف كمال2 ]
قوة السمعة:0
قديم 19-01-2012, 05:07 PM المشاركة 8   
افتراضي


السلام عليكم و رحمة الله...

قمت بفضل الله بعمل تصور مبدئى للمشروع ساعة حقيقية باستخدام المتكامله ds1307 و باستخدام بروتوكول i2c وضعت قيمة ابتدائية للتوقيت داخل البرنامج و يقوم المتحكم بعرضها على شاشة ال سى دى..

لكن واجهتنى مشكلة هى ان العرض لا يتم الا اذا قمت باضافة الاداة i2c debugger داخل برنامج المحاكاة عندها يقوم بعرض الوقت على الشاشة ...ليس هذا فحسب بل يحدث تهنيج للبرنامج وخطاء فى الاداه المضافة اثناء عرض البيانات على الشاشة..كما فى الصورة


هل هناك حل لهذة المشكلة؟؟





مرفق لكم ملف المحاكاة و البرنامج..


http://www.ghost-up-load.com/downloa...ubmit=get+link
فى انتظار مشاركتكم

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 04:58 AM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025