| 
 电路是这样连的 
  
 
测试程序如下:(作用在下 
面介绍) 
#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模块是没问题的,直接连电脑是能定位的。 
这个问题困扰小弟很长时间了,跪求大神解答!!!!  |