亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? 2051gps.c

?? 2051解碼GPS數(shù)據(jù)裝置的源代碼,有詳細(xì)的中文注釋
?? C
字號(hào):
/*************************************
    GPS解碼1602顯示程序
    作者:BG4UVR
最后更新:
2007.01.27
    1.2版,改時(shí)間由RMC語(yǔ)句解碼,取消日期顯示
2007.01.25
    1.1版,修正定位后頁(yè)面不能轉(zhuǎn)換的BUG。
    1.0版,基本功能。
***************************************/

#include <reg2051.h>
#include "1602.h"

sbit GPS_SPD=P1^1;
sbit SPD_TYPE=P1^0;
sbit KEY1=P3^7;

/*
sbit GPS_SPD=P1^4;
sbit KEY1=P1^6;
sbit SPD_TYPE=P1^5;
*/

//各位見(jiàn)笑了,加密存儲(chǔ)開(kāi)機(jī)版權(quán)信息。免得被人改目標(biāo)代碼 :D
unsigned char code info[]={    'D'^0xab,'e'^0xab,'s'^0xab,'i'^0xab,'g'^0xab,'n'^0xab,' '^0xab,'b'^0xab,
                            'y'^0xab,' '^0xab,'B'^0xab,'G'^0xab,'4'^0xab,'U'^0xab,'V'^0xab,'R'^0xab,};

char code TIME_AREA= 8;            //時(shí)區(qū)

//GPS數(shù)據(jù)存儲(chǔ)數(shù)組
unsigned char JD[10];            //經(jīng)度
unsigned char JD_a;            //經(jīng)度方向
unsigned char WD[9];            //緯度
unsigned char WD_a;            //緯度方向
unsigned char time[6];        //時(shí)間
unsigned char speed[5];        //速度
unsigned char high[6];        //高度
unsigned char angle[5];        //方位角
unsigned char use_sat[2];        //使用的衛(wèi)星數(shù)
unsigned char total_sat[2];    //天空中總衛(wèi)星數(shù)
unsigned char lock;            //定位狀態(tài)

//串口中斷需要的變量
unsigned char seg_count;        //逗號(hào)計(jì)數(shù)器
unsigned char dot_count;        //小數(shù)點(diǎn)計(jì)數(shù)器
unsigned char byte_count;        //位數(shù)計(jì)數(shù)器
unsigned char cmd_number;        //命令類(lèi)型
unsigned char mode;                //0:結(jié)束模式,1:命令模式,2:數(shù)據(jù)模式
unsigned char buf_full;            //1:整句接收完成,相應(yīng)數(shù)據(jù)有效。0:緩存數(shù)據(jù)無(wú)效。
unsigned char cmd[5];            //命令類(lèi)型存儲(chǔ)數(shù)組

//顯示需要的變量
unsigned int dsp_count;        //刷新次數(shù)計(jì)數(shù)器
unsigned char time_count;
bit page;
bit spd_type;

void sys_init(void);
bit chk_key(void);

main()
{
    unsigned char i;
    char Bhour;
    unsigned int Knots;
    sys_init();

    while(1){
        if(buf_full==0)                //無(wú)GPS信號(hào)時(shí)
        {
            dsp_count++;
            if(dsp_count>=65000){
                LCD_cls();            //清屏
                LCD_write_string(0,0,"No GPS connect..");
                while(buf_full==0);
                LCD_cls();    
                dsp_count=0;
            }
        }
        else{                        //有GPS信號(hào)時(shí)
            if(chk_key()){                //檢測(cè)到按鍵切換顯示
                page=!page;
                LCD_cls();
            }

            if(!page){                        //頁(yè)面1
                if(buf_full|0x01){                //GGA語(yǔ)句
                    if(lock=='0'){                    //如果未定位
                        LCD_write_string(0,0,"*---.--.----  ");
                        LCD_write_string(0,1,"* --.--.----  ");                    
                    }else{                            //如果已定位
                        LCD_write_char(0,0,JD_a);            //顯示經(jīng)度
                        for(i=0;i<3;i++){
                            LCD_write_char(i+1,0,JD[i]);
                        }
                        LCD_write_char(4,0,'.');
                        for(i=3;i<10;i++){
                            LCD_write_char(i+2,0,JD[i]);
                        }

                        LCD_write_char(0,1,WD_a);            //顯示緯度
                        LCD_write_char(1,1,' ');
                        for(i=0;i<2;i++){
                            LCD_write_char(i+2,1,WD[i]);
                        }            
                        LCD_write_char(4,1,'.');
                        for(i=2;i<9;i++){
                            LCD_write_char(i+3,1,WD[i]);
                        }                            }
                    LCD_write_char(14,0,use_sat[0]);        //顯示接收衛(wèi)星數(shù)
                    LCD_write_char(15,0,use_sat[1]);
                    buf_full&=~0x01;
                    dsp_count=0;
                }
                if(buf_full|0x02){                //GSV語(yǔ)句
                    LCD_write_char(14,1,total_sat[0]);
                    LCD_write_char(15,1,total_sat[1]);
                    buf_full&=~0x02;
                    dsp_count=0;
                }
                if(buf_full|0x04){
                    buf_full&=~0x04;
                    dsp_count=0;
                }
            }
            else{                            //頁(yè)面2
                if(buf_full|0x01){                //GGA語(yǔ)句
                    buf_full&=~0x01;
                    dsp_count=0;
                }
                if(buf_full|0x02){
                    buf_full&=~0x02;
                    dsp_count=0;
                }
                if(buf_full|0x04){                //RMC語(yǔ)句
                    Bhour=((time[0]-0x30)*10+time[1]-0x30)+TIME_AREA;
                    if(Bhour>=24){
                        Bhour-=24;
                    }else if(Bhour<0){
                        Bhour+=24;
                    }
                    LCD_write_string(2,1,"BJT ");
                    LCD_write_char(6,1,Bhour/10+0x30);
                    LCD_write_char(7,1,Bhour%10+0x30);
                    LCD_write_char(8,1,':');
                    LCD_write_char(9,1,time[2]);
                    LCD_write_char(10,1,time[3]);
                    LCD_write_char(11,1,':');
                    LCD_write_char(12,1,time[4]);
                    LCD_write_char(13,1,time[5]);
                    if(spd_type){
                        LCD_write_string(5,0,"km/h A");
                    }else{
                        LCD_write_string(5,0,"knot A");
                    }
                    if(lock=='0'){                    //如果未定位
                        LCD_write_string(0,0,"---.-");
                        LCD_write_string(11,0,"---.-");
                    }else{                            //已經(jīng)定位
                        if(spd_type){                    //km/h顯示
                            for(i=0;i<5;i++){
                                LCD_write_char(i,0,speed[i]);
                            }
                        }else{                            //knot顯示
                            Knots=    (((speed[0]-0x30)*1000
                                    +(speed[1]-0x30)*100
                                    +(speed[2]-0x30)*10
                                    +(speed[4]-0x30))*1000)/1852;
                            LCD_write_char(0,0,Knots/1000+0x30);
                            LCD_write_char(1,0,(Knots%1000)/100+0x30);
                            LCD_write_char(2,0,(Knots%100)/10+0x30);
                            LCD_write_char(3,0,'.');
                            LCD_write_char(4,0,Knots%10+0x30);
                        }
                        for(i=0;i<5;i++){
                            LCD_write_char(11+i,0,angle[i]);
                        }
                    }
                    buf_full&=~0x04;
                    dsp_count=0;
                }
            }
        }
    }
}

bit chk_key(void)
{
    if(!KEY1){
        delayms(10);
        if(!KEY1){
            while(!KEY1);
            delayms(10);
            return(1);
        }
    }
    return(0);
}

//系統(tǒng)初始化
void sys_init() {
    unsigned char i;
    SCON = 0x50;     /* SCON: mode 1, 8-bit UART, enable rcvr */
    TMOD = 0x21;     /* TMOD: timer 1, mode 2, 8-bit reload */
    if(GPS_SPD){
        TH1 = 0xfd;         /* TH1: reload value for 9600 baud @ 11.059MHz */
    }else{
        TH1 = 0xfa;            /* TH1: reload value for 4800 baud @ 11.059MHz */
    }
    if(SPD_TYPE){
        spd_type=1;            //速度單位km/h
    }else{
        spd_type=0;            //速度單位knot
    }
    TR1 = 1;         /* TR1: timer 1 run */
    LCD_init();        //初始化LCD
    LCD_write_string(0,0,"GPS Monitor V1.2");
    for(i=0;i<16;i++){                                //顯示版權(quán)信息
        LCD_write_char(i,1,info[i]^0xab);
    }
    for(i=1;i<4;i++){
        delayms(250);
    }
    LCD_cls();
    IE=0x90;            //開(kāi)總中斷、串口中斷
}

//串口接收中斷
void uart(void) interrupt 4
{
    unsigned char tmp;
    if(RI){
        tmp=SBUF;
        switch(tmp){
            case '$':
                cmd_number=0;        //命令類(lèi)型清空
                mode=1;                //接收命令模式
                byte_count=0;        //接收位數(shù)清空
                break;
            case ',':
                seg_count++;        //逗號(hào)計(jì)數(shù)加1
                byte_count=0;
                break;
            case '*':
                switch(cmd_number){
                    case 1:
                        buf_full|=0x01;
                        break;
                    case 2:
                        buf_full|=0x02;
                        break;
                    case 3:
                        buf_full|=0x04;
                        break;
                }
                mode=0;
                break;
            default:
                if(mode==1){
                    //命令種類(lèi)判斷
                    cmd[byte_count]=tmp;            //接收字符放入類(lèi)型緩存
                    if(byte_count>=4){                //如果類(lèi)型數(shù)據(jù)接收完畢,判斷類(lèi)型
                        if(cmd[0]=='G'){
                            if(cmd[1]=='P'){
                                if(cmd[2]=='G'){
                                    if(cmd[3]=='G'){
                                        if(cmd[4]=='A'){
                                            cmd_number=1;
                                            mode=2;
                                            seg_count=0;
                                            byte_count=0;
                                        }
                                    }
                                    else if(cmd[3]=='S'){
                                        if(cmd[4]=='V'){
                                            cmd_number=2;
                                            mode=2;
                                            seg_count=0;
                                            byte_count=0;
                                        }
                                    }
                                }
                                else if(cmd[2]=='R'){
                                    if(cmd[3]=='M'){
                                        if(cmd[4]=='C'){
                                            cmd_number=3;
                                            mode=2;
                                            seg_count=0;
                                            byte_count=0;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                else if(mode==2){
                    //接收數(shù)據(jù)處理
                    switch (cmd_number){
                        case 1:                //類(lèi)型1數(shù)據(jù)接收。GPGGA
                            switch(seg_count){
                                case 2:                                //緯度處理
                                    if(byte_count<9){
                                        WD[byte_count]=tmp;
                                    }
                                    break;
                                case 3:                                //緯度方向處理
                                    if(byte_count<1){
                                        WD_a=tmp;
                                    }
                                    break;
                                case 4:                                //經(jīng)度處理
                                    if(byte_count<10){
                                        JD[byte_count]=tmp;
                                    }
                                    break;
                                case 5:                                //經(jīng)度方向處理
                                    if(byte_count<1){
                                        JD_a=tmp;
                                    }
                                    break;
                                case 6:                                //定位判斷
                                    if(byte_count<1){
                                        lock=tmp;
                                    }
                                    break;
                                case 7:                                //定位使用的衛(wèi)星數(shù)
                                    if(byte_count<2){
                                        use_sat[byte_count]=tmp;
                                    }
                                    break;
                                case 9:                                //高度處理
                                    if(byte_count<6){
                                        high[byte_count]=tmp;
                                    }
                                    break;
                            }
                            break;
                        case 2:                //類(lèi)型2數(shù)據(jù)接收。GPGSV
                            switch(seg_count){
                                case 3:                                //天空中的衛(wèi)星總數(shù)
                                    if(byte_count<2){
                                        total_sat[byte_count]=tmp;
                                    }
                                    break;
                            }
                            break;
                        case 3:                //類(lèi)型3數(shù)據(jù)接收。GPRMC
                            switch(seg_count){
                                case 1:
                                    if(byte_count<6){                //時(shí)間處理
                                        time[byte_count]=tmp;    
                                    }
                                    break;
                                case 7:                                //速度處理
                                    if(byte_count<5){
                                        speed[byte_count]=tmp;
                                    }
                                    break;
                                case 8:                                //方位角處理
                                    if(byte_count<5){
                                        angle[byte_count]=tmp;
                                    }
                                    break;
                            }
                            break;
                    }
                }
                byte_count++;        //接收數(shù)位加1
                break;
        }
    }
    RI=0;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜大片免费观看| 婷婷综合五月天| 日韩欧美不卡一区| 欧美一区二区三区在线观看视频| 色视频一区二区| 日本高清不卡aⅴ免费网站| 99精品视频在线观看免费| 91丨porny丨在线| 色哦色哦哦色天天综合| 欧美性做爰猛烈叫床潮| 欧美日韩国产色站一区二区三区| 欧美日韩在线亚洲一区蜜芽| 欧美日韩国产一区二区三区地区| 6080午夜不卡| 久久亚区不卡日本| 国产精品久久久久久户外露出 | 在线播放中文字幕一区| 国产一区二区久久| 免播放器亚洲一区| 粉嫩一区二区三区性色av| 一区二区三区中文字幕精品精品| 日本欧美久久久久免费播放网| 日韩一级二级三级| 欧美α欧美αv大片| 不卡一二三区首页| 久久久久久综合| 亚洲色图色小说| 婷婷成人激情在线网| 免费日韩伦理电影| 成人中文字幕合集| 在线视频一区二区三| 欧美一卡二卡三卡| 国产精品二区一区二区aⅴ污介绍| 一区二区三区鲁丝不卡| 久久精品免费观看| 91丝袜美腿高跟国产极品老师| 欧美乱熟臀69xxxxxx| 一区二区三区日韩在线观看| 亚洲成人av福利| 懂色av一区二区三区免费看| 欧美性欧美巨大黑白大战| 日韩欧美精品三级| 亚洲精品乱码久久久久久黑人| 美女网站视频久久| 色老汉一区二区三区| 欧美大片顶级少妇| 亚洲免费观看高清完整版在线| 久久国产生活片100| 色久优优欧美色久优优| 久久久无码精品亚洲日韩按摩| 亚洲一线二线三线视频| 国产乱子伦一区二区三区国色天香| 日本久久一区二区三区| 亚洲国产成人一区二区三区| 丝袜亚洲另类欧美| 91色九色蝌蚪| 国产精品嫩草99a| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩久久不卡| 亚洲免费在线观看| 成人黄色av电影| 久久亚洲精华国产精华液 | 欧美日韩国产美女| 亚洲色图19p| 成人理论电影网| 国产日本一区二区| 国产一区不卡视频| 久久色中文字幕| 国产自产视频一区二区三区 | 人人超碰91尤物精品国产| 色婷婷综合激情| 亚洲欧洲精品一区二区三区不卡| 国产一区二区三区四区五区美女 | 欧美午夜精品电影| 亚洲你懂的在线视频| 9人人澡人人爽人人精品| 中文字幕精品在线不卡| 成人黄色国产精品网站大全在线免费观看| 欧美成人女星排名| 国产一区二区按摩在线观看| 欧美国产日韩在线观看| 中文字幕免费不卡在线| 欧美亚一区二区| 国产精品久久久久久久久搜平片 | 日本亚洲免费观看| 日韩一区二区三区免费看 | 91精彩视频在线观看| 亚洲欧美日韩国产综合在线| 99国产精品久| 亚洲一区二区欧美日韩| 欧美日韩精品一区二区三区蜜桃 | 2023国产一二三区日本精品2022| 精品一区二区免费在线观看| 亚洲精品在线电影| 高清国产一区二区三区| 亚洲精选在线视频| 日韩一级完整毛片| 国产suv精品一区二区883| 综合婷婷亚洲小说| 在线播放一区二区三区| 国产酒店精品激情| 亚洲精选免费视频| 欧美一级在线视频| 成人18视频在线播放| 亚洲一区二区三区激情| 精品久久人人做人人爱| 97久久超碰精品国产| 亚洲成av人片| 中文字幕乱码亚洲精品一区| 欧美四级电影网| 国产一区在线精品| 亚洲一区av在线| 国产天堂亚洲国产碰碰| 91久久精品一区二区三区| 美腿丝袜亚洲综合| 亚洲人成影院在线观看| 欧美一区二区三区精品| 不卡一区中文字幕| 欧美色图12p| 成人免费小视频| 国产精品视频一二| 欧美一区二区三区四区视频| 国产成人精品午夜视频免费| 亚洲第一电影网| 一区二区三区产品免费精品久久75| 日韩欧美国产综合| 欧美专区日韩专区| 成人免费毛片aaaaa**| 免播放器亚洲一区| 亚洲一区二区三区视频在线播放| 国产目拍亚洲精品99久久精品| 欧美日本视频在线| 日本高清视频一区二区| a在线欧美一区| 国产精品一线二线三线精华| 日本欧美加勒比视频| 亚洲综合男人的天堂| 欧美国产精品劲爆| 欧美草草影院在线视频| 51久久夜色精品国产麻豆| 91国偷自产一区二区使用方法| 国产黄色成人av| 国产一区视频网站| 韩国三级中文字幕hd久久精品| 日韩和的一区二区| 亚洲成人av一区二区三区| 亚洲综合一区二区| 亚洲精品一二三| 一区二区三区中文字幕在线观看| 亚洲天堂免费在线观看视频| 中文字幕亚洲区| 国产精品久久久久四虎| 国产亚洲制服色| 国产精品区一区二区三| 国产精品免费免费| 成人免费在线视频观看| 亚洲人成在线观看一区二区| 亚洲人成在线播放网站岛国| 国产一区二区调教| 激情综合五月天| 六月婷婷色综合| 麻豆精品国产传媒mv男同| 免费在线视频一区| 成人a区在线观看| 春色校园综合激情亚洲| 波多野结衣欧美| 色域天天综合网| 欧美无乱码久久久免费午夜一区| 欧美中文字幕一区二区三区| 欧美色视频一区| 日韩欧美一级在线播放| 久久久久久久久久久久电影| 国产精品久久久久久久久免费相片| 综合亚洲深深色噜噜狠狠网站| 一区二区免费在线播放| 美女一区二区三区在线观看| 国产精品一区二区果冻传媒| 99久久国产综合精品女不卡| 日本道色综合久久| 日韩三区在线观看| 国产欧美一区二区精品久导航| 成人欧美一区二区三区| 日韩精品91亚洲二区在线观看 | 国模一区二区三区白浆| 成人av午夜电影| 欧美中文字幕一区二区三区亚洲| 91精品国产免费久久综合| 国产女主播视频一区二区| 精品国产乱码久久久久久免费| 91精品国产入口在线| 国产精品超碰97尤物18| va亚洲va日韩不卡在线观看| 国产精品免费aⅴ片在线观看| 成人国产精品免费网站| 亚洲视频中文字幕| 日本韩国精品在线| 免费高清成人在线| 国产精品久久久久永久免费观看| 色视频欧美一区二区三区| 午夜一区二区三区在线观看|