📄 lcd1602显示模块0.txt
字号:
/*------LCD1602定义------*/
sbit lcd_rs=P1^0;
sbit lcd_rw=P1^1;
sbit lcdEN=P1^2;
void Delay5Ms(void);
void Delay400Ms(void);
void Delay1000Ms(void);
void write_command(uchar com,uchar cy);
void write_data(uchar a);
void lcd_init();
void ePutstr(uchar x,uchar y,uchar *ptr);
void locateXY(uchar x,uchar y);
void disponechar(uchar x,uchar y,uchar wdata);
void wait_enable();
//=========================LCD1602=============================//
/*------延时函数-----*/
void Delay5Ms(void) //5ms
{
uint i = 5552;
while(i--);
}
void Delay400Ms(void) //400ms
{
uchar i = 4;
uint j;
while(i--)
{
j=7269;
while(j--);
}
}
void Delay1000Ms(void) //1000Ms
{
uchar i = 5;
uint j;
while(i--)
{
j=18172;
while(j--);
}
}
/*------写命令函数------*/
void write_command(uchar com,uchar cy)
{
if(cy) wait_enable();
lcd_rs=0;
lcd_rw=0;
lcdEN=1;
P0=com;
_nop_();_nop_();
lcdEN=0;
}
/*------写数据函数------*/
void write_data(uchar dat)
{
wait_enable();
lcd_rs=1;
lcd_rw=0;
lcdEN=1;
P0=dat;
_nop_();_nop_();
lcdEN=0;
}
/*------初始化------*/
void lcd_init()
{
write_command(0x38,0);
Delay5Ms();
write_command(0x38,1);
write_command(0x08,1);
write_command(0x01,1);
write_command(0x06,1);
write_command(0x0C,1);
}
/*------判忙使能------*/
void wait_enable()
{
P0=0xff;
lcd_rs=0;
lcd_rw=1;
lcdEN=1;
while(P0&BUSY);
}
/*------发送字符------*/
void ePutstr(uchar x,uchar y,uchar *ptr)
{
uchar i,j=0;
while(ptr[j]>31) {j++;}; //若为字符,进行计数
for(i=0;i<j;i++){
disponechar(x++,y,ptr[i]);
if(x==16){
x=0;y^=1; //若第一行满,换行
}
}
}
/*------定位输出行------*/
void locateXY(uchar x,uchar y)
{
uchar t;
t=x&0xf; //取t低四位
y&=0x1;
if(y==1) t|=0x80; //第一行显示
else t|=0xC0; //第二行显示
write_command(t,0);
}
/*------显示一个字符串------*/
void disponechar(uchar x,uchar y,uchar wdata)
{
locateXY(x,y); //先送地址
write_data(wdata);//再处理数据
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -