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

   

m_mansour2005
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2009
المشاركات: 80
نشاط [ m_mansour2005 ]
قوة السمعة:
قديم 28-03-2009, 02:29 AM المشاركة 25   
افتراضي



بسم الله الرحمن الرحيم
أريد فعل ذلك فقط لأننى أتعلم.وأحب أن تكون لدى خيارات أثناء التعامل مع ال lcd
,وشكرا لك أستاذ أحمد.

اعلانات

الصورة الرمزية ahmad_s_f
ahmad_s_f
:: المهندس/ أحمد سمير فايد ::
تاريخ التسجيل: Jun 2006
الدولة: سائح في ارض الله
المشاركات: 632
نشاط [ ahmad_s_f ]
قوة السمعة:
قديم 28-03-2009, 02:50 PM المشاركة 26   
افتراضي سبحان الله وبحمده ... سبحان الله العظيم


بسم الله الرحمن الرحيم
أخي الكريم m_mansour2005
من المعلوم أن هناك طريقتين شهيرتين لاستخدام معظم أنواع LCD
الطريقة الأولى تسمى 4BIT INTERFACE والطريقة الثانية تسمى 8BIT INTERFACE

الطريقة الأولى هي التي كتبت بها أنت هذا الكود .
كود:
void main() { int x[5]; int z; unsigned char i; TRISB=0; LCD_INIT(&PORTB); start: lcd_chr_cp('m'); delay_ms(900); lcd_chr_cp('o'); delay_ms(900); lcd_chr_cp('h'); delay_ms(900); lcd_chr_cp('a'); delay_ms(900); lcd_chr_cp('m'); delay_ms(900); lcd_chr_cp('e'); delay_ms(900); lcd_chr_cp('d'); lcd_cmd(lcd_clear); goto start; }
هذه الطريقة تعتمد على أربع أطراف لنقل البيانات بالإضافة إلى ثلاث أطراف للتحكم هم RS,E,R/W
أما الطريقة الثانية 8BIT_INTERFACE
فهي تعتمد على 8 أطراف لنقل البيانات بالإضافة إلى ثلاث أطراف للتحكم ( RS,E,R/W )
غالبا ما يسأل الناس الذين يستخدمون الطريقة الثانية عن كيفية استخدام الطريقة الأولى لتوفير الأسلاك والأطراف .
مع العلم أن هناك أنواع كثيرة من LCD تعمل بالطريقتين ومنها ما يعمل بطريقة واحدة فقط .
(انتهت المقدمة)
======================
بالنسبة للكود الذي كتبته أخي الكريم فهو أولا يحتوي على خطأ بسيط
فكان يجب عليك أن تضيف السطر
كود:
delay_ms(900);
بعد الأمر
كود:
lcd8_chr_cp('d');
لكي يظهر حرف d لأنه بهذه الطريقة لن يلاحظ ظهوره .
=====================
الأمر الثاني : بالنسبة لطريقة استخدام 8bit_interface ففي لغة مايكروسي الأمر في غاية السهولة كل ما ستفعله هو إضافة الرقم 8 فقط لأوامرك .. كيف ذلك ؟؟
ولتوضيح ذلك انظر للأمثلة التالية :-
كود:
lcd_chr_cp('m'); سيصبح كما يلي : lcd8_chr_cp('m'); ============ lcd_cmd(lcd_clear); سيصبح كما يلي : lcd8_cmd(lcd_clear); ============ lcd_out(1,1,text); سيصبح كما يلي : lcd8_out(1,1,text); =========== وهكذا مجرد إضافة الرقم ثمانية
الشيء الثاني الذي سيختلف هو أمر التهيئة
كود:
lcd_init(&portb);
هذا الأمر كما تعلم سيقوم بإخبار البك بأن الشاشة موصلة بـ Portb بالطريقة التالية:
D7 → portb.7
D6 → portb.6
D5 → portb.5
D4 → portb.4
E → portb.3
RS → portb.2
RW → portb.0

طبعا مع إمكانية توصيل RW بالأرضي .

أما في الطريقة الثانية فنحن نحتاج لأن نحدد للبك أطراف أكثر من ذلك ليس مجرد PORT واحد فقط . فكما أخبرتك نحتاج لثمان أطراف لإرسال البيانات بالإضافة إلى ثلاثة أطراف للتحكم . إذن نحتاج إلى بورتين 2PORTs .
إذن يمكننا أن نكتب الأمر التالي :
كود:
Lcd8_Init(&PORTB, &PORTC);
وهذا يعني أننا قمنا بالتوصيلات كما يلي :-

E → PORTB.6
RS → PORTB.4
R/W → PORTB.5

D7 → PORTC.7
D6 → PORTC.6
D5 → PORTC.5
D4 → PORTC.4
D3 → PORTC.3
D2 → PORTC.2
D1 → PORTC.1
D0 → PORTC.0


وفي هذه الحالة يسمى portb بـ بورت التحكم ctrlport ويسمى portc بورت البيانات dataport .

================
بقي أن تعرف أنه في حالة أننا أردنا أن نقوم بتوصيل الأطراف بشكل مختلف كما نريد فإننا نقوم باستخدام الأمر التالي :
كود:
Lcd8_Config
وإذا كتبنا هذا الأمر فإننا لا نحتاج إلى الأمر Lcd8_Init

وإليك المثال التالي :-
كود:
Lcd8_Config(&PORTA,&PORTB,0,1,2,7,6,5,4,3,2,1,0);
هذا الأمر يعني أننا قمنا بالتوصيلات كما يلي :-

E → PORTA.1
RS → PORTA.0
R/W → PORTA.2

D7 → PORTB.7
D6 → PORTBt.6
D5 → PORTB.5
D4 → PORTB.4
D3 → PORTB.3
D2 → PORTB.2
D1 → PORTB.1
D0 → PORTB.0

ويمكنك تغيير هذا الأرقام بتغيير الأمر كما تشاء .

======================================
وللعلم فإن الأمر السابق يمكن استخدام أمر شبيه به في 4bit_interface . ولكن بدون الرقم 8 . وإليك المثال التالي :
كود:
Lcd_Config(&PORTB, 0, 1, 7, 5, 4, 3, 2);
هذا الأمر يعني أننا قمنا بالتوصيل كما يلي :-


RS → PORTA.0
E → PORTA.1
R/W → PORTA.7

D7 → PORTB.5
D6 → PORTBt.4
D5 → PORTB.3
D4 → PORTB.2

======================================
لمزيد من المعلومات عن كيفية استخدام الطريقتين اضغط على المفتاحF1 في مايكروسي ثم اختار mikroC Libraries ثم اختار LCD8 (8-bit interface) Library او اختار LCD (4-bit interface
وبالتوفيق ,,

======================================
لقد قمت بإعداد مجموعة من الأمثلة لاستخدام 8bit_interface لمجموعة مشهورة من أنواع البك pic16f84a,pic16f628a,pic16f877a ووضعت ملف المحاكاة وملفات الكود الخاصة بذلك يمكنك الإطلاع عليها للإستفادة .. علما أنني وضعت الكود الذي وضعته أنت وقمت بعمل التعديل اللازم عليه ليتماشى مع هذه الطريقة .

يمكنك تحميل الملف من هنا

=====================================

وفقنا الله جميعا لما يحب ويرضى ورزقنا وإياكم العلم النافع والعمل الصالح

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

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

m_mansour2005
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2009
المشاركات: 80
نشاط [ m_mansour2005 ]
قوة السمعة:
قديم 28-03-2009, 07:59 PM المشاركة 27   
افتراضي


بسم الله الرحمن الرحيم
شكرا أستاذ أحمد على المجهود الكبير ده . وأنا هجربه بإذن الله على التست بورد ...وإنشاء الله يشتغل


m_mansour2005
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2009
المشاركات: 80
نشاط [ m_mansour2005 ]
قوة السمعة:
قديم 01-04-2009, 06:37 PM المشاركة 28   
افتراضي


بسم الله الرحمن الرحيم
بعض المشكلات أثناء التنفيذ حدثت ال lcd من النوع topway LMB162ABC
لم تعمل الشاشة لا أعلم لماذا ولكن هناك بعض الأمور لست متأكد منها.... وسوف استخدم 4 أطراف فقط فى الإرسال..
ماهما الطرفان الذان يجعلان الشاشة تضىء ؟؟
إذا كان الطرفان هما الVSS & VCC اذا فان الداتا شيت التى لدى غير سليمة.....
يوجد فى الشاشة 16 PIN ماهما الطرفان الذان لن يتم توصيلهم ؟؟؟
ماهى الطريقة التى يتم بها توصيل ال W/R ........VEE بدون استخدام المقاومة المتغيرة..؟؟؟


الصورة الرمزية محمد50
محمد50
:: عضو فضي ::
تاريخ التسجيل: Mar 2006
المشاركات: 441
نشاط [ محمد50 ]
قوة السمعة:
قديم 01-04-2009, 06:53 PM المشاركة 29   
افتراضي


أمممممممممم
أريد أن اساعدك .
الطرفان الخاصين باضاءة الشاشةهما
15 LED BACK LIGHT VCC+5V
16 LED BACK LIGHT GAND


m_mansour2005
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2009
المشاركات: 80
نشاط [ m_mansour2005 ]
قوة السمعة:
قديم 02-04-2009, 12:42 AM المشاركة 30   
افتراضي


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

أنا وصلت
r/w .............. gnd
vo or vee..................7kohm by gnd
بقية الأطراف قمت بتوصيلها كما هى فى البروتس ..,والبرنامج يعمل جيدا فى المحاكاة ..
ولكن عند التنفيذ عمليا فقط تضىء الشاشة

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


الصورة الرمزية M_OSOS
M_OSOS
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2009
الدولة: Egy
المشاركات: 62
نشاط [ M_OSOS ]
قوة السمعة:
قديم 10-04-2009, 03:35 PM المشاركة 31   
sun


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

اهلا اخي m_mansour2005

بالنسبه للداتا شيت والتوصيل الدائره (فال ال سي دي تكون مرقمه او علي الاقل اول واخر بن ) ففيما الخطئ او الاختلاف

اما بالنسبه لمشكله عدم اضائه الشاشه فلانك تركت اخر بنتين دون توصيل ف--


T1----GND
T2----VCC
T3----10 Kohm by GND
T4----PORTXXX.2
T5----GND
T6----PORTXXX.3
T7----XXXXX
T8----XXXXX
T9----XXXXX
T10----XXXXX
T11----PORTXXX.4
T12----PORTXXX.5
T13----PORTXXX.6
T14----PORTXXX.7
T15----VCC
T16----GND
===================================

اخي عندي فيديوا منفذ عليه الدائره عملي وبرنامج المايكرو سي ولاكن
1-ال ال سي دي 16*1 وليس 16*2
2-هناك تداخل باصوات خارجيه محيطه اثناء التصوير (الفيديوا كان لي انا مصوره لتذكر الدائره ولاكني وجدته قد يكون مفيدا فرفعته )


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


الصورة الرمزية M_OSOS
M_OSOS
:: مهندس متواجد ::
تاريخ التسجيل: Feb 2009
الدولة: Egy
المشاركات: 62
نشاط [ M_OSOS ]
قوة السمعة:
قديم 10-04-2009, 03:39 PM المشاركة 32   
sun


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

اسف جدا علي

1- نسيت اضع رابط التحميل
2-لم الاحظ رد اخي محمد50 علي المشاركه ففيها المطلوب
3-لم اشكر اخي ahmad_s_f علي الشرح الوافي للتعامل مع ال ال سي دي

===============================

رابط التحميل هنا

==============================

شكرا اخي ahmad_s_f علي الشرح الجميل والمعلومات المفيده



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