📄 lcd.c
字号:
//使能信号,读状态下,高电平有效;写状态下,下降沿有效
#include<at89x52.h>
#include<absacc.h>
sbit A0=P2^7;//为高电平时选择的是数据寄存器,为低电平时选择的是指令寄存器
sbit CS1=P2^5; //使能信号
sbit CS2=P2^4;
sbit LCDRW=P2^6;//高读,低写
sfr DATA=0x90;
#define BUSY 0x90;
#define DISPON 0x3f;
#define DISPOFF 0x3e;
void delay(unsigned char time)//delay5ms
{unsigned char i=250,j=20;
while(time--)
{while(i--)
{
while(j--);}
}
}
void wrcmdl(unsigned char c1)
{ unsigned char data in;
//CS1=1;A0=1;LCDRW=1;
while(1)
{in=BUSY;
if((in&0x80)==0) break;}
//A0=0;
//LCDRW=0;
//CS1=0;
DATA=c1;
}
void wrcmdr(unsigned char c2)
{ unsigned char data in;
//CS1=1;A0=1;LCDRW=1;
while(1)
{in=BUSY;
if((in&0x80)==0) break;
}
//A0=0;
//LCDRW=0;CS2=0;
DATA=c2;
}
void lcddata(unsigned char d)
{ unsigned char data in;
//A0=1;LCDRW=1;
while(1)
{in=BUSY;
if((in&0x80)==0) break;}
//CS1=1;
// A0=0;
// LCDRW=0;
DATA=d;
}
void lcdintall()
{ DATA=DISPOFF;
wrcmdl(0x3c);
wrcmdr(0x3c);
wrcmdl(0x0e);
wrcmdr(0x0e);
wrcmdl(0x06);
wrcmdr(0x06);
wrcmdl(0x01);
wrcmdr(0x01);
}
void main()
{ unsigned char data i=50,j=0;
delay(8);
lcdintall();
while(i--)
{lcddata(j++);}
i=50;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -