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

   

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,315
نشاط [ ناصراحمد2 ]
قوة السمعة:
قديم 03-07-2014, 05:05 PM المشاركة 9   
angry



السلام عليكم



الحمد لله اشتغلت if معى ولكن لاحظت شئ غريب انها تعمل اذا فقط قمت بوضع (>--< ) ولكن عند وضع (=) او (==) لا تعمل وتسبب تعطل البرنامج بالكامل لا اعرف السبب عموما سوف اتعلم المزيد عنها والحمد لله قمت بعمل البرنامج بنجاح وهذه صورته

http://im89.gulfup.com/DE5iHK.jpg

يقوم بزياده 1 الى السفن سجمنت الثانيه عند وصول الاولى الى رقم 9
قد يبدوا بسيط وتافه للمحترفين ولكنه بالنسبة لىكنززززز
هههههههههه

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

كود:
void main() {
  int x [9] ={ 6,91, 79,102, 109,125,7, 127,111 };
  int i =0;
  int y =0;

  //------------------------------
   trisB=0;     portD=0;   trisD=0;      portB=0;

    while(1){
     portb= x[i];
     delay_ms(500);
     i++;
     if (i > 8) {
         portd=x[y] ;
         delay_ms(500);
         y++;
      i = 0;
      
     }
     
    }






   
   
}

اتمنا ان يستفيد الجميع
والسلام عليكم
السلام عليكم ورحمة الله وبركاتة
ماشاء الله
تنسيق الكود افضل منى الف مرة
انا دايما اى برنامج بتشعر انك داخل عشوائيات هههههههههههه
===============
قمت بتجربة الكود على برتوس
ويعمل بشكل جيد
سواء كان علامة < او ==
وفى حالة == يبدا العداد رقم 2 عند وصول العداد 1الى 8
وتغيير العدد 8== الى ==9 يبدا العداد الثانى عند وصول الاول الى 9
=====================
المشكلة التى وجدتها هى ان العداد رقم 1 يعمل بشكل مستمر ودون توقف
اما الثانى فيقوم بدورة عددية حتى 9
ولا يبدا من جديد ؟
==================
عموما انا عن نفسى لم اتعامل مع السفن سيجمنت من قبل
وسوف تجد الكثير من الموضوعات هنا بالقرية بها مشاريع سفن سيجمت
اهم شىء هنا هو موضوع ال ==
وكل عام وانتم بخير
ورمضان كريم


التعديل الأخير تم بواسطة : ناصراحمد2 بتاريخ 03-07-2014 الساعة 05:23 PM
اعلانات

Ahmed Hamam
:: مهندس ::
تاريخ التسجيل: Jun 2014
المشاركات: 35
نشاط [ Ahmed Hamam ]
قوة السمعة:
قديم 06-07-2014, 11:31 AM المشاركة 10   
افتراضي


السلام عليكم ورحمة الله وبركاتة
ماشاء الله
تنسيق الكود افضل منى الف مرة
انا دايما اى برنامج بتشعر انك داخل عشوائيات هههههههههههه
===============
قمت بتجربة الكود على برتوس
ويعمل بشكل جيد
سواء كان علامة < او ==
وفى حالة == يبدا العداد رقم 2 عند وصول العداد 1الى 8
وتغيير العدد 8== الى ==9 يبدا العداد الثانى عند وصول الاول الى 9
=====================
المشكلة التى وجدتها هى ان العداد رقم 1 يعمل بشكل مستمر ودون توقف
اما الثانى فيقوم بدورة عددية حتى 9
ولا يبدا من جديد ؟
==================
عموما انا عن نفسى لم اتعامل مع السفن سيجمنت من قبل
وسوف تجد الكثير من الموضوعات هنا بالقرية بها مشاريع سفن سيجمت
اهم شىء هنا هو موضوع ال ==
وكل عام وانتم بخير
ورمضان كريم





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

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

والسلام عليكم(^_^)







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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-07-2014, 05:38 PM المشاركة 11   
افتراضي


السلام عليكم
هذا مثال بسيط عن سفن سكمنت
http://up.top4top.net/downloadf-top4...c0b51-rar.html

الكود // الاول
كود:
int i;
int h;


void main()
 {
 trisa=0;
 porta=0;
 adcon1=6;
 TRISB=0;
 PORTB=0;
 trisd=0;
 portd=0;
 i=0;
 h=0;



     while(1){

              for(h=0;h<60;h++){
                                for(i=0;i<60;i++){
                                                  portb=dec2bcd(i);
                                                  porta.f0=~porta.f0;
                                                  delay_ms(1000);
                                                 }

            portd=dec2bcd(h);


         }

 
 }
}
=========================================
الكود 2
كود:
int i,j,k ;
char dat[] = {192, 249,164,176,153,146,130,248,128,144};
sbit en1_7sec at RB0_bit;
sbit en2_7sec at RB1_bit;
#define segment     portd
void show_7seg(char kk);

void main() 
{
 ADCON1=0x0F;// disable anloge
trisd=0;
trisb=0;
segment=0xFF;// off 7seg
en1_7sec=0; //disenable 7seg
en2_7sec=0;//disenable 7seg
 while(1){
         for(i=0;i<=99;i++)show_7seg(i);
        }
}
//****************************************************
void show_7seg( char kk)
{
  for(j=0;j<70;j++)// wait
                      {
                       en1_7sec=1; en2_7sec=0; //enable 7seg first and disable 7seg second ,
                       segment = dat[kk/10];
                       delay_ms(5);
                       segment=0xFF; // off 7 seg
                       en1_7sec=0; en2_7sec=1;  //enable 7seg second and disable 7seg first ,
                       segment = dat[kk%10];
                       delay_ms(5);
                       segment=0xFF;//off 7 seg
                      }
}


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-07-2014, 06:05 PM المشاركة 12   
افتراضي


وهذا عداد أخر
http://up.top4top.net/downloadf-top4...d9401-rar.html

حيث يعد لغايه 9999 ويتم خزن قراءه في ايبروم بحيث من تنطفئ الكهرباء فعند تشغيله مره اخرى يكمل العد من اخر رقم وصل اليه

الكود
كود:
#define segment         portb
char y=0,kk=0 ,old1,old2;
int x=0 , old=0;
 //char segment[]={192,249,164,176,153,146,130,248,128,144};
char seg[]={63,6,91,79,102,109,125,7,127,111};
void show_number();
void main()

{
 cmcon=7;// disable analoge

 trisb=0;
 trisa=0;

 if( eeprom_read(2)!=0xff ) {
                              old=(eeprom_read(2)*100)+EEPROM_Read(3) ;
                             }
  delay_ms(50);
  while(1)
    {                                                                                                                                                   //
      for( x=old ;x<=9999;x++)

           {
                show_number();
                old1=x/100;
                // store value in eeprom
                EEPROM_Write(2,old1); // x=1234/100 =12.34=12
                EEPROM_Write(3,x%100); //%100 =34
           }

     old=0;
    }
}

void show_number()
{
for( y=0; y<50;y++) // control of time by choising max value for y ;
    {
     porta.f0=0; porta.f1=1;porta.f2=1; porta.f3=1;
     segment=seg[x/1000];
     delay_ms(2);
     segment=0;
     //***********************************************//
     porta.f0=1; porta.f1=0;porta.f2=1; porta.f3=1;
     segment=seg[x%1000/100];
     delay_ms(2);
     segment=0;
    //********************************************//
    porta.f0=1; porta.f1=1;porta.f2=0; porta.f3=1;
     segment=seg[x%1000%100/10];
     delay_ms(2);
     segment=0;
     //******************************//
     porta.f0=1; porta.f1=1;porta.f2=1; porta.f3=0;
     segment=seg[x%1000%100%10];
    delay_ms(2);
    segment=0;

    }


}
كما يمكن التعديل على داله show_number
كود:
void show_number()
{
for( y=0; y<50;y++) // control of time by choising max value for y ;
    {
     porta.f0=0; porta.f1=1;porta.f2=1; porta.f3=1;
     segment=seg[x/1000];
     delay_ms(2);
     segment=0;
     //***********************************************//
     porta.f0=1; porta.f1=0;porta.f2=1; porta.f3=1;
     segment=seg[(x/100)%10];
     delay_ms(2);
     segment=0;
    //********************************************//
    porta.f0=1; porta.f1=1;porta.f2=0; porta.f3=1;
     segment=seg[(x/10)%10];
     delay_ms(2);
     segment=0;
     //******************************//
     porta.f0=1; porta.f1=1;porta.f2=1; porta.f3=0;
     segment=seg[x%10];
    delay_ms(2);
    segment=0;

    }


}
حيث التعديل في كيفيه في كود بلون احمر
تحياتي


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 06-07-2014 الساعة 06:14 PM

Ahmed Hamam
:: مهندس ::
تاريخ التسجيل: Jun 2014
المشاركات: 35
نشاط [ Ahmed Hamam ]
قوة السمعة:
قديم 07-07-2014, 07:31 AM المشاركة 13   
افتراضي


وهذا عداد أخر
http://up.top4top.net/downloadf-top4...d9401-rar.html

حيث يعد لغايه 9999 ويتم خزن قراءه في ايبروم بحيث من تنطفئ الكهرباء فعند تشغيله مره اخرى يكمل العد من اخر رقم وصل اليه

الكود
كود:
#define segment         portb
char y=0,kk=0 ,old1,old2;
int x=0 , old=0;
 //char segment[]={192,249,164,176,153,146,130,248,128,144};
char seg[]={63,6,91,79,102,109,125,7,127,111};
void show_number();
void main()

{
 cmcon=7;// disable analoge

 trisb=0;
 trisa=0;

 if( eeprom_read(2)!=0xff ) {
                              old=(eeprom_read(2)*100)+EEPROM_Read(3) ;
                             }
  delay_ms(50);
  while(1)
    {                                                                                                                                                   //
      for( x=old ;x<=9999;x++)

           {
                show_number();
                old1=x/100;
                // store value in eeprom
                EEPROM_Write(2,old1); // x=1234/100 =12.34=12
                EEPROM_Write(3,x%100); //%100 =34
           }

     old=0;
    }
}

void show_number()
{
for( y=0; y<50;y++) // control of time by choising max value for y ;
    {
     porta.f0=0; porta.f1=1;porta.f2=1; porta.f3=1;
     segment=seg[x/1000];
     delay_ms(2);
     segment=0;
     //***********************************************//
     porta.f0=1; porta.f1=0;porta.f2=1; porta.f3=1;
     segment=seg[x%1000/100];
     delay_ms(2);
     segment=0;
    //********************************************//
    porta.f0=1; porta.f1=1;porta.f2=0; porta.f3=1;
     segment=seg[x%1000%100/10];
     delay_ms(2);
     segment=0;
     //******************************//
     porta.f0=1; porta.f1=1;porta.f2=1; porta.f3=0;
     segment=seg[x%1000%100%10];
    delay_ms(2);
    segment=0;

    }


}
كما يمكن التعديل على داله show_number
كود:
void show_number()
{
for( y=0; y<50;y++) // control of time by choising max value for y ;
    {
     porta.f0=0; porta.f1=1;porta.f2=1; porta.f3=1;
     segment=seg[x/1000];
     delay_ms(2);
     segment=0;
     //***********************************************//
     porta.f0=1; porta.f1=0;porta.f2=1; porta.f3=1;
     segment=seg[(x/100)%10];
     delay_ms(2);
     segment=0;
    //********************************************//
    porta.f0=1; porta.f1=1;porta.f2=0; porta.f3=1;
     segment=seg[(x/10)%10];
     delay_ms(2);
     segment=0;
     //******************************//
     porta.f0=1; porta.f1=1;porta.f2=1; porta.f3=0;
     segment=seg[x%10];
    delay_ms(2);
    segment=0;

    }


}
حيث التعديل في كيفيه في كود بلون احمر
تحياتي


السلام عليكم
شكرا للاستاذ
حسن هادي محمود

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

يا ريت لو حضرتك عندك درس -فيديوهات-كتاب- لتعلم السفن سجمنت ويكون حلو انا شفت الفيديوهات الى على يوتيوب لو فى فيديوهات جديده كدا يا ريت ترفقها هنا ومشكور جدا جدا

والسلام عليكم



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