#include 《reg51.h》
#include 《intrins.h》
#define uchar unsigned char
#define uint unsigned int
#define LcdBus P0
***it LED1602_RS=P1^0; //LCD端口定义
***it LED1602_RW=P1^1 ;
***it LED1602_EN=P1^2 ;
void LcdIni(void);
void WrOp(uchar dat);
void WrDat(uchar dat);
void ChkBusy(void);
void print_LCD(uchar disp[],uchar num);
//延时n ms子程序
void delayms(unsigned int n)
{
unsigned int i,j;
for(i=0;i《n;i++)
for(j=0;j《120;j++);
}
main()
{
uchar disp1[16]={‘c’,‘h’,‘e’,‘n’,};
uchar disp2[16]={‘2’,‘0’,‘1’,‘9’‘};
while(1)
{
LcdIni();
WrOp(0x80); //数据指针地址第一行
print_LCD(disp1,11);
WrOp(0xc0); //第二行
print_LCD(disp2,10);
delayms(3000);
WrOp(0x01);
}
}
void print_LCD(uchar disp[],uchar num) //显示数组disp 显示长度为num
{
uchar i;
for(i=0;i《num;i++)
{
WrDat(disp);
delayms(300);
}
}
void LcdIni()
{
WrOp(0x38);
WrOp(0x06); //光标加1
WrOp(0x0f); //开显示 光标闪烁
// WrOp(0x0c); //开显示 光标不闪烁
}
void WrOp(uchar dat)
{
//uchar i;
ChkBusy();
LED1602_RS=0; //RS=0
LED1602_RW=0; //RW=0
LED1602_EN=0; //EN=0
LcdBus=dat; //送数据
LED1602_EN=1; //EN=1
delayms(10); //延时
LED1602_EN=0; //EN=0
}
void WrDat(uchar dat)
{
//uchar i;
ChkBusy();
LED1602_RS=1; //rs=1
LED1602_RW=0; //rw=0
LED1602_EN=0; //en=0
LcdBus=dat; //送数据
LED1602_EN=1; //en=1
delayms(10);; //延时
LED1602_EN=0; //en=0
}
void ChkBusy()
{
LED1602_RS=0; //RS=0
LED1602_RW=1; //RW=1
LED1602_EN=1; //EN=1
while(LcdBus&0x80); //送数据
LED1602_EN=0; //en=0
}
#include 《reg51.h》
#include 《intrins.h》
#define uchar unsigned char
#define uint unsigned int
#define LcdBus P0
***it LED1602_RS=P1^0; //LCD端口定义
***it LED1602_RW=P1^1 ;
***it LED1602_EN=P1^2 ;
void LcdIni(void);
void WrOp(uchar dat);
void WrDat(uchar dat);
void ChkBusy(void);
void print_LCD(uchar disp[],uchar num);
//延时n ms子程序
void delayms(unsigned int n)
{
unsigned int i,j;
for(i=0;i《n;i++)
for(j=0;j《120;j++);
}
main()
{
uchar disp1[16]={‘c’,‘h’,‘e’,‘n’,};
uchar disp2[16]={‘2’,‘0’,‘1’,‘9’‘};
while(1)
{
LcdIni();
WrOp(0x80); //数据指针地址第一行
print_LCD(disp1,11);
WrOp(0xc0); //第二行
print_LCD(disp2,10);
delayms(3000);
WrOp(0x01);
}
}
void print_LCD(uchar disp[],uchar num) //显示数组disp 显示长度为num
{
uchar i;
for(i=0;i《num;i++)
{
WrDat(disp);
delayms(300);
}
}
void LcdIni()
{
WrOp(0x38);
WrOp(0x06); //光标加1
WrOp(0x0f); //开显示 光标闪烁
// WrOp(0x0c); //开显示 光标不闪烁
}
void WrOp(uchar dat)
{
//uchar i;
ChkBusy();
LED1602_RS=0; //RS=0
LED1602_RW=0; //RW=0
LED1602_EN=0; //EN=0
LcdBus=dat; //送数据
LED1602_EN=1; //EN=1
delayms(10); //延时
LED1602_EN=0; //EN=0
}
void WrDat(uchar dat)
{
//uchar i;
ChkBusy();
LED1602_RS=1; //rs=1
LED1602_RW=0; //rw=0
LED1602_EN=0; //en=0
LcdBus=dat; //送数据
LED1602_EN=1; //en=1
delayms(10);; //延时
LED1602_EN=0; //en=0
}
void ChkBusy()
{
LED1602_RS=0; //RS=0
LED1602_RW=1; //RW=1
LED1602_EN=1; //EN=1
while(LcdBus&0x80); //送数据
LED1602_EN=0; //en=0
}
举报