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

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

الصورة الرمزية قطر الندى 89
قطر الندى 89
:: مهندس متميز ::
تاريخ التسجيل: Aug 2013
الدولة: IRAQ
المشاركات: 335
نشاط [ قطر الندى 89 ]
قوة السمعة:0
قديم 23-02-2015, 09:22 AM المشاركة 1   
افتراضي مشكلة في عرض النصوص على شاشة LCD Twitter FaceBook Google+



السلام عليكم ورحمة الله وبركاته
هل من حل لمشكلة اهتزاز النص وعدم استقراره
الكود سليم ومع ذلك النصوص غير مستقرة ولما سألت عن سبب المشكلة
اتضح ان السبب هي لغة المايكروسي نفسها وكان الحل ان اقوم بحفض النص كــ CONST وانسخه الى مصفوفه وبالفعل فعلت ذلك وتحسن الوضع لكن لاتزال المشكلة
وبالذات من اعمل BACK لا اطيل عليكم هذا الكود
كود:
// Lcd pinout settings
sbit LCD_RS at RB2_bit;
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;

// Pin direction
sbit LCD_RS_Direction at TRISB2_bit;
sbit LCD_EN_Direction at TRISB3_bit;
sbit LCD_D4_Direction at TRISB4_bit;
sbit LCD_D5_Direction at TRISB5_bit;
sbit LCD_D6_Direction at TRISB6_bit;
sbit LCD_D7_Direction at TRISB7_bit;
//////////////////////////////////////
#define sw1_dir             trisa.f0
#define sw1                 porta.f0
#define sw2_dir             trisa.f1
#define sw2                 porta.f1
#define sw3_dir             trisa.f2
#define sw3                 porta.f2
#define sw4_dir             trisa.f3
#define sw4                 porta.f3
#define sw5_dir             trisa.f4
#define sw5                 porta.f4
#define is                     ==
//////////////////////////////////////
#define relay1_dir            trisd.f0
#define relay2_dir            trisd.f1
#define relay3_dir            trisd.f2
#define relay4_dir            trisd.f3
#define relay1                portd.f0
#define relay2                portd.f1
#define relay3                portd.f2
#define relay4                portd.f3
///////////////////////////////////////
#define on                    1
#define off                   0
#define output                0
#define input                 1
///////////////////////////////////////
char x=0;
char ahmed[20];
char u=0;
char ahmed2[20];
//////////////////////////////////////
void relay_1()
{
const char r1[]="      MAIN RELAY1   ";
const char r2[]="1-ON/OFF            ";
const char r3[]="5-BACK              ";
LCD_CMD(1);
for(x=0;x<20;x++){ahmed[x]=r1[x];
lcd_out(1,1,ahmed); }
for(x=0;x<20;x++){ahmed[x]=r2[x];
lcd_out(2,1,ahmed);   }
for(x=0;x<20;x++){ahmed[x]=r3[x];
lcd_out(3,1,ahmed);}

   while(1)
   {

   
              if(sw1 is 1){
                delay_ms(250);lcd_cmd(_lcd_clear);
                relay1=~relay1;
                if(relay1 is 1)lcd_out(1,1,"relay one on");
                else lcd_out(1,1,"relay one off");
                            }
              if(sw5 is 1){delay_ms(250);lcd_cmd(1);break;}
    }
}
/////////////////////////////////////////////////////////////////////////

 void relay_2()
 {  
   const char m1[]="    MAIN RELAY2     ";
   const char m2[]="1-ON/OFF            ";
   const char m3[]="2-BACK              ";
   LCD_CMD(1);
   for(x=0;x<20;x++){ahmed[x]=m1[x];
   lcd_out(1,1,ahmed);}
   for(x=0;x<20;x++){ahmed[x]=m2[x];
   lcd_out(2,1,ahmed);}
   for(x=0;x<20;x++){ahmed[x]=m3[x];
   lcd_out(3,1,ahmed);}

  while(1)
    {
                 if(sw1 is 1){
                 delay_ms(250);lcd_cmd(_lcd_clear);
                 relay2=~relay2;
                 if(relay2 is 1)lcd_out(1,1,"relay tow on");
                 else
                 lcd_out(1,1,"relay tow off");
                            }
                 if(sw5 is 1){delay_ms(250);lcd_cmd(1);break; }

    }
  }
//////////////////////////////////////////////////////////////////////////////////
void relay_3()
{
  const char m1[]="    MAIN RELAY3     ";
  const char m2[]="1-ON/OFF            ";
  const char m3[]="5-BACK              ";
  LCD_CMD(1);
  for(x=0;x<20;x++){ahmed[x]=m1[x];
  lcd_out(1,1,ahmed); }
  for(x=0;x<20;x++){ahmed[x]=m2[x];
  lcd_out(2,1,ahmed); }
  for(x=0;x<20;x++){ahmed[x]=m3[x];
  lcd_out(3,1,ahmed); }
  
    while(1)
    {
                 if(sw1 is 1){
                 delay_ms(250);lcd_cmd(_lcd_clear);
                 relay3=~relay3;
                 if(relay3 is 1)lcd_out(1,1,"relay three on");
                 else
                 lcd_out(1,1,"relay three off");
                            }
                if(sw5 is 1){delay_ms(250);lcd_cmd(1);break;}

    }
 }
/////////////////////////////////////////////////////////////////////////////////
 void relay_4()
 {

  const char m1[]="    MAIN RELAY4     ";
  const char m2[]="1-ON/OFF            ";
  const char m3[]="5-BACK              ";
  LCD_CMD(1);
  for(x=0;x<20;x++){ahmed[x]=m1[x];
  lcd_out(1,1,ahmed); }
  for(x=0;x<20;x++){ahmed[x]=m2[x];
  lcd_out(2,1,ahmed); }
  for(x=0;x<20;x++){ahmed[x]=m3[x];
  lcd_out(3,1,ahmed); }

    while(1)
    {
                 if(sw1 is 1){
                 delay_ms(250);lcd_cmd(_lcd_clear);
                 relay4=~relay4;
                 if(relay4 is 1)lcd_out(1,1,"relay four on");
                 else lcd_out(1,1,"relay four off");
                             }
                if(sw5 is 1){delay_ms(250);lcd_cmd(1);
                 break; }
    }
}
/////////////////////////////////////////////////////////////////////////////////////
void init()
{
  adcon1=7;
 sw1_dir =1; sw2_dir = 1;sw3_dir = 1;sw4_dir =1;sw5_dir =1;
 relay1_dir= relay2_dir= relay3_dir= relay4_dir=output ;
 portd=0x00;
 lcd_init();
 lcd_cmd(1);
 lcd_cmd(12);
}
////////////////////////////////////////////////////////////////////////////////////
void main_screen()
{


 const char m1[]="1-RELAY1            ";
 const char m2[]="2-RELAY2            ";
 const char m3[]="3-RELAY3            ";
 const char m4[]="4-RELAY4            ";
 for(x=0;x<20;x++)ahmed[x]=m1[x];
 lcd_out(1,1,ahmed);
 for(x=0;x<20;x++)ahmed[x]=m2[x];
 lcd_out(2,1,ahmed);
 for(x=0;x<20;x++)ahmed[x]=m3[x];
 lcd_out(3,1,ahmed);
 for(x=0;x<20;x++)ahmed[x]=m4[x];
 lcd_out(4,1,ahmed);

while(1)
{

 if(sw1 is 1){delay_ms(250);delay_ms(20);relay_1();}
 if(sw2 is 1){delay_ms(250);delay_ms(20);relay_2();}
 if(sw3 is 1){delay_ms(250);delay_ms(20);relay_3();}
 if(sw4 is 1){delay_ms(250);delay_ms(20);relay_4();}
}
}
//////////////////////////////////////////////////////////////////////////////////
void main_menu()
{
 lcd_out(1,5,"AHMEEED");
 LCD_OUT(2,1,"LAODING");
 for(x=0;x<5;x++){
 LCD_chr_CP('.');
 DELAY_MS(500);   }
 lcd_cmd(1);delay_ms(50);
}
////////////////////////////////////////////////////////////////////////////////////
void main() 
{

 init();
 main_menu();
 main_screen();


}
وهذا ملف الكود والمحاكات
http://www.gulfup.com/?mhatEm

اعلانات

ahmadazez
:: مهندس جيد ::
تاريخ التسجيل: Mar 2009
المشاركات: 253
نشاط [ ahmadazez ]
قوة السمعة:0
قديم 24-02-2015, 03:50 PM المشاركة 2   
افتراضي


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

احصائية الشكر والاعجاب - 1 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً قطر الندى 89 ( شكر العضو على هذه المشاركة )
اعجاب قطر الندى 89 ( أعجبته المشاركة )
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  
إضافة رد

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

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

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


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

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