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

مشاهدة نتائج الإستفتاء: هل ترغب فى تكملة هذا الموضوع وتراه مهما أم ننتقل لموضوع آخر أكثر أهمية ؟
نعم ارغب فى البدء فى هذا الموضوع وأراه مهما ! 26 96.30%
لا أرى أهمية فهناك ما يكفى وأرغب فى الإنتقال لموضوع آخر بدلا من هذا ! 1 3.70%
المصوتون: 27. أنت لم تصوت في هذا الإستفتاء

   

الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 26-09-2013, 01:48 AM المشاركة 17   
افتراضي



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

اعلانات

الصورة الرمزية nazar sss
nazar sss
:: مهندس متميز ::
تاريخ التسجيل: Mar 2008
الدولة: lraq / Salah al-Din
المشاركات: 307
نشاط [ nazar sss ]
قوة السمعة:
قديم 26-09-2013, 07:13 AM المشاركة 18   
افتراضي


جزاك الله خيرا وزادك علما


التعديل الأخير تم بواسطة : nazar sss بتاريخ 26-09-2013 الساعة 07:20 AM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )

الصورة الرمزية nazar sss
nazar sss
:: مهندس متميز ::
تاريخ التسجيل: Mar 2008
الدولة: lraq / Salah al-Din
المشاركات: 307
نشاط [ nazar sss ]
قوة السمعة:
قديم 26-09-2013, 07:19 AM المشاركة 19   
افتراضي


هل الدايودات المستخدمة هي عادية مثل التي في دوائر التوحيد


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 27-09-2013, 05:08 PM المشاركة 20   
افتراضي


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


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 27-09-2013, 10:56 PM المشاركة 21   
افتراضي


السلام عليكم

مرحبا بكم من جديد

بعد أن عرفنا مقدمة عن عملية الربط بين المتحكمات وطريقتها نقوم بإلقاء الضوء بشكل أعمق ،


- داخل المتحكم الفرعي حلقة لا يدخل إليها البرنامج إلا فى حالة استقبال الكود 15 متبوعا برقم هذا المتحكم الفرعي ، وإلا فلن يدخل البرنامج داخل هذه الحلقة ولن يهتم بهذا ،

- بعدما يتحقق هذا الشرط فإن هذا المتحكم الفرعي هو يكون هو المقصود من قِبل المتحكم الرئيسي فيدخل البرنامج على الفور للحلقة ويبدأ فى إرسال الطلبات بالترتيب ، فيبدأ كالتالى :-

1- إرسال الخانة اليسرى للقيمة المطلوب إرسالها سواء كانت عشرات أو مئات أو آلاف ، حسب البرنامج وحسب المعطيات .

2- ينتظر المتحكم الرئيسي الإجابة حتى يستلم هذه القيمة ثم يقطع إشارة الطلب فلا يصل من المتحكم الرئيسي للمتحكم الفرعي أى إشارات وينتظر المتحكم الرئيسي حتى يتوقف المتحكم الفرعي هو الآخر عن عملية ارسال الجواب المطلوب .

هكذا تمت عملية نقل الخانة الأولى ، وقبل التكملة يجب أن نذكر أن كل خانة نريد إرسالها يجب أن يكون مضاف إليها واحد صحيح فمثلا الرقم 4 سيكون 5 ، والرقم 8 سيكون 9 والرقم 0 سيكون واحد والرقم 9 سيكون 10 وبعد ذلك عندما يستقبل المتحكم الرئيسي هذا الرقم سيقوم بطرح واحد من الرقم الذى استقبله ليحصل على القيمة الصحيحة ، والهدف من هذه العملية هو تفادى الأخطاء لأن المتحكم إذا أراد نقل احدى الخانات وكانت صفر فإن المتحكم الآخر لن يستقبل شئ وسيظل منتظر دون اشارات ،

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

ملاحظة :-
البيانات المراد نقلها يجب أن نقوم بتجزئتها إلى خانات فمثلا الرقم 345 سنقوم بتجزئته خانات فيتم ارسال كل خانة على حدة فنبدأ بـ 3 ثم 4 ثم 5 وهكذا ، وعلى المقابل يقوم المتحكم الرئيسي بتجميع هذه الخانات ،

أترككم مع ملفات البرنامج ثم نكمل الشرح ، وأنتظر منكم أى استفسارات ،



والآن مع البرنامج الرئيسي للمتحكم الرئيسي

include"LCD_pin.c" // pin for lcd#
include "cpu_unit.h" // unit file#

استدعاء الملف الفرعي لأطراف الشاشة
استدعاء الملف الفرعي لبرنامج المتحكم الرئيسي
; unsigned Num
; void main(){ trisa.f0=1
;PORTOUT=0 ; adcon0=0b00; option_reg=0x84
; trisout= 0x0f

Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); // lcd setting
Lcd_Out(1,1,"P1:"); //text for pot 1
Lcd_Out(1,9,"P2:"); //text for pot 2
while (1){ // start loop
send_addres( 10 ); // send to slave pic
Lcd_chr( 1,4, 48+ var[1] ); // out num
Lcd_chr( 1,5, 48+ var[2] ); // out num
Lcd_chr( 1,6, 48+ var[4] ); // out num

send_addres( 11 ); // send to slave pic
Lcd_chr( 1,12, 48+ var[1] ); // out num
Lcd_chr( 1,13, 48+ var[2] ); // out num
Lcd_chr( 1,14, 48+ var[4] ); // out num


delay_ms(1); // delay 1 ms
{
{


حمل الملفات من هنا

يتبع ،


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 27-09-2013, 11:11 PM المشاركة 22   
افتراضي


الملف الفرعي للمتحكم الرئيسي

كود:
/****************************
// #include "CPU_unit.h"


************************/
// SET PORTB FOR COMM .
#define PORTOUT portb
#define trisout trisb
//***********************

#define RP0 PORTOUT.f0
#define RP1 PORTOUT.f1
#define RP2 PORTOUT.f2
#define RP3 PORTOUT.f3
#define RP4 PORTOUT.f4
#define RP5 PORTOUT.f5
#define RP6 PORTOUT.f6
#define RP7 PORTOUT.f7

char Outda , Inda , Rep ;
char var[8];

//-------------------------------
void redata(){ delay_ms(1); Inda = 0; Inda.f0 = RP0 ; Inda.f1 = RP1 ; Inda.f2 = RP2 ; Inda.f3 = RP3 ; }

void send_addres( char SlvAdrs ){   // slave address , unit of data No.
  do{  
   PORTOUT = 0xf0;
   delay_ms(2);
   PORTOUT = 0;
   delay_ms(2);
    Outda= slvadrs <<4 ;
   PORTOUT = Outda ;
   delay_ms(2);
   
         // wait to comeing signal same address .
    redata();
  }while( Inda != slvadrs );
  PORTOUT = 0 ;
  do{ redata(); }while( Inda != 0);       // wait for stop coming signal
    Rep=1;
    while( Rep <5){
    Outda = Rep <<4;
    PORTOUT = Outda ;
    do{ redata(); }while( Inda == 0 );        // wait to comeing signal vr1 .
    var[ Rep ]= Inda-1 ;
    PORTOUT=0;
    do{ redata(); }while( Inda != 0);       // wait for stop coming signal
    Rep=rep+rep;
    }

}

void call(){
   Rep=1;
    while( Rep <5){
    Outda = Rep <<4;
    PORTOUT = Outda ;
    do{ redata(); }while( Inda == 0 );       // wait to comeing signal vr1 .
    var[ Rep ]= Inda-1 ;
    PORTOUT=0;
    do{  redata(); }while( Inda != 0);        // wait for stop coming signal
    Rep=rep+rep;
    }  
}


التعديل الأخير تم بواسطة : wleed antar بتاريخ 27-09-2013 الساعة 11:40 PM

الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 27-09-2013, 11:13 PM المشاركة 23   
افتراضي


البرنامج الأساسي للمتحكم الرئيسي

كود:

#include"LCD_pin.c"
#include"CPU_unit.h"


  unsigned Num ;
void main() {    trisa.f0=1;
   PORTOUT=0;   adcon0=0b00 ; option_reg=0x84;
   trisout = 0x0f;
   Lcd_Init();  Lcd_Cmd(_LCD_CLEAR);  Lcd_Cmd(_LCD_CURSOR_OFF);
 
    Lcd_Out(1,1,"P1:");
    Lcd_Out(1,9,"P2:");
 while(1){


   send_addres( 10 );

   lcd_chr( 1,4, 48+ var[1] );
   lcd_chr( 1,5, 48+ var[2] );
   lcd_chr( 1,6, 48+ var[4] );

   send_addres( 11 );
  
   lcd_chr( 1,12, 48+ var[1] );
   lcd_chr( 1,13, 48+ var[2] );
   lcd_chr( 1,14, 48+ var[4] );

   delay_ms(1);

 }

}


التعديل الأخير تم بواسطة : wleed antar بتاريخ 27-09-2013 الساعة 11:24 PM

الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 28-09-2013, 07:05 PM المشاركة 24   
افتراضي


الملف الرئيسي للمتحكم الفرعي رقم 10

كود:
#define SlvAdrs 10  // code for slave device.
#include "U_unit.h"

void main() {
  trisa= 0x07;
  portb=0;
  trisb=0xf0;
   adcon0=0b00 ; option_reg=0x80;  ADC_Init();
  while(1){
     send_data();
  }
}

وهذا الملف الرئيسي للمتحكم الفرعي رقم 11 وضعته هنا للمقارنة
كود:
#define SlvAdrs 11  // code for slave device.
#include "U_unit.h"

void main() {
  trisa= 0x07;
  portb=0;
  trisb=0xf0;
   adcon0=0b00 ; option_reg=0x80;  ADC_Init();
  while(1){
     send_data();
  }
}




التعديل الأخير تم بواسطة : wleed antar بتاريخ 28-09-2013 الساعة 07:31 PM


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