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

   

alolo23
:: مهندس ::
تاريخ التسجيل: Jul 2012
المشاركات: 46
نشاط [ alolo23 ]
قوة السمعة:
قديم 17-08-2012, 12:44 AM المشاركة 33   
افتراضي



بارك الله فيك أستاد Funky

اعلانات

الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:
قديم 17-08-2012, 01:08 AM المشاركة 34   
افتراضي


شكرا جزيلا جزاكم الله خيرا أخي funky

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

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 664
نشاط [ funky112233 ]
قوة السمعة:
قديم 17-08-2012, 05:35 AM المشاركة 35   
افتراضي


بسم الله الرحمن الرحيم

اخى alolo23
شكرا جزيلا لك
وكل عام وانت بخير

اخى كرار العامري

جزاك الله بما اجازا يا اخى
كل عام وانت بخير

اخى المخترع01

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

وانا شرحتها فى الاكواد فى هذا الجزء ابحث وستجدها ان شاء الله

اما عن الحل الجذرى
فهو انك تتعامل مع شاشة GLCD
وان شاء الله شرحها ينزل قريب

بالتوفيق ان شاء الله


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 18-08-2012, 12:30 AM المشاركة 36   
افتراضي


بسم الله الرحمن الرحيم

اخى alolo23
شكرا جزيلا لك
وكل عام وانت بخير

اخى كرار العامري

جزاك الله بما اجازا يا اخى
كل عام وانت بخير

اخى المخترع01

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

وانا شرحتها فى الاكواد فى هذا الجزء ابحث وستجدها ان شاء الله

اما عن الحل الجذرى
فهو انك تتعامل مع شاشة GLCD
وان شاء الله شرحها ينزل قريب

بالتوفيق ان شاء الله
الموضوع شافي و وافي
اخي انا مبتدء في هدا المجال و ابحث عن مساعدة في كتابة
( بسم الله الرحمن الرحيم )
و اتبعت موضوعك و لم افلح حتا في كتابة حرف عربي
ارجو منك اخي مساعدتي
-----------------------------------------------------------------------
// LCD module connections
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
--------------------------------------------------------------------
اخي هدا الكود الدي اعمل عليه و مشكلتي الكتابة عليه بالعربي
اخي الكريم انا في امس الحاجة لهو ان امكن المساعدة منكم
عيدكم مبروك


الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:
قديم 19-08-2012, 01:47 AM المشاركة 37   
افتراضي


اولا دة الكود

كود:
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;


///////////////////////////////////////////////////////////////////
char text1[] ="( Besm AllaH El Rhman Elrahem )";
char text2[] ="( AllaH Akbar )";
char text3[] ="( AllaH A3zam )";
char text4;

char y,x,d=0,e=0;
char txt[4];

void main() {
Lcd_Init(); // 1
Lcd_Cmd(_LCD_CLEAR); // 6
Lcd_Cmd(_LCD_CURSOR_OFF); // 6

while(1){

x=1;
for(y=0;y<15;y++){
Lcd_Chr(1,x,text1[y]);    // 4
delay_ms(200); x++;
                      }
x=1;
for(y=16;y<32;y++){
Lcd_Chr(2,x,text1[y]);    // 4
delay_ms(200); x++;
                      }
                      
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);   //6
delay_ms(500);

for(y=0;y<5;y++){
Lcd_Out(1,1,text2);   //2
delay_ms(1000);
Lcd_Out(2,1,text3);  //2
delay_ms(500);
Lcd_Cmd(_LCD_CLEAR);   //6
delay_ms(500);
                    }
delay_ms(250);
d++;
text4=d+e;
ByteToStr(text4, txt);
Lcd_Out_Cp(txt);
delay_ms(3000);
Lcd_Cmd(_LCD_CLEAR);


         }
}

اولا
قمت بتعريف الشاشة وتعريف الاطراف واين سوف تربط
.................................................. .................................................. .
ثم
قمت بتعريف مصفوفات بداخل كل مصفوفة كلمات واسميت المصفوفات باسم text1,2,3 ..

كود:
char text1[] ="( Besm AllaH El Rhman Elrahem )";
char text2[] ="( AllaH Akbar )";
char text3[] ="( AllaH A3zam )";
.................................................. .................................................. ..
ثم متغير باسم text4 لحفظ ناتج الجمع علية ..

ثم متغيرات اخرى تستخدم داخل الكود ..
.................................................. .................................................. ..

ثم قمت بامر التعريفات ثم امر مسح الشاشة وامر وقف المؤشر عن العمل

كود:
Lcd_Init(); // 1
Lcd_Cmd(_LCD_CLEAR); // 6
Lcd_Cmd(_LCD_CURSOR_OFF); // 6
ثم عمل حلقة تكرارية الى الابد
كود:
while(1){
.................................................. .................................................. ....

ثم قمت بعمل الكود الخاص باظهار اول جزء من كلمة ( Besm AllaH El Rhman Elrahem )

وهو كالاتى

كود:
x=1;
for(y=0;y<15;y++){
Lcd_Chr(1,x,text1[y]);    // 4
delay_ms(200); x++;
                      }
اولا جعلت قيمة المتغير x=1 وسنعلم لماذا فيما بعد
ثم جملة تكرارية بقيمة 15 مرة ((اى ان تكرار الاوامر بداخل الجملة سيتم 15 مرة))
ثم قمت بكتابة الامر Lcd_Chr
وكما نعلم من الشرح ان فائدتة اظهار الحروف حرف حرف او العدد رقم رقم
وهذا ما تم فعلا فى بداية التجربة

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

((يمكن جعل القيم المعبرة عن الصفوف والمربعات فى الاوامر تساوى متغيرات))

ونعلم ان ثالث شى فى الامر هو ما يراد اظهارة وهنا سوف يتم العرض من خلال المصفوفة text1

وكما نعلم ان هذا الامر يظهر حرف حرف
اذن يجب جلب حرف حرف من هذه المصفوفة
وهذا دور هذا الامر
كود:
text1[y]
كما نرى فى بداية الجملة التكرارية ان قيمة y تساوى 0
واذا وضعنا y داخل مربعات المصفوفة كما نرى
هذا يعنى ان قيمة text1 الان هى نفس قيمة الخانة التى تساوى ترتيب y
بمعنى

فى البداية قيمة y تساوى 0 كما نعلم
اذا ما هو الحرف الموجود فى هذه الخانة من المصفوفة text1
هنا هو )

اذا هذا ما سوف يتم اظهارة

ثم ينتظر البك 250 مللى ثانية ((هذا الانتظار يمكنك تقليلة او زيادتة للتحكم فى سرعه اظهار الاحرف))
ثم زيادة قيمة المتغير x بقيمة 1 وهذا للكتابة على المربع الذى يلى المربع الاول وهكذاااااا
وهنا اصبحت قيمة x تساوى 2 اى المربع الثانى

ثم يعود مرة اخرى للتكرار اذن سوف تصبح قيمة y تساوى 1
وهذا يعنى ان الحرف الذى سوف يعرض هو الحرف الذى ترتيبة فى المصفوفة text1
2 اى الفراغ ويتم تكرار ذلك 15 مرة

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

وهى

كود:
x=1;
for(y=16;y<32;y++){
Lcd_Chr(2,x,text1[y]);    // 4
delay_ms(200); x++;
                      }
وهى هى نفس الجملة ولكن الاختلاف فى حجتين
الاول هو ارقام التكرار اتغيرت
وان العرض هيتم على الصف الثانى

وللعلم قيمة التكرار هو هو 16 مرة ولكن تقدمت فى الارقام
لاننا نعلم ان قيمة y هى ترتيب الاحرف فى المصفوفة text1

وكان اخر ترتيب هو 14 اذان نحن نحتاج الى البدء فى الصف الثانى من الخانة 15
ولكنى كتبتها 16 لان الخانة 15 هى فاصل وانا لم ارد اظهارة وهكذا تكتمل الكلمة على السطر الثانى حتى تنتهى الكلمة

ثم قمت بالانتظار لمدة ثانيتان وبعد ذلك مسحت الشاشة لكتبة كلمات اخرى ..
كود:
delay_ms(2000);
Lcd_Cmd(_LCD_CLEAR);   //6
delay_ms(500);
................................................ان تهى الجزء الاول من الكود............................................

ثم الجزء الثانى من الكود وهو

كود:
for(y=0;y<5;y++){
Lcd_Out(1,1,text2);   //2
delay_ms(1000);
Lcd_Out(2,1,text3);  //2
delay_ms(500);
Lcd_Cmd(_LCD_CLEAR);   //6
delay_ms(500);
                    }
اولا قمت بعمل جملة تكرارية بقيمة 5 مرات
واول امر هو

كود:
Lcd_Out(1,1,text2);   //2
اظهار الكلمة المكتوبة داخل المصفوفة text2 فى الصف الاول وبداية من المربع الاول لة مرة واحدة اى ليس حرف حرف او رقم رقم ((اذا كنت لا تعرف هذا الامر فارجع للشرح الاساسى))
ثم انتظار لمدة ثانية

ثم
كود:
Lcd_Out(2,1,text3);  //2
اظهار الكلمة المكتوبة داخل المصفوفة text3 فى الصف الثانى وبداية من المربع الاول لة مرة واحدة ايضا

ثم انتظار لمدة 500 مللى ثانية
ثم
امر مسح الشاشة
كود:
Lcd_Cmd(_LCD_CLEAR);   //6
ثم انتظار 500 مللى ثانية
ثم العودة وتكرار الاوامر 5 مرات ..
............................انتهى الجزء الثانى من الكود .................................................. ..........

ثم الجزء الثالث من الكود
((هذا الجزء هاااام جدا ارجوا التركيز فية))

وهو جزء اظهار ناتج حسابى ويمكن اظهار اى ناتج لقراءة حساس او اى شىء اخر بنفس الطريقة

وهو

كود:
d++;
text4=d+e;
ByteToStr(text4, txt);
Lcd_Out_Cp(txt);
delay_ms(3000);
Lcd_Cmd(_LCD_CLEAR);
فى البداية
كود:
d++
وهذا يزيد من قيمة المتغير d كل مرة بمقدار 1

وهذا الامر هنا يعبر عن التغيرات الحسابية
اى يمكن ان يكون مكانة قراءة لحساس او ما شابة من العمليات

ثم
اجراء عملية الحساب
كود:
text4=d+e;
وجعل قيمة المتغير text4 تساوى الناتج

ثم ((وهذا هو الامر الجديد (هاااااام) ))

كود:
ByteToStr(text4, txt);
هذا الامر يقوم بتحويل قيم الاعداد العادية الى اسكى كود
حتى يتوافق مع بروتوكول الشاشة ويتم عرض الارقام او الاحرف

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

هناك اكثر من طريقة
ولكن اسهلها هو ما قدمته الميكروسى نفسها
وهو هذا الامر
كود:
ByteToStr
وهو يقوم بالتحويل من ارقام عادية الى اسكى كود
ولكن فى حدود خانتين فقط اى لا يزيد الرقم عن 99

ولتحويل رقم اكبر هناك اوامر اخرى مشابه
مثل
كود:
IntToStr
وهذا الامر يقوم بتحويل الارقام حتى 6 خانات من الارقام
وهناك اوامر بقدارات اعلى

((يمكنك الحصول على هذه الاوامر من خلال المساعدات فى الميكروسى قم بالاطلاع على هذا الرابط))
http://www.qariya.com/vb/showthread.php?p=659273#post659273

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

وهذا كلة تعطيك الميكروسى مثال علية

وهذه الصورة توضح ذلك
انظر



كما ترى داخل المربع الاصفر
يتجد انه فى البداية قال لك انة يجب تعرف متغير ويكون مساوى لقيمة
وهنا هو t
وبعد ذلك تقوم بتعريف مصفوفة مكونة من 4 خانات
وهنا هى تسمى txt

وبعد ذلك ...... وهى تعنى انك يجب ان تعرف هذه المتغيرات فى بداية الكود قبل
الداله الرئيسية
كود:
void main()
ثم يقول لك كيف يكون شكل الامر
ثم تعليق // ويقول لك ان قيمة txt اصبحت تساوى قيمة المتغير وهى هنا 24 ولكن بالاسكى كود " 24"
وبعد التحويل
لا يتبقى الا العرض على الشاشة

كود:
Lcd_Out_Cp(txt);
والذى يعرض طبعا هو المصفوفة التى تم التحويل اليها

ثم انتظار 3 ثوانى ثم مسح الشاشة
ثم العودة لتكرار البرنامج من البداية ..
..................................انتهى الكود بحمد الله .................................................. ................
__________________________________________________ _____________

اذا احتاج احد الى توضيح شىء اخر انا تحت امرة ان شاء الله

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

والسلام عليكم ورحمه الله وبركاته
[/SIZE][/QUOTE]


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

وما توفيقي إلا بالله العلي العظيم


الصورة الرمزية NOUR P.4
NOUR P.4
:: مهندس متواجد ::
تاريخ التسجيل: Jun 2010
المشاركات: 184
نشاط [ NOUR P.4 ]
قوة السمعة:
قديم 20-08-2012, 03:01 PM المشاركة 38   
افتراضي


ما شاء الله
ربنا يزيدك من علمه و يجعل مرتبتك عالية في الجنة إنه على ما يشاء قدير
و كل عام وأنت بخير


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 21-08-2012, 02:41 PM المشاركة 39   
ha


الرجاء المساعدة
كود الكتابة ( بسم الله الرحمن الرحيم )


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 664
نشاط [ funky112233 ]
قوة السمعة:
قديم 21-08-2012, 10:25 PM المشاركة 40   
افتراضي


بسم الله الرحمن الرحيم

اخى كرار العامري

لا فائدة منها هى فقط للتوضيح انه يمكن جمع متغيريين
وهى دائما تساوى 0

اخى NOUR P.4
شكرا جزيلا لك جزاك الله كل خير على دعوتك لى ولك مثلها ان شاء الله

اخى المخترع01
انا رديت عليك يا اخى فى الردود السابقة

وكل عام وانتم بخير جميعا ان شاء الله



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