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

   

الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:
قديم 24-04-2014, 05:08 AM المشاركة 9   
افتراضي



السلام عليكم ورحمة الله وبركاته
اخي الحبيب
قمت بكتابة كود بسيط حسب طلبك وارجو ان اكون وفقت في خدمتك
الرابط
http://www.4shared.com/rar/iTK2wFHUba/LCD_test.html

طبعا اذا اردت تغيير النص ما عليك سوى تغيير النص المكتوب بالمتغيرين txt1 , txt2 فقط

نسألكم الدعاء في ظهر غيب

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

اعلانات

abban270
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2009
المشاركات: 89
نشاط [ abban270 ]
قوة السمعة:
قديم 24-04-2014, 07:06 PM المشاركة 10   
افتراضي


ليس هذا ما أبحث عنه
وانما أبحث عن كيفية إظهار رسالة طويلة

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

الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:
قديم 24-04-2014, 11:13 PM المشاركة 11   
افتراضي


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


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


mohamed_amine
:: مهندس متواجد ::
تاريخ التسجيل: Jul 2012
المشاركات: 87
نشاط [ mohamed_amine ]
قوة السمعة:
قديم 25-04-2014, 01:38 AM المشاركة 12   
x4


لا اله الا انت سبحانك اني كنت من الظالمين



http://www.4shared.com/rar/84QyIAQHc...CD_mikroc.html

عفواً عن الخطا نسألكم الدعاء في ظهر غيب

http://www.4shared.com/file/Ncn8bWq5ce/qarya.html


التعديل الأخير تم بواسطة : mohamed_amine بتاريخ 25-04-2014 الساعة 01:47 AM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 25-04-2014, 10:04 AM المشاركة 13   
افتراضي


ألسلام عليكم

أريد كتابة رسالة طويلة على LCD
كود:
 lcd_out(1,1,"AZERTYUIOPQSDFGHJKLWXCVBN");
ولكن يظهر كما في الصورة

ألا يوجد طريقة ليكمل بقية الرسالة في السطر الثاني بدون وضع
كود:
lcd_out(2,1,"xxxxxxxxxx")
السلام عليكم
تفضل اخي كريم
http://arabsh.com/files/0c33424b6cf4...-text-rar.html
هذا ه كود
كود:
// Lcd pinout settings
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;

// Pin direction
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;

unsigned char x,y, kk , count;
char text_lcd[16];
const char txt[]="               Hello ....How is my friend .. I apologize for being late                ";
void main()
{
 cmcon=7;
 Lcd_Init();
 lcd_cmd(_LCD_CURSOR_OFF);
 lcd_cmd(1);
 while(1)
        {
         kk=sizeof(txt);// calcaulate size of txt
         for(x=0;x<16;x++)
                         {
                          text_lcd[x]=txt[x+y]; // 15+42

                          }
         lcd_out(1,1,text_lcd);

                           
        count++;
        delay_ms(10);
       
        if(count==10)// to reducing time
                    {
                      y++;
                      if(y==kk-15)y=0;
                      count=0;
                     }


        }
}
الكود بلون احمر مهمته هو تقليل زمن لزياده متغير y وسبب في ذلك اذا كان لديك ضمن عرض رساله سويجات مثلا تريد عند ضغط عليها تنفذلك امر ما اذا كتب امر delay_ms(250 سيكون مايكرو مشغول بتنفيذ هذا الامر
ولكن يمكن تقليله وبتالي نستطيع تنفيذ الاوامر خلال هذا الزمن كيف ذلك نقلل زمن الى مثلا 5ms او 10ms ثم نضع متغير اخر مثلا countيزداد عند كل تنفيذ امر ديلي 10ms ولما يصبح count=10 يعني زمن أصبح=200ms وبتالي نخبره نفذ الاوامر التي نريد تنفيذها بعد هذا زمن
طبعا متغير count هو لايساوي 10 لماذا لاننا أهملنا زمن تنفيذ اوامر لذا انت تتحكم بقيمه count الى ان ترى حركه نص مناسب وبالطبع اذا كنت تريد زمن تأخيري 250ms وانت قللت الزمن الى 10ms فأن count<25
بالنسبه للكيفيه تزحيف النص
انظر
كود:
 kk=sizeof(txt);
هذا كود يرجعلي عدد البايتات في مصفوفه طبعا يرجعلي عدد عناصر لان sizeof(txt يرجع عدد البايتات ولان مصفوفه من نوع char اذن قيمه sizeof(txt هي نفسها طول مصفوفه واذا كانت مصفوفه من نوع int اذن نضرب النتيجه في 2
كود:
for(x=0;x<16;x++)
                         {
                          text_lcd[x]=txt[x+y]; // 15+42

                          }
هذا هو كود مهم حلقه تكرار الى 16 لان ابعاد الشاشه هي 16
لما y=0 راح نخزن اول 16 حرف في مصفوفه text_lcd بعد ذلك نقم بعرضها ثم ننتظر فتره زمنيه ولتكن 250ms طبعا شرحنا كيف نجعل مايكرو غير مشغول بتنفيذ امر delay عن طريق نقصان زمن الى 5 او 10ms ثم نضع متغير يعد كل تنفذ هذا زمن وعند أكتمال زمن 250ms مثلا نخبره نفذ كذا
هذه طريقه مهمه في حاله لديك مثلا سويجات أكيد ستجد مايكرو مشغول ولن ينفذ اي امر ولكن بالطريقه سابقه سيقوم بتنفيذ اوامر بكل سهوله

طبعا اكو شغله مهمه جدا جدا
تلاحظ text_lcd[x]=txt[x+y
مصفوفه txt لها أبعاد معينه لنفترض لها 50 عنصر ماذا يحصل لو قلنا قم بخزن البيانات بتداءا من عنصر 55 سيظهر رساله تخبرك stack over
يعني متى أصير هذه حاله
لما y=35 اذن x سوف تتكرر من 0 الى 15 يعني 16
اذن البيانات راح تنخزن بــ[35] text_lcd =txt الى [50] text_lcd =txt
هنا لاتوجد مشكله ولكن بعد ما تصبح y=36 اذن
اذن البيانات راح تنخزن بــ[36] text_lcd =txt الى [51] text_lcd =txt
هنا سبحث مايكرو عن عنصر الي رقم 51 بالمصفوفه text_lcd فلا يجده عندها تظهر مشكله ويبدأ مايكرو يخربط في عمله وفي بروتيس يخبرك stack over flow

ماهو الحل
لاحظ الكود
كود:
if(count==10)// to reducing time
                    {
                      y++;
                      if(y==kk-15)y=0;
                      count=0;
                     }
أخبرناه نقص من طول رساله 15 على حسب طول شاشه طبعا لم أقل 16 لاني بدءت من 0 الى 15 و 0 لايؤثر لماذا هذه خطوه
لان لو أفترضنا طول رساله =50
اذا y اقصى قيمه يصل اليها هي 35
وبتالي
اذن البيانات راح تنخزن بــ[35] text_lcd =txt الى [50] text_lcd =txt
وبتالي تم أكتمال عمليه خزن الرساله وبتالي تم أكتمال عرضها وزياده على ذلك لافائده منها لعدم وجود البيانات ولن نحصل سوى اخراج مايكرو عن مسار عمله

وايضا أنصحك بمتابعه أفكار الاخوه الذين شاركوك بالحل لاستفاده من افكار
تحياتي


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 25-04-2014 الساعة 10:31 AM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 25-04-2014, 01:12 PM المشاركة 14   
افتراضي


السلام عليكم ورحمة الله وبركاته
اخي الحبيب
قمت بكتابة كود بسيط حسب طلبك وارجو ان اكون وفقت في خدمتك
الرابط
http://www.4shared.com/rar/iTK2wFHUba/LCD_test.html

طبعا اذا اردت تغيير النص ما عليك سوى تغيير النص المكتوب بالمتغيرين txt1 , txt2 فقط

نسألكم الدعاء في ظهر غيب

وما توفيقي إلا بالله العلي العظيم
السلام عليكم
كود جميل اخ كرار


الصورة الرمزية كرار العامري
كرار العامري
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2010
الدولة: العراق
المشاركات: 159
نشاط [ كرار العامري ]
قوة السمعة:
قديم 25-04-2014, 01:21 PM المشاركة 15   
افتراضي


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



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


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 25-04-2014, 03:21 PM المشاركة 16   
افتراضي


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



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



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