lcd1602显示问题
时间:10-02
整理:3721RD
点击:
为什么只能在一行显示,不能再第二行显示,请大虾指点江山哇
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit rw=P2^5;
sbit en=P2^7;
uchar code table[]={"welcome!"};
uchar code table1[]={"we are fighting"};
/************延时函数*************************/
delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/*************忙检查****************************/
uchar busy_check()
{
uchar result;
rs=0;
rw=1;
en=1;
delay(1);
result=(P0&0x80);
en=0;
return result;
}
/**************写命令***********/
uchar write_lcd_command(uchar cmd)
{
while(busy_check());
rs=0;
rw=0;
en=0;
P0=cmd;
en=1;
delay(1);
en=0;
return cmd;
}
/*************lcd显示位置*********/
void set_disp_pos(uchar pos)
{
write_lcd_command(pos/0x80);
}
/*************发送数据************/
void write_lcd_data(uchar dat)
{
while(busy_check());
rs=1;
rw=0;
en=0;
P0=dat;
en=1;
delay(1);
en=0;
}
/*************lcd初始化****************/
void init_lcd()
{
rs=0;
en=0;
write_lcd_command(0x38);
delay(1);
write_lcd_command(0x0c);
delay(1);
write_lcd_command(0x06);
delay(1);;
write_lcd_command(0x01);
delay(1);
}
void main()
{
uchar z;
//uint num;
init_lcd();
delay(10);
set_disp_pos(0x04);
z=0;
while(table[z]!='\0')
{
write_lcd_data(table[z]);
z++;
}
set_disp_pos(0x41);
z=0;
while(table1[z]!='\0')
{
write_lcd_data(table1[z]);
z++;
}
while(1);
}
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P2^6;
sbit rw=P2^5;
sbit en=P2^7;
uchar code table[]={"welcome!"};
uchar code table1[]={"we are fighting"};
/************延时函数*************************/
delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
/*************忙检查****************************/
uchar busy_check()
{
uchar result;
rs=0;
rw=1;
en=1;
delay(1);
result=(P0&0x80);
en=0;
return result;
}
/**************写命令***********/
uchar write_lcd_command(uchar cmd)
{
while(busy_check());
rs=0;
rw=0;
en=0;
P0=cmd;
en=1;
delay(1);
en=0;
return cmd;
}
/*************lcd显示位置*********/
void set_disp_pos(uchar pos)
{
write_lcd_command(pos/0x80);
}
/*************发送数据************/
void write_lcd_data(uchar dat)
{
while(busy_check());
rs=1;
rw=0;
en=0;
P0=dat;
en=1;
delay(1);
en=0;
}
/*************lcd初始化****************/
void init_lcd()
{
rs=0;
en=0;
write_lcd_command(0x38);
delay(1);
write_lcd_command(0x0c);
delay(1);
write_lcd_command(0x06);
delay(1);;
write_lcd_command(0x01);
delay(1);
}
void main()
{
uchar z;
//uint num;
init_lcd();
delay(10);
set_disp_pos(0x04);
z=0;
while(table[z]!='\0')
{
write_lcd_data(table[z]);
z++;
}
set_disp_pos(0x41);
z=0;
while(table1[z]!='\0')
{
write_lcd_data(table1[z]);
z++;
}
while(1);
}
