منتديات الالكترونيات العصرية  
yoursite.com page title .

استرجاع كلمة المرور طلب كود تفعيل العضوية تفعيل العضوية
العودة   منتديات الالكترونيات العصرية > منتدى الحاكمات الدقيقة Microcontroller > منتدى المتحكمات ميكرو بلغة السي MikroC > منتدى مشاريع البرمجه بلغة السي Mikro C

  #1  
قديم 09-09-2019, 12:59 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds1307 و

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

المرجع :

https://www.mediafire.com/file/hozzp...-7Seg.rar/file
رد مع اقتباس
  #2  
قديم 09-09-2019, 03:03 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130

مقدمة :
خطوات تنفيذ البرنامج (الخوارزمية) :

بعد إعدادات المنافذ والمقاطعة وتهيئة الناقل I2C :
1- كتابة (إرسال) الزمن والتاريخ الابتدائى StartTime إلى الشريحة DS1307 .
2- عمل حلقة غير منتهية وفيها يتم :
أ*- قراءة الزمن والتاريخ ReadI2C من الشريحة DS1307 ، البيانات بالثنائى المكود عشرى BCD .
ب*- تحويل البيانات من BCD إلى العشرى TransformTime .
ت*- تهيئة الساعة لتعمل بنظام 12 ساعة مع وضع AM-PM ، Hour12_AM_PM .
ث*- استخلاص قيم الآحاد والعشرات لكل بند والحصول على القيم السداسية عشرى الخاصة بكود السفن سيجمنت المقابل تمهيدا لوضعها على المنفذ PORTB لعرضها باستخدام المقاطعة DisplayTime .
ج*- عرض الزمن Time (Hour & Minute) باستخدام المقاطعة GotoTime .
ح*- القيام باختيار أحد المفاتيح واتخاذ القرار بناء على هذا الاختيار :
1- الضغط على المفتاح Button1 : يؤدى إلى
• عرض التاريخ GotoDate .
• الضغطة الثانية تعرض الثوانى GotoSecond .
• الضغطة الثالثة تعرض التاريخ مرة أخرى GotoTime .
2- الضغط على المفتاح Button2 يؤدى إلى :
• عرض الزمن GotoTime .
• الضغطة الثانية تؤدى إلى الدخول فى نظام تغيير الزمن والتاريخ حيث يتم البدء بوميض الساعة hour عندئذ يمكن بالستخدام المفتاح Button1 زيادة قيمة الساعة ، والضغطة الثانية تعرض وميض الدقائق وهكذا ، حتى نصل إلى السنة year وفى النهاية يتم حفظ التغييروالعودة إلى الوضع العادى بعرض الزمن . فى حالة الضغط على المفتاح Button3 أثناء إجراء التغيير يتم إلغاء التغيير والعودة إلى عرض الزمن من دون حفظ التغيير .
3- الضغط على المفتاح Button3 يؤدى إلى : عرض الزمن علاوة على العمل السابق .
4- الضغط على المفتاح Button4 يؤدى إلى عرض السنة .
رد مع اقتباس
  #3  
قديم 09-09-2019, 03:53 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130

أولا : الإعلان عن المتغيرات العمومية Global واستخدام موجه قبل المعالج #define فى تعريف بعض الثوابت بأسماء ذات معنى :

كود:
char second, minute, hour, day, date, month, year;
char second_d1, second_d2, minute_d1, minute_d2, hour_d1, hour_d2;
char date_d1, date_d2, month_d1, month_d2, year_d1, year_d2, year_d3, year_d4;
char convert, hold;
char seg[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; //Segment 0-9
//----Buttons-----------------------------//
#define Button1   PORTC.f0   //Show Date & Second, Date & Second ++
#define Button2   PORTC.f1   //Change Time & Date
#define Button3   PORTC.f2   //Show Time & No Save Time & Date
#define Button4   PORTC.f5   //Show Year
//----In Interrupt-----------------------------------//
#define GotoTime     0
#define GotoSecond   1
#define GotoDate     2
#define GotoYear     3
//#define GotoClear    4
//----Hour 12 (AM-PM)---------------------//
#define AM   PORTE.f0   //Hour12(AM)
#define PM   PORTE.f1   //Hour12(PM)


ملاحظات :
• جميع المتغيرات صغيرة الحجم ولذلك يتم إعلانها من نوع الحرف char ، كما يمكن استخدام النوع unsigned short فكلاهما بحجم واحد بايت أى مداه 0-255 .
• عبارة التوجيه #define لا تنتهى بفاصلة منقوطة .
رد مع اقتباس
  #4  
قديم 09-10-2019, 01:01 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130

ثانيا : الدالة الرئيسية main
أ*- فى البداية يتم :
• إعداد وتهيئة منافذ الميكروكونترولر : المنفذ PORTB مخارج ، والمنفذ PORTC مداخل ، والمنفذ PORTD مخارج ، والمنفذ PORTE مخارج .
• إعداد سجلات التحكم فى المقاطعة ، ففى سجل التحكم فى المقاطعة INTCON يتم تحديد بت المقاطعة بالمؤقت TMR0 ( البت BIT5 ) T0IE وكذلك تحديد set بت عموم المقاطعات (BIT7 ) GIE ، ومسح clear بت علم المقاطعة بالمؤقت TMR0 (BIT2) T0IF . وفى سجل الخيارات OPTION_REG يتم مسح الثلاثة بتات الأولى لاختيار معامل قسمة التردد prescaler بالقيمة 2 وبهذه الطريقة تحدث المقاطعة بسجل المؤقت TMR0 كل 255 ميكروثانية (باعتبار تردد الكريستال المستخدم 4 ميجا هرتز ) مضروبا فى 2 أى كل حوالى نصف ملى ثانية .عند حدوث المقاطعة يتم تحديد بت علم المقاطعة حيث يتم مسحها يدويا فى نهاية دالة المقاطعة تمهيدا للمقاطعة التالية .
• تهيئة الناقل I2C للإتصال بتردد 100 كيلو هرتز .
• وإرسال (كتابة) زمن وتاريخ ابتدائى إلى الشريحة DS1307 باستخدام الدالة StartTime.


كود:
    trisB = 0;   trisC = 0xff;   trisD = 0;   trisE = 0;
     option_reg = 0b10000000; intcon = 0b10100000;       	//Registers
     i2c1_init(100000);   					//Init I2C(IC DS1307)
     StartTime(0x00, 0x19, 0x09, 5, 0x05, 0x09, 0x19);   	//Start Time

دالة الكتابة إلى الشريحة DS1307 :


كود:
//----Start Time for IC DS1307------------------------------//
void StartTime(char second, char minute, char hour, char day, char date, char month, char year)
{
     i2c1_start();
     i2c1_wr(0xd0);
     i2c1_wr(0);

     i2c1_wr(second);
     i2c1_wr(minute);
     i2c1_wr(hour);
     i2c1_wr(day);
     i2c1_wr(date);
     i2c1_wr(month);
     i2c1_wr(year);
     i2c1_wr(0x10); // 1Hz
     i2c1_stop();
}


هذه الدالة وسائطها المتغيرات المحلية local من نوع الحرف second و minute و hourو day و dateو month و year .

خطوات كتابة الوقت والتاريخ
• إصدار حالة البداية i2c1_start() .
• إرسال (كتابة) عنوان الشريحة DS1307 وهو 0xd0 مع جعل البت الأدنى LSB بصفر لتحديد وضع الكتابة i2c1_wr(0xd0) .
• أرسال عنوان السجل المطلوب الكتابة إليه (على سبيل المثال 0x00 للكتابة إلى سجل الثوانى second ). يضبط (يعين) هذا النقل مؤشر السجل داخل الشريحة i2c1_wr(0) .

• إرسال قيمة الثواني بتنسيق BCD i2c1_wr(second) . باتباع إجراء الكتابة إلى سجل الثواني ، سيزداد المؤشر في RTC تلقائيًا. ستتم كتابة البيانات التالية في موقع 0x01 وهو سجل الدقيقة minute i2c1_wr(minute).
• الأرسال حتى يتم كتابة سجل العام year i2c1_wr(year) . السجل الأخير يمكن عن طريقة الحصول على نبضات خرج من الشريحة بتردد 1Hz i2c1_wr(0x10) .
• قم بإنهاء الاتصال بإصدار حالة التوقف i2c1_stop( .

التعديل الأخير تم بواسطة F.Abdelaziz ; 09-10-2019 الساعة 01:44 AM
رد مع اقتباس
  #5  
قديم 09-10-2019, 03:43 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130

ب*- الحلقة الغير منتهية :
يمكن تقسيم ما بداخل الحلقة الغير منتهية إلى قسمين
القسم الأول : قسم إنشاء الساعة ، والقسم الثانى : قسم مفاتيح التحكم .

القسم الأول : قسم إنشاء الساعة :


كود:
while(1)
     {
        ReadI2C();			//I2C Read for IC DS1307 in BCD format
        Hour12_AM_PM();		//Hour 12 (AM-PM)
        TransformTime();//Transform Time for IC DS1307 from BCD TO Decimal format
       DisplayTime(); // get ten and one part of each item then get 7 segment code value that applied to PORTB  
        convert = GotoTime;   //Goto Time in Interrupt , Show Time(Hour & Minute)


1- نبدأ بدالة قرأء بيانات الزمن والتاريخ ReadI2C() من الشريحة DS1307 من خلال الناقل I2C وتكون بالشكل الثنائى المكود عشرى BCD :

كود:
//----I2C Read for IC DS1307----------------//
void ReadI2C()
{
     i2c1_start();		// start condition

     i2c1_wr(0xd0);		// slave address with write mode
     i2c1_wr(0);		// address of seconds register written to the pointer

     i2c1_repeated_start();

     i2c1_wr(0xd1);		// slave address with read mode

     second = i2c1_rd(1);	// Read the slave with ACK
     minute = i2c1_rd(1);
     hour   = i2c1_rd(1);
     day    = i2c1_rd(1);
     date   = i2c1_rd(1);
     month  = i2c1_rd(1);
     year   = i2c1_rd(0);	// Read the slave with not-ACK
     
    i2c1_stop();			//i2c stop condition
}

خطوات قراءة الزمن والتاريخ :
• إصدار حالة البدء START . i2c1_start()
• إرسال عنوان الشريحة RTC مع جعل البت الأدنى بصفر (0xD0) للوصول إلى RTC في وضع الكتابة . i2c1_wr(0xd0)
• إرسال عنوان أول سجل وهو سجل الثوانى لتحديد وضع المؤشر . i2c1_wr(0)
• إعادة حالة البدء . i2c1_repeated_start()
• إرسال عنوان الشريحة RTC مع جعل البت الأدنى بواحد (0xD1) للوصول إلى RTC في وضع القراءة.
• الآن ستقوم RTC بإرسال البيانات من سجلاتها واحد تلو الآخر . يجب الانتباه إلى أنه سيتم إخراج البيانات في السجل الذي يتم تخزين عنوانه حاليًا في المؤشر. إذا احتاج المستخدم إلى قراءة سجل معين ، فيجب أولاً الوصول إلى RTC في وضع الكتابة ويجب كتابة عنوان السجل المطلوب على المؤشر. ثم مرة أخرى ، يجب معالجة RTC في وضع القراءة بعد إصدار إعادة حالة البدء
• يجب أن يعترف ACK الماستر بكل بايت يستقبله (يقرأه) لاستقبال البايت التالية ، متمثلا بالواحد كوسيط لدالة القراءة .
• بعد استلام آخر بايت فإن الماستر يجب أن يرسل إشارة NACK إلى RTC متمثلا بالصفر كوسيط لدالة القراءة.
• إنهاء الاتصالات بإصدار حالة STOP على الناقل I2C .

ملاحظات :
• جميع قيم سجلات الزمن والتاريخ تكون بتنسيق ثنائى مكود عشرى BCD ، لذلك تحتاج إلى تحويلها التنسيق العشرى / السداسى عشرى لبدء المعالجة .
• جميع المتغيرات المذكورة فى هذه الدالة هى متغيرات عمومية global أى يمكن الوصول إليها ومعالجتها من جميع الدوال .
رد مع اقتباس
  #6  
قديم 09-11-2019, 01:06 AM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130

2- دالة العمل بنظام 12 ساعة مع بيان AM/PM باستخدام ليدات :


كود:
 //----Hour 12 (AM-PM)----------------------//
void Hour12_AM_PM()
{
     if (hour < 0x12)//case 1 hour<12
     {
        if (hour == 0)
        {
           hour = 0x12;
           AM = 1;
        }
        else AM = 1;
     }
	 
     else if (hour == 0x12)//case 2 hour=12
     {
        PM = 1;
     }
	 
     else if (hour > 0x12 && hour < 0x20)//case 3 hour>12 && hour < 20
     {
        hour = hour - 0x12;
        PM = 1;
     }
	 
     else if (hour == 0x20)//case 4
     {
        hour = 0x08;
        PM = 1;
     }
	 
     else if (hour == 0x21)//case 5
     {
        hour = 0x09;
        PM = 1;
     }
	 
     else if (hour == 0x22)//case 6
     {
        hour = 0x10;
        PM = 1;
     }
	 
     else if (hour == 0x23)//case 7
     {
        hour = 0x11;
        PM = 1;
     }
	 
	 
}
رد مع اقتباس
  #7  
قديم 09-11-2019, 09:30 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130


3- دالة تحويل بيانات الزمن والتاريخ من ثنائى مكود عشرى BCD إلى عشرى لنتمكن من معالجتها

كود:
TransformTime();//Transform Time for IC DS1307 from BCD TO Decimal format

//----Transform Time for IC DS1307------------------//
void TransformTime()
{
     second =((second & 0xf0)>>4)* 10 +(second & 0x0f);
     minute =((minute & 0xf0)>>4)* 10 +(minute & 0x0f);
     hour   =((hour & 0xf0)>>4)* 10 +(hour & 0x0f);
     day    =((day & 0xf0)>>4)* 10 +(day & 0x0f);
     date   =((date & 0xf0)>>4)* 10 +(date & 0x0f);
     month  =((month & 0xf0)>>4)* 10 +(month & 0x0f);
     year   =((year & 0xf0)>>4)* 10 +(year & 0x0f);
}

تحويل من النظام BCD المكون من رقمين إلى النظام العشرى :
عند قراءة بيانات الزمن والتاريخ من الشريحة DS1307 تكون بالنظام BCD ويلزم تحويلها إلى النظام العشرى لاستخدامها بعد ذلك فى دالة العرض DisplayTime للحصول على القيم المناظرة لكود السفن سيجمنت .
المترجم ميكروسى برو يوفر دالة جاهزة للتحويل من BCD إلى عشرى وهى Bcd2Dec ولكن استخدامها يستهلك الذاكرة المتواضعة ، لذلك يفضل عدم استخدامها ولكن تستخدم طريقة التحويل المبينة أعلاه .
فى هذه الطريقة يتم التحويل على خطوات :
• للحصول على الرقم المناظر لرقم العشرات يتم إجراء عملية AND بين متغير البيانات ( وليكن second ) والقيمة 0xf0 للحصول على الاربع بتات (النبل) العلوية وإزاحة النتيجة 4 أماكن ثم الضرب فى 10 (second & 0xf0)>>4)* 10 .
• وللحصول على الرقم المناظر لرقم الآحاد يتم إجراء عملية AND بين متغير البيانات second والقيمة 0x0f للحصول على الأربع بتات السفلية .
• أخيرا يتم جمع رقم العشرات ورقم الآحاد .
ملحوظة : عند استخدام الدالة الجاهزة تكون دالة التحويل بالشكل التالى :

كود:
 //----Transform Time for IC DS1307------------------//
void TransformTime()
{
     second = Bcd2Dec(second);    
     minute = Bcd2Dec(minute); 
     hour   = Bcd2Dec(hour);
     day    = Bcd2Dec(day); 
     date   = Bcd2Dec(date); 
     month  = Bcd2Dec(month); 
     year   = Bcd2Dec(year); 
}
رد مع اقتباس
  #8  
قديم 09-11-2019, 09:34 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130


4- دالة العرض DisplayTime

كود:
 //-----Display Time------------------//
void DisplayTime()
{
    // char x;
     second_d1 = seg[second /10]; // Ten digit >> Segment code from seg[] array
     second_d2 = seg[second %10];// One digit >> Segment code from seg[] array

     minute_d1 = seg[minute /10];
     minute_d2 = seg[minute %10];

     hour_d1 = seg[hour /10];
     hour_d2 = seg[hour %10];

     date_d1 = seg[date /10];
     date_d2 = seg[date %10];

     month_d1 = seg[month /10];
     month_d2 = seg[month %10];

     year_d1 = seg[year /10];
     year_d2 = seg[year %10];
     year_d3 = seg[year /10];
     year_d4 = seg[year %10];
}

من هذه الدالة نحصل على كود السفن سيجمنت (الموجود فى المصفوفة seg ) لكل من وحدة رقم العشرات (_d1) ووحدة رقم الآحاد (_d2) .
فى الدالة السابقة حصلنا على عدد عشرى مكون من رقمين ، وفى هذه الدالة نستخلص رقم العشرات second /10 ورقم الآحاد second %10 وهو عبارة عن رقم عشرى من 0 إلى 9 . هذا الرقم نضعة مكان فهرس index المصفوفة seg ، وهى أيضا مرتبة من 0 إلى 9 وبالتالى نحصل على كود السفن سيجمنت المقابل للرقم seg[second /10] , seg[second %10 .
رد مع اقتباس
  #9  
قديم 09-11-2019, 09:41 PM
الصورة الرمزية F.Abdelaziz
F.Abdelaziz F.Abdelaziz غير متواجد حالياً
استاذ الكترونيان
 
تاريخ التسجيل: May 2009
المشاركات: 2,701
معدل تقييم المستوى: 22
F.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to beholdF.Abdelaziz is a splendid one to behold
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130


5- عرض الزمن ( الساعات والدقائق) convert = GotoTime على السفن سيجمنت

كود:
convert = GotoTime;   //Goto Time in Interrupt , Show Time(Hour & Minute)

كود:
if (convert == GotoTime)    //Show Time(Hour & Minute)
     {
        portd = 1;   portb = hour_d1;       delay_ms(1);
        portd = 2;   portb = hour_d2 + 128; delay_ms(1);
        portd = 4;   portb = minute_d1;     delay_ms(1);
        portd = 8;   portb = minute_d2;     delay_ms(1);
     }

فى الدالة الرئيسية نستدعى عبارة عرض الزمن :

كود:
convert = GotoTime;   //Goto Time in Interrupt , Show Time(Hour & Minute)
هذا الاستدعاء سوف يتم تنفيذه عند حدوث كل مقاطعة بالمؤقت TMR0 أى كل نصف ثانية حيث يتم الاستجابة لهذا الشرط وعرض كود السفن سيجمنت الخاص بالزمن بطريقة Multiplexing (الانتخاب من متعدد) حيث يتم عرض بيانات الزمن على المنفذ PORTB وانتخاب توصيل وحدات السفن سيجمنت بتوصيل مصعدها المشترك بالجهد الموجب من خلال المنفذ PORTD واحدة تلو الأخرى مع تأخير واحد ملى ثانية ويتكرر ذلك عند كل مقاطعة إى كل نصف ثانية .

وهكذا نكون قد وصلنا إلى نهاية القسم الأول وحصلنا على عرض للزمن (ساعة ودقيقة) .
رد مع اقتباس
  #10  
قديم 09-12-2019, 04:22 AM
zeyad eng zeyad eng غير متواجد حالياً
عضو جديد
 
تاريخ التسجيل: Sep 2019
المشاركات: 2
معدل تقييم المستوى: 0
zeyad eng is on a distinguished road
افتراضي رد: شرح ساعة وقت وتاريخ تستخدم pic16f877a و ds130

السلام عليكم استاذ عبدالعزيز كنت قد ارسلت اليك رساله استفسار عن شاشات الlcd وارجو منك ان تفيدني اذا استطعت وشكراً لك
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)

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

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



الساعة الآن 06:04 PM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
الحقوق محفوظة لمنتديات الاليكترونيات العصرية

Security team

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77