电路是这样连的

测试程序如下:(作用在下
面介绍)
#include<reg52.h>
#include<string.h>
#include<stdlib.h>
#define u8 unsigned char
#define u32 unsigned int
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit lcdrw=P3^6;
u8 code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
char flag,flag2=0;
char date;
double temp1;
void delay(int z)
{
int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write_com(u8 com)
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(u8 date)
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd; //波特率为9600(gps波特率也为9600)
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1; //串口中断
lcden=0;
write_com(0x38);
write_com(0x0f);
write_com(0x06);
write_com(0x80);
write_com(0x01);
}
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
write_data('b');
flag=0;
if(flag2>9)
flag2=0;
write_data(table[flag2]);
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
date=SBUF;
flag=1;
flag2++;
}
该测试程序的作用是,只要单片机接到数据,lcd上就以个数的形式显示出来
当我用串口小助手手动发送任意数据,lcd上就会表现出来,而将gps模块连接上去以后lcd一点反应也没有,也就是说单片机没接到数据,但是gps模块是没问题的,直接连电脑是能定位的。
这个问题困扰小弟很长时间了,跪求大神解答!!!! |