 |
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
|
|
نشاط [ funky112233 ]
قوة السمعة:93
|
|
23-08-2012, 07:30 PM
المشاركة 1
|
|
تعلم كيفية التعامل مع الLCD وما انواعها وكيفية التحكم بها بالميكروسى ((الجزء الرابع))
Twitter
FaceBook
Google+
بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته
كل عام وانتم بخير
ان شاء الله هنبدء فى الجزء دة مع الشاشات ال GLCD) Graphic Lcd)
اولا
__________
هذا رابط الجزء الاول وفية تعريفات عن الشاشات وانواعها
http://www.qariya.com/vb/showthread.php?t=113399
.................................................. ..
هذا رابط الجزء الثانى وهو خاص بالشاشات ال Character LCD
http://www.qariya.com/vb/showthread.php?t=113441
.................................................. ..
هذا رابط الجزء الثالث وهو خاص بالشاشات ال Segment LCD
http://www.qariya.com/vb/showthread.php?t=113657
__________________________________________________ _____________________________________
الان سوف نتحدث عن الشاشات Graphic Lcd
والشرح الاول سيكون كالاتى
1 - كلام عن الشاشة وكيف سوف نكمل الشرح ان شاء الله ؟؟
2 - التعرف على انواع هذه الشاشة ؟؟
3 - شرح اوامر اول نوع من الشاشة وكيفية التعامل معه ؟؟
.................................................. .................................................. .......
1 - كلام عن الشاشة وكيف سوف نكمل الشرح ان شاء الله ؟؟
يجب ان نعلم من البداية ان التعامل مع الشاشات ال Graphic Lcd
سوف يختلف تمام عن الشاشات الاخرى
لان لها الكثير من الانواع وسوف نتحدث عن هذا الامر ان شاء الله
وهذا يعنى ان هذا الجزء يمكن ان يطول معانا
واذا تعلمنا التعامل مع هذه الشاشات فسوف تفتح لنا الكثير من المجالات
فى التعامل مع الكثير من الشاشات الكبيرة والصغيرة
مثل شاشات الموبايل وشاشات التلفزيون وا وا وا
فقط اعرف المبدء وابدء فى تنفيذ ما تريد ان شاء الله
والتعامل مع هذه الشاشة لا يختلف فى الكثير بينة وبين الشاشات الملونة
فا فهم التعامل مع هذا النوع سوف يسهل عليك ان شاء الله التعامل مع الشاشات الالوان
وهذه الشاشات تعطيك التحكم الكامل فى كل بكسل بها
مثل شاشات التلفزيون وشاشات الموبايل تماما
ولهذا يمكنك كتابة او رسم ما تريد عليها وعرض الصور ايضا
وكل شىء مثلها مثل اى شاشة كما قلت
ولكن الفرق بينها وبين شاشات الموبايلات الحديثة وشاشات التلفزيون
انها غير ملونة
وبالطبع تفرق احيانا فى عدد البكسلات نفسها وايضا البروتوكول التى تعمل به
وهذه صورة لاحدى الانواع

وبالنسبة للشرح
فسوف نبدء اولا بالسهل ثم الصعب ان شاء الله
وفى البداية لن اقوم بكتابة اية اكواد او رفع دوائر
فقط تعريف الاوامر الموجودة فى مكتبة ال MikroC وفهم كيفية عمل هذه الشاشات
والتعرف على انواعها وما المشاكل التى سوف تواجهنا ان شاء الله
وما الفائدة منها ايضا ..
__________________________________________________ _____________
2 - التعرف على انواع هذه الشاشة ؟؟
فى هذه النقطة يجب ان نعلم ان كل الشاشات تعمل بالمبدء نفسة وبالتكوين نفسة
كما قلت سابقا ولا اختلاف بينهم وبين بعض الا فى شىء واحد
وهو نوع المتحكم المربوط فى الشاشة
وهو ما كنت اسمية فى الشروحات ال IC الخاص بالشاشة ال LCD
وهو ما يقوم بالتحكم فى البكسلات بدل عنك لتقليل عدد الاطراف التى تربط بالشاشة
فتخيل لولا هذا المتحكم لكنت تحتاج الى 100 او اكثر من الاطرف للتحكم فى شاشة صغيرة جدا ولكن هذا المتحكم او ال IC وفر كل ذلك الى 10 اطراف تقريبا للتحكم الكامل بالشاشة
ولكن ببروتوكول معين وخاص لكل متحكم
وهنا هذه مشكلة لان فى الشاشات ال Graphic Lcd
كل متحكم له بروتوكول خاص بة وهذا ما يجعل لهذه الشاشات
انواع مختلفة واكواد مختلفة لكل نوع وطريقة خاصة للتعامل مع كل نوع
ولكن انتبة انا لا اتحدث عن ما ان كانت الشاشة كبيرة الحجم ام صغيرة
او بها اضاءة ام لا
انا اتحدث عن نوع المتحكم الذى يتحكم فى الشاشة
والذى يجب علينا التعامل معه على حسب بروتوكولة الخاص بة
لكى نتحكم فى الشاشة
اذن ما يهم هو نوع المتحكم الموجود بداخل الشاشة
وهناك انواع كثيرة من المتحكمات وكل شركة لها متحكم خاص بها
مثل
Toshiba T6963C Controller
كما ترى شركة توشيبا وهذا هو اسم المتحكم الخاص بالشركة
وهذه بعض اسماء الشاشات التى يتحكم بها هذا المتحكم
LM3228 LM3229 LM3267 LM3283
LM3287 LM4228 LM4265 LM4267
LM4283 LM4287
.........................
Sharp SED1520 Controller
وهذا متحكم شركة شارب
وهذه اسماء بعض الشاشات التى يستخدم فيها هذا المتحكم
AGM1232G EW12A03GLY HDM32GS12-B HDM32GS12Y-B
...........................
Sharp SED1565 Controller
وهذا المتحكم من نفس الشركة ولكن يختلف فى التعامل عن الاخر
وهذه بعض الشاشات التى يستخدم فيها هذا المتحكم
HDG12864F-1 HDS12864F-3 HDG12864L-4 HDG12864L-6
NOKIA7110 TG126410GFSB TG13650FEY
............................
Samsung KS0108 Controller
وهذا خاص بشركة سامسونج
..............................
وهكذا كل متحكم له طريقة للتعامل معه ولكن معظمهم قريب بعض الشى من الاخر
يعنى لو عرفنا نتحكم فى واحد على الاقل ان شاء الله الباقى يكون سهل
فقبل التعامل مع اى شاشة يجب معرفة نوع المتحكم الخاص بها اولا
وهذه الشاشات تقاس من خلال عدد البكسلات
فمثلا 64*128
هذا يعنى ان الشاشة مكونة من 8192 بكسل
وهكذا تقاس هذة الشاشات
__________________________________________________ _____________
3 - شرح اوامر اول نوع من الشاشة وكيفية التعامل معه ؟؟
وهو النوع الموجود له مكتبة خاصة فى الميكروسى للتعامل معه بكل سهولة
واسم المكتبة هو Graphic Lcd Library
ونوع المتحكم هو Samsung KS0108/KS0107 Controller
والشاشة بحجم Lcd 128x64
فهذه المكتبة لا تعمل الا مع هذا المتحكم وهذا الحجم من الشاشات
وستجد احدى انواع هذه الشاشة فى البروتوس اسمها
AMPIRE128X64
هذه هى اوامر التحكم فى الشاشة
كود:
Glcd_Init
Glcd_Set_Side
Glcd_Set_X
Glcd_Set_Page
Glcd_Read_Data
Glcd_Write_Data
Glcd_Set_Ext_Buffer
Glcd_Fill
Glcd_Dot
Glcd_Line
Glcd_V_Line
Glcd_H_Line
Glcd_Rectangle
Glcd_Rectangle_Round_Edges
Glcd_Rectangle_Round_Edges_Fill
Glcd_Box
Glcd_Circle
Glcd_Circle_Fill
Glcd_Set_Font
Glcd_Set_Font_Adv
Glcd_Set_Ext_Font_Adv
Glcd_Write_Char
Glcd_Write_Char_Adv
Glcd_Write_Text
Glcd_Write_Text_Adv
Glcd_Write_Const_Text_Adv
Glcd_Image
Glcd_Ext_Image
Glcd_PartialImage
Glcd_Ext_PartialImage
اول امر هو
وهو امر التعريفات كما نعلم من الشروحات السابقة
ويكتب داخل الداله الرئيسية ال
وله تابع وهو اوامر ربط الارجل والاطراف الخاصة بالميكرو و الشاشة
وهى
كود:
sbit GLCD_CS1 at RB0_bit;
sbit GLCD_CS2 at RB1_bit;
sbit GLCD_RS at RB2_bit;
sbit GLCD_RW at RB3_bit;
sbit GLCD_EN at RB4_bit;
sbit GLCD_RST at RB5_bit;
sbit GLCD_CS1_Direction at TRISB0_bit;
sbit GLCD_CS2_Direction at TRISB1_bit;
sbit GLCD_RS_Direction at TRISB2_bit;
sbit GLCD_RW_Direction at TRISB3_bit;
sbit GLCD_EN_Direction at TRISB4_bit;
sbit GLCD_RST_Direction at TRISB5_bit;
وتكتب قبل الداله الرئيسية ال
.................................................. .................................................
ثم
كود:
Glcd_Set_Side
Glcd_Set_X
Glcd_Set_Page
Glcd_Read_Data
Glcd_Write_Data
Glcd_Set_Ext_Buffer
هذه ليس هامة لنا الان سوف نقوم بشرحها فيما بعد ان شاء الله
.................................................. .................................................
ناتى لاوامر العرض على الشاشة والتحكم بها
وقبل البدء يجب ان نعلم ان هذه الشاشات بها لونان
اما ابيض او الممسوح اى ان البكسلات غير مفعلة
واما الاسود اى ان البكسلات تعمل
ويجب ايضا تامل هذه الصورة
فهنا نجد ان الشاشة لها محورين محور افقى x ومحور راسى y
وستجد ان المحور الافقى x يقع بين 0 الى 127 وهذا يعنى 128 بكسل بالعرض
وان المحور الراسى y يقع بين 0 الى 63 وهذا يعنى 64 بكسل بالطول
وهذا ما يعنى 64*128 وهو مقاس الشاشة ويختلف من شاشة الى اخرى على حسب المقاس
وعلى اساسهم يتم تحديد امكان الرسومات على الشاشة
وايضا ستجد ان هناك 8 صفحات من 0 الى 7
وهى تقسيمة تستخدم فى الكتابة على الشاشة

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

او جعلها كلها سوداء بكتابته هكذا
وشكلة على الشاشة كما فى الصورة

.................................................. .................................................. ..........
ثانى امر وهو
وهذا الامر يتيح لك التحكم فى بكسل بكسل على حدا
اى نقطة واحدة على الشاشة فى كل امر
ويكتب هكذا
الرقم الاول هو لتحديد مكان النقطة او البكسل بالعرض اى الخط الافقى
الرقم الثانى هو لتحديد مكان النقطة او البكسل بالطول اى الخط الراسى
اما الرقم 2 فهو يعكس لون الشاشة اذا كان ابيض تكون النقطة سوداء والعكس
ويمكن كتابة الرقم 0 فهو يعبر عن اللون الابيض
ويمكن كتابة الرقم 1 فهو يعبر عن اللون الاسود
ويمكن تغير مكان النقطة او البكسل على حسب ما نريد من خلال وضع ارقام مكان الصفرين
وهنا كتبت 3 نقاط على الشاشة

.................................................. .................................................. ..........
ثالث امر هو
وهو امر لكتابة خط على الشاشة ويمكن ان يكون معوج او بزاوية معينة كما نريد
ويكتب هكذا
كود:
Glcd_Line(0, 0, 20, 30, 1);
الرقم الاول هو لتحديد مكان نقطة البداية للخط بالعرض اى الخط الافقى
الرقم الثانى هو لتحديد مكان نقطة البداية للخط بالطول اى الخط الراسى
الرقم الثالث هو لتحديد مكان نقطة النهاية للخط بالعرض اى الخط الافقى
الرقم الرابع هو لتحديد مكان نقطة النهاية للخط بالطول اى الخط الراسى
اما الررقم الخامس فهو لتحديد اللون
وهنا الخط سوف يرسم بين النقطة 0 الى 20 وهذا يعنى ان كل النقط من 0 الى 20 سوف تتحول للون الاسود او الابيض
على حسب ما اخترنا وهذا الخيار يحدد طول الخط
اما الرقمين من 0 الى 30 فهذا يحدد ميلان الخط اى ان بداية الخط من النقطة 0
وسوف يميل حتى النقطة 30
الصور سوف توضح ذلك

هنا قمت بعمل ثلاث خطوط باطوال مختلفة وميلان مختلف
.................................................. .................................................. ..........
الامر الرابع هو
وهو يقوم برسم خط عمودى
اى لا يكون فية زواية او ميلان لا بل عمودى
ويكتب هكذا
كود:
Glcd_V_Line(5, 25, 10, 1);
الرقم الاول لتحديد مكان نقطة بداية الخط على المحور الراسى
الرقم الثانى لتحديد مكان نقطة نهاية الخط على المحور الراسى
الرقم الثالث لتحديد مكان الخط على المحور الافقى
الرقم الرابع لتحديد اللون
الرقم الاول والثانى يحددان طول الخط على المحور الراسى
والرقم الثالث يحدد مكانة على المحور الافقى اى يحركة يمينا ويسارا
.................................................. .................................................. ..........
الامر الخامس هو
وهو يقوم برسم خط افقى
اى لا يكون فية زواية او ميلان لا بل افقى
ويكتب هكذا
كود:
Glcd_H_Line(10, 50, 20, 1);
الرقم الاول لتحديد مكان نقطة بداية الخط على المحور الافقى
الرقم الثانى لتحديد مكان نقطة نهاية الخط على المحور الافقى
الرقم الثالث لتحديد مكان الخط على المحور الراسى
الرقم الرابع لتحديد اللون
الرقم الاول والثانى يحددان طول الخط على المحور الافقى
والرقم الثالث يحدد مكانة على المحور الراسى اى يحركة لاعلى ولاسفل

.................................................. .................................................. ..........
الامر السادس هو
وهويقوم برسم مستطيل او مربع على الشاشة
بالحجم الذى نريد وفى المكان الذى نريد
ويكتب هكذا
كود:
Glcd_Rectangle(5, 5, 40, 40, 1);
الرقم الاول هو لتحديد مكان نقطة البداية للضلع الافقى على الخط الافقى
الرقم الثانى هو لتحديد مكان نقطة البداية للضلع الراسى على الخط الراسى
الرقم الثالث هو لتحديد مكان نقطة النهاية للضلع الافقى على الخط الافقى
الرقم الرابع هو لتحديد مكان نقطة النهاية للضلع الراسى على الخط الراسى
اما الررقم الخامس فهو لتحديد اللون
الرقم الاول والثالث يحددان طول الضلع الافقى
اما الرقم الثانى والرابع فيحددان طول الضلع الراسى

.................................................. .................................................. ..........
الامر السابع هو
كود:
Glcd_Rectangle_Round_Edges
وهو امر يقوم برسم مستطيل او مربع على الشاشة
بالحجم الذى نريد وفى المكان الذى نريد
ولكن يقوم بجعل راس المسطيل او المربع دائرى
ويكتب هكذا
كود:
Glcd_Rectangle_Round_Edges(5, 5, 40, 40, 12, 1);
الرقم الاول هو لتحديد مكان نقطة البداية للضلع الافقى على الخط الافقى
الرقم الثانى هو لتحديد مكان نقطة البداية للضلع الراسى على الخط الراسى
الرقم الثالث هو لتحديد مكان نقطة النهاية للضلع الافقى على الخط الافقى
الرقم الرابع هو لتحديد مكان نقطة النهاية للضلع الراسى على الخط الراسى
اما الرقم الخامس فهو لتحديد نصف قطر الدائرة
والرقم السادس فهو لتحديد اللون
الرقم الاول والثالث يحددان طول الضلع الافقى
اما الرقم الثانى والرابع فيحددان طول الضلع الراسى
اما الرقم الخامس فيحدد نصف قطر الدائرة
اى قيمة تقوص راس المربع او المستطيل

.................................................. .................................................. ..........
الامر الثامن هو
كود:
Glcd_Rectangle_Round_Edges_Fill
وهو يقوم بعمل نفس الامر السابع
اى
يقوم برسم مستطيل او مربع على الشاشة
بالحجم الذى نريد وفى المكان الذى نريد
ويقوم بجعل راس المسطيل او المربع دائرى
ولكن يجعل داخل هذا الشكل اسود اللون او ابيض اللون على حسب ما نختار
اى يقوم بتظليل الجزء الداخلى
ويكتب هكذا
كود:
Glcd_Rectangle_Round_Edges_Fill(5, 5, 40, 40, 12, 1);
وهو يقوم بما يقوم به الامر السابع مع الاختلاف الذى ذكرتة

.................................................. .................................................. ..........
الامر التاسع هو
وهو يقوم برسم مربع او مستطيل على الشاشة
ويمكن التحكم فى حجمة او مكانة كما نريد
ولكن يكون مظلل مكانة
ويكتب هكذا
كود:
Glcd_Box(5, 15, 20, 40, 1);
الرقم الاول هو لتحديد مكان نقطة البداية للضلع الافقى على الخط الافقى
الرقم الثانى هو لتحديد مكان نقطة البداية للضلع الراسى على الخط الراسى
الرقم الثالث هو لتحديد مكان نقطة النهاية للضلع الافقى على الخط الافقى
الرقم الرابع هو لتحديد مكان نقطة النهاية للضلع الراسى على الخط الراسى
اما الررقم الخامس فهو لتحديد اللون
الرقم الاول والثالث يحددان طول الضلع الافقى
اما الرقم الثانى والرابع فيحددان طول الضلع الراسى

.................................................. .................................................. ..........
الامر العاشر هو
وهو يقوم برسم دائرة على الشاشة
يمكن التحكم فى حجمها ومكانها كما نريد
ويكتب هكذا
كود:
Glcd_Circle(50, 50, 10, 1);
الرقم الاول يحدد مكان نقطة مركز الدائرة على الخط الافقى
الرقم الثانى يحدد مكان نقطة مركز الدائرة على الخط الراسى
الرقم الثالث يحدد نصف قطر الدائرة
الرقم الرابع يحدد اللون
الرقم الاول يتحكم فى مكان الدائرة من حيث مكانها الى اليمين او الى اليسار
اما الرقم الثانى فيتحكم فى مكان الدائرة من حيث مكانها الى اعلى او الى اسفل
اما الرقم الثالث فهو يحدد طول نصف قطر الدائرة وبالطبع حجمها
والرقم 10 يعنى 10 بكسل اى ان قطر الدائرة 20 بكسل

.................................................. .................................................. ..........
الامر الحادى عشر هو
وهو يقوم برسم دائرة على الشاشة
يمكن التحكم فى حجمها ومكانها كما نريد
ولكن يجعلها مظللة من الداخل
ويكتب هكذا
كود:
Glcd_Circle_Fill(50, 50, 10, 1);
وهو يقوم بما يقوم به الامر العاشر ولكن يظلل الدائرة من الداخل على حسب اللون
الذى قمنا باختيارة

.................................................. .................................................. ..........
الامر الثانى عشر هو
هذا الامر يقوم بتحديد شكل محدد من الرسومات كا الحروف
سواء تحديد حجمها او شكلها
وهذا لانة يحدد عدد من البكسلات لكل حرف فى الذاكرة كما نريد
فيمكن من خلالة الكتابة بالعربى وبخط الرقعه او النسخ او الكتابة بالتشكيل او او او كما نريد
او الكتابة بللغه الصينية حتى ههههههههه
وسوف ااجل الكلام عنة فيما بعد
لانى ان شاء الله سوف اشرحة بالتفصيل لاهميتة
وهذا ايضا لانة كبير لكى يشرح فى سطريين
ومعه هذه الاوامر
Glcd_Set_Font_Adv
Glcd_Set_Ext_Font_Adv
Glcd_Write_Char
Glcd_Write_Char_Adv
Glcd_Write_Text
Glcd_Write_Text_Adv
Glcd_Write_Const_Text_Adv
وهى اوامر الكتابة على الشاشة وتحديد شكل وحجم الحروف الخ.....
.................................................. .................................................. ..........
الامر العشرون وهو
وهو الامر الذى يقوم برسم صورة على الشاشة

وسوف يتم شرحة فيما بعد ايضا فى جزء خاص بة ان شاء الله
هو وهذه الاوامر ايضا
Glcd_Ext_Image
Glcd_PartialImage
Glcd_Ext_PartialImage
نظرا لاهمية الامر ولانة يحتاج الى الكثير من الشرح ..
.................................................. ...................... انتهى الجزء الاول من الشرح .................................................. ......................
فى نهاية هذا الجزء احب ان اقول لكم
انة يمكن رسم اشكال ثلاثية الابعاد على هذه الشاشات

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