51单片机解析卫星定位数据源码+DHT11,1602显示

什么都不多说,直接看代码:

    #include <REG52.H>
    #include <stdio.h>
    #include <intrins.h>
    ========================================================================================

    /*
    1602A(16*2)模拟口线接线方式
    连接线图:   
           ---------------------------------------------------
           |LCM-----51   |  LCM-----51   |  LCM------51      |
           --------------------------------------------------|
           |DB0-----P0.0 |  DB4-----P0.4 |  RW-------P1.5    |
           |DB1-----P0.1 |  DB5-----P0.5 |  RS-------P1.4    |
           |DB2-----P0.2 |  DB6-----P0.6 |  E--------P1.6    |
           |DB3-----P0.3 |  DB7-----P0.7 |  V0接10K电阻到GND |
           ---------------------------------------------------
    温湿度DHT11接线:模块data接   P3^2
    ******************/
    sbit Data= P3^2;   //定义数据线      温湿度传感器DHT11数据接入
    unsigned char rec_dat[9];   //用于显示的接收数据数组  

    unsigned char  flag_rec=0;     
    unsigned char  num_rec=0;

    unsigned char code kaijihuamian[]="BeiDou_DHT11";    //开机显示
    unsigned char code kaijihuamian2[]="AnShan_17-12-01";
    unsigned char code receiving[]="Receiving!";
    unsigned char code nodata[]="No BD data!";
    unsigned char code LCD_161[]="BD_HeGuang Studios";
    unsigned char code LCD_162[]="TEL:15117255049";

    char code TIME_AREA= 8;     //时区
    unsigned char flag_data;    //数据标志位

    //BD数据存储数组
    unsigned char JD[10];       //经度
    unsigned char JD_a;     //经度方向
    unsigned char WD[9];        //纬度
    unsigned char WD_a;     //纬度方向
    unsigned char date[6];      //日期
    unsigned char time[6];      //时间
    unsigned char time1[6];     //时间
    unsigned char speed[5]={
  '0','0','0','0','0'};       //速度
    unsigned char high[6];      //高度
    unsigned char angle[5];     //方位角
    unsigned char use_sat[2];   //使用的卫星数
    unsigned char total_sat[2]; //天空中总卫星数
    unsigned char lock;         //定位状态

    //串口中断需要的变量
    unsigned char seg_count;    //逗号计数器
    unsigned char dot_count;    //小数点计数器
    unsigned char byte_count;   //位数计数器
    unsigned char cmd_number;   //命令类型
    unsigned char mode;         //0:结束模式,1:命令模式,2:数据模式
    unsigned char buf_full;     //1:整句接收完成,相应数据有效。0:缓存数据无效。
    unsigned char cmd[5];       //命令类型存储数组

    sbit rs = P1^4;
    sbit rw = P1^5;
    sbit ep = P1^6;

    //-----------------------------------------------------------------------------------------------
    //延时子程序
    void delayms(unsigned char ms)
    {
        unsigned char i;
        while(ms--)
        {
        for(i = 0; i < 120; i++);
        }
    }


    bit lcd_bz(void)
    {                           // 测试LCD忙碌状态
        bit result;
        rs = 0;
        rw = 1;
        ep = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        result = (bit)(P0 & 0x80);
        ep = 0;
        return result;  
    }

    void lcd_wcmd(unsigned char cmd)
    {                           // 写入指令数据到LCD
        while(lcd_bz());
        rs = 0;
        rw = 0;
        ep = 0;
        _nop_();
        _nop_();    
        P0 = cmd;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 0;     
    }

    void lcd_pos(unsigned char pos)
    {                           //设定显示位置
        lcd_wcmd(pos | 0x80);
    }

    void lcd_pos_2(unsigned char pos)
    {                           //设定显示位置
        lcd_wcmd(pos | 0xC0);
    }

    void lcd_wdat(unsigned char dat)    
    {                           //写入字符显示数据到LCD
        while(lcd_bz());
        rs = 1;
        rw = 0;
        ep = 0;
        P0 = dat;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 1;
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        ep = 0; 
    }
    
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值