12864纸张

# include & ltreg 51 . h & gt;

# include & ltintrins.h & gt

# include & ltstdio.h & gt

#定义uchar无符号字符

# define first _ add r0//定义字符/汉字的显示起始位置。

sbit lcd_rs=p2^2;

sbit lcd_rw=p2^3;

sbit lcd_e=p2^4;

sbit pcb=p2^5;

uchar i,j;

无效延迟(毫秒)

{

当(毫秒)

{

for(j = 0;j & lt120;j++);

}

}

位lcd_busy()

{位结果;

LCD _ RS = 0;

LCD _ RW = 1;

LCD _ E = 1;

结果=(位)(P0 & amp0x 80);

LCD _ E = 0;

返回结果;

}

无效lcd_wcmd(uchar cmd)

{

while(LCD _ busy());

LCD _ RS = 0;

LCD _ RW = 0;

P0 = cmd

LCD _ E = 1;

LCD _ E = 0;

}

void lcd_wdata(uchar dat)

{

while(LCD _ busy());

LCD _ RS = 1;

LCD _ RW = 0;

P0 = dat

LCD _ E = 1;

LCD _ E = 0;

}

void lcd_initial()

{

LCD _ wcmd(0x 30);

延时(1);

LCD _ wcmd(0x0C);//打开显示器,关闭光标,不眨眼。

延时(1);

LCD _ wcmd(0x 06);//指定写入或读取数据时光标移动的方向。

延时(1);

LCD _ wcmd(0x 01);

延时(10);//这里的延迟要长一些,否则会影响后面的操作。

}

/* -清除屏幕的命令*/

void Clr_Screen()

{

//考虑到0x34的外观。

LCD _ wcmd(0x 01);

延时(100);

}

void _ FU(uchar代码*s)

{

while(*s!=0)

{ LCD _ wdata(* s);

s++;

延时(10);

}

}

空虚感1()

{

LCD _ wcmd(0x 30);

延迟(300);

LCD _ wcmd(0x 80+first _ Addr);

zi _ FU(" 2065 438+03 03 26 ");

延迟(300);

LCD _ wcmd(0x 90+first _ Addr);

Zi_FU("电气08-17 ");

延迟(300);

LCD _ wcmd(0x 88+first _ Addr);

子_符(“讷气”);

延迟(300);

LCD _ wcmd(0x 98+first _ Addr);

延迟(500);

zi _ FU(" 2065 438+02 . 5 . 30 ");

}

void main()

{

PCB = 1;

while(1)

{

LCD _ initial();

延时(1000);

clr _ Screen();

感觉1();

延时(3000);

for(I = 8;我& gt0;我-)

{

LCD _ wcmd(0x 18);//一两行切换三四行,液晶分两个半屏。

延时(1000);

}

clr _ Screen();

感觉1();

LCD _ wcmd(0x 34);

LCD _ wcmd(0x 04);

延时(3000);

LCD _ wcmd(0x 04);//恢复正常

延时(3000);

LCD _ wcmd(0x 34);

LCD _ wcmd(0x 03);//允许输入滚动地址。

for(I = 0x 40;我& lt0x7fi++)

{

lcd_wcmd(一);//垂直滚动屏幕内容。

延迟(600);//上调屏幕延迟

}

}

}