| ??? 10/26/05 08:57 Modified: 10/26/05 09:06 Read: times |
#102962 - beginners?? Responding to: ???'s previous message |
Saji Jacob George said:
hope this routines will be helpful for the beginners. I think it might be more helpful for beginners if you provided some comments, and explained what they need to do to actually connect it to a physical LCD - how to define LCD_RS, etc. But you have comitted the cardinal sin of using a 'C' software delay loop without stating what processor you used, what clock frequency you used, what compiler & version you used, what memory model you used, what optimisation level you used, etc, etc, etc,.... See the discussion here: http://www.8052.com/forum/read.phtml?id=102819 Here it is with the formatting tidied-up: /* this routine will print the hex nos in lcd directly*/
void hex2lcd(unsigned char hexdata)
{
unsigned char MSB,LSB;
MSB=((hexdata&0xf0)>>4);
LSB=(hexdata&0x0f);
if(MSB<0xa)
MSB=0x30+MSB;
else
MSB=0x37+MSB;
if(LSB<0xa)
LSB=0x30+LSB;
else
LSB=0x37+LSB;
lcd_data(MSB);
lcd_data(LSB);
}
/* this routine will print the decimal equivalent for the hex nos in lcd directly in the format "X.XX" */
void hex2dec2lcd(unsigned int hexnum)
{
unsigned char t=0,u=0,v=0;
h=0;
while(hexnum>=100)
{
h=hexnum-100;
t++;
hexnum=h;
}
while(hexnum>=10)
{
h=hexnum-10;
u++;
hexnum=h;
}
v=hexnum;
lcd_data(t+48);
lcd_data(46);
lcd_data(u+48);
lcd_data(v+48);
}
/* Routine for LCD display */
void lcd_data(unsigned char dat)
{
LCD_RS=1;
LCD_RW=0;
LCD_PORT=(dat);
LCD_EN=1;
for(a=0;a<0xf;a++);
LCD_EN=0;
}
I'll have a go at commenting it, and post back later... |



