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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 20-05-2015, 10:14 AM المشاركة 1   
افتراضي تقنيات عرض الرسائل والإعلانات على شاشات الليد ماتريكس مع المترجم CCS C والمترجم ميكرو Twitter FaceBook Google+



تقنيات عرض الرسائل والإعلانات على شاشات الليد ماتريكس مع المترجم CCS C والمترجم ميكروسى برو:
مقدمة : مبدأ عمل شاشة العرض LED dot matrix :
فى هذه الشاشات ، يتم توصيل مجموعة من الليدات مع بعضها البعض فى شكل صفوف rows وأعمدة columns بغرض تقليل عدد الأطراف المطلوبة لتشغيلها . فعلى سبيل المثال وحدة عرض 8X8 تحتاج إلى 64 طرف مدخل / مخرج (طرف لكل ليد ) . بتوصيل جميع الأنودات مع بعضها فى شكل صفوف ( من الصف الأول R1 إلى الصف الثامن R8 ) وتوصيل الكاثودات مع بعضها فى شكل أعمدة (من العامود الأول C1 إلى العامود الثامن C8 ) فإن أطراف المداخل / المخارج المطلوبة للتشغيل تقل إلى 16 طرف ( 8 صفوف و 8 أعمدة) . يعنون كل ليد برقم صفه ورقم عاموده . ففى الشكل أدناه ، إذا جعلنا الصف الرابع R4 فى الحالة المرتفعة ( الأنودات) ، وجعلنا العامود الثالث C3 فى الحالة المنخفضة (الكاثودات – لاحظ حرف C مشترك بين معنى العامود والكاثود ) ، فأن الليد الموجود عند تقاطع الصف الرابع والعامود الثالث سوف يضىء .



يمكن عرض الحروف عن طريق المسح السريع لأى من الصفوف أو الأعمدة .

عرض النص Displaying Text :
النص Text له وجهين (شكلين) :
• الوجه الأول الأول هو النص نفسه text ، والذى يتكون من أحرف كود أسكى ، ويمكن تخزينه فى شكل سلسلة نصية string .
• الوجه الثانى هو تمثيله الرسومى graphic أو خريطة النقط bitmap (التمثيل النقطى) .
التمثيل النقطى (خريطة النقط) لمجموعة معينة من الأحرف يسمى الخط أو الفونت font . يمكنك تحديد الفونت الخاص بك لتمثيل مجموعة من الأحرف .
تتكون مجموعة أحرف النص القياسية text من الأحرف الأبجدية والرقمية : 0-9, A-Z , a-z جنبا إلى جنب مع بعض الأحرف الخاصة مثل الفاصلة ، والفاصلة المنقوطة , والمسافة الفارغة ، إلخ .
فى البداية يمكننا تحديد عدد محدود وقليل من الأحرف ، مثل الحروف الكابيتال A-Z وتجاهل الأحرف الخاصة ، أو اختيار مجموعة أحرف أسكى الكاملة . لكن ، تذكر أنه كلما كانت مجموعة الأحرف أكبر كلما زاد التمثيل النقطى وبالطبع زادت مساحة التخزين المطلوبة لها .
مفهوم مسح العرض (الشاشة) Scanning The Display
عندما يكون لدينا ليد ماتريكس يكون لدينا خياران :
• الخيار الأول : تقنية مسح الصفوف : إضاءة صف row واحد فى كل مرة ، مع عرض (تواجد) نموذج الليدات الموصلة والمفصولة على الأعمدة ، وإعطائها بعض الوقت لترك أثر للصورة على أعيننا ، ثم بعد ذلك يتم إيقاف تشغيل الصف الأول والانتقال إلى الصف الثانى . يتم تكرار نفس العملية مرة أخرى ومرة أخرى .
• الخيار الثانى : تقنية مسح الأعمدة : بنفس الطريقة ، يمكننا استخدام مسح الأعمدة بدلا من مسح الصفوف .

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

التمثيل النقطى للحرف Bitmap of a character :
معظم أنظمة العرض ، مثل شاشات LCD أو الوحدات الطرفية تستخدم ماتريكس نوع 5X7 (خمس أعمدة وبع صفوف) لتمثيل وعرض الحرف . وهذا الحجم من المصفوفات يعتبر جيد إلى حد ما لعرض وتمثيل معظم الأحرف المستخدمة بشكل شائع . لكن يوجد الماتريكس 8X8 ، وهو بالتأكيد يمكن أن يستوعب التمثيل النقطى للماتريكس 5X7 بسهولة ، كما أنه يتيح لنا الحرية فى استخدام الماتريكس 8X8 بكاملها لعمل تمثيل نقطى أكثر تفصيلا .

البداية تكون برسم ماتريكس من المربعات الفارغة على ورقة وملء المربعات المناسبة بنقط الرسم " تسمى بكسلات" pixels (النقط الضوئية) التى تريد توصيلها (عرضها) ، كما فى الشكل التالى :




الآن لديك 8 بايت من البيانات للحرف الواحد ، وكل بايت يمثل صف واحد ، أو قد يمثل عامود كما تحب . تذكر أن " كل حرف من خط نوع 8X8 سوف يتطلب 8 بايت من البيانات" . مجموعة الأحرف النقطية سوف تحتاج أن يتم تخزينها فى مكان ما ، يمكنك تخزينها كجزء من ذاكرة البرنامج program memory كثوابت ، أو تخزينها فى ذاكرة EEPROM الداخلية للميكروكونترولر . أما إذا سمح الهاروير الخاص بك ، فإن أفضل مكان يستخدم للتخزين هو ذاكرة EEPROM خارجية والتى تعتمد على الناقل I2C ، أو استخدام كارت تخزين بيانات SD . هنا ، سنحاول تقليل الاعتماد على أجهزة الهاردوير الخارجية وسيتم تخزين الأحرف النقطية فى ذاكرة البرنامج كثوابت .

تدريب : عرض حرف واحد ، الحرف A على سبيل المثال :
الحرف A كنص text ، يتم تخزينه كقيمة لحرف واحد من حروف أسكى ، وهو العدد العشرى 65 ، ولكنه كحرف نقطى فإنه سوف يحتل 8 بايت من التخزين . يمكننا تخزين الحرف النقطى كبتات رأسية ، أو كبتات أفقية . الخيار الأفضل يعتمد على كيفية تكوين الهاردوير الخاص بك . ونظرا لإننا سوف نستخدم مسح الصفوف ، فسوف يكون مريحا للغاية تخزين الحروف النقطية كصفوف (بيانات الأعمدة) ، تظهر الأعداد المناظرة على يمين الشكل أعلاه ، أو أسفل الشكل ، كما ترغب ، وهى :

كود:
{0x18,0x24,0x66,0x66,0x7E,0x66,0x66,0x66};
{0x00,0x3F,0x7F,0x88,0x88,0x7F,0x3F,0x00};
ملحوظة :
إذا قمنا بتخزين التكوين الرأسى ، عندئذ فإن الحرف سوف يظهر كما لو كنا أدرنا وحدة العرض ، لأنه سوف يتم عرض التمثيل النقطى للأعمدة كصفوف .

التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :



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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 20-05-2015, 12:24 PM المشاركة 2   
افتراضي التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :


التدريب الأساسى : عملية المسح والعرض لحرف واحد غير متحرك :
الدائرة الكهربية :





البرنامج مع المترجم CCS C : أولا : بدون استخدام الحلقات :
فى هذا البرنامج سوف نستخدم المبادىء الأساسية ، والغرض شرح عملية المسح والعرض .
1- فى بداية البرنامج يتم حجز ثمانى مواقع ذاكرة لتخزين 8 بيايت ، عن طريق إعلان (تعريف) مصفوفة من نوع الحرف ذات 8 عناصر ، باسم int8 A[] ، مع تعيين هذه العناصر من واقع التمثيل النقطى للحرف بدءا من اليسار إلى اليمين كما هو معتاد مع المصفوفات .

كود:
int8 A[]={0xFF,0x03,0x01,0xEE,0xEE,0x01,0x03,0xFF}; // ‘A’ , on cathodes , 0 0n , 1 off
كل ما هو مطلوب نقل (إرسال) هذه البايتات الثمانية إلى المنفذ PORTB ، لكن كل بايت فى حينها ، حيث يتم تفعيل الصف ( العامود) المناظر وعدم تفعيل باقى الصفوف (الأعمدة) الأخرى . علما بأن أطراف الماتريكس المتصلة بالمنفذ PORTB هى الكاثودات المشتركة .
2- داخل الدالة الرئيسية ، وداخل الحلقة الغير منتهية ، يتم :
أ‌- تفعيل (اختيار) الصف الأول فقط ، بجعل الطرف D0 فقط بواحد (أنودات مشتركة) output_d(1) ، ثم إرسال (عرض) البايت الأول من مصفوفة الحرف إلى المنفذ PORTBبالشكل output_b(A[0] ، ثم تأخير زمنى صغير جدا لثبات العرض delay_ms(5) ، وبالتالى تكون الصيغة كما يلى :

كود:
       output_d(1); output_b(A[0]; delay_ms(5);//row 1 , byte 1 , delay 
ب‌-	تكرار العملية السابقة مع الصف الثانى ، والثالث ، وحتى الصف الثامن :
output_d(2); output_b(A[1]; delay_ms(5); //row 2 , byte 2 , delay
output_d(4); output_b(A[2]; delay_ms(5); //row 3 , byte 3 , delay
……………………………………………………………………..
………………………………………………………………………..
output_d(128); output_b(A[7]; delay_ms(5); //row 8 , byte 8 , delay
3- يتم تكرار جميع الخطوات السابقة بشكل سريع داخل الحلقة الغير منتهية ، وتكون النتيجة احساس العين بعرض الحرف بكامله بشكل مستمر كما فى الشكل أدناه.

















البرنامج :

كود:
#include <16F877A.h>     // 
#use delay (clock=4000000)   // oscillator frequency used for delay function

//Define Matrix Character Information as 8 byte array
int8 A[]={0xFF,0x03,0x01,0xEE,0xEE,0x01,0x03,0xFF}; // 'A' , on cathodes , 0 0n , 1 off

void main()
{
While(true)
   {
   output_d(1); output_b(A[0]); delay_ms(5);//row 1 , byte 1 , delay
   output_d(2); output_b(A[1]); delay_ms(5); //row 2 , byte 2 , delay
   output_d(4); output_b(A[2]); delay_ms(5); //row 3 , byte 3 , delay
   output_d(8); output_b(A[3]); delay_ms(5); //row 4 , byte 3 , delay
   output_d(16); output_b(A[4]); delay_ms(5); //row 5 , byte 3 , delay
   output_d(32); output_b(A[5]); delay_ms(5); //row 6 , byte 3 , delay
   output_d(64); output_b(A[6]); delay_ms(5); //row 7 , byte 3 , delay
   output_d(128); output_b(A[7]); delay_ms(5); //row 8 , byte 8 , delay
   }
}
البرنامج مع المترجم CCS C : ثانيا : مع استخدام الحلقات :


التعديل الأخير تم بواسطة : F.Abdelaziz بتاريخ 20-05-2015 الساعة 12:43 PM
احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً Omar Mekkawy ( شكر العضو على هذه المشاركة )
اعجاب Omar Mekkawy ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 20-05-2015, 01:09 PM المشاركة 3   
افتراضي


البرنامج مع المترجم CCS C : ثانيا : مع استخدام الحلقات ، وتقنيات البرمجة بلغة السى :
البرنامج :


كود:
/******************************************************
LED Matrix Display 
Display one fixed character: 'A'
*******************************************************/
#include <16F877A.h>     // 
#use delay (clock=4000000)   // oscillator frequency used for delay function

//Define Matrix Character Information as 8 byte array
int8 A[]={0xFF,0x03,0x01,0xEE,0xEE,0x01,0x03,0xFF}; // 'A' , on cathodes , 0 0n , 1 off
int8 i,s ;  // Variables , loop counter , select row 
/********* main function********/
void main ()
{
    while(true)
   {
         s=1; 			// Initially  select row #1

         for(i=0;i<8;i++) 	//Repeat for 8 Bytes for each character
// display process cycle (loop) is made up of :
         {
            output_D(s); 		//1-select ROW ,and send the value to port D for scanning 
            output_B(A[i]);     	//2-For this ROW:Send character data to columns 
//connected to port B to display information
            delay_ms(5);         	 // 3-Short delay
        	s=s<<1;		// 4-select next row 
         }
            
   }
}



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


كود:
/******************************************************
LED Matrix Display 
Display one fixed character : A
*******************************************************/
#include <16F877A.h>     // 
#use delay(clock=4000000)   // oscillator frequency used for delay function

//Define Matrix Character Information as 8 byte array
int8 A[]={0xFF,0x03,0x01,0xEE,0xEE,0x01,0x03,0xFF}; // A , on cathodes , 0 0n , 1 off
int8 i,j,s ;  // Variables
/********* main function********/
void main ()
{
 
   while(true)
   {
     
         
    for (i=1;i<25;i++)  //25 =  No. of repeated cycles (loops) to display each character on LED matrix
          {
          s=1; // select row #1
         for(j=0;j<8;j++) // 8 Bytes each character display process cycle (loop) is made up of :
         {
            output_D(s); //select ROW ,and send the value to port D for scanning 
            output_B(A[j]);     //For this ROW:Send character data to columns connected to port B to display information
            delay_ms(5);          // Short delay
         s=s<<1; // select next row 
         }
      }
        
   }
}

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 20-05-2015, 01:32 PM المشاركة 4   
افتراضي


نفس البرنامج مع تقنية استخدام الدوال فى البرمجة والتى هى عصب لغة السى :

كود:
/******************************************************
LED Matrix Display 
Display one fixed character : A
Using functions
*******************************************************/
#include <16F877A.h>     // 
#use delay(clock=4000000)   // oscillator frequency used for delay function

//1-Define Matrix Character Information as 8 byte array
int8 A[]={0xFF,0x03,0x01,0xEE,0xEE,0x01,0x03,0xFF}; // A , on cathodes , 0 0n , 1 off
 
//2-******* ROW Selection Function (scanning) using switch(select)************
int select_ROW (int s) // return int , s=0 for ROW 1 , s=1 for ROW 2 ........
{
   switch (s)
   {
     case 0: return(1);break;  // 1. ROW 1 ON, AND other  ROWs OFF 0b00000001 PIN_D0 = 1  pin 1 0ff Protus LED matrix 
     case 1: return(2);break;  // 2. ROW 2 ON, AND other  ROWs OFF 0b00000010 PIN_D1 = 1 
     case 2: return(4);break;  // 3. ROW 3 ON, AND other  ROWs OFF 0b00000100 PIN_D2 = 1 
     case 3: return(8);break;  // 4. ROW 4 ON, AND other  ROWs OFF 0b00001000 PIN_D3 = 1 
     case 4: return(16);break; // 5. ROW 5 ON, AND other  ROWs OFF 0b00010000 PIN_D4 = 1
     case 5: return(32);break; // 6. ROW 6 ON, AND other  ROWs OFF 0b00100000 PIN_D5 = 1 
     case 6: return(64);break; // 7. ROW 7 ON, AND other  ROWs OFF 0b01000000 PIN_D6 = 1 
     case 7: return(128);break;// 8. ROW 8 ON, AND other  ROWs OFF 0b10000000 PIN_D7 = 1 
   }
}

//3-******* Matrix Data sending Function*******
void send_characters_matrix (char character[], int repeat) // return void , 2 arguments : character array and no. of repeat
{
   int i,j;  // Counter loops Variables

   for (i=1;i<repeat;i++)  // No. of repeated cycles (loops) to display each character on LED matrix 
       {
         for(j=0;j<8;j++) // 8 Bytes each character display process cycle (loop) is made up of :
         {
            output_D(select_ROW(j)); //1-For each ROW : select ROW to get function return,and send the value to port D for scanning 
            output_B(character[j]);     //2- For this ROW:Send character data to columns connected to port B to display information
            delay_ms(5);          // Short delay 
         }
      }
}

/********* main function********/

void main ()
{

      
   while(true)
   {
        send_characters_matrix (A,50);// Show character "A"  : arguments : array A ,50 repeat times
        
   }
}

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

الصورة الرمزية Omar Mekkawy
Omar Mekkawy
:: مهندس متميز ::
تاريخ التسجيل: Aug 2011
الدولة: مصر
المشاركات: 1,523
نشاط [ Omar Mekkawy ]
قوة السمعة:0
قديم 20-05-2015, 04:18 PM المشاركة 5   
افتراضي


جزاك الله كل خير أستاذي الكريم
استمر .. بارك الله لك في علمك وصحتك


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 20-05-2015, 06:59 PM المشاركة 6   
افتراضي


جزاك الله كل خير أستاذي الكريم
استمر .. بارك الله لك في علمك وصحتك

أخى الكريم الفاضل شكرا جزيلا لك

مع تمنياتى بدوام التوفيق

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

الصورة الرمزية Sallam
Sallam
:: مهندس متميز ::
تاريخ التسجيل: Mar 2006
الدولة: Syria
المشاركات: 518
نشاط [ Sallam ]
قوة السمعة:0
قديم 20-05-2015, 07:00 PM المشاركة 7   
افتراضي


دائما متميز استاذنا الكريم

أرجو ان تضع لنا صورة حقيقة عن الشاشة لكي نتعرف على كيفية توصيل الأقطاب في الواقع

مع الشكر سلفا


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:333
قديم 20-05-2015, 07:03 PM المشاركة 8   
افتراضي عرض عدة أحرف ورموز وأشكال ولفظ الجلالة بشكل ثابت وعلى التتابع :


عرض عدة أحرف ورموز وأشكال ولفظ الجلالة بشكل ثابت وعلى التتابع :




البرنامج :

كود:
/******************************************************
LED Matrix Display 
Display multi fixed character : A,B,C,D,E,+,<--->, face , Allah , ......
Using functions
*******************************************************/
#include <16F877A.h>     // 
#use delay(clock=4000000)   // oscillator frequency used for delay function

//1-Define Matrix Character Information as 8 byte array
int8 A[]={0xFF,0x03,0x01,0xEE,0xEE,0x01,0x03,0xFF}; // A , on cathodes , 0 0n , 1 off

 int B[]={0XFF,0X91,0X6E,0x6E,0X6E,0X00,0X00,0xFF};
 int C[]={0XFF,0X99,0X18,0X3C,0X3C,0X00,0X81,0xFF};
 int D[]={0XFF,0X81,0X42,0X3C,0X3C,0X00,0X00,0xFF};
 int E[]={0XFF,0X3C,0X24,0X24,0X24,0X00,0X00,0xFF};
 int plus[]={0XFF,0XE7,0XE7,0X81,0X81,0XE7,0XE7,0XFF};
 int double_arrow[]={0XFF,0XDB,0XBD,0X00,0X00,0XBD,0XDB,0XFF};
 int face[]={0XC3,0XBD,0X6A,0X5E,0X5E,0X6A,0XBD,0XC3};
 int Allah[]={0X01,0X01,0X7F,0X01,0X7F,0X07,0XB7,0XCF};
 int Love[]={0XE3,0XC1,0X81,0X03,0X03,0X81,0XC1,0XE3};
 int Arrow[]={0XDF,0XCF,0XC7,0X00,0X00,0XC7,0XCF,0XDF};
 
//2-******* ROW Selection Function (scanning) using switch(select)************
int select_ROW (int s) // return int , s=0 for ROW 1 , s=1 for ROW 2 ........
{
   switch (s)
   {
     case 0: return(1);break;  // 1. ROW 1 ON, AND other  ROWs OFF 0b00000001 PIN_D0 = 1  pin 1 0ff Protus LED matrix 
     case 1: return(2);break;  // 2. ROW 2 ON, AND other  ROWs OFF 0b00000010 PIN_D1 = 1 
     case 2: return(4);break;  // 3. ROW 3 ON, AND other  ROWs OFF 0b00000100 PIN_D2 = 1 
     case 3: return(8);break;  // 4. ROW 4 ON, AND other  ROWs OFF 0b00001000 PIN_D3 = 1 
     case 4: return(16);break; // 5. ROW 5 ON, AND other  ROWs OFF 0b00010000 PIN_D4 = 1
     case 5: return(32);break; // 6. ROW 6 ON, AND other  ROWs OFF 0b00100000 PIN_D5 = 1 
     case 6: return(64);break; // 7. ROW 7 ON, AND other  ROWs OFF 0b01000000 PIN_D6 = 1 
     case 7: return(128);break;// 8. ROW 8 ON, AND other  ROWs OFF 0b10000000 PIN_D7 = 1 
   }
}

//3-******* Matrix Data sending Function*******
void send_characters_matrix (char character[], int repeat) // return void , 2 arguments : character array and no. of repeat
{
   int i,j;  // Counter loops Variables

   for (i=1;i<repeat;i++)  // No. of repeated cycles (loops) to display each character on LED matrix 
       {
         for(j=0;j<8;j++) // 8 Bytes each character display process cycle (loop) is made up of :
         {
            output_D(select_ROW(j)); //1-For each ROW : select ROW to get function return,and send the value to port D for scanning 
            output_B(character[j]);     //2- For this ROW:Send character data to columns connected to port B to display information
            delay_ms(5);          // Short delay 
         }
      }
}

/********* main function********/

void main ()
{

      
   while(true)
   {
        send_characters_matrix (A,25);// Show character "A"  : arguments : array A ,25 repeat times
      
        send_characters_matrix (B,25);// Show character "B" 
        send_characters_matrix (C,25);// Show character "C" 
        send_characters_matrix (D,25);// Show character "D" 
        send_characters_matrix (E,25);// Show character "E"
        send_characters_matrix (plus,25);//Show character "+" 
        send_characters_matrix (double_arrow,25);// Show character "<-->"  Two-way arrows 
        send_characters_matrix (face,25);// Show face
        send_characters_matrix (Allah,25);// Show Allah
        send_characters_matrix (Love,25);// Show Love
        send_characters_matrix (Arrow,25);// Show Arrow
   }
}

إضافة رد

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

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

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


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

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