各位大神,我的lcd只显示一行白色方块,怎么解决啊!!!急!在线等!!附上程序#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
void displaym();
sbit num1=P1^0;
sbit num2=P1^1;
sbit num3=P1^2;
sbit num4=P1^3;
sbit num5=P1^4;
sbit num6=P1^5;
sbit num7=P1^6;
sbit num8=P1^7;
sbit D0=P0^0;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
sbit D4=P0^4;
sbit D5=P0^5;
sbit D6=P0^6;
sbit D7=P0^7;
sbit out=P3^4;
sbit out1=P3^7;
sbit en=P2^5;//1602 6管脚
sbit rs=P2^7; //1602端口4管脚
sbit rw=P2^6;//lcd1602控制端口 5管脚
uint flag,z1,z2,m,flag_1,zheng,fan,kai;
uchar key_press_num=0;
bit qd_count=0;
unsigned long RPM=0;//定义速度变量
unsigned long TT=0;//定义时间变量
unsigned long sum=0;//计算平均值的总数
unsigned char T_num=0;//平均值取值的次数
unsigned long num=0;//单次转速
unsigned int TT1=0;//定义定时器中断次数变量
unsigned char clear=0;
void delay(uint z)//延时1ms函数
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<100;y++);
}
void write_com(uchar com)//向1602写一字节(控制指令)
{
rs=0;
P0=com;
delay(5);
en=0;
delay(10);
en=1;
}
void write_data(uchar date)//向1602写一字节(数据)
{
rs=1;
P0=date;
delay(5);
en=0;
delay(5);
en=1;
}
void init()//初始化函数
{
en=0;
rw=0;
write_com(0x01); //lcd初始化
write_com(0x38); //5X7显示
write_com(0x0c); //关闭光标
TMOD=0x01; //定时器方式1
TH0=0xdc;
TL0=0x00; //定时器装入初值
EA=1; //开总中断
ET0=1; //定时器0开中断
TR0=0;
EX1=1;
IT1=1; //定时器启动
TH1=0xff;
TL1=0x9c;//定时100us
ET1=1; //定时器1开中断
TR1=1;
write_com(0x80);
write_data('V');
write_data(':');
write_com(0x87); //第一行显示转速
write_data('r');
write_data('p');
write_data('m');
write_com(0xc0);
write_data('z');
write_data('h');
write_data('a');
write_data('n');
write_data('k');
write_data('o');
write_data('n');
write_data('g');
write_data('b');
write_data('i'); //在第二行显示zhankongbi:
write_data(':');
displaym();
}【图片】

#define uchar unsigned char
#define uint unsigned int
void displaym();
sbit num1=P1^0;
sbit num2=P1^1;
sbit num3=P1^2;
sbit num4=P1^3;
sbit num5=P1^4;
sbit num6=P1^5;
sbit num7=P1^6;
sbit num8=P1^7;
sbit D0=P0^0;
sbit D1=P0^1;
sbit D2=P0^2;
sbit D3=P0^3;
sbit D4=P0^4;
sbit D5=P0^5;
sbit D6=P0^6;
sbit D7=P0^7;
sbit out=P3^4;
sbit out1=P3^7;
sbit en=P2^5;//1602 6管脚
sbit rs=P2^7; //1602端口4管脚
sbit rw=P2^6;//lcd1602控制端口 5管脚
uint flag,z1,z2,m,flag_1,zheng,fan,kai;
uchar key_press_num=0;
bit qd_count=0;
unsigned long RPM=0;//定义速度变量
unsigned long TT=0;//定义时间变量
unsigned long sum=0;//计算平均值的总数
unsigned char T_num=0;//平均值取值的次数
unsigned long num=0;//单次转速
unsigned int TT1=0;//定义定时器中断次数变量
unsigned char clear=0;
void delay(uint z)//延时1ms函数
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<100;y++);
}
void write_com(uchar com)//向1602写一字节(控制指令)
{
rs=0;
P0=com;
delay(5);
en=0;
delay(10);
en=1;
}
void write_data(uchar date)//向1602写一字节(数据)
{
rs=1;
P0=date;
delay(5);
en=0;
delay(5);
en=1;
}
void init()//初始化函数
{
en=0;
rw=0;
write_com(0x01); //lcd初始化
write_com(0x38); //5X7显示
write_com(0x0c); //关闭光标
TMOD=0x01; //定时器方式1
TH0=0xdc;
TL0=0x00; //定时器装入初值
EA=1; //开总中断
ET0=1; //定时器0开中断
TR0=0;
EX1=1;
IT1=1; //定时器启动
TH1=0xff;
TL1=0x9c;//定时100us
ET1=1; //定时器1开中断
TR1=1;
write_com(0x80);
write_data('V');
write_data(':');
write_com(0x87); //第一行显示转速
write_data('r');
write_data('p');
write_data('m');
write_com(0xc0);
write_data('z');
write_data('h');
write_data('a');
write_data('n');
write_data('k');
write_data('o');
write_data('n');
write_data('g');
write_data('b');
write_data('i'); //在第二行显示zhankongbi:
write_data(':');
displaym();
}【图片】
