weixin_46629578 2020-03-23 18:19 采纳率: 0%
浏览 130

GPS单片机protuesLCD1602黑块较多,应该是数据解析的问题。

基于单片机的GPS数据解析LCD出现很多黑块
图片说明
GPS数据用串口助手,发送的。然后发送完再接收。准确没有错误。应该不是串口通信的,问题,LCD在发送数据之前,能正常显示welcome图片说明
我猜测应该是GPS数据解析的问题,因为关于时间的数据,随便怎么修改。LCD1602上面那个21都没变过。
串口代码如下:

void RECEIVE_DATA(void) interrupt 4         
{
    unsigned char temp;
    temp = SBUF;
    RI = 0;                      //清除发送完成标志位
    //LED1 = ~LED1;
    SBUF=temp;//将接收到的数据放入到发送寄存器
    while(!TI);          //等待发送数据完成
    TI=0;
    if(temp == '$')
    {
        RX_Count = 0;
        Flag_GPS_OK = 0;        
    }

    RX_Buffer[RX_Count++] = temp;

    if(RX_Count >= 68)
    {
        RX_Count = 68;
        Flag_GPS_OK = 1;        
    } 
}

数据解析的:

    while(1)
    {
        Scan_Key();
        if(Flag_GPS_OK == 1 && RX_Buffer[4] == 'G' && RX_Buffer[6] == ',' && RX_Buffer[13] == '.')          //确定是否收到"GNGGA"这一帧数据
        {
            for( i = 0; i < 68 ; i++)
            {
                Display_GPGGA_Buffer[i] = RX_Buffer[i]; 
            }
            Hour = (Display_GPGGA_Buffer[7]-0x30)*10+(Display_GPGGA_Buffer[8]-0x30)+8;          //UTC时间转换到北京时间        UTC+8
                                                                                                //0x30为ASCII转换为数字
            if( Hour >= 24)             //溢出
            {
                Hour %= 24;             //获取当前Hour
                Flag_OV = 1;            //日期进位
            }
            else
            {
                Flag_OV = 0;
            }

            Min_High = Display_GPGGA_Buffer[9];
            Min_Low = Display_GPGGA_Buffer[10];

            Sec_High = Display_GPGGA_Buffer[11];
            Sec_Low = Display_GPGGA_Buffer[12];

            Flag_Calc_GPGGA_OK = 1;
        }

        if(Page == 0 && Flag_Calc_GPGGA_OK == 1)
        {
            /*LED1 = ~LED1;*/
            Flag_Calc_GPGGA_OK = 0;
            LCD1602_write_com(0x80);            //设置指针
            LCD1602_write_data(Hour/10+0x30);
            LCD1602_write_data(Hour%10+0x30);

            LCD1602_write_data(':');

            LCD1602_write_data(Min_High);
            LCD1602_write_data(Min_Low);

            LCD1602_write_data(':');

            LCD1602_write_data(Sec_High);
            LCD1602_write_data(Sec_Low);

            LCD1602_write_word("  ");

            LCD1602_write_data(Display_GPGGA_Buffer[54]);   
            LCD1602_write_data(Display_GPGGA_Buffer[55]);   
            LCD1602_write_data(Display_GPGGA_Buffer[56]);   
            LCD1602_write_data(Display_GPGGA_Buffer[57]);
            LCD1602_write_word("m");

            LCD1602_write_com(0x80+0x40);           //设置指针

            LCD1602_write_data(Display_GPGGA_Buffer[28]);           //N 或者 S

            LCD1602_write_data(Display_GPGGA_Buffer[17]);           //纬度
            LCD1602_write_data(Display_GPGGA_Buffer[18]);           //纬度
            LCD1602_write_data(0xdf);                               //度
            LCD1602_write_data(Display_GPGGA_Buffer[19]);           //纬度
            LCD1602_write_data(Display_GPGGA_Buffer[20]);           //纬度
            LCD1602_write_word("'");                                //秒

            LCD1602_write_data(Display_GPGGA_Buffer[42]);           //E 或者 W

            LCD1602_write_data(Display_GPGGA_Buffer[30]);           //经度
            LCD1602_write_data(Display_GPGGA_Buffer[31]);   
            LCD1602_write_data(Display_GPGGA_Buffer[32]);   
            LCD1602_write_data(0xdf);                               
            LCD1602_write_data(Display_GPGGA_Buffer[33]);           
            LCD1602_write_data(Display_GPGGA_Buffer[34]);       
            LCD1602_write_word("'");


        }
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 16:30
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥30 用arduino开发esp32控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿