新人报道,求大神帮助,LCD1602为什么不显示,
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit lcden=P2^1;
sbit lcdrs=P2^0;
sbit lcdrw=P2^2;
sbit adwr=P3^7;
//sbit adcs=P3^0; //oe ==gnd
sbit eoc=P2^3;
uchar code table[]="the illustion is";
uchar code table1[]="lx";
uint num,a,d,qian,bai,shi,ge,num1;
uint illusion,temp;
void init(void); //初始化函数
void delay(uint a); //延时函数
void write_com(uchar com); //写指令函数
void write_data(uchar date); //写数据函数
void display(uint d); //显示函数
void main()
{
void init(); //初始化
EA=1; //开总中断
ET0=1; //开定时器中断
TR0=1; //启动定时器
lcden=0;
/***********对1602液晶的模式进行设置***************/
write_com(0x38); //设置16*2显示,5*7点阵,8位数据接口
write_com(0x0c); //设置开显示,不显示光标
write_com(0x06); //写一个字符后地址指针加一
write_com(0x01); //显示清零,数据指针清零
while(1)
{
/*******开始不断扫描P1引脚是否有信号,并且对信号进行计算和显示********/
if(P1!=0)
{
delay(10);
if(P1!=0)//防止误判
{
adwr=0;
delay(5);
adwr=1;
delay(5);
adwr=0;
while(eoc);
for(a=10;a>0;a--)
{temp=illusion*4;
temp=1000;
display(temp);//显示照度
}
};
};
}
}
/**********************初始化程序************************/
void init(void)
{
TMOD=0x01; //定时器0工作于计数方式1
TH0=(65536-5000)/256;
TL0=(65536-5000)%256; //定时时间为50ms
num=0;
// adcs=0;
// sign=0;
// temp=0;
write_com(0x80);
}
/*************延时函数每次延时50ms********************/
void delay(uint a)
{
uint b,c;
for(b=a;b>0;b--)
for(c=110;c>0;c--);
}
/************定时器中断函数*****************/
void to_time() interrupt 1
{
TH0=(65536-5000)/256; //中断函数里重新赋初值
TL0=(65536-5000)%256;
num++;
if(num==20) //每20*50ms计算一次,并且将速度显示
{
num=0;
//标志位
illusion=P1;
}
}
/***********写指令函数************/
void write_com(uchar com)
{
lcdrs=0;
lcdrw=0;
P0=com;
//delay(5);
lcden=1;
delay(20);
lcden=0;
}
/*********写数据函数*************/
void write_data(uchar date)
{
lcdrs=1;
//delay(5);
lcdrw=0;
P0=date;
// delay(5);
lcden=1;
delay(20);
lcden=0;
}
/*************显示函数********************/
void display(uint illusion)
{
qian=illusion/1000;
bai=illusion%1000/100;
shi=illusion%100/10;
ge=illusion%10; //速度范围为0至9999.
for(num1=0;num1<20;num1++) //显示前面一段字符
{
write_data(table[num1]);
delay(20);
};
write_com(0x80+0x41); //显示光照强度
write_data(0x30+qian);
write_com(0x80+0x42);
write_data(0x30+bai);
write_com(0x80+0x43);
write_data(0x30+shi);
write_com(0x80+0x44);
write_data(0x30+ge);
write_com(0x80+0x47);
for(num1=0;num1<2;num1++)
{
write_data(table1[num1]);
delay(20);
}
write_com(0x80);
}
上传仿真文件,告知软件版本号。