Hello there I am trying to display a message on the lcd of this custom designed Microcontroller kit (www.nskelectronics.in/.../8051_project_board.pdf) using P89V51RD2N. I have tried to burn the following program but it just doesn't work.Can someone help me with this ..where am I going wrong.??....
#include <REG51.H> char check = 0x80; sbit EN = P3^4 ; sbit RS = P3^5; //sbit RW = ; //not mentioned on the schematic void delay(); unsigned char array[3]; sfr dat = 0x90; //data lines are connected to LCD from port P1 - as per the circuit void delay(void); void cmd() { RS = 0; //RW = 0; EN = 1; EN = 0; delay(); } void write_lcd() { RS = 1; //RW = 0; EN = 1; EN = 0; delay(); } void init_lcd() { dat = 0x38; cmd(); dat = 0x01; cmd(); dat = 0x0c; cmd(); dat = 0x86; cmd(); dat = 0xdf; write_lcd(); dat = 0x51 ; write_lcd(); } void delay() { int i,j; for(i = 0; i< 75 ; i++) for(j = 0; j < 75 ; j++); } void main() { for(;;) init_lcd(); }
Also I would like to know the purpose of the startup code in a Keil project...Is it obligatory to use the startup code?.
Thanks
Ok Erik seems you are disappointed with the way I presented the issue here.I have coded another one this time with proper comments and even this doesn't seem to show anything on the LCD screen...the LCD is glowing but nothing is shown up
#include <reg51.h> #include <stdio.h> #include <intrins.h> //ANSI STYLE PROTOTYPE void lcddata( unsigned char value); void lcdcmd( unsigned char value); void Delay( unsigned int itime ); //SFR names declarations sfr lcd_port = 0x90; sbit RS = P3^5; sbit EN = P3^4; //sbit RW = //not used since schematic doesn't show the pin connecting anywhere void main(void) { unsigned int i,k = 0; //Delay variable unsigned char l[10] = {0x38,0x0E,0x06,0x01,0x41}; //unsigned char l[10] = {0x38,0x01,0x80}; char str[] = "Helloworld"; char str1[] = "welcome"; char *p; //pointer declarations for(i = 0 ;i< 3 ; i++) lcdcmd(l[i]); //sending basic LCD commands to LCD for( p = str; *p ;p++) lcddata(*p); lcdcmd(0xC0); //0xC0 command for displaying on second line for( p = str1; *p ;p++) lcddata(*p); do{ //infinite loop for LCD scrolling lcdcmd(0x18); //0x18 command for LCD scrolling Delay(50); }while(1); } void Delay( unsigned int itime) { int i,j; for( i = 0; i < itime ;i++) for( j = 0; j < 1275; j++); } void lcdcmd( unsigned char value ) { lcd_port = value; RS = 0; //register select = 0 for command mode EN = 1; //latch enable = HIGH _nop_(); EN = 0; //latch enable = LOW Delay(10); return; } void lcddata( unsigned char value ) { lcd_port = value; RS = 1; //register select = 1 for data register EN = 1; //latch enable = HIGH _nop_(); EN = 0; //latch enable = LOW Delay(10); return; }