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

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:334
قديم 13-07-2013, 11:59 PM المشاركة 1   
افتراضي مشاريع برمجة وحدة العرض LCD والمترجم Proton Basic : Twitter FaceBook Google+



مشاريع برمجة وحدة العرض LCD والمترجم Proton Basic :
المشروع الأول :
الغرض :
برنامج لاستكشاف مكتبة LCD للمترجم PROTON Basic ، لعرض بعض البيانات عليها .
الدائرة الكهربية :

البرنامج :

كود:
Device = 16F628A XTAL=4 ALL_DIGITAL true LCD_INTERFACE 4 LCD_DTPIN PORTB.4 LCD_RSPIN PORTB.3 LCD_ENPIN PORTB.2 Print Cls Print "PICMicro" End

السطور الثلاثة الأولى فى البرنامج هى نفسها كما سبق ، للإعدادات . لكن السطور التالية لها جديدة ، وهامة . هذه السطور تعرف إعداد أجهزتك ، للعرض بشاشة LCD .

كود:
LCD_INTERFACE 4
هذا السطر فى الواقع إعلان ، أو إعداد وليس أمر ، فهو يخبر المترجم أن الأجهزة التى لدينا سوف تستخدم نظام 4-bit، كما هو مبين بالدائرة الكهربية . وهذا هو الوضع الافتراضى للمترجم ، لذلك إذا لم يذكر هذا السطر فمن المفترض أن يكون الاختيار هو النظام 4-bit ، وهو ما سوف نستخدمه فى المشاريع ولذلك لم يتم وضع هذا السطر .

كود:
LCD_DTPIN PORTB.4
هذا السطر هو إعلان يخبر المترجم بأن الأربع بتات الخاصة بأطراف البيانات سيتم توصيلها إلى المنفذ PORTBبدءا من البت bit 4.
تذكر أنه يمكنك استخدام إما الأربع بتات العلوية أو الأربع بتات السفلية لمنفذ الميكروكونترولر . فلا يمكنك اختيار البتات
2,3,4,5 للبيانات ، على سبيل المثال . ولذلك فإن PORTB.4 يخبر المترجم بأن أطراف البيانات لوحدة العرض LCD متصلة بالبتات 4,5,6,7للمنفذ PORTB.

كود:
LCD_ENPIN PORTB.2
بالرجوع إلى وصف أطراف شاشة LCD، سوف تجد طرف التمكين Enable. عند تحديد هذا الطرف بواحد سوف يسمح للشاشة بقبول البيانات . ويتم ذلك تلقائيا من قبل المترجم ، لذلك يكون إلزامى أن نقول للمترجم أين يوصل طرف التمكين الخاص بك . فى هذا البرنامج يتم توصيله إلى الطرف PORTB.2.

كود:
LCD_RSPIN PORTB.3
الإعداد الأخير قبل أن نتمكن من استخدام شاشة LCDهو إعلام المترجم أين يتم توصيل الطرف RSمن شاشة LCD. فى هذا البرنامج يتم التوصيل إلى الطرف PORTB.3. مرة أخرى ، يمكن أن يتم التوصيل بأى طرف من أطراف الميكروكونترولر . الطرف RSبشاشة LCDيختار السجل . فهو يبين ما إذا كانت البيانات على أطراف البيانات هى أمر تحكم command أو بيانات dataمطلوب عرضها .
لاستخدام شاشة LCD، علينا أولا أن نخبر المترجم حول توصيلات الأجهزة التى لدينا . يتم ذلك باستخدام الثلاثة إعلانات . فى حال كنت تستخدم بعض الأجهزة الأخرى ، يتم إجراء التعديلات اللازمة فى التعليمات البرمجية (الكود) .
كود:
Print Cls
Print "PICMicro"
هذان هما أوامر مكتبة شاشة العرض LCD. أنهما ليس جزءا من لغة البيسك ، والمترجمات المختلفة يكون لها بناء جملة مختلف بالنسبة لهما .
· الأمر CLS اختصار لمسح الشاشة ‘Clear Screen’، هذا الأمر عادة ما يكون أول ما يستخدم في التطبيق الخاص بك . وهو يقوم بمهمتين هامتين جدا. أولا ، عندما يتم توصيل القدرة ، فإن إلكترونيات شاشة العرض LCDتحتاج إلى بعض الوقت لتصبح مستقرة ، هذا الأمر، يدرج قليل من التأخير الدخلى ، وثانيا أنه يمسح جميع السجلات ، وتصفير مخازن buffers العرض ووضع مؤشر الكتابة على السطر رقم "1" والعامود (الموقع) رقم "1" وبعد ذلك يكون العرض على استعداد لقبول أي بيانات .
· الأمر "طباعة" Print متعددة الاستخدامات فى مترجم PROTON BASIC . ففى أبسط شكل له ، كما هو الحال فى هذا المثال ، يقبل بارامتر (أو وسيط أو عامل) ، والذى يكون فى شكل سلسلة نصية string . السلاسل النصية هى ثوابت نصية ودائما تحاط بفواصل مقلوبة . الفواصل المقلوبة نفسها ليست جزء من السلسلة ، وبالتالي لا يتم عرضها . الأمر print سوف يعرض النص الذى يتم تغذيته على شاشة العرض LCD، بدءا من الموقع الحالي للمؤشر، وهنا الأمر CLS كان قد وضع المؤشر على السطر "1" والعامود (الموقع) "1". المؤشر، والذى هو علامة وامضة ، هو فى حد ذاته تم إيقافه OFF (عدم ظهوره) ، كوضع افتراضى . يمكننا تشغيله ، كما سنرى لاحقا.
· الأمر End، كما يشير الاسم، هو أمر لغة البيسك ، والذى سوف يضع الميكروكونترولر فى حلقة لا نهاية لها . (ليس هناك نهاية أو توقف للميكروبروسسور ، فعليه أن يفعل شيئا فى الوقت كله ) .
لاحظ،
، أنه بعد أن يتم عرض البيانات ، ويكون الميكروكونترولر "مشغول" busy فى عبارة end، فإن البيانات الخاصة بك ، سوف تظل على شاشة العرض LCD، وهذه هى روعة الميكروكونترولر 44780. فبعد أن يستقبل بيانات ، فإنه يحرر المعالج الأصلى لكى ينفذ مهام أخرى.


اعلانات

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:334
قديم 14-07-2013, 01:13 AM المشاركة 2   
افتراضي


البرنامج الثانى تحديد مكان وشكل العرض




الآن كيف يتم التحكم فى مكان النص المعروض؟
هذ بسيط إلى حد ما ، لدينا خياران ، الأول هو استخدام المعدل "At"مع الأمر print، والآخر هو استخدام الأمر Cursor "المؤشر" . وAT التعديل هو الأكثر شيوعا والأكثر ملاءمة كما يلى :

كود:
Print At 2,10, "OK"

هذا الأمر ، أولا سوف يحرك المؤشر إلى السطر رقم "2" ثم يحركه إلى الموقع (العامود) رقم "10" ، وبعد ذلك يبدأ فى عرض النص OK.

حسنا ، حتى الآن عرضنا نص، وكذلك تحكمنا فى مكانه ، فكيف يتم عرض المتغيرات ، وتنسيقها ؟
عادة ما يكون هذا الجزء هو الأكثر صعوبة فى برمجة الميكروكونترولر . الأمور تكون معقدة لأن بعض الأعداد تكون بحجم البايت byte ، والبعض بحجم الكلمة word،والبعض بدقة مزدوجة double precision فى حين لا يزال البعض الآخر به علامة سالبة . مما يزيد تعقيد المسألة أن لدينا المتغيرات من نوع النقطة العائمة (العلامة العشرية) floating point .
الآن سوف نتناول المتغير بحجم البايت byte فقط ، ويخصص له القيمة $FF . هذا المتغير سوف يكون له التمثيل الداخلى %11111111 . في حين أنه بالنسبة لنا يجب أن يتم عرضه على النحو "255" بالعشرى ، وFF بالسداسى عشر . الأرقام 2 ,2 ,5 , Fالمبينة أعلاه هى فى حد ذاتها أحرف لها الكود الخاص بها . لذلك فإن تحويل العدد من الشكل الرقمى إلى شكل نص مقروء للإنسان ليس سهلا . سوف لا نخوض فى التفاصيل ، لكن مكتبة المترجم الغنية ، جعلت هذه المهمة مجرد ومضة.
فى هذا البرنامج يتم تخصيص القيمة
$FFللمتغير "x" بحجم بايت byte. لاحظ بساطة طريقة عرض قيمة المتغير على الشاشة .




كود:
Device = 16F628A XTAL=4 ALL_DIGITAL true LCD_DTPIN PORTB.4 LCD_RSPIN PORTB.3 LCD_ENPIN PORTB.2 Dim x As Byte x=$FF Print Cls Print At 1,1, "X:", Dec x End

السطر :

كود:
Print At 1,1,"X:", Dec x
لعرض قيمة المتغير، مجرد وضع بادئة لاسم المتغير بمعدل الشكل Modifier ، فى هذه الحالة المعدل هو Dec ، والذى يرشد المترجم لعرض قيمة x كعدد عشرى.
لاحظ أيضا أننا يمكن استخدام العديد من عروض عبارة printكما نريد ، فقط تفصل بينها فواصل comas، ووضع وبادئة لها بمعدلات الشكل اللازم . فإذا كنت ترغب في عرض العدد بالتنسيق بالشكل السداسى عشر استخدمHexكبادئة .

البرنامج الثالث : تنسيق عدد خانات العرض

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

الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:334
قديم 14-07-2013, 01:15 AM المشاركة 3   
افتراضي


البرنامج الثالث : تنسيق عدد خانات العرض


يمكن أيضا تنسيق عدد الأرقام والأصفار البادئة . على سبيل المثال، نريد عرض الأعداد من 0 إلى 255 ، بعض الأعداد يكون برقم digit (خانة) واحدة ، وبعضها يكون برقمين والبعض الآخر بثلاثة أرقام . وقد نريد عرض الأرقام فى شكل ثلاثة أرقام ، بأصفار بادئة إذا كان العدد صغير . يتم ذلك ببساطة عن طريق تعديل معدل التنسيق . كل ما هو مطلوب Dec3. بالمثل لعرض عدد بإشارة ، مثل "-102", نستخدم SDec كمعدل للتنسيق . لعرض المتغيرات من نوع العلامة العشرية فقط استخدم Dec كمعدل تنسيق .

كود:
Device = 16F628A XTAL=4 ALL_DIGITAL true LCD_DTPIN PORTB.4 LCD_RSPIN PORTB.3 LCD_ENPIN PORTB.2 Dim x As Float x=3.1419 Print Cls Print At 1,1, "X:", DEC2 x End

في المثال أعلاه تم إعلان "x"كمتغير من نوع النقطة العائمة float. لذلك يمكن أن يخصص له كسور عشرية . لقد تم تخصيص القيمة 3.1419 له . أثناء الطباعة تم استخدام المعدل Dec2 وهذا سوف يعرض 2 رقم بعد العلامة العشرية ، مثل 3.14 ، إذا قمت بحذف "2" من المعدل فسوف يتم عرض العدد بالكامل.
بالإضافة إلى عرض البيانات ، هناك بعض أوامر التحكم ، والتى تؤثر على سلوك الشاشة .

هذه الأوامر لا تعرض أى شىء من تلقاء نفسها . يتم استخدام الأمر printلإرسال هذه الضوابط إلى الشاشة. هذه الأوامر هي أعداد يسبقها$FE . الأمر Print $FE,$0F يؤدى إلى تشغيل on وميض المؤشر . المؤشر الوامض مفيد عند الحصول على مدخلات من المستخدم، وعرضها فى وقت واحد على الشاشة .


الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:334
قديم 14-07-2013, 01:36 AM المشاركة 4   
افتراضي


البرنامج الرابع الحروف المخصصة :

مجموعة الخطوط والأحرف التى يتم عرضها بواسطة شاشة LCDللحروف مشفرة جيدا ومعرفة داخل ذاكرة الشاشة . هذه الذاكرة تسمى CGRAMأو ذاكرة الوصول العشوائى لتوليد الحروف . تحتوى هذه الذاكرة الحروف معرفة فى شكل مصفوفة بحجم 5x7. يتم ملو كل بت من المصفوفة بصفر أو بواحد ، والتي تكون مرئية على شكل بكسل على الشاشة . مجموعة أحرف كود ASCII غير موجودة بالكامل بهذه المصفوفة . على سبيل المثال الحرف "\"غير موجود . وبالمثل حروف التحكم من 0 إلى 7فارغة . يمكنك استغلال هذا النقص ، من خلال كتابة بايت إلى الذاكرة CGRAM، يتم عنونة هذه الأحرف وتعريف الأحرف المخصصة الخاصة بك .
يمكنك تفحص مجموعة من
الأحرف على الشاشة الخاصة بك باستخدام البرنامج التالى :



كود:
Device = 16F628A XTAL=4 ALL_DIGITAL true LCD_DTPIN PORTB.4 LCD_RSPIN PORTB.3 LCD_ENPIN PORTB.2 Symbol SW1 = PORTA.0 Symbol SW2 = PORTA.1 Symbol SW3 = PORTA.2 Dim x As Byte Print Cls For x=0 To 255 Print At 1,1,Dec x, ":", x DelayMS 1000 Next End

لاحظ طباعة المتغير، بدون معدل البادئة ، له تأثير على مظهر الحرف .
كود:
Print 65
سوف لن يتم عرض العدد "65"، ولكن يعرض الحرف الحرف "65" بمجموعة كود أسكى , وهو الحرف "A".



الصورة الرمزية Omar Mekkawy
Omar Mekkawy
:: مهندس متميز ::
تاريخ التسجيل: Aug 2011
الدولة: مصر
المشاركات: 1,523
نشاط [ Omar Mekkawy ]
قوة السمعة:0
قديم 17-07-2013, 11:00 PM المشاركة 5   
افتراضي


الله يعطيك العافية أستاذي الكريم
والله حضرتك بتبث فينا الأمل اننا نكمل برمجة الميكروكونترولر ببرنامج البروتون
لان للاسف المواقع العربية لاتتعامل به

انا كان لدي سؤال " آسف الأسئلة كترت على الآخر "

انا إشتريت دائرة إلكترونية جاهزة عبارة عن Developer Kit وبها كل المكونات ومتوصلة جاهزة

لكن اللي محيرني ان ال LCD طرفها ال RS موصل ب portA.2 و EN موصل ب PortA.1 !

المشكلة اني مش عارف أظبط الطرفين EN و RS كخرج " لإن المشكلة هذه تظهر عندما استخدم أحد اطراف المنفذ A كتناظري وأنا لا أفهم بال ADC لكن عند عدم استخدام اطراف المنفذ A كتناظري بأكتب "ALL_DIGITAL true" وبتتحل المشكلة بسهولة !

كنت أريد حضرتك تشرح الـ ADC بالتفصيل مع إستخدام اكثر من مدخل في وقت واحد " وياريت يكون الشرح مطبق على pic16f877a "

ربنا يجازيك كل خير ويطول في عمرك ويزيدك من علمه



الصورة الرمزية F.Abdelaziz
F.Abdelaziz
:: استاذ و مشرف قسم الالكترونيات ::
تاريخ التسجيل: May 2007
المشاركات: 6,894
نشاط [ F.Abdelaziz ]
قوة السمعة:334
قديم 17-07-2013, 11:23 PM المشاركة 6   
افتراضي


الله يعطيك العافية أستاذي الكريم

والله حضرتك بتبث فينا الأمل اننا نكمل برمجة الميكروكونترولر ببرنامج البروتون
لان للاسف المواقع العربية لاتتعامل به


انا كان لدي سؤال " آسف الأسئلة كترت على الآخر "

انا إشتريت دائرة إلكترونية جاهزة عبارة عن Developer Kit وبها كل المكونات ومتوصلة جاهزة

لكن اللي محيرني ان ال LCD طرفها ال RS موصل ب portA.2 و EN موصل ب PortA.1 !

المشكلة اني مش عارف أظبط الطرفين EN و RS كخرج " لإن المشكلة هذه تظهر عندما استخدم أحد اطراف المنفذ A كتناظري وأنا لا أفهم بال ADC لكن عند عدم استخدام اطراف المنفذ A كتناظري بأكتب "ALL_DIGITAL true" وبتتحل المشكلة بسهولة !

كنت أريد حضرتك تشرح الـ ADC بالتفصيل مع إستخدام اكثر من مدخل في وقت واحد " وياريت يكون الشرح مطبق على pic16f877a "

ربنا يجازيك كل خير ويطول في عمرك ويزيدك من علمه


أخى الكريم

شكرا جزيلا لك

بارك الله فيك

إن شاء الله سوف نصل قريبا إلى ADC

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


فاطمة عبد
:: مهندس ::
تاريخ التسجيل: Aug 2015
المشاركات: 5
نشاط [ فاطمة عبد ]
قوة السمعة:0
قديم 28-10-2015, 12:22 PM المشاركة 7   
افتراضي


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

إضافة رد

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

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

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


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

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