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

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

Ahmed Hamam
:: مهندس ::
تاريخ التسجيل: Jun 2014
المشاركات: 35
نشاط [ Ahmed Hamam ]
قوة السمعة:0
قديم 21-03-2015, 09:24 PM المشاركة 1   
ha مساعده فى التعامل مع 74hc595 Twitter FaceBook Google+



السلام عليكم
مؤخرا تعلمت التعامل مع مسجل الازاحه من نوع 74hc595
واستطعت ارسال الداتا اليه بالميكروكنترولر نوع 16f877a
ولكن بطريقه بدائيه جدا
حيث ان الكود كان طويييييييل جدا جدا لارسال 8 بت
وكان المشروع 7segmant فما بالك اذا اردت تحريك النص او استخدام عارضه اكبر المستخدمه كانت 8*8
ارجوا من حضراتكم ان تدلونى على طريقه بسيطه للتعامل معها فى لغه ميكروسى

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,688
نشاط [ حسن هادي محمود ]
قوة السمعة:135
قديم 22-03-2015, 02:41 PM المشاركة 2   
افتراضي


السلام عليكم
مؤخرا تعلمت التعامل مع مسجل الازاحه من نوع 74hc595
واستطعت ارسال الداتا اليه بالميكروكنترولر نوع 16f877a
ولكن بطريقه بدائيه جدا
حيث ان الكود كان طويييييييل جدا جدا لارسال 8 بت
وكان المشروع 7segmant فما بالك اذا اردت تحريك النص او استخدام عارضه اكبر المستخدمه كانت 8*8
ارجوا من حضراتكم ان تدلونى على طريقه بسيطه للتعامل معها فى لغه ميكروسى

السلام عليكم

نعم ممكن ذلك بطريقه ماتركس

اليك هذا مشروع

http://up.top4top.net/downloadf-top4...59571-rar.html

كود:
#define Check_bit(var,pin)     var & (1<<pin)
sbit ST1 at RB0_bit; // for display
sbit DS1 at RB1_bit;
sbit SH1 at RB2_bit;


////////********************************************************************///
char num1[16];//
//const char segment[]={63,6,91,79,102,109,125,7,127,111}; //for CC
const char segment[]={192,249,164,176,153,146,130,248,128,144}; // for CA
const char segbit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
char x=0 ,dd,ggg,colomn1,colomn   ;
unsigned int number1,number2, cont;
char segmant2[1];// 1 this mean only 8 7seg  if has 16 7seg then char segmant2[2]
void display_7seg();


//***************************************************************************//
//Timer0
//Prescaler 1:16; TMR0 Preload = 6; Actual Interrupt Time : 2 ms

//Place/Copy this part in declaration section
void InitTimer0(){
  OPTION_REG         = 0x83;
  TMR0                 = 6;
  INTCON         = 0xA0;
}

void Interrupt(){
  if (TMR0IF_bit){
    TMR0IF_bit         = 0;
    TMR0                 = 6;
    //Enter your code here
     ggg++;
     cont++;
  }
}


void main ()
{
 char mm=0;
 trisb=0;
 portb=0;
 InitTimer0();
 cmcon=7; // Configure AN pins as digital

  while(1)
          {
            if(cont>500)
                        {
                           number1++;
                           if(number2 !=0)number2--;
                           if(number2==0)number2=9999;
                           if(number1>=10000)number1=0;
                           num1[0]=number1/1000; // &#218;&#207;&#199;&#207; &#202;&#213;&#199;&#218;&#207;&#237;
                           num1[1]=number1/100%10;
                           num1[2]=number1/10 %10;
                           
                           num1[3]=number1%10;// &#218;&#207;&#199;&#207; &#202;&#228;&#199;&#210;&#225;&#237;
                           num1[4]=number2/1000;
                           num1[5]=number2/100%10;
                           num1[6]=number2/10 %10;
                           num1[7]=number2%10;
                           
                           num1[8]=1;
                           num1[9]=2;
                           num1[10]=3;
                           num1[11]=4;
                           num1[12]=5;
                           num1[13]=6;
                           num1[14]=7;
                           num1[15]=8;

                         cont=0;
                        }
                if(ggg>=3){ggg=0; display_7seg();}
     }
}



///*****************************************************************//
void display_7seg()
{ char y;
 dd=8;
 for(x=0;x<32;x++){ds1=1;sh1=1;sh1=0;}// OFF all 7 seg
 ST1=1;st1=0;
 // data2 enable  data1 enable
 for(y=0;y<2;y++) // &#229;&#228;&#199; &#218;&#228;&#207;&#228;&#199; 16 &#211;&#221;&#228; &#211;&#223;&#227;&#228;&#202; &#221;&#228;&#205;&#228; &#228;&#202;&#218;&#199;&#227;&#225; &#227;&#218; &#223;&#225; 8 &#218;&#225;&#236; &#205;&#207;&#229; &#225;&#208;&#199; &#228;&#218;&#207; &#199;&#225;&#236; 2
             {
                 for(x=0;x<8;x++) // &#228;&#209;&#211; &#202;&#221;&#218;&#237;&#225; &#199;&#225;&#223;&#227;&#228; &#225;&#199;&#228;&#229; &#237;&#209;&#211;&#225; &#199;&#230;&#225; &#237;&#217;&#229;&#209; &#200;&#225; &#199;&#206;&#237;&#209;
                         {
                          if(Check_bit(segbit[7-colomn],7-x))ds1=1;
                          else DS1=0;
                          SH1=0;SH1=1;
                         }
                 for(x=0;x<8;x++) //
                                  {
                                   if(Check_bit(segment[num1[colomn1+dd]],7-x))DS1=1;
                                   else DS1=0;
                                   SH1=0;SH1=1;
                                  }
                 if(dd>=8)dd=dd-8;
              }
          ST1=1; ST1=0;
          colomn++;
          colomn1++;

          if(colomn==8)colomn=0;
          if(colomn1==8)colomn1=0;

}

//******************************************************************************//


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 22-03-2015 الساعة 02:44 PM
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  
إضافة رد

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

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

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


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

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