📄 lcd.h
字号:
#include"main.h"
unsigned char data lcdcounter;
sbit dc=P1^0; /*P1.2 LCD的RS 21*/
sbit rw=P1^1; /*P1.1 LCD的R/W 22*/
sbit cs=P1^2; /*P1.0 LCD的E 25*/
sfr lcdbus=0x80; /*p0 LCD数据 D0=P0.0*/
/***************LCD函数*************/
void soft_nop() {}
void soft_10ms() /***********12MHZ提供10MS软件延时************/
{ register int i;
for(i=0;i<711;i++);
}
void soft_20ms() /***********12MHZ提供20MS软件延时************/
{ soft_10ms();
soft_10ms();
}
bit lcd_checkbusy() /*检查LCD忙*/
{ register lcdstate;
dc=0; /*dc=1为数据,=0为命令.*/
rw=1; /*rw=1为读,=0为写.*/
cs=1; /*cs=1选通.*/
soft_nop();
lcdstate=lcdbus;
cs=0;
return((bit)(lcdstate&0x80));
}
void lcd_wrcmd(unsigned char lcdcmd) /*写LCD命令*/
{
while(lcd_checkbusy());
lcdbus=lcdcmd;
dc=0; /*dc=1为数据,=0为命令.*/
rw=0; /*rw=1为读,=0为写.*/
cs=1; /*cs=1选通.*/
soft_nop();
cs=0;
lcdbus=0xff;
}
void lcd_moveto(char position) /*移动光标到指定位0-79*/
{ register cmd=0x80;
lcdcounter=position;
if (position > 59)
position += 0x18;
else
{ if (position > 39)position -= 0x14;
else
{
if (position > 19)position += 0x2c;
}
}
cmd=cmd|position;
lcd_wrcmd(cmd);
}
void lcd_wrdata(char lcddata) /*在当前显示位置显示数据*/
{
while(lcd_checkbusy());
if(lcdcounter==20)
{
lcd_moveto(20);
while(lcd_checkbusy());
}
if(lcdcounter==40)
{
lcd_moveto(40);
while(lcd_checkbusy());
}
if(lcdcounter==60)
{
lcd_moveto(60);
while(lcd_checkbusy());
}
if(lcdcounter==80)
{
lcd_moveto(0);
while(lcd_checkbusy());
lcdcounter=0;
} /*为通用而如此*/
lcdcounter++;
lcdbus=lcddata;
dc=1; /*dc=1为数据,=0为命令.*/
rw=0; /*rw=1为读,=0为写.*/
cs=1; /*cs=1选通.*/
soft_nop();
cs=0;
lcdbus=0xff;
}
void lcd_string(char *strpoint) /*在当前显示位置显示LCD字符串*/
{ register i=0;
while(strpoint[i]!=0)
{
lcd_wrdata(strpoint[i]);
i++;
//lcd_string(":");
}
}
void lcd_init()/*初始化*/
{
lcd_wrcmd(0x38); /*设置8位格式,2行,5*7*/
lcd_wrcmd(0x0c); /*整体显示,关光标,不闪烁*/
lcd_wrcmd(0x06); /*设定输入方式,增量不移位*/
lcd_wrcmd(0x01); /*清除显示*/
lcdcounter=0;
lcd_string("*****NUMBER***** ");
lcd_moveto(21);lcd_string("PLEASE INPUT :");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -