#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
/*端口定义*/
#define data P0
sbit rw=P2^5;
sbit rs=P2^6;
sbit en=P2^7;
sbit psb=P3^7;
uchar dis1[]={"520 1314"};
uchar dis2[]={"孙家欣"};
uchar dis3[]={"I LOVE YOU"};
uchar dis4[]={" --齐秋阳"};
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
/*写指令函数*/
/*rs=l,rw=l,en=高脉冲,D0-D7=指令码。*/
void write_cmd(uchar cmd)
{
rs=0;
rw=0;
en=0;
P0=cmd;
delayms(5);
en=1;
delayms(5);
en=0;
}
/*写显示数据*/
/*rs=h,rw=l,*/
void write_dat(uchar dat)
{
rs=1;
rw=0;
en=0;
P0=dat;
delayms(5);
en=1;
delayms(5);
en=0;
}
/*设定显示位置*/
void lcd_pos(uchar X,uchar Y)
{
uchar pos;
if(X==0)
{X=0x80;}
else if(X==1)
{X=0x90;}
else if(X==2)
{X=0x88;}
else if(X==3)
{X=0x98;}
pos=X+Y;
write_cmd(pos); //显示地址
}
//void makerand()
//{
// uint ran;
// ran=rand();
// dis1[0]=ran/10000+0x30;
// dis1[1]=ran%10000+0x30;
// dis1[2]=ran%1000/100+0x30;
// dis1[3]=ran%100/10+0x30;
// dis1[4]=ran%10+0x30;
//
// ran=rand();
// dis1[5]=ran/10000+0x30;
// dis1[6]=ran%10000+0x30;
// dis1[7]=ran%1000/100+0x30;
// dis1[8]=ran%100/10+0x30;
// dis1[9]=ran%10+0x30;
//}
/*初始化*/
void init()
{
psb=1; //并口方式
write_cmd(0x30); //基本指令操作
delayms(5);
write_cmd(0x0c); //显示开,关光标
delayms(5);
write_cmd(0x01); //清除显示内容
delayms(5);
}
void main()
{
uchar i;
delayms(10);
init();
lcd_pos(0,0); //第二行第一个字符
i=0;
while(dis1[i]!='\0')
{
write_dat(dis1[i]);
i++;
}
lcd_pos(1,0); //第二行第一个字符
i=0;
while(dis2[i]!='\0')
{
write_dat(dis2[i]);
i++;
}
lcd_pos(2,0); //第三行第一个字符
i=0;
while(dis3[i]!='\0')
{
write_dat(dis3[i]);
i++;
}
lcd_pos(3,0); //第三行第一个字符
i=0;
while(dis4[i]!='\0')
{
write_dat(dis4[i]);
i++;
}
}
|