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

   

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-03-2011, 07:28 PM المشاركة 9   
افتراضي



الخطوة الثانية : الإعلان عن المتغيرات :






النص عبارة عن حروف مرصوصة فى شكل صف لذلك يتم إعلانها بمصفوفة صف وهو يشبه الإعلان عن المتغير مع إضافة القوسين [ ] بعد الاسم النوع هنا حروف char . ويتم تخصيص نص بكتابتة بعد علامة = بين قوسين تنصيص " …."





char txt1[] = "Eng.F. Abdelaziz" ;
char txt2[] = "EasyPIC6";
char txt3[] = "Lcd4bit";
char txt4[] = "example";
· الإعلان عن متغير الحلقة i من نوع char (بسعة بايت أى 8 خانات ) .
char i; // Loop variable
الخطوة الثالثة : إضافة دالة خاصة بتحريك النص والتحكم فى سرعة حركة النص بتغيير زمن التأخير .

اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-03-2011, 07:29 PM المشاركة 10   
افتراضي


الخطوة الثالثة : إضافة دالة خاصة بتحريك النص والتحكم فى سرعة حركة النص بتغيير زمن التأخير .




void Move_Delay() { // Function used for text moving
Delay_ms(500); // You can change the moving speed here
}
الخطوة الرابعة : الدالة الرئيسية :

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-03-2011, 07:31 PM المشاركة 11   
افتراضي


الخطوة الرابعة : الدالة الرئيسية :
void main(){
1- لا توجد قنوات دخل تناظرى مستخدمة , لذلك يتم تهيئة سجلات التحكم حتى تصبح جميع الأطراف كمداخل / مخارج رقمية فقط :




ANSEL = 0; // Configure AN pins as digital I/O
ANSELH = 0;
2- تهيئة وحدة العرض LCD


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-03-2011, 07:33 PM المشاركة 12   
افتراضي


1- تهيئة وحدة العرض LCD


· نبدأ بتهيئة وحدة العرض LCD بالدالة
Lcd_Init(); // Initialize LCD
· ثم نقوم بمسح الشاشة بالدالة وبالأمر الخاص بذلك :
Lcd_Cmd(_LCD_CLEAR); // Clear display
· مع فصل المؤشر حتى لا يظهر أثناء العرض فيسبب ارتباك بالدالة وبالأمر الخاص بذلك.
Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off
2- كتابة سطرين على الشاشة كافتتاحية :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-03-2011, 07:35 PM المشاركة 13   
افتراضي


كتابة سطرين على الشاشة كافتتاحية :





· نستخدم الدالة Lcd_Out فى كتابة نص بالصف الأول : يبدأ بالصف الأول والعامود السادس (حتى يتوسط النص شاشة العرض) والنص هو النص الثالث أى "Lcd4bit" .
Lcd_Out(1,6,txt3); // Write text in first row
· ونكتب نص بالصف الثانى : يبدأ من الصف الثانى والعامود السادس (ليكون تحت بداية الصف الأول ) والنص هو النص الرابع أى "example"
Lcd_Out(2,6,txt4); // Write text in second row
· الانتظار أو البقاء على هذه الحالة (عرض سطرى المقدمة) لمدة 2 ثانية بما يسمح بالتعرف على النصوص وقراءتها .
Delay_ms(2000);
كتابة السطرين الأساسيين على الشاشة :



· نبدأ بمسح الشاشة من جديد للتجهير للعرض القادم بالدالة وبالأمر الخاص بذلك :
Lcd_Cmd(_LCD_CLEAR); // Clear display
· نستخدم الدالة Lcd_Out فى كتابة نص بالصف الأول : يبدأ بالصف الأول والعامود الأول (النص يملأ شاشة العرض ) , النص "Eng.F. Abdelaziz" .
· وكتابة نص بالصف الثانى يبدأ من الصف الثانى والعامود الخامس , النص "EasyPIC6"
Lcd_Out(1,1,txt1); // Write text in first row
Lcd_Out(2,5,txt2); // Write text in second row
· الانتظار أو البقاء على هذه الحالة (عرض سطرى المقدمة) لمدة 2 ثانية بما يسمح بالتعرف على النصوص وقراءتها .

Delay_ms(2000);
تحريك النص : لليمين أربع مرات باستخدام حلقة for والدالة والأمر الخاص بذلك :


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 14-03-2011, 07:38 PM المشاركة 14   
افتراضي


تحريك النص : لليمين أربع مرات باستخدام حلقة for والدالة والأمر الخاص بذلك :




// Moving text
for(i=0; i<4; i++) { // Move text to the right 4 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}


تحريك النص جهة اليسار سبع مرات وجهة اليمين سبع مرات أخرى والتكرار إلى ما لانهاية :







· بعد الخروج من حلقة for يتم إنشاء حلقة غير منتهية وفيها يتم تحريك النص جهة اليسار لسبع مرات باستخدام حلقة for والدالة والأمر الخاص بذلك :
while(1) { // Endless loop
for(i=0; i<8; i++) { // Move text to the left 7 times
Lcd_Cmd(_LCD_SHIFT_LEFT);
Move_Delay();
}
· ثم يتم تحريك النص لسبع مرات أخرى جهة اليمين باستخدام حلقة for والدالة والأمر الخاص بذلك :
for(i=0; i<8; i++) { // Move text to the right 7 times
Lcd_Cmd(_LCD_SHIFT_RIGHT);
Move_Delay();
}
}
}


الصورة الرمزية king5star
king5star
:: مهندس جيد ::
تاريخ التسجيل: Jun 2008
الدولة: Alexandria, Egypt
المشاركات: 238
نشاط [ king5star ]
قوة السمعة:
قديم 15-03-2011, 02:52 AM المشاركة 15   
افتراضي


تسلم الايادى على هذا الشرح الجميل والرائع .

وفقك الله دائماً .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,832
نشاط [ F.Abdelaziz ]
قوة السمعة:
قديم 15-03-2011, 03:32 AM المشاركة 16   
افتراضي


تسلم الايادى على هذا الشرح الجميل والرائع .

وفقك الله دائماً .
اخى الكريم

شكرا جزيلا لك

بارك الله فيك

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



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