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

   

mahfoud2010
:: مهندس ::
تاريخ التسجيل: May 2010
المشاركات: 1
نشاط [ mahfoud2010 ]
قوة السمعة:
قديم 20-05-2010, 11:16 AM المشاركة 41   
افتراضي



بارك الله فيك

اعلانات

said1200
:: مهندس ::
تاريخ التسجيل: Apr 2007
المشاركات: 14
نشاط [ said1200 ]
قوة السمعة:
قديم 21-05-2010, 07:08 PM المشاركة 42   
Thumbs up


بارك الله فيك اخى صهيب و زادك الله علما

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

yac100
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
الدولة: فلسطين - غزة
المشاركات: 140
نشاط [ yac100 ]
قوة السمعة:
قديم 27-05-2010, 01:32 PM المشاركة 43   
افتراضي


السلام عليكم ورحمة الله وبركاته
كيف حالك : يا م.صهيب البلال
لقد اطلت علينا
فنرجوا من الله عز وجل ان تكون بخير
واريد منك ان نشرح الدائرة الثانية وهي التي استخدمة فيها IC_4514 مع استخدام الزواية الفلكية
فرجوا من الله عز وجل ان تخدمني في هذا المشروع ويجعله في ميزان حسناتك
وسامحني لأني كثير الاسئلة
والسلام عليكم ورحمة الله وبركاته


yac100
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
الدولة: فلسطين - غزة
المشاركات: 140
نشاط [ yac100 ]
قوة السمعة:
قديم 19-06-2010, 11:25 AM المشاركة 44   
افتراضي


السلام عليكم ورحمة الله وبركاته
كيف حالك : يا م.صهيب البلال
لقد اطلت علينا
فنرجوا من الله عز وجل ان تكون بخير
واريد منك ان نشرح الدائرة الثانية وهي التي استخدمة فيها IC_4514 مع استخدام الزواية الفلكية
فرجوا من الله عز وجل ان تخدمني في هذا المشروع ويجعله في ميزان حسناتك
وسامحني لأني كثير الاسئلة
والسلام عليكم ورحمة الله وبركاته
ارجوا منك يا أخي المهندس : صهيب البلال أن ترد علية
وهل يمكن استبدال IC_4514 بـــ IC_74154 لأنها غير موجودة في بلادنا وانت جعلت DS1307 تأخذ البيانات من جهاز الحسوب PC
لكن كيف يمكن أن تأخذ من PIC
وبارك الله فيك
والسلام عليكم ورحمة الله وبركاته


صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 19-06-2010, 07:44 PM المشاركة 45   
افتراضي


ارجوا منك يا أخي المهندس : صهيب البلال أن ترد علية
وهل يمكن استبدال IC_4514 بـــ IC_74154 لأنها غير موجودة في بلادنا وانت جعلت DS1307 تأخذ البيانات من جهاز الحسوب PC
لكن كيف يمكن أن تأخذ من PIC
وبارك الله فيك
والسلام عليكم ورحمة الله وبركاته
أهلا بك أخي
فعلا أنا تأخرت كثيرا لكن لكل غائب عذر
والحمد لله ان المشروع أصبح شبه متكامل وصارت أفكاره واضحه من حيث الدائرة المستخدمة والبرنامج
بالنسبة لسؤالك الأول : نعم يمكن استخدام IC_74154 مع ملاحظة أنه يجب أن تجري أحد التغييرات التالية
إما أن تضيف أي سي القلاب (INVERTER ) بعد هذه الايسي
أو تستخدم سفن سكمنت من نوع (COMMON CATHOD) وتجري التغيير التالي في الكود (فقط تم حذف كلمة(NOT) )
كود:
for i=0 to 15
porta=i
portb=mm[num[i]]delay_ms(1)
 next i
 portc.0=0
porta.4=1
for i=16 to 23
porta=i
portb=mm[num[i]]delay_ms(1)
 next i
وأنا أفضل الخيار الثاني حتى لا يكثر عدد الايسيهات

بالنسبة للسؤال الثاني : أكيد أنت تقصد حالة المحاكاة (SIMULATION) فقد جعلت DS1307 في برنامج بروتس يأخذ الوقت من الحاسوب ... نعم
لكن عند تطبيقه عمليا فإننا نقوم بضبطها عن طريق PIC و يكون ذلك بإضافة أزرار خارجية للبك يتم من خلالها ضبط الدقائق والساعات واليوم والشهر والسنة وعليه لا بد لنا من خمسة أزرار خارجية ( وسأضع الكود لاحقا إن شاء الله تعالى )



ويمكن ربط هذا الآزار على طرف واحد لكن من النوع التناظري وليكن AN0 مثلا وربط مقاومة مختلفة لكل زر وملاحظة قيمة الفولتية عند الضغط على كل زر على حدة ...
مثلا إذا كانت 1 أضف واحد للدقائق واخزنه في ds1307
وإذا كانت 2 أضف واحد للساعات واخزنه في ds1307
وهكذا بالنسبة لليوم والشهر والسنة
حاول ان تجرب إحدى هذه الطرق وسأساعدك إن شاء الله تعالى


صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 20-06-2010, 11:01 PM المشاركة 46   
افتراضي


بسم الله الرحمن الرحمن الرحيم

توضيح إيعازات التعامل مع ds1307 من خلال مايكروبيسك

ذكرت في مشاركات سابقة أن لغة التخاطب بين ds1307 و الـ pic هي بروتوكول I2C وهذا البروتوكول تم شرحه من قبل الاستاذ م.نافذ أبو كشك وهو موجود في المواضيع المميزة فلا حجاة الى إعادة الشرح .
أولا نهيئ الأطراف C3, C4 على أنهما طرفان للتخاطب باستخدام I2C
كالتالي :
كود:
dim Soft_I2C_Scl               as sbit at RC3_bit
dim Soft_I2C_Sda               as sbit at RC4_bit
dim Soft_I2C_Scl_Direction as sbit at TRISC3_bit
dim Soft_I2C_Sda_Direction as sbit at TRISC4_bit
ثم نكتب الدالة التي تستخدم لقراءة سجلات المتكاملة ds1307 ونخز قيمة هذه السجلات في متغيرات ويجب أن ننتبه الى أن قيم هذه السجلات بصيغة BCD
كود:
dim sec, min, hr, week_day, day, mn, year,set1,set2 as byte

sub procedure Read_Time(dim byref sec, min, hr, week_day, day, mn, year as short)

    Soft_I2C_Start()
    Soft_I2C_Write(0xD0)
    Soft_I2C_Write(0)
    Soft_I2C_Start()
    Soft_I2C_Write(0xD1)
    sec =Soft_I2C_Read(1)
    min =Soft_I2C_Read(1)
    hr =Soft_I2C_Read(1)
    week_day =Soft_I2C_Read(1)
    day =Soft_I2C_Read(1)
    mn =Soft_I2C_Read(1)
    year =Soft_I2C_Read(0)
    Soft_I2C_Stop()
end sub
نكتب دالة كتابة القيم الى السجلات ويجب أن تكون القيم المرسلة الى السجلات بصيغة BCD كما ذكرت قبل قليل ... وهذه الدالة سنحتاجها في ضبط الوقت والتاريخ للـ ds1307 إما بإرسال قيم ابتدائية عن طريق الـ Pic أو عن طريق أزرار خارجية كما ذكرت في المشاركة السابقة
كود:
sub procedure Write_Time(dim address1 as short,dim data_wr as short)
    Soft_I2C_Start()
    Soft_I2C_Write(0xD0)
    Soft_I2C_Write(address1)
    Soft_I2C_Write(data_wr)
    Soft_I2C_Stop()
    end sub
الان لكي نرسل قيمة الى ds1307 نقوم بالخطوات التالية
1- نبدأ بروتوكول I2C
2- نحول القيمة المراد ارسالها الى نظام BCD
3- نستدعي دالة Write_Time وهذه الدالة تحتوي على عاملين (القيمة المراد إرسالها , عنوان السجل الذي نريد أن نرسل القيمة إليه )
مع ملاحظة أن عناوين السجلات تبدأ من الصفر الى سبعة
صفر = ثواني
واحد=دقائق
اثنان=ساعات
وهكذا
الكود التالي يرسل رقم 7 الى سجل الثواني
كود:
 Write_Time(0,7)
الآن الكود التالي لضبط الدقائق عن طريق زر خارجي مربوط على الطرف C1
كود:
if Button(PORTC, 1, 1, 1) then
oldstate = 255
end if
if oldstate and Button(PORTC, 1, 1, 0) then
 set1=min+1
 if set1>59 then
  set1=0
  end if
  set1=Dec2Bcd16(set1)
  Write_Time(1,set1)
  oldstate = 0
 end if
وهذا الكود لضبط الساعات عن طريق زر مربوط على الطرف C2
كود:
if Button(PORTC, 2, 1, 1) then
oldstate1 = 255
end if
if oldstate1 and Button(PORTC, 2, 1, 0) then
 set1=hr+1
 if set1>23 then
  set1=0
  end if
  set1=Dec2Bcd16(set1)
  Write_Time(2,set1)
  oldstate1 = 0
 end if
ملاحظة : يجب أن نعرف المتغيرات التالية oldstate1 , oldstate1 , set1

واعذروني على الاختصار فقد كتبت الشرح على عجالة لأنني رأيت أن الإخوة بحاجة اليه

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


التعديل الأخير تم بواسطة : صهيب البلال بتاريخ 20-06-2010 الساعة 11:25 PM

yac100
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
الدولة: فلسطين - غزة
المشاركات: 140
نشاط [ yac100 ]
قوة السمعة:
قديم 22-06-2010, 12:58 PM المشاركة 47   
افتراضي


بسم الله الرحمن الرحمن الرحيم

توضيح إيعازات التعامل مع ds1307 من خلال مايكروبيسك

ذكرت في مشاركات سابقة أن لغة التخاطب بين ds1307 و الـ pic هي بروتوكول I2C وهذا البروتوكول تم شرحه من قبل الاستاذ م.نافذ أبو كشك وهو موجود في المواضيع المميزة فلا حجاة الى إعادة الشرح .
أولا نهيئ الأطراف C3, C4 على أنهما طرفان للتخاطب باستخدام I2C
كالتالي :
كود:
dim Soft_I2C_Scl               as sbit at RC3_bit
dim Soft_I2C_Sda               as sbit at RC4_bit
dim Soft_I2C_Scl_Direction as sbit at TRISC3_bit
dim Soft_I2C_Sda_Direction as sbit at TRISC4_bit
ثم نكتب الدالة التي تستخدم لقراءة سجلات المتكاملة ds1307 ونخز قيمة هذه السجلات في متغيرات ويجب أن ننتبه الى أن قيم هذه السجلات بصيغة BCD
كود:
dim sec, min, hr, week_day, day, mn, year,set1,set2 as byte
 
sub procedure Read_Time(dim byref sec, min, hr, week_day, day, mn, year as short)
 
    Soft_I2C_Start()
    Soft_I2C_Write(0xD0)
    Soft_I2C_Write(0)
    Soft_I2C_Start()
    Soft_I2C_Write(0xD1)
    sec =Soft_I2C_Read(1)
    min =Soft_I2C_Read(1)
    hr =Soft_I2C_Read(1)
    week_day =Soft_I2C_Read(1)
    day =Soft_I2C_Read(1)
    mn =Soft_I2C_Read(1)
    year =Soft_I2C_Read(0)
    Soft_I2C_Stop()
end sub
نكتب دالة كتابة القيم الى السجلات ويجب أن تكون القيم المرسلة الى السجلات بصيغة BCD كما ذكرت قبل قليل ... وهذه الدالة سنحتاجها في ضبط الوقت والتاريخ للـ ds1307 إما بإرسال قيم ابتدائية عن طريق الـ Pic أو عن طريق أزرار خارجية كما ذكرت في المشاركة السابقة
كود:
sub procedure Write_Time(dim address1 as short,dim data_wr as short)
    Soft_I2C_Start()
    Soft_I2C_Write(0xD0)
    Soft_I2C_Write(address1)
    Soft_I2C_Write(data_wr)
    Soft_I2C_Stop()
    end sub
الان لكي نرسل قيمة الى ds1307 نقوم بالخطوات التالية
1- نبدأ بروتوكول I2C
2- نحول القيمة المراد ارسالها الى نظام BCD
3- نستدعي دالة Write_Time وهذه الدالة تحتوي على عاملين (القيمة المراد إرسالها , عنوان السجل الذي نريد أن نرسل القيمة إليه )
مع ملاحظة أن عناوين السجلات تبدأ من الصفر الى سبعة
صفر = ثواني
واحد=دقائق
اثنان=ساعات
وهكذا
الكود التالي يرسل رقم 7 الى سجل الثواني
كود:
 Write_Time(0,7)
الآن الكود التالي لضبط الدقائق عن طريق زر خارجي مربوط على الطرف C1
كود:
if Button(PORTC, 1, 1, 1) then
oldstate = 255
end if
if oldstate and Button(PORTC, 1, 1, 0) then
 set1=min+1
 if set1>59 then
  set1=0
  end if
  set1=Dec2Bcd16(set1)
  Write_Time(1,set1)
  oldstate = 0
 end if
وهذا الكود لضبط الساعات عن طريق زر مربوط على الطرف C2
كود:
if Button(PORTC, 2, 1, 1) then
oldstate1 = 255
end if
if oldstate1 and Button(PORTC, 2, 1, 0) then
 set1=hr+1
 if set1>23 then
  set1=0
  end if
  set1=Dec2Bcd16(set1)
  Write_Time(2,set1)
  oldstate1 = 0
 end if
ملاحظة : يجب أن نعرف المتغيرات التالية oldstate1 , oldstate1 , set1

واعذروني على الاختصار فقد كتبت الشرح على عجالة لأنني رأيت أن الإخوة بحاجة اليه

والسلام عليكم ورحمة الله وبركاته
السلام عليكم ورحمة الله وبركاته
اولا : جزاك الله خير علي المجهود الرائع وبصراحة لم تقصر في طرح الموضوع
ثانيا : انت استخدمة امر Dec2Bcd16 وعلي ما اعتقد هذا امر خاص IC_7447 وهي لتفكيك التشفير 7seg وانا استخدم IC_4514 أو IC_74154 فما الامر الذي يستخدم لهذه IC أو ماذا افعل ؟
ثالثا : نحن بنتظار المشروع بالكامل
وبارك الله فيك وجعله في ميزان حسناتك

وسامحني علي ثقلي عليك بالاسئلة وبعض الطلب

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


صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 24-06-2010, 11:03 AM المشاركة 48   
افتراضي


أولا : أشكرك أخي على هذا التشجيع كما أشكر جميع الإخوة الذين شكروا وشجعوا وتابعوا الموضوع وأضافوا اليه ما يجعله متكاملا ... وأسأل الله تعالى أن يجزي الجميع خير الجزاء ويوفقنا لخدمة دينه الحنيف وإعانة إخواننا المسلمين إنه سميع مجيب ... ووأنا في خدمة الجميع

ثانيا : استخدام الأمر DEC2BCD16 شيء لابد منه لأن المتكاملة ds1307 تتعامل مع الأرقام بصيغة BCD وبالتالي عند الكتابة اليها يجب أن يكون الرقم المرسل بهذه الصيغة وإلا حصل خطأ ...
أما 7447 فلا علاقة لها بالأمر حيث أن المشروع النهائي يعتمد على طريقة multiplexing (التي أفادنا بها استذنا أحمد سمير فايد) باستخدام IC_4514

ثالثا : اليكم المشروع بالشكل النهائي وهو كما ذكرت يعتمد على طريقة المعادلات الفلكية ويعتمد في أسلوب العرض على multiplexing وفيه أربعة أزرار لضبط الدقائق والساعات واليوم والشهر

المشروع النهائي

وشكرا لجميع المتابعين
والسلام عليكم ورحمة الله وبركاته



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