??? 12/18/06 13:40 Read: times |
#129675 - "delay.h" & "4bit_lcd.h" Responding to: ???'s previous message |
void delay_16us(unsigned int j) { unsigned int i; for(i=0;i<j;i++); } void delay_ms(unsigned int j) { unsigned int i; for(i=0;i<j;i++) delay_16us(60); } 4bit_lcd routine //------------------------------------------------------------------------------------------- #define lcd_delay 400 // the delay has been choosen in approximation. please tell me how to calculate delay #define clear_disp 0x01 bit sel_reg=0; // for data write/command write used in void lcd_cmdw(unsigned char a) //------------------------------------------------------------------------------------------- void lcd_init_write(unsigned char a) // write into LCD port (used for both control and data pins) { RS=0; RW=0; LCDport=a; EN=1; delay_16us(lcd_delay); EN=0; } //------------------------------------------------------------------------------------------- void lcd_cmdw(unsigned char a) // choose between command/data write { unsigned char temp; if(sel_reg) // sel_reg=1 => data write { sel_reg=0; goto sel_data; } RS=0; sel_data: RW=0; // Data/control WRITE temp=a; temp&=0xf0; // consider higher nible first LCDport&=0x0f; // consider only data pins LCDport|=temp; // write into data pins EN=1; delay_16us(lcd_delay); EN=0; temp=a<<4; // now consider lower nibble temp&=0xf0; LCDport&=0x0f; LCDport|=temp; EN=1; delay_16us(lcd_delay); EN=0; } //------------------------------------------------------------------------------------------- void lcd_datw(unsigned char a) // data write { sel_reg=1; // sel_reg=1 => data write, sel_reg=0 => command write RS=1; lcd_cmdw(a); } //------------------------------------------------------------------------------------------- void lcd4_initialize(void) // hitachi compatible lcd initialization { delay_16us(lcd_delay); lcd_init_write(0x30); delay_16us(lcd_delay); lcd_init_write(0x30); delay_16us(lcd_delay); lcd_init_write(0x30); delay_16us(lcd_delay); lcd_init_write(0x20); delay_16us(lcd_delay); lcd_cmdw(0x28); delay_16us(lcd_delay); lcd_cmdw(4); delay_16us(lcd_delay); lcd_cmdw(0x85); delay_16us(lcd_delay); lcd_cmdw(6); delay_16us(lcd_delay); lcd_cmdw(1); delay_16us(lcd_delay); lcd_cmdw(15); } //------------------------------------------------------------------------------------------- void lcd_puts(char *aaa) // output a string of characters { unsigned int i=0; for(;aaa[i]!=0;i++) lcd_datw(aaa[i]); } //------------------------------------------------------------------------------------------- void lcd_clr_line1(void) // clear line1 { lcd_cmdw(0x80); lcd_puts(" "); } //------------------------------------------------------------------------------------------- void lcd_clr_line2(void) // clear line2 { lcd_cmdw(0xc0); lcd_puts(" "); } //------------------------------------------------------------------------------------------- |
Topic | Author | Date |
Key scanning in C51 | 01/01/70 00:00 | |
Post delay.h, 4bit:_lcd.h, | 01/01/70 00:00 | |
"delay.h" & "4bit_lcd.h" | 01/01/70 00:00 | |
Header files![]() | 01/01/70 00:00 |