这个4线太难搞了,1602的PDF没对4线作详细介绍。哪位好心人帮忙看看 #include <reg51.h> #define lcd_rs P1_1 #define lcd_rw P1_2 #define lcd_e P1_3 #define lcd_io P1
sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; sbit P1_3=P1^3; sbit P1_4=P1^4; sbit P1_5=P1^5; sbit P1_6=P1^6; sbit P1_7=P1^7;
sbit P3_0=P3^0; sbit P3_1=P3^1; sbit P3_2=P3^2; sbit P3_3=P3^3; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_6=P3^6; sbit P3_7=P3^7;
unsigned char code msg1[] = {"Hello"}; unsigned char code msg2[] = {"World"}; unsigned char code msg3[] = {" "};
void lcd_init(void); void lcd_send(unsigned char dat); void lcd_addr(unsigned char addr); void lcd_string(unsigned char code *sdata,unsigned char lengh);
void Delay_5ms() { unsigned int i=1000; while(--i); }
void Delay_5us() { unsigned char i=5; while(--i); }
//======================================== void main(void) { unsigned char t; lcd_init(); while(1) { lcd_addr(0x05); lcd_string(msg1,5); lcd_addr(0x45); lcd_string(msg2,5);
for(t=200;t>0;t--) Delay_5ms(); lcd_addr(0x05); lcd_string(msg3,5); lcd_addr(0x45); lcd_string(msg3,5); for(t=200;t>0;t--) Delay_5ms(); } }
void lcd_init(void) { lcd_rw = 0; lcd_rs = 0;
Delay_5ms(); lcd_e = 1; lcd_io &= 0x0f; lcd_io |= 0x30;// Delay_5us(); lcd_e = 0; Delay_5ms(); lcd_e = 1; lcd_io &= 0x0f; lcd_io |= 0x30;// Delay_5us(); lcd_e = 0; Delay_5ms(); lcd_e = 1; lcd_io &= 0x0f; lcd_io |= 0x30;// Delay_5us(); lcd_e = 0; Delay_5ms();
lcd_send(0x28);// lcd_send(0x0c);
lcd_rs = 0; lcd_send(0x01); lcd_send(0x0c); lcd_send(0x06); lcd_send(0x14); lcd_rs = 1; Delay_5ms();
}
void lcd_send(unsigned char dat) { lcd_e = 1; lcd_io &= 0x0f; lcd_io |= dat & 0xf0; Delay_5us(); lcd_e = 0; Delay_5us();
lcd_e = 1; dat <<= 4; lcd_io &= 0x0f; lcd_io |= dat; Delay_5us(); lcd_e = 0; Delay_5us();
}
void lcd_addr(unsigned char addr) { lcd_rs = 0; addr |= 0x80; lcd_send(addr); lcd_rs = 1; }
void lcd_string(unsigned char code *sdata,unsigned char lengh) { unsigned char x; for(x=0;x<lengh;x++) { lcd_send(sdata[x]); } }
|