#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++;
}
}
|