📄 st7920-kf.c
字号:
//#include "iic.h"
sbit LCD_RS = P1^1;
sbit LCD_RW = P1^2;
sbit LCD_POWER=P1^4;//背光控制,如果不需要的可以不用
#define EN() {P2=0xa0;}//这是因为所使用的片选信号比较特殊,移植这个文件时,作相应的特换即可。
#define DisEN() {P2=0xf0;}
unsigned char code Line[4]={0x80,0x90,0x88,0x98};
//////////////
void DelayS()
{
unsigned char xdata i;
i =200; //200; //1f
while(i--)
WDT=1;
}
void WriteCmd(unsigned char ch)
{
DelayS();
//EN = 0;
DisEN();
LCD_RS = 0;
LCD_RW = 0;
_nop_();
_nop_();
//EN = 1;
EN();
P0 = ch;
_nop_();
_nop_();
_nop_();
//EN = 0;
DisEN();
}
void WriteData(unsigned char dat)
{
DelayS();
//EN = 0;
DisEN();
LCD_RS = 1;
LCD_RW = 0;
_nop_();
_nop_();
//EN = 1;
EN();
P0 = dat;
_nop_();
_nop_();
_nop_();
//EN = 0;
DisEN();
LCD_RS = 0;
}
void LcdInit()
{
if(LcdRE==1)
{//扩展指令集状态,先退出睡眠状态
WriteCmd(0x0c);//退出睡眠模式
WriteCmd(0x30);//基本指令集
LcdRE=0;
}
WriteCmd(0x0C);//显示on,游标、反白oFF
WriteCmd(0x01);//清除显示
WriteCmd(0x02);//地址归位
WriteCmd(0x80);
}
void LcdCN(unsigned char x,unsigned char y,const char datH,const unsigned char datL)
{//汉字显示
if(x>=4)
x=0;
x=Line[x];
x+=y;
WriteCmd(x);//1xxx,xxxx 设定DDRAM 7位地址xxx,xxxx到地址计数器AC
WriteData(datH);
WriteData(datL);
}
void LcdCnString(unsigned char x,unsigned char y,const char Head[])
{//汉字串
//x:0-3,y:0-7
unsigned char *ptr;
ptr=Head;
while(1)
{
WDT=1;
LcdCN(x,y,*ptr,*(ptr+1));
y+=1;
ptr=ptr+2;
if(*ptr == NULL)
break;
}
}
void LcdChar(unsigned char x,unsigned char y,const char dat)
{//英文显示
//x:0-3,y:0-7
/* switch(x)
{
case 0:
x=0x80;
break;
case 1:
x=0x90;
break;
case 2:
x=0x88;
break;
default:
x=0x98;
}*/
if(x>=4)
x=0;
x=Line[x];
x+=y;
WriteCmd(x);//1xxx,xxxx 设定DDRAM 7位地址xxx,xxxx到地址计数器AC
WriteData(dat);
}
void LcdAddChar(unsigned char dat)
{
//追加英文字母
WriteData(dat);
}
void LcdCur(unsigned char x,unsigned char y)
{
//x:0~3,y:0~7
if(x>=4)
x=0;
x=Line[x];
x=x+y;
WriteCmd(x);//1xxx,xxxx 设定DDRAM 7位地址xxx,xxxx到地址计数器AC
WriteCmd(0x0f);//开下标
}
void LcdCurOff()
{
WriteCmd(0x0C);
}
void LcdPowerOn()
{
LcdPowerFlag=1;
LCD_POWER=0;
DelayCnt=10;//0.5s
REN=0;
ES=0;
RI=0;
TI=0;
while(DelayCnt)
WDT=1;
}
void LcdPowerOff()
{
LCD_POWER=1;
LcdPowerFlag=0;
REN=1;
ES=1;
TxEN=0;//
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -