📄 lcd1602.c
字号:
#include<reg51.h>
#include<intrins.h>
typedef unsigned char UINT8;
typedef unsigned int UINT16;
typedef bit BOOL;
sbit LCD_RS=P2^0;
sbit LCD_RW=P2^1;
sbit LCD_EP=P2^2;
void Delay_US(UINT16 n)
{ if(n==0)
{ return;
}
while(n--)
{ ;
}
}
void Delay_MS(UINT8 ms)
{ UINT8 a,b;
for(a=1;a<ms;a++)
{ for(b=1;b;b++)
{ ;
}
}
}
BOOL LCD_BZ(void)
{ BOOL result;
LCD_RS=0;
LCD_RW=1;
LCD_EP=1;
Delay_US(5);
result=(BOOL)(P0&0x80);
LCD_EP=0;
return(result);
}
void LCD_W_Com(UINT8 com)
{ while(LCD_BZ())
{ ;
}
LCD_RS=0;
LCD_RW=0;
LCD_EP=0;
Delay_US(2);
P0=com;
Delay_US(5);
LCD_EP=1;
Delay_US(5);
LCD_EP=0;
}
void LCD_W_Date(UINT8 date)
{ while(LCD_BZ())
{ ;
}
LCD_RS=1;
LCD_RW=0;
LCD_EP=0;
P0=date;
Delay_US(5);
LCD_EP=1;
Delay_US(5);
LCD_EP=0;
}
void LCD_Clear(void)
{
LCD_W_Com(0x01);
Delay_MS(5);
}
void LCD_Init(void)
{ LCD_W_Com(0x38);
Delay_MS(5);
LCD_W_Com(0x0C);
Delay_MS(5);
LCD_W_Com(0x06);
Delay_MS(5);
LCD_W_Com(0x01);
Delay_MS(5);
}
void LCD_W_Str(UINT8 x,UINT8 y,UINT8 *s)
{ if(y==0)
{ LCD_W_Com(0x80+x);
}
else
{ LCD_W_Com(0xc0+x);
}
while(*s)
{ LCD_W_Date(*s);
s++;
}
}
void LCD_W_Char(UINT8 x,UINT8 y,UINT8 ch)
{ if(y==0)
{ LCD_W_Com(0x80+x);
}
else
{ LCD_W_Com(0xC0+x);
}
LCD_W_Date(ch);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -