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

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

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:94
قديم 07-08-2012, 11:34 PM المشاركة 1   
افتراضي تعلم كيفية التعامل مع الLCD وما انواعها وكيفية التحكم بها بالميكروسى ((الجزء الثانى)) Twitter FaceBook Google+



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

فى هذا الجزء ان شاء الله هنبدء مع اول نوع وهو Character LCD
وازاى نتحكم فية من خلال الميكروسى

وللاطلاع على اول جزء اتفضل ادخل على الرابط التالى
http://www.qariya.com/vb/showthread.php?t=113399

__________________________________________________ ___________

اولا
مما يتكون هذا النوع وكيف يعمل ؟؟

هذا النوع عبارة عن مربعات موضوعه على شكل اعمدة وصفوف
وكل مربع مكون من عدد من البكسل
فية 7*5 وفى 5*10 دة عدد البكسل لمربع واحد بس

والصورة دى تبين الكلام




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

((من المعروف ان مخ الانسان له القدرة
على تجميع الكثير من النقط فى صورة واحدة )) سبحان الله الخالق العظيم

وهذه صورة اخرى تبين المربعات وازاى بتتشكل عليها الحروف والكلمات



وتقاس بعدد هذه المربعات
وهذا ما يقال علية ان الشاشة مثلا 2*16 هذا يعنى ان هناك صفان
فى كل صف 16 مربع
اى الشاشة كاملة تحتوى على 32 مربع
اى 32 حرف او رمز او رقم يمكن عرضهم مرة واحدة


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

احب اقلك ان الشركات المصنعه مش نايمة على ودنها
هههههههههههههه

الشركات المصنعة قامت بكل هذا بالنيابة عنك
وقامت بوضع ICs خاصة للتعامل مع الشاشة والتحكم فيها

فقط كل ما عليك انك هتتخاطب مع الشاشة ببروتوكول محدد
ومن خلال البروتوكول دة ((وهو ما يحدد الكتابة بما يسمى الاسكى كود))
ال IC الى فى الشاشة هيعرف انت بعت انهى حرف ولا انهى رمز ولا انهى رقم
وهيكتبهولك على الشاشة وكل دة مخزن على الذاكرة بتاعته الداخلية

مثلا لو الحرف" A "
هو عارف هيشغل انهى بكسل وهيطفى انهى بكسل فى المربع
الى انت اخترتة علشان يظهرلك الى انت بعتة
وطبعا الطريقة دى بتسهل علينا شغل كتيرررر اوى

ودة شكل الشاشة وشكل ال IC الى بيقوم بالوظيفة دى



النقطة السوداء الى على ظهر الشاشة هو دة ال IC

تمام نفهم من كدة ان الكتابة على الشاشة دى محدودة نوعا ما
لاننا لو كتبنا اى حاجة غير المتسجل على ذاكرة ال IC
مش هيظهر حاجة لان الشاشة متعرفتش علية

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

ولكن الشركات قامت بشىء جميل جدا
وهو انك تقدر تامر ال IC دة يكتب الى انت بتدهولة بالزبط
يعنى انت نفسك تقدر تكتب وتشغل البكسلات بكسل بكسل
وتتحكم فيها

علشان تقدر تعمل الشكل او الرمز الى انت عايزة
وهذا شىء رائع
اى ليس شرطا قطعيا ان يكون ال IC يعرف نفس الشكل الذى ترسلة له
__________________________________________________ ____________

بعد ما تعرفنا على هذه الشاشة
نيجى للشغل العملى
ازاى نقدر نكتب على الشاشات دى من خلال الميكروسى

قبل البدء احب ااقولكم ان الامر فى غاية السهولة والبساطة ان شاء الله
.................................................. .................................................. ..

اوامر الكتابة على هذا النوع من الشاشات
عبارة عن 6 دوال فقط اى 6 اوامر

وهم

كود:
Lcd_Init 
Lcd_Out 
Lcd_Out_Cp 
Lcd_Chr 
Lcd_Chr_Cp 
Lcd_Cmd
اول امر هو
كود:
Lcd_Init();
هذا الامر عبارة عن داله التعريف
اى الامر الذى يخبر البك بان هناك شاشة سوف تركب علية
وان هناك بروتوكول يجب اتباعه مع هذه الشاشة فى العمل

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

ثانى امر هو
كود:
Lcd_Out
هذا الامر يخرج البيانات على الشاشة بمكان انت تحددة
يعنى لو عايز تخرج كلمة او عدد فى مكان محدد مثلا الصف الثانى
وبداية اظهار هذه الكلمة تكون فى المربع الخامس
هذا الامر هو ما يفعل ذلك لك

ولكن هذا الامر لاخراج الكلمات مرة واحدة واخراج العدد مرة واحدة
اى ليس حرف حرف او رقم رقم لا
بل كلمة مرة واحدة ويمكنة ايضا اظهار حرف حرف ولكن الادق له كلمة او عدد
وتوضع الكلمة داخل هذا الرمز "هنا تضع الكلمة"
مهما كان حجم الكلمة
ولكن اذا زادت عن عدد مربعات الشاشة فلن يظهر البقية
ويمكنك ايضا كتابة كلمة داخل متغير ثم كتابة اسم المتغير داخل هذا الامر
وهو سوف يعرض الكلمة التى داخل هذا المتغير

مثلا اذا اردنا اظهار كلمة Hello فى الصف الاول العمود السابع
تكون هكذا
كود:
Lcd_Out(1, 7, "Hello");
هنا الرقم الاول هو رقم الصف وهنا هو 1 والرقم الثانى هو رقم المربع وهو هنا 7
ثم الكلمة بين هذا الرمز ""
وهنا حرف ال H سيكون فى المربع السابع اى بداية الكلمة
اما الحرف e فسيكون فى المربع الثامن وهكذا بالتتابع
__________________________________________________ _____________

ثالث امر هو
كود:
Lcd_Out_Cp
وهو يخرج كلمة كاملة او عدد كامل وليس حرف حرف ولا رقم رقم
ويمكنة اخراج حرف حرف ولكن الادق له اخراح كلمة كاملة او عدد كامل
وايضا يخرج الكلمة بين هذا الرمز "هنا تضع الكلمة"
ويمكنك ايضا كتابة كلمة داخل متغير ثم كتابة اسم المتغير داخل هذا الامر
وهو سوف يعرض الكلمة التى داخل هذا المتغير

اى انه مثل الامر السابق بالزبط
اذا ما الفرق بينهم

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

اى اذا كنت كتبت كلمة Go على المربع الاول فى الصف الثانى
هذا يعنى ان المربع الاول تم كتابة حرف G علية ثم المربع الثانى تم كتابة الحرف O علية
اذن المؤشر يقف على المربع الثانى وهو اخر ما تم الكتابة علية

اذن قم بكتابة الكلمة Mohamed على الشاشة من خلال هذا الامر الان
اى هكذا
كود:
Lcd_Out_Cp("Mohamed");
كما ترى بدون تحديد لماكن الصف او المربع
اين سوف يبدء اى اين سوف يكون حرف ال M وهو الحرف الاول من الكلمة
يكون بعد اخر مربع تم الكتابة علية
او بعد المربع الذى يوجد علية المؤشر
وهنا هو المربع الثالث
اى الشاشة سوف تظهر الكلمات كلها هكذا
GoMohamed

اظن هذا مفهوم
ويمكنك وضح فاصل بالمسطرة بتاعت الكيبورد قبل كلمة Mohamed
داخل الرموز "Mohamed " لتظهر فاضل بين الكلمتين
كما ترى الفراغ الصغير بجانب الكلمة
__________________________________________________ _____________

الامر الرابع هو
كود:
Lcd_Chr
هذا الامر يقوم باظهار حرف واحد فقط او رقم واحد فقط فى مكان تحددة انت
واذا كتبت علية اكثر من ذلك فى المرة الواحدة فلن يظهر شى
ويجب وضع الحرف او الرقم داخل هذا الرمز ' هنا تضع الحرف او الرقم '

وهو الافضل فى اظهار رقم او حرف واحد فى المرة الواحدة

واذا اردنا اظهار الحرف R فى الصف الاول المربع الخامس
يكون هكذا
كود:
Lcd_Chr(1, 5, 'R');
فالصف هو الرقم الاول وهو 1 اما المربع فالرقم الثانى وهو 5
ثم الحرف بين هذا الرمز ' '
__________________________________________________ _____________

الامر الخامس هو
كود:
Lcd_Chr_Cp
وهو لاظهار رقم او حرف واحد فقط فى كل مرة
واذا كتبت علية اكثر من ذلك فى المرة الواحدة فلن يظهر شى
ويجب وضع الحرف او الرقم داخل هذا الرمز ' هنا تضع الحرف او الرقم '

وهو الادق لاظهار حرف او رقم فى المرة الواحدة
ولكن انت لا تحدد مكان العرض
بل بمكان المؤشر او اخر مربع تم الكتابه علية
واظن الحتة دى فهمناها
واذا اردت كتابة الحرف W على اخر مكان للمؤشر
يكون هكذا
كود:
Lcd_Chr_Cp('W');
.................................................. .................................................. ..........

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

اما رابع وخامس امر
فيظهر حرف حرف او رقم رقم
الامر الرابع يظهر الحرف او الرقم فى مكان تحددة انت
اما الخامس فيظهرة على حسب مكان المؤشر
.................................................. .................................................. ..........
الامر السادس هو
كود:
Lcd_Cmd
هذا الامر رائع وجميل
وانا مغرم بة هههههههههههههههه

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

وهذه الصورة بها الاوامر التى تستخدم للشاشة



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

ولكتابة امر مسح الشاشة مثلا
يكتب هكذا

كود:
Lcd_Cmd(_LCD_CLEAR);
ولكتابة امر قفل المؤشر وعدم اظهارة
يكتب هكذا

كود:
Lcd_Cmd(_LCD_CURSOR_OFF);
اما الاستخدام الاخر لهذا الامر فا فيما بعد ان شاء الله
بعد فهم هذا الجزء اولا

الى هنا انتهى شرح الاوامر وكيفية الكتابة على شاشة LCD من النوع Character
.................................................. .................................................. ....
يوجد امر اخير وهو التابع للامر الاول
وهو تعرف الارجل التى سوف يربط عليها ال LCD Character
مع البك

وهذه الاوامر ثابتة وما يتغير فيها هو الارجل التى سوف تربط بها البك بالشاشة
وهى

كود:
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;
هنا ستجد ان كل طرف من الشاشة مكتوب بجوارة اسم الرجل التى سوف يربط معها من الميكرو
مثلا
كود:
LCD_RS at RB4_bit
هنا طرف الشاشة وهو
LCD_RS
سوف يربط مع الطرف
RB4
اى الطرف رقم 4 فى البورت B فى الميكرو
وهكذا
واذا اردت مثلا تغير مكان تركيب الاطراف فغير فى الجزء الخاص بالبورت
مثلا مكان RB4
يكون RA4
وهكذا

وهذه الاوامر يجب كتابتها فى بداية الكود
اى قبل ال
كود:
void main()
وداخل ال
كود:
void main()
نكتب الامر الاول
............................................انتهى. .................................................. ......

هذا رابط كود للكتابة واظهار كلمات على شاشة من نفس النوع 16*2
مع المحاكاة وكل شىء
وهو فقط مجرد مثال
وكل امر سوف تجد بجانبة رقم وهو للدالاله على ترتيبة فى الشرح

http://www.4shared.com/rar/hi1rSnBc/LCD_Character.html

وان شاء الله هيكون فى اكواد تانية توضح اكثر واكثر
ولكن نفهم الاساس الاول _
__________________________________________________ ____________

اما عن التوصيل فى الحقيقة فهو كما فى المحاكاة

وايضا هذه صورة من الداتا شيت لاحدى الشاشات
تبين كل رجل وما فائدتها




الرجل رقم 1 فهى للارضى
الرجل رقم 2 فهى للموجب
الرجل رقم 3 فهى لتحديد مستوى التباين للشاشة وصلة لل موجب على طول
الرجل رقم 4 فهى لتحديد سجلات داخل الشاشة
الرجل رقم 5 فهى لاختيار هل تسكتب على الشاشة ام ستقراء منها
الرجل رقم 6 فهى طرف تفعيل البيانات
الرجل رقم 7 الى الرجل رقم 14 فهم اطراف الداتا التى سوف تتناقل بين البك والشاشة
الرجل رقم 15 فهى طرف تشغيل الاضاءة الخلفية الطرف الموجب
الرجل رقم 16 فهى طرف تشغيل الاضاءة الخلفية الطرف السالب
__________________________________________________ _____________

ومن فهم هذا الشرح وينظر بعد ذلك الى اى كود LCD Character
سوف يفهم جيدا ان شاء الله ويعلم كل امر لماذا وضع
وهذا الشرح من اجتهادى الخاص اذا كان هناك خطا ارجوا توضيحة

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

والسلام عليكم ورحمه الله وبركاته

اعلانات

الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 640
نشاط [ المظلوم ]
قوة السمعة:0
قديم 07-08-2012, 11:37 PM المشاركة 2   
افتراضي


ه محمد ،،

ما شاء الله باين ان الشرح مفصل ،، رايح اقرأ الموضوع وترقب اسئلتي ،،

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

bee55
:: مهندس ::
تاريخ التسجيل: Aug 2012
المشاركات: 24
نشاط [ bee55 ]
قوة السمعة:0
قديم 08-08-2012, 12:37 AM المشاركة 3   
افتراضي


الاخ الكريم
السلام عليكم ورحمة الله
سؤالي هو ما الفرق بين الأمر
sbit LCD_RS at RB4_bit;
والأمر
sbit LCD_RS_Direction at TRISB4_bit;


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


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

اخى المظلوم
انت برحتك اسئل زى مانت عايز وانا معاك ان شاء الله
تقبل الله منك صيامك وقيامك


اخى bee55

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

ولكنى ساحاول ان شاء الله شرح ما يمكن شرحة

فالامر الاول

كود:
sbit LCD_RS at RB4_bit;
هو لفعل حجتين
الاول تغير اسم الطرف RB4 الى LCD_RS يعنى لما نيجى نتعامل فى الكود
منكتبش RB4 او PORTB.f4 لا نكتب الاسم الثانى على طول اى LCD_RS

والفعل الثانى هو
جعل هذا الطرف يعمل كابت اى ديجيتال 0 او 1 فقط

اما
كود:
sbit LCD_RS_Direction at TRISB4_bit;
فهو يفعل فعلين ايضا
الاول هو جعل الامر TRIS للطرف رقم 4 فى البورت B يسمى بنفس الاسم
ل LCD_RS_Direction فعند التحكم لم نعد فى حاجة لكتابة TRISB4
فقط نكتب LCD_RS_Direction

والامر الثانى هو جعلها بت اى ديجتال ياما 0 ياما 1
وهو يستخدم فى جعل الطرف دخل او خرج على حسب مقدتا الحسابات
ارجوا ان تكون فهمت الاوامر وما فائدتها


الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 640
نشاط [ المظلوم ]
قوة السمعة:0
قديم 08-08-2012, 05:43 AM المشاركة 5   
افتراضي


أهلا


أخي العزيز محمد ،، شكرا لك على هذا الشرح والوقت الذي تهبنا اياه !

شرحك وافي ولله الحمد ،، ولكن هل لي ان افهم لماذا نحتاج في توصيل بعض الشاشات إلى مقاومة متغيرة ! !،،

قمت قبل مدره بعمل مشروع " هنا في القرية " كان موضوعا كتبه الاخ MAAM عن قياس درجة الحرار واظهارها على شاشة LCD ومن ثم ارسال هذه البيانات إلى الكمبيوتر بالـ USB ولكن الموضوع لم يكتمل للأسف ،، ولكن وصلنا إلى أننا تمكنا من قياس درجة الحرارة باستخدام الsensor الــ LM35 ،، وتمكنا من عرضها على شاشة LCD ! ،، وكنا قد استخدمنا مقاومة متغيرة ،، وإليك الصورة :

http://upload.qariya.info/images/qariya-815c36b39d.jpg



تمنياتي


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


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

اخى الحبيب المظلوم

نعم يمكن تركيب مقاومة متغيرة على الطرف رقم 3 للشاشة
وهو الطرف الخاص بالتباين للصورة
اى يجعلها واضحة او اقل وضوح وهكذا

ولكنى لم استعملها لان اقصى نسبة تباين تكون عند توصيل ال 5 فولت للشاشة

واذا ارد احد تقليل نسبة التباين فيجب تركيب هذه المقاومة

وانت تعرف لا يجب كتابة كل شى فى الشرح
حتى يتفاعل البعض فاذا سال احد
سوف اجيبة ان شاء الله

والتفاعل هو ما يظهر نجاح شرحك

شكرا جزيلا لك على ملاحظتك

ربنا يجعلك من عتقائه فى رمضان هذا
امين


الصورة الرمزية المظلوم
المظلوم
:: مهندس متميز ::
تاريخ التسجيل: Oct 2011
الدولة: BH
المشاركات: 640
نشاط [ المظلوم ]
قوة السمعة:0
قديم 08-08-2012, 07:02 AM المشاركة 7   
افتراضي


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

اخى الحبيب المظلوم

نعم يمكن تركيب مقاومة متغيرة على الطرف رقم 3 للشاشة
وهو الطرف الخاص بالتباين للصورة
اى يجعلها واضحة او اقل وضوح وهكذا

ولكنى لم استعملها لان اقصى نسبة تباين تكون عند توصيل ال 5 فولت للشاشة

واذا ارد احد تقليل نسبة التباين فيجب تركيب هذه المقاومة

وانت تعرف لا يجب كتابة كل شى فى الشرح
حتى يتفاعل البعض فاذا سال احد
سوف اجيبة ان شاء الله

والتفاعل هو ما يظهر نجاح شرحك

شكرا جزيلا لك على ملاحظتك

ربنا يجعلك من عتقائه فى رمضان هذا
امين
اهلا اخي

صحيح ،، انا تعلمت هذا الامر جيدا لانني واجهتني مشكلة في التباين عند التنفيذ
عندما تقع في المشاكل ،، تستفيد كثيرا ،، خصوصا اذا وجدت حلها !!

حسنا ،، لو فرضنا اننا لدينا جملة ونريد ان نظهرها متحركة على الشاشة ،، ببحيث تسيير الكبمات من اليسار الى اليمين " بالعربي ) !! او خلينا نقول من اليمين الى اليسار " بالانجلش " ،، فهل هذا ممكن ؟!


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:94
قديم 08-08-2012, 07:24 PM المشاركة 8   
افتراضي


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

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

وان شاء الله معظم الى ممكن نعرضوا عليها هحاول اشرحة ونفهموا سوا باذن الله

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

وان شاء الله نكمل الموضوع والكل يستفيد

إضافة رد

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

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

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


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

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