|
串口中程序如下:void GetRs232_Data() interrupt 4
{
uchar i,j,temp;
if(RI)
{
RI=0;
temp=SBUF;
if(temp=='$')
{
Rsbuf[0] =temp;
for(i=1;i<sizeof(GPS_ASC)-1;i++)
{
j=GetUart_Data();
if(j<256)
{
Rsbuf=(uchar)j;
if(Rsbuf!=GPS_ASC) return;
}
}
//
for(;i<sizeof(Rsbuf);i++)
{
j=GetUart_Data();
if(j<256)
Rsbuf=(uchar)j;
else
break;
}
LCD_Write_String(5,0,Rsbuf+0x07,6);//
}
}
}
/*-----------------------------------------------*/
LCD_Write_String()函数是一个1602显示,x代表第几列,y代表第几行,s就是指向读取数据的指针,num是读取的位数
/*-----------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s,uchar num)
{
uchar i;
if (y == 0)
{
LCD_Write_Com(0x80 + x); //表示第一行
}
else
{
LCD_Write_Com(0xC0 + x); //表示第二行
}
for(i=0;i<num;i++)
{
LCD_Write_Data( *s);
s ++;
}
}
同样的一段程序放在主函数里面会有显示,如下:
void main()
{
uchar num;
unsigned char Data[5]="Date:";
unsigned char Time[5]="Time:";
//Buf_data[0]=0;
//Buf_data[1]=0;
LCD_Init();
LCD_Write_String(0x10,0,Data,5);
LCD_Write_String(0x10,1,Time,5);
..............}
可是在串口的那段就是没有显示,是什么原因??? |
|