lcd1602.c
来自「单片机实现串口通信」· C语言 代码 · 共 119 行
C
119 行
#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 + =
减小字号Ctrl + -
显示快捷键?