📄 lcm1602.c
字号:
#include <intrins.h>
#include <reg52.h>
sbit RSPIN = P1^0; //LCM1602接口线定义
sbit RWPIN = P1^1;
sbit EPIN = P1^2;
unsigned char XPOS,YPOS;
void delay1(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
void lcdwaitidle(void)
{ P0=0xff;
RSPIN=0;
RWPIN=1;
EPIN=1;
while((P0&0x80)==0x80);
EPIN=0;
}
void lcdwcn(unsigned char c)
{ RSPIN=0;
RWPIN=0;
P0=c;
EPIN=1;
_nop_();
EPIN=0;
}
void lcdwc(unsigned char c)
{ lcdwaitidle();
lcdwcn(c);
}
void lcdwd(unsigned char d)
{ lcdwaitidle();
RSPIN=1;
RWPIN=0;
P0=d;
EPIN=1;
_nop_();
EPIN=0;
}
void lcdpos(void)
{ XPOS&=0x0f;
YPOS&=0x03;
if(YPOS==0x00)
lcdwc(XPOS|0x80);
else if(YPOS==0x01)
lcdwc((XPOS+0x40)|0x80);
}
void lcdreset()
{ delay1(150); lcdwcn(0x38);
delay1(50); lcdwcn(0x38);
delay1(50); lcdwcn(0x38);
lcdwc(0x38);
lcdwc(0x08);
lcdwc(0x01);
lcdwc(0x06);
lcdwc(0x0c);
}
void lcdfill(unsigned char n)
{
for(YPOS=0;YPOS<2;YPOS++)
for(XPOS=0;XPOS<16;XPOS++)
{ lcdpos();
lcdwd(n); }
}
void lcdchar(unsigned char x,unsigned char y,unsigned char ch)
{
XPOS=x; YPOS=y;
lcdpos();
lcdwd(ch);
}
void lcdwda(unsigned char x,unsigned char y,unsigned char *s)
{ YPOS=y;
for(XPOS=x;XPOS<16;XPOS++)
{ lcdpos();
if (*s=='\0') return;
lcdwd(*s);
s++;
delay1(1);//400);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -