初级会员
主题
帖子
积分50
阅读权限10
注册时间2014-10-5
最后登录1970-1-1
在线时间 小时
|
&#include <reg52.h>
sbit RS = P2^0; //H=data数据 L="command命令";
sbit RW = P2^1; //H=read读; L="write写";
sbit E= P2^2; //input enable输入允许使能;
sbit PSB= P2^3; //H=并口; L="串口";
sbit RST= P2^4; //Reset Signal复位信号-低电平有效
sbit busy=P0^7; //lcd busy bit
#define uChar8 unsigned char
#define uint16 unsigned int
uChar8 code TAB1[]="hello "
uChar8 code TAB2[]="hello "
uChar8 code TAB3[]="hello "
uChar8 code TAB4[]="hello "
void DelayMS (uint16)
{
uint16 t,j;
for(t=0;t<250;t++)
for(j=0;j<250;j++)
;
}
void DectBusyBit(void)//判忙
{
P0=0xff;
RS=0;
RW=1;
E =1;
while(P0 & 0X80); //如果液晶是忙的 让程序停到这里
DelayMS(5);
E =0;
}
void LCD_WrCom(uChar8 com)
{
DectBusyBit();
RS=0;
RW=0;
E=1;
P0=com;
DelayMS(1);
E=0;
}
void LCD_WrDat(uChar8 dat)
{
DectBusyBit();
RS=1;
RW=0;
E=1;
P0=dat;
DelayMS(1);
E=0;
}
void LCD_Init(void)
{
LCD_WrCom(0x30);//8位数据 基本指令
DelayMS(5);
LCD_WrCom(0x0c);//开显示,光标不显示也不反白
DelayMS(5);
LCD_WrCom(0x01);//清屏
}
void LCD_WrAddr(uChar8 x,uChar8 y)
{
uChar8 uX.uXY;
if(1==x)
{
uX=0x80;
}
else if(2==x)
{
uX=0x90;
}
else if(3==x)
{
uX=0x88;
}
else if(4==x)
{
uX=0x98;
}
uXY = uX+y;
LCD_WrCom(uXY);
}
void main (void)
{
uChar8 i =0;
DelayMS(5);
LCD_Init(); //初始化
DelayMS(5);
while(1)
{
LCD_WrAddr(1,1);//第一行第一列
i=0;
while(TAB1[i] != '\0')
{
LCD_WrDat(TAB1[i]);
i++;
DelayMS(5);
}
LCD_WrAddr(2,1);//第二行第一列
i=0;
while(TAB2[i] != '\0')
{
LCD_WrDat(TAB2[i]);
i++;
DelayMS(5);
}
LCD_WrAddr(3,1);//第三行第一列
i=0;
while(TAB3[i] != '\0')
{
LCD_WrDat(TAB3[i]);
i++;
DelayMS(5);
}
LCD_WrAddr(4,1);//第四行第一列
i=0;
while(TAB4[i] != '\0')
{
LCD_WrDat(TAB4[i]);
i++;
DelayMS(5);
}
while(1);
}
}
|
|