lcm1602.c
来自「按键控制继电器--工业控制实验 keil编译环境 51单片机」· C语言 代码 · 共 94 行
C
94 行
#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 + =
减小字号Ctrl + -
显示快捷键?