سلام
c برای فراخوانی LCD من در مورد برنامه نویسی میکرو 8051مشکل دارم . هر چه برنامه را تغییر می دهم و تاخیر برایش قرار می دهم باز هم lcd جواب نمی دهد.
لطفا برنامه من را خوانده و اشکال آن را رفع کنید.
با تشکر
# define LCD_E P2_0
#define LCD_RW P2_1
#define LCD_RS P2_2
#define LCD_DB P0
void time1ms ()
{
int i;
for (i=0; i < 100; i++);
}
void delay1 (int n)
{
int i;
for (i=0; i< n; i++)
time1ms ();
}
void main ()
{
LCD_RW =0;
LCD_RS =0;
delay1(500);
LCD_DB = 0x01;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS =0 ;
delay1 (500);
LCD_DB = 0x38;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS = 0;
delay1(500);
LCD_DB = 0x0E;
delay1(500);
LCD_E = 1;
delay1(50);
LCD_E =0;
delay1(500);
LCD_E = 1;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS = 0;
delay1(500);
LCD_DB = 0x06;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS = 0;
delay1 (500);
LCD_DB = 0x80;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0 ;
LCD_RS = 1;
delay1(500);
LCD_DB ='N';
while (1) ;
}
[/code]
c برای فراخوانی LCD من در مورد برنامه نویسی میکرو 8051مشکل دارم . هر چه برنامه را تغییر می دهم و تاخیر برایش قرار می دهم باز هم lcd جواب نمی دهد.
لطفا برنامه من را خوانده و اشکال آن را رفع کنید.
با تشکر
# define LCD_E P2_0
#define LCD_RW P2_1
#define LCD_RS P2_2
#define LCD_DB P0
void time1ms ()
{
int i;
for (i=0; i < 100; i++);
}
void delay1 (int n)
{
int i;
for (i=0; i< n; i++)
time1ms ();
}
void main ()
{
LCD_RW =0;
LCD_RS =0;
delay1(500);
LCD_DB = 0x01;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS =0 ;
delay1 (500);
LCD_DB = 0x38;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS = 0;
delay1(500);
LCD_DB = 0x0E;
delay1(500);
LCD_E = 1;
delay1(50);
LCD_E =0;
delay1(500);
LCD_E = 1;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS = 0;
delay1(500);
LCD_DB = 0x06;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0;
LCD_RS = 0;
delay1 (500);
LCD_DB = 0x80;
delay1(500);
LCD_E =1 ;
delay1(50);
LCD_E =0;
delay1(500);
LCD_RW =0 ;
LCD_RS = 1;
delay1(500);
LCD_DB ='N';
while (1) ;
}
[/code]







بلکه کارش اینه که اگه شما این کد رو بهش بدید هر وقت یک کاراکتر توش بنویسید (data) مکان نما یکی کم میشه یعنی مثل word pad که وقتی میزنید "right to left" از راست به چپ مینویسه (معادل 0x04 برای lcd) و وقتی میزنید "left to right" از چپ به راست مینویسه (معادل 0x06 برای lcd) امیدوارم که تونسته باشم منظورمو برسونم

) از همون 0x80 شروع میشه بعد میاد خط سوم بعد دوم و بعد چهارم


دیدگاه