??? 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... |