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

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

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 25-07-2017, 02:28 AM المشاركة 1   
افتراضي جهاز استدعاء التمريض Twitter FaceBook Google+



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



كود البرنامج ..

كود:
   
     //  ENG/ABDALLA HYGAZY    //

     //  DATA 2017/7/24    //

      unsigned short mask(unsigned short num);
      unsigned int  SEGMENT1=0,SEGMENT2=0,SEGMENT3=0,SEGMENT4=0,SEGMENT5=0,SEGMENT6=0,SEGMENT7=0,SEGMENT8=0,SEGMENT9=0;
      unsigned int  X=0,X1=0,X2=0,X3=0;

      #define TEM  delay_ms(250);
  //............................//
      #define KEY_1  PORTD.F7
      #define KEY_2  PORTD.F6
      #define KEY_3  PORTD.F5
      #define KEY_4  PORTD.F4
      #define KEY_5  PORTC.F7
      #define KEY_6  PORTC.F6
      #define KEY_7  PORTC.F5
      #define KEY_8  PORTC.F4
      #define KEY_9  PORTD.F3
      #define KEY_10 PORTD.F2
 //............................//
      #define KEY_OFF1  PORTD.F2
      #define KEY_OFF2  PORTD.F1
      #define KEY_OFF3  PORTD.F0
      #define KEY_OFF4  PORTC.F3
      #define KEY_OFF5  PORTC.F2
      #define KEY_OFF6  PORTC.F1
      #define KEY_OFF7  PORTC.F0
      #define KEY_OFF8  PORTA.F5
      #define KEY_OFF9  PORTA.F3
 //............................//
      #define LED_1   PORTB.F7
      #define LED_2   PORTB.F6
      #define LED_3   PORTB.F5
      #define LED_4   PORTB.F4
      #define LED_5   PORTB.F3
      #define LED_6   PORTB.F2
      #define LED_7   PORTB.F1
      #define LED_8   PORTB.F0
      #define LED_9   PORTD.F7
      #define LED_10  PORTD.F6
 //............................//
     #define  DATA    PORTE.F0
     #define  CLOCK   PORTE.F1
     #define  LATCH   PORTE.F2
 //............................//
      #define BUZZER_OFF    PORTA.F0=0;
 //.................................................................................................//
        void InitTimer0(){

  }

      void Interrupt(){

      DATA=1; CLOCK=0; CLOCK=1; CLOCK=0; LATCH=0; LATCH=1; PORTB = mask(SEGMENT9); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT8); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT7); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT6); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT5); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT4); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT3); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT2); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT1); delay_ms(1);


       if(X==1|X==2|X==3|X==4|X==5|X==6|X==7|X==8|X==9){ X1=1; X2++;  }
       if( X2==50  ) {  PORTA.F0=0; delay_ms(1);  }
       if( X2==300 ) {  PORTA.F0=1; X3++;  X2=0; delay_ms(1);  }
       if( X3==35   ) {  X=0;PORTA.F0=0; X3=0; }

  //....................................
   INTCON=0b00100000;
   TMR0=0;

 }
       void main() {
       TRISA=40;   PORTA=0;  TRISB=0;
       TRISC=255; PORTC=0;  TRISD=255; PORTD=0;
       TRISE=0;   PORTE=0;         adcon1=0x06;
       OPTION_REG=0b10000101;
       INTCON=0b10100000;
       TMR0=217;
       

    while(1){
    if(  KEY_1==1  ) {  SEGMENT9=1;  X=1; X2=0; X3=0; }
    if(  KEY_2==1  ) {  SEGMENT8=2;  X=2; X2=0; X3=0;}
    if(  KEY_3==1  ) {  SEGMENT7=3;  X=3; X2=0; X3=0;}
    if(  KEY_4==1  ) {  SEGMENT6=4;  X=4; X2=0; X3=0;}
    if(  KEY_5==1  ) {  SEGMENT5=5;  X=5; X2=0; X3=0;}
    if(  KEY_6==1  ) {  SEGMENT4=6;  X=6; X2=0; X3=0;}
    if(  KEY_7==1  ) {  SEGMENT3=7;  X=7; X2=0; X3=0;}
    if(  KEY_8==1  ) {  SEGMENT2=8;  X=8; X2=0; X3=0;}
    if(  KEY_9==1  ) {  SEGMENT1=9;  X=9; X2=0; X3=0;}

    
    if(  KEY_OFF1==1  ) {  SEGMENT9=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF2==1  ) {  SEGMENT8=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF3==1  ) {  SEGMENT7=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF4==1  ) {  SEGMENT6=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF5==1  ) {  SEGMENT5=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF6==1  ) {  SEGMENT4=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF7==1  ) {  SEGMENT3=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF8==1  ) {  SEGMENT2=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    if(  KEY_OFF9==1  ) {  SEGMENT1=0;  X=0; X2=0; X3=0;  BUZZER_OFF  }
    
  }
}

 unsigned short mask(unsigned short num){
 switch (num){
 case 0 : return 0xC0;
 case 1 : return 0xF9;
 case 2 : return 0xA4;
 case 3 : return 0xB0;
 case 4 : return 0x99;
 case 5 : return 0x92;
 case 6 : return 0x82;
 case 7 : return 0xF8;
 case 8 : return 0x80;
 case 9 : return 0x90;

}
}


حمل المشروع من هنا http://www.mediafire.com/file/g81a6n...9%8A%D8%B6.rar
تحياتي للجميع


التعديل الأخير تم بواسطة : عبدالله حجازى بتاريخ 25-07-2017 الساعة 02:43 AM
احصائية الشكر والاعجاب - 4 شكراً, 0 عدم اعجاب, 4 اعجاب
شكراً F.Abdelaziz, رسول العراق, محمد إلياس, aladdin_2005 ( شكر العضو على هذه المشاركة )
اعجاب F.Abdelaziz, رسول العراق, محمد إلياس, aladdin_2005 ( أعجبته المشاركة )
اعلانات

رسول العراق
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2009
المشاركات: 90
نشاط [ رسول العراق ]
قوة السمعة:0
قديم 25-07-2017, 06:34 PM المشاركة 2   
افتراضي


بارك الله فيك

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً عبدالله حجازى ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 26-07-2017, 03:44 AM المشاركة 3   
افتراضي


وبارك فيك أخي العزيز ..
شكرا جزيلا ..

وأشكر استاذي ومهندسنا الغالي " فتح الله عبد العزيز " علي كل الجهد والمواضيع المهمه .. بارك الله فيك

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً رسول العراق ( شكر العضو على هذه المشاركة )
اعجاب محمد إلياس ( أعجبته المشاركة )

الصورة الرمزية aladdin_2005
aladdin_2005
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2004
الدولة: مصر ((الأسكندريه))
المشاركات: 1,246
نشاط [ aladdin_2005 ]
قوة السمعة:116
قديم 06-09-2017, 09:56 AM المشاركة 4   
افتراضي


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

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً عبدالله حجازى ( شكر العضو على هذه المشاركة )
اعجاب عبدالله حجازى ( أعجبته المشاركة )

الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 07-09-2017, 01:08 AM المشاركة 5   
افتراضي


بسم الله ماشاء الله بارك الله لك مشاركة وموضع عملي وجيد ارجوا من الله ان يجعله في سجل حسناتك
شكراا جزيلا مهندسنا الكبير " علاء " بارك الله فيك


borda
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 85
نشاط [ borda ]
قوة السمعة:0
قديم 25-09-2017, 09:08 AM المشاركة 6   
افتراضي


السلام عليكم اخي عبدالله
مشروع جميل وفية استفادات كثيرة حياك الله ورفع ذكرك بين الناس
اسمح لي بسؤال انا استخدم IC 74HC595 ولكن بطريقة مملة جدا فانا استخدم FOR LOOP & ARRAY فيسبح لتنفيذ امر يجب ان اسجله في ARRAY عن طريق مؤشر ثم اخراجه لتنفيذ الامر تجد ان في كل مرة ااكرر اكود لكن لاحظت عندك اخي الكريم ان الكود بسيط ما لفت انتباهي فا انا لكي اتحكم في 4 متكاملات فقط كتبت كود حوالي 800 تعليمة واكثر فارجو شرح طريقتك اخي بشئ من اليسر ولو تعرف المتكاملة 74HC165 التي تعمل عكسها تكون مدخل بدل مخرج اكون شاكر لك وتعم الفادة علي الجميع أخي الكريم


الصورة الرمزية عبدالله حجازى
عبدالله حجازى
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2011
الدولة: مصر .. محافظة دمياط
المشاركات: 1,688
نشاط [ عبدالله حجازى ]
قوة السمعة:111
قديم 29-09-2017, 03:22 AM المشاركة 7   
افتراضي


السلام عليكم اخي عبدالله
مشروع جميل وفية استفادات كثيرة حياك الله ورفع ذكرك بين الناس
اسمح لي بسؤال انا استخدم IC 74HC595 ولكن بطريقة مملة جدا فانا استخدم FOR LOOP & ARRAY فيسبح لتنفيذ امر يجب ان اسجله في ARRAY عن طريق مؤشر ثم اخراجه لتنفيذ الامر تجد ان في كل مرة ااكرر اكود لكن لاحظت عندك اخي الكريم ان الكود بسيط ما لفت انتباهي فا انا لكي اتحكم في 4 متكاملات فقط كتبت كود حوالي 800 تعليمة واكثر فارجو شرح طريقتك اخي بشئ من اليسر ولو تعرف المتكاملة 74HC165 التي تعمل عكسها تكون مدخل بدل مخرج اكون شاكر لك وتعم الفادة علي الجميع أخي الكريم

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


أخي الكريم يمكنك اختيار طريقتين .. الأولي هي استخدام مؤشر للعنوان .. والثانيه هي استخدام الدوال ..

أما بالنسبه للطريق اللتي استعملتها هي مؤشر للعنوان ..
لاحظ الكود ..

كود:
 # define
من خلال هذا تستطيع أن تضع أمامه عدد من الأوامر والتعليمات ,, وتسميتها بأي اسم تشاء بشرط لا يكون هذا الأسم هو اسم لأحد المتغيرات أو الدوال أو الرموز الرياضيه الموجوده في لغه البرمجه .. مثل > < + = / ^ & ! ( ) ~ "" l وهكذا من تعليمات تستخدم في العمليات الرياضيه .. في البرنامج ..

لاحظ هذا الكود ...

كود:
  #define  DATA    PORTE.F0
كود:
  #define  CLOCK   PORTE.F1
كود:
  #define  LATCH   PORTE.F2
لاحظ هه الأكواد تم وضع عنوان للكود وتسميته بال DATA وهذا الأمر هو
كود:
    PORTE.F0
ايذااا اذا استدعينا العنوان DATA في أي مكان في الكود سوف يذهب البرنامج لتنفيذ الأوامر اللتي تكون موجوده في هذا العنوان وهذا الأوامر هي PORTE.F0 ..

يمكنك أن تكتب ما تشاء من تعليمات وأوامر أمام هذا العنوان بشرط لايجوز وضع الدوال في هذه العناوين ..


نتكلم عن مسجل الإزاحه الشهير 74HC595 كما نعرف أنه يوجد ثلاث اطراف في هذه المتكامله نتحكم في طريقه ازاحه وعرض البيانات من خلال هذه الأطراف وهم .. DATA ... CLOCK .. LATCH ..

وهنا لكي ننظم سير البرنامج ونستطيع تسميه الأوامر بكلمات تسهل علينا ادارة البرنامج نستخدم العناوين لكي نستطيع فهم ومعرفه اسم الأمر ..

لاحظ هذا الكود بدون استخدام طريقه العناوين ..

كود:
      

PORTE.F0

PORTE.F1

PORTE.F2

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

ولكن لاحظ لو تم استخدام العناوين في إدارة الكود ...

كود:
   
DATA
CLOCK
LATCH
هنا اصبح الكود اسهل لأنك تعرف أن أمر داتا هو لأرسال البتات أو ارسال اوحايد والأصفار الي المتكامله مسجل الإزاحه .. وايضا CLOCK هي الساعه اللتي يتم عملها علي مسجل الإزاحه ..

سيكون الكود بهذه السهوله ..
لاحظ هذا الكود تم ارسال رقم واحد وهو يساوي 5 فولت لمسجل الإزاحه وتم ازاحه هذا الرقم الي أخر بت في مسجل الإزاحه ..

لاحظ سهوله الكود

كود:
DATA=1; CLOCK=0; CLOCK=1; CLOCK=0; LATCH=0; LATCH=1; PORTB = mask(SEGMENT9); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT8); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT7); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT6); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT5); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT4); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT3); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT2); delay_ms(1);
      DATA=0; CLOCK=0; CLOCK=1; LATCH=1; LATCH=0; LATCH=1; PORTB = mask(SEGMENT1); delay_ms(1);
بالنسبه لهذه المتكامله 74HC165 لم اتعامل معها من قبل .. وأن شاء الله سوفاقرأ الداتا شيت الخاصه بها وفهم طريقه التعامل معها ...

تحياتي لك


borda
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 85
نشاط [ borda ]
قوة السمعة:0
قديم 01-10-2017, 12:06 PM المشاركة 8   
افتراضي


السلام عليكم اخي اولا
ثانيا اود شكرك علي الرد اخي

إضافة رد

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

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

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


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

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