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

   

samir_08_88
:: مهندس ::
تاريخ التسجيل: Jun 2009
المشاركات: 40
نشاط [ samir_08_88 ]
قوة السمعة:
قديم 30-10-2010, 09:13 PM المشاركة 41   
افتراضي



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

اعلانات

الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:
قديم 31-10-2010, 12:41 AM المشاركة 42   
افتراضي


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

البرمجة سهلة . لكن نحتاج الى فهم هذه الساعة اولا .
في البداية نعملها باستخدام عبارة delay و لما نفهم الساعة يصير خير .
هو الاخ سامي اين ؟
مازلت على الخط .بالنسبة لل ds1307 فانا استخدم لغة ccs وهو يحتوي على مكتبة جاهزة له .

طيب اعملها بالدلاي وان شاء الله نتحدث عن كيفية التعامل مع ال ds بعدها

خواني
هل اجد عندكم برنامج تحكم في البيك باللغة السي للتحكم في اشارة المرور
اذا كنت تقصد السي وليس الميكروسي فاليك هذا الملف

http://filaty.com/s/qFB

ودمتم في رعاية الله وحفظه

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

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 9,848
نشاط [ حيدر علاج حسن ]
قوة السمعة:
قديم 31-10-2010, 08:21 PM المشاركة 43   
افتراضي


هذا كود سريع من اجل التجربة . بعدها يمكن التحكم بالزمن من خلال الديلي او الساعة .

كود:
    int i=0,j=0;
void main(){
trisa=0;trisb=0;porta=0;portb=0;
loop:
porta=0b01100;portb=0b00100100;delay_ms(5000);delay_ms(5000);
porta=0b01010;delay_ms(1000);delay_ms(1000);
porta=0b00001;portb=0b00100110;delay_ms(5000);delay_ms(5000);
portb=0b00100101;delay_ms(1000);delay_ms(1000);
porta=0b01001;portb=0b00110000;delay_ms(5000);delay_ms(5000);
portb=0b00101000;delay_ms(1000);delay_ms(1000);
portb=0b10000100;delay_ms(5000);delay_ms(5000);
portb=0b01000100;delay_ms(1000);delay_ms(1000);
porta=0;portb=0;
for(i=0;i<34;i++)delay_ms(1000);
goto loop;
}

طريقة التوصيل على البروتوس


الملفات كاملة للتحميل


التعديل الأخير تم بواسطة : حيدر علاج حسن بتاريخ 31-10-2010 الساعة 08:27 PM

ahmeedzeki
:: مهندس ::
تاريخ التسجيل: Oct 2010
المشاركات: 34
نشاط [ ahmeedzeki ]
قوة السمعة:
قديم 01-11-2010, 11:46 PM المشاركة 44   
افتراضي


هل هناك احد جرب تشغيل ds1307 على البروتوس v 7.7 sp2 لان حاولت كثيرا و لكن بدون نتيجة و هذا ملف المحاكاه مع البرنامج و رجاءا من يكشف الخطأ يعلمنا و لكم الاجر و الثواب
http://www.4shared.com/file/p6LPVJ81/yyy.html


الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:
قديم 02-11-2010, 12:23 AM المشاركة 45   
افتراضي


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

تفضل هذا الكود للتعامل مع ds1307
كود:
////////////////////////////////////////////////////////////////////////////////
///                               DS1307.C                                   ///
///                     Driver for Real Time Clock                           ///
///                                                                          ///
/// ds1307_init() - Enable oscillator without clearing the seconds register -///
///                 used when PIC loses power and DS1307 run from 3V BAT     ///
///               - Disable squarewave output                                ///
///                                                                          ///
/// ds1307_set_date_time(day,mth,year,dow,hour,min,sec)  Set the date/time   ///
///                                                                          ///
/// ds1307_get_date(day,mth,year,dow)               Get the date             ///
///                                                                          ///
/// ds1307_get_time(hr,min,sec)                     Get the time             ///
///                                                                          ///
////////////////////////////////////////////////////////////////////////////////

#define RTC_SDA  PIN_C4
#define RTC_SCL  PIN_C3

#use i2c(master, sda=RTC_SDA, scl=RTC_SCL)

BYTE bin2bcd(BYTE binary_value);
BYTE bcd2bin(BYTE bcd_value);

void ds1307_init(void)
{
   BYTE seconds = 0;

   i2c_start();
   i2c_write(0xD0);      // WR to RTC
   i2c_write(0x00);      // REG 0
   i2c_start();
   i2c_write(0xD1);      // RD from RTC
   seconds = bcd2bin(i2c_read(0)); // Read current "seconds" in DS1307
   i2c_stop();
   seconds &= 0x7F;

   delay_us(3);

   i2c_start();
   i2c_write(0xD0);      // WR to RTC
   i2c_write(0x00);      // REG 0
   i2c_write(bin2bcd(seconds));     // Start oscillator with current "seconds value
   i2c_start();
   i2c_write(0xD0);      // WR to RTC
   i2c_write(0x07);      // Control Register
   i2c_write(0x80);     // Disable squarewave output pin
   i2c_stop();

}

void ds1307_set_date_time(BYTE day, BYTE mth, BYTE year, BYTE dow, BYTE hr, BYTE min, BYTE sec)
{
  sec &= 0x7F;
  hr &= 0x3F;

  i2c_start();
  i2c_write(0xD0);            // I2C write address
  i2c_write(0x00);            // Start at REG 0 - Seconds
  i2c_write(bin2bcd(sec));      // REG 0
  i2c_write(bin2bcd(min));      // REG 1
  i2c_write(bin2bcd(hr));      // REG 2
  i2c_write(bin2bcd(dow));      // REG 3
  i2c_write(bin2bcd(day));      // REG 4
  i2c_write(bin2bcd(mth));      // REG 5
  i2c_write(bin2bcd(year));      // REG 6
  i2c_write(0x80);            // REG 7 - Disable squarewave output pin
  i2c_stop();
}

void ds1307_get_date(BYTE &day, BYTE &mth, BYTE &year, BYTE &dow)
{
  i2c_start();
  i2c_write(0xD0);
  i2c_write(0x03);            // Start at REG 3 - Day of week
  i2c_start();
  i2c_write(0xD1);
  dow  = bcd2bin(i2c_read() & 0x7f);   // REG 3
  day  = bcd2bin(i2c_read() & 0x3f);   // REG 4
  mth  = bcd2bin(i2c_read() & 0x1f);   // REG 5
  year = bcd2bin(i2c_read(0));            // REG 6
  i2c_stop();
}

void ds1307_get_time(BYTE &hr, BYTE &min, BYTE &sec)
{
  i2c_start();
  i2c_write(0xD0);
  i2c_write(0x00);            // Start at REG 0 - Seconds
  i2c_start();
  i2c_write(0xD1);
  sec = bcd2bin(i2c_read() & 0x7f);
  min = bcd2bin(i2c_read() & 0x7f);
  hr  = bcd2bin(i2c_read(0) & 0x3f);
  i2c_stop();

}

BYTE bin2bcd(BYTE binary_value)
{
  BYTE temp;
  BYTE retval;

  temp = binary_value;
  retval = 0;

  while(1)
  {
    // Get the tens digit by doing multiple subtraction
    // of 10 from the binary value.
    if(temp >= 10)
    {
      temp -= 10;
      retval += 0x10;
    }
    else // Get the ones digit by adding the remainder.
    {
      retval += temp;
      break;
    }
  }

  return(retval);
}


// Input range - 00 to 99.
BYTE bcd2bin(BYTE bcd_value)
{
  BYTE temp;

  temp = bcd_value;
  // Shifting upper digit right by 1 is same as multiplying by 8.
  temp >>= 1;
  // Isolate the bits for the upper digit.
  temp &= 0x78;

  // Now return: (Tens * 8) + (Tens * 2) + Ones

  return(temp + (temp >> 2) + (bcd_value & 0x0f));
}


لكن لغة البرمجة بال ccs c

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

ودمتم في رعاية الله وحفظه


الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:
قديم 02-11-2010, 12:25 AM المشاركة 46   
افتراضي


وهذه الصورة توضح طريقة الربط مع المايكروكونترولر



samir_08_88
:: مهندس ::
تاريخ التسجيل: Jun 2009
المشاركات: 40
نشاط [ samir_08_88 ]
قوة السمعة:
قديم 02-11-2010, 01:33 AM المشاركة 47   
افتراضي


السلام عليكم
هل اجد عندكم كتاب يتكلم عن البيك 16f84
مقدمة عن البيك+ مميزاته +منافذه+ ذاكرةه....


الصورة الرمزية SAMI-ALG
SAMI-ALG
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
الدولة: الجزائر
المشاركات: 199
نشاط [ SAMI-ALG ]
قوة السمعة:
قديم 02-11-2010, 01:57 AM المشاركة 48   
افتراضي


لدي كتاب في هذا الشأن اعتبره الافضل من ناحية الشرح وتبسيط الامور كما انه يشرح طريقة البرمجة بالاسمبلور

فقط هو باللغة الفرنسية ان كانت تساعدك ارفعه لك ان شاء الله



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