السلام عليكم ورحمة الله وبركاته
هل من حل لمشكلة اهتزاز النص وعدم استقراره
الكود سليم ومع ذلك النصوص غير مستقرة ولما سألت عن سبب المشكلة
اتضح ان السبب هي لغة المايكروسي نفسها وكان الحل ان اقوم بحفض النص كــ 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