📄 d.c
字号:
#include<reg51.h>
#include<intrins.h>
sbit RSPIN = P2^6;
sbit RWPIN = P2^5;
sbit EPIN = P2^7;
sbit E=P3^4;//使数码管高阻
unsigned char XPOS,YPOS;
void delay(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)//确定光标位置,由参数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; //xp0s=xpos&0x0f
YPOS&=0x03;
if(YPOS==0x00)
lcdwc(XPOS|0x80);
else if(YPOS==0x01)
lcdwc((XPOS+0x40)|0x80); //第一行与第二行地址相差40H
}
void lcdreset() //复位
{ delay(150);lcdwcn(0x38);
delay(50); lcdwcn(0x38);
delay(50); lcdwcn(0x38);
lcdwc(0x38);
lcdwc(0x08);
lcdwc(0x01);
lcdwc(0x06);
lcdwc(0x0c);
}
/*v oid lcdfill(unsigned char n) //全部显示同一个字符
{
for(YPOS=0;YPOS<2;YPOS++) //两行
for(XPOS=0;XPOS<16;XPOS++)//一行16个字符
{ lcdpos();
lcdwd(n); }
}*/
/*void lcdwda(unsigned char x,unsigned char y,unsigned char *s)//X,Y显示的开始位置 S表示
{ YPOS=y;
for(XPOS=x;XPOS<16;XPOS++)
{ lcdpos(); //确定显示位置
lcdwd(*s); //显示数据
s++;
delay(400);
}
}*/
//读状态
/*unsigned char ReadStatusLCM(void)
{
P0= 0xFF;
RSPIN = 0;
RWPIN = 1;
EPIN = 0;
EPIN = 0;
EPIN = 1;
while (P0 & 0x80); //检测忙信号
return(P0);
} */
void main()
{
unsigned int i=0;
EPIN=0;
RD=0;
WR=1;
E=1;
lcdreset();
XPOS=0;YPOS=0;
lcdpos();
delay(150);
lcdwd(0xa0);
lcdwd(0x57); //显示一个Welcome!
lcdwd(0x65);
lcdwd(0x6c);
lcdwd(0x63);
lcdwd(0x6f);
lcdwd(0x6d);
lcdwd(0x65);
lcdwd(0x21);
lcdwc(0x02);
lcdwc(0x05);
delay(500);
while(1)
{ i++;
switch (i)
{
case 15:
{ // i=15;
lcdreset();
lcdwc(0x00);
delay(150);
XPOS=30;YPOS=1;
lcdpos();
lcdwd(0xa0);
lcdwd(0x57); //显示一个Welcome!
lcdwd(0x65);
lcdwd(0x6c);
lcdwd(0x63);
lcdwd(0x6f);
lcdwd(0x6d);
lcdwd(0x65);
lcdwd(0x21);
// lcdwc(0x02);
lcdwc(0x07);
delay(1000);
break;
}
case 30:
{ i=0;
lcdreset();
XPOS=0;YPOS=0;
lcdpos();
delay(150);
// lcdwc(0x00);
delay(150);
lcdwd(0xa0);
lcdwd(0x57); //显示一个Welcome!
lcdwd(0x65);
lcdwd(0x6c);
lcdwd(0x63);
lcdwd(0x6f);
lcdwd(0x6d);
lcdwd(0x65);
lcdwd(0x21);
lcdwc(0x02);
lcdwc(0x05);
delay(1000);
break;
}
default:
{ lcdwd(0xa0);
delay(1000);
break;
}
}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -