历史上的今天
返回首页

历史上的今天

今天是:2024年08月24日(星期六)

2020年08月24日 | 基于中科微GPS的OLED显示的微型时钟

2020-08-24 来源:51hei

/*

              本机器下载频率11.0592M
                  
                  基于GPS 接收时间显示在OLED上

                  采用STC15L2K16S2--单片机

                  3.3V 低功耗

                  串口2接收GPS数据,在串口2上不用上拉10K电阻

*/                                                         




/////////////////////////////////////////////////////////////////////////////////////////*/

//-----------今天改成STC15F2K16S2--28PIN系列 --------------------------------------------------
//
//芯片型号 : STC15F2K16S2
//
//关于此芯片的重要说明:
//  有定时器0  定时器1 定时器2
//  有比较器 (可当作一路ADC使用)
//  有SPI (可为主模式和从模式)
//  有3路PCA/PWM/CCP (可用作DAC)
//  有8通道10位精度的A/D
//=======================================================================================

   // 程序存储器:16K
   // 数据存储器:2kBYTES;
   // 定时器:T0  T1 T2 ,
   // 串口: 2个
   // 外部中断: 5个
   // AD 转换:8路,10位
   // EEPROM:45K
   // 内部高精时钟:有
   // CCP/PWM/: 3-CH
   // 掉电检测,看门狗:有
   // 支持RS485下载
   //  工作频率 35M

//**********************************************************/


//-------------------------------------------------------------------------
  /*
     上电没有显示的*************
         分辨率:128*64
         自发光 ,不需要背光



  */

//-------------------------------------------------------------------------

#include
#include

//串口1定义9600bps,8-N-1 ,CPU工作频率11.0592M
#include

#include
#include

#include
#include

#include
#include

#include
#include

#include

#include
//-------------------------------------------------------------------------
sbit  RED_LED=P3^3;
sbit  GREEN_LED=P3^4;

//-------------------------------------------------------------------------

//-------------------------------------------------------------------------
unsigned int  t0_nnn=0;
unsigned int  t0_mmm=0;
unsigned int  t0_xxx=0;
unsigned int  t0_ggg=0;
unsigned int  t0_eee=0;
//------------------------------------------------------------------------
//-------------------------------------------------------------------------
unsigned int Time_out_FLAG=0;

//------------------------------------------------------------------------


unsigned int char_num=0;
unsigned char Receive_flag=0;
                                                
//---------------------------------------------------------------------------------------------------

unsigned char beijing_year_4=0;
unsigned char beijing_year_3=0;
unsigned char beijing_year_2=0;
unsigned char beijing_year_1=0;
//---------------------------------------------------------------------------------------------------

unsigned char beijing_month_shi=0;
unsigned char beijing_month_ge=0;


unsigned char beijing_day_shi=0;
unsigned char beijing_day_ge=0;

//---------------------------------------------------------------------------------------------------

unsigned char beijing_hour_shi=0;
unsigned char beijing_hour_ge=0;

unsigned char beijing_min_shi=0;
unsigned char beijing_min_ge=0;
unsigned char beijing_second_shi=0;
unsigned char beijing_second_ge=0;
//---------------------------------------------------------------------------------------------------

unsigned long int Count=0;
//---------------------------------------------------------------------------------------------------

unsigned char GPS_FLAG=0;
unsigned char GPS_INFO_output_FLAG=0;

//-----------------------------------------------------------------------------------------------------


unsigned char Finish_GPS_DATA_flag=0;

//-----------------------------------------------------------------------------------------------------
unsigned int display_interval_time=0;
unsigned int display_interval_time_flag=0;
//--------------------------------------------------------------------------------------------------------



void Config_Timer0()                 //1000微秒@11.0592.000MHz
{
         
               
                //----------------------------------------------------------------
                // T0X12  T1X12  UART_MX06 T2R    T2_C/T    T2X12  EXT_RAM  S1ST2
                //   1           0        0       0              0                  0      0       0
               
                // 0  12分频; T1 12分频
                // 1   1T模式
        
                AUXR |= 0x80;                //定时器时钟1T模式        
               
        
                //EXT_RAM ==0 允许使用内部1024字节RAM
            
                //---------------------------------------------------------------
                //GATE  C/T  M1  M0   GATE  C/T   M1    M0
                //  0         0         0         0                0         0           0     0
                //        T1 T0 模式0
                // 自动重装16位模式
        
                TMOD &= 0xF0;                //设置定时器模式,自动重装初值*****************
        
        
            //--------12T下定时器计算方法----------------------------------
               
                //                           24M
                //65536-1000------------
                //                           12(分频)
        
                //                           24M
                //65536-1000------------  =        41536=0XA240H,明白了没有?
                //                           1 (1分频)
        
                //                           24M
                //65536-500------------  =        53536=0XD120H,明白了没有?
                //                           1 (1分频)
        
                //                           24M
                //65536-600------------  =        51136=0XC7C0H,明白了没有?
                //                           1 (1分频)
        
        
                TL0 = 0xCD;                //设置定时初值
                TH0 = 0xD4;                //设置定时初值        
        
                TF0 = 0;                //清除TF1标志
                TR0 = 0;                //定时器1开始计时
        
                ET0=1;
        
                //---------- *   *   *   *    *---------PT0------------------------
                //                        PS        PT1         PX1  PT0   PX0
                //IP=        0X02;
        
                EA=1;
                  

}


//
////T2做波特率发生器,不可单独使用************************************
//
//void Config_Timer2()  //10000微秒@24.000MHz
//{
//   
//
//        EA=1;
//        //----------------------------------------------------------------
//        // T0X12  T1X12  UART_MX06 T2R    T2_C/T    T2X12  EXT_RAM  S1ST2
//        //   0           0        0       0              0                  1      0        0
//        
//        
//        AUXR |= 0x04;        //这个只是定义,定时器T2时钟1T模式         
//        
//        T2L = 0x40;                //设置定时初值
//        T2H = 0xA2;                //设置定时初值 //24Hz,1ms
//        // 0001 0000
//        
//        //开放ET2中断----------------------------------------------------
//
//        //IE2
//        // -  ET4  ET3  ES4  ES3    ET2  ESPI  ES2
//        // 0   0        0         0          0                 1          0           0
//
//        IE2 =IE2 & 0x00;
//        IE2 =IE2 | 0X04;
//
//
//        // T0X12  T1X12  UART_MX06 T2R    T2_C/T    T2X12  EXT_RAM  S1ST2
//        //   0           0        0       1              0                 0      0        0
//        //T2R 定时器已经启动了
//        AUXR |= 0x10;                //定时器2开始计时
//
//        //T2R禁止运行
//        //AUXR=AUXR & 0X1110 1111
//        //AUXR=AUXR & 0XEF;
//
//
//}






void delayxms(unsigned char ms)
{
        unsigned char i;
        while(ms--)
        {
                for(i = 0; i< 250; i++)
                {        
                        _nop_();
                        _nop_();
                        _nop_();
                        _nop_();
                }
        }

}




/*
                ==================================================================================

                                //显示ACSII 使用单个字符显示函数
                                OLED_Fill(0x00);
                            for(i=0; i<16 ;i++)
                            {
                              //入  参 : x:列0~127;y:页地址0~7;

                                  OLED_ShowChar(i*8,0,' '+i);    //加空格的意思是字符,1行0+16个字符
                              OLED_ShowChar(i*8,2,' '+i+16); //加空格的意思是字符,2行i+16个字符
                              OLED_ShowChar(i*8,4,' '+i+32); //加空格的意思是字符,2行i+32个字符
                              OLED_ShowChar(i*8,6,' '+i+48); //加空格的意思是字符,2行i+48个字符   
                            }
                            delay_ms(2000);

                              
                            //显示数字和字母 使用字符串显示函数         // x:列0~127;y:页地址0~7;
                            OLED_Fill(0x00);
                            LCD_P8x16Str(0,0,"0123456789");                  //0表示总是从坐标0开始,0表示第0页,第1页是08--15像素行
                            LCD_P8x16Str(0,2,"abcdefghijklmnop"); //0表示总是从坐标0开始,2表示第2页,第3页是24--31像素行
                            LCD_P8x16Str(0,4,"ABCDEFGHIJKLMNOP");
                            LCD_P8x16Str(0,6,"0123456789");
                            delay_ms(2000);

                   ==================================================================================
*/




void OLED_START_VALUE()
{
                                                
                                                
                                                unsigned char i=0;

                                                  /*        取消这一句,屏幕不再闪烁******************************
                                                   OLED_Fill(0x00);
                                                ------------------------------------------------------- */
        
                                                //6个汉字,最后一个i 是在数组 F16x16[]中汉字的序号,如 康1金2辉3
                                            for(i=0; i<8; i++)
                                            {
                                                
                                                        if (i==0)        LCD_P16x16Ch(i*16,0,beijing_min_shi); //i是汉字的序号, 汉字0,
                                                        if (i==1)        LCD_P16x16Ch(i*16,0,beijing_min_ge);  //i是汉字的序号, 汉字9

                                                        if (i==2)        LCD_P16x16Ch(i*16,0,10);              //i是汉字的序号,汉字“月”

                                                        if (i==3)        LCD_P16x16Ch(i*16,0,beijing_second_shi); //i是汉字的序号,汉字2
                                                        if (i==4)        LCD_P16x16Ch(i*16,0,beijing_second_ge); //i是汉字的序号,汉字6

                                                        if (i==5)        LCD_P16x16Ch(i*16,0,11);                       //i是汉字的序号,汉字“日”
                                                        
                                                         
                                                        if (i==6)        LCD_P16x16Ch(i*16,0,beijing_second_shi);//i是汉字的序号,汉字“@”
                                                        if (i==7)        LCD_P16x16Ch(i*16,0,beijing_second_ge);         //i是汉字的序号,汉字“三”
                                                         
                                            }
                                                

                                                 //01是一行汉字----------------------------------------------
                                                 //23是一行汉字----------------------------------------------
                                                 //45是一行汉字-------------------------------------------------

                                                 //第一个参数:0-127,
                                                 //第二个参数:第3个页面地址开始,连续3,4,5页面
                                                 //因为每个页面8行像素,汉字是高度32像素,占用3个页面像素
                                                 //第三个参数是在字符点阵中的汉字的“序号”
                                                 LCD_P18x32Ch(2+0, 3,beijing_hour_shi);                                 //小时的十位
                                                 LCD_P18x32Ch(2+18,3,beijing_hour_ge);                    //小时的个位

                                                 LCD_P08x32Ch(2+18+18,3,0);                        //冒号:

                                                 LCD_P18x32Ch(2+18+18+8,3,beijing_min_shi);               //分钟的十位
                                                 LCD_P18x32Ch(2+18+18+18+8,3,beijing_min_ge);            //分钟的个位

                                                 LCD_P08x32Ch(2+18+18+18+18+8,3,0);     //冒号:

                                                 LCD_P18x32Ch(2+18+18+18+18+8+8,3,beijing_second_shi);    //秒的十位
                                                 LCD_P18x32Ch(2+18+18+18+18+8+8+18,3,beijing_second_ge);    //秒的个位



}

void main()
{
               

                unsigned char j=0;
                unsigned char i=0;
                unsigned char Speed_Len=0;

                // P17 16  15  14  13  12  11 10
                //  0        0        0        0        0        0        0  0
                //        1        1        1        1        1        0        1  0   //
                P1M1 = P1M1 & 0x00;  //
            P1M0 = P1M0 | 0x00;  //

        
                //  0        0        0        0        0        0        0  0
                //        1        1        0        1        1        1        1  1
                P2M1 = P2M1 & 0x00;  //
            P2M0 = P2M0 | 0x00;  //

                //配置P3口为准双向口**********************************************
                //P33  P34为_LED
                //
                //  0        0        0        0        0        0        0  0
                //        0        0        0        1        1        0        0  0
                P3M1 = P3M1 & 0x00;  //
            P3M0 = P3M0 | 0x00;  //

        
                //配置P5口**********************************************
        
                //  0        0        0        0        0        0        0  0
                //        0        0        1        0        0        0        0  0
                P5M1 = P5M1 & 0x00;  
            P5M0 = P5M0 | 0x00;  
        
                //--------------------------------------------------------------
                Config_Timer0();
        
            //*************************        *********************************
            UART_INIT();
                delayxms(1);
                UART2_INIT();
               
                delayxms(200);

                //*************************************************************
                TR0=1;
                //**********************************************************
        

                SEND_STRING_TO_SBUF("Program Start....rn");

                //-----双色灯是共阳极的=====且不能同时为1==============================
                RED_LED=1;
                GREEN_LED=0;

            //--------------------------------------------------------------------------
               
               
                //oled 初始化  
                  OLED_Init();
                LCD_Clear();
                LCD_Clear();
                //清屏                     
                  OLED_Fill(0x00);
                delayxms(1000);

        

                //GPS定位数据删除  //清空缓存数组
                CLEAR_STRUCT_BUFFER();

                OLED_START_VALUE();


                CLEAR_STRUCT_BUFFER_height();

                //允许串口2接收的所有GPS数据,从串口1输出
                //仅仅用于监视,当允许时,导致数据显示可能不正常

                Enable_S2_SBUF_direct_output=0;

                                 
        while(1)
        {
                           
                        
                          //==========通过串口2中断自动接收GPS数据**************************************
                          //=========----------------------------------------
                          //                  
                          if (From_S2_S2BUF_receive_finish_FLAG==1)
                          {
                                   

                                    From_S2_S2BUF_receive_finish_FLAG=0;

                                        Resulotion_Gpsinfo_Buffer();
                                                        
                                       
                                        //if (get_GPS_info_FLAG==0)
                                        {
        
                                         SEND_STRING_TO_SBUF("------------Wait GPS Data-------------rn");
                                                         SEND_STRING_TO_SBUF(Save_Data.GPS_Buffer);
                                                         SEND_STRING_TO_SBUF("rn");

                                        }
                                
                                        //GPS信号每秒采集一次------接收到,还是没有接受到,上面的函数300ms执行一次
                                        //GPS信号每秒采集一次---------------------------------------------------
                                        GPS_FLAG=0;
                                        //如果采集到GPS信号,则get_GPS_info_FLAG=1,此值在上面的函数中,得到新值

                           }


                          if (From_S2_S2BUF_receive_HEIGHT_finish_FLAG==1)
                          {
                                   

                                    From_S2_S2BUF_receive_HEIGHT_finish_FLAG=0;

                                
                                        {
        
                                         SEND_STRING_TO_SBUF("------------Wait GPS Height_Data-------------rn");
                                                         SEND_STRING_TO_SBUF(my_height_Data.GPS_height_Buffer);

                                                         
                                                         Resulotion_Gpsinfo_Buffer_height();



                                                         SEND_STRING_TO_SBUF("rnHeight===");
                                                         SEND_STRING_TO_SBUF(my_height_Data.Ocean_Height);
                                                         SEND_STRING_TO_SBUF("rn");


                                                         get_ocean_height_data[0]=        my_height_Data.Ocean_Height[0]-0x30;
                                                         get_ocean_height_data[1]=        my_height_Data.Ocean_Height[1]-0x30;
                                                         get_ocean_height_data[2]=        my_height_Data.Ocean_Height[2]-0x30;

                                        }
                                
                                       

                           }


                           //每200ms 输出一次GPS信息--------定时器T0控制---------------------------------
                           //这个句子必须有------------------------------------------------------------
                           if (GPS_INFO_output_FLAG==1)
                           {

                                           GPS_INFO_output_FLAG=0;

                                       
                                        if (get_GPS_info_FLAG==1)
                                           {
                                                        
                                                        //唉!!曾经没有这个句子,导致死机重启!!!***********
                                                        get_GPS_info_FLAG=0;

                                                
                                                        //解码函数----------------------------------------------
                                                        get_GPS_Date_Time_info();

                                                        // 函数 OUTPUT_GPS_BUFFER_DATA()中已经得到下列实际参数

                                                        UTC_TO_BEIJING_TIME(my_year,my_month,my_day,my_hour,my_min,my_second);
               
                                                        /*
                                                          本不应该从 串口1 输出,但是调试的时候,先断开串口1无线发射部分

                                                          调试完毕改成,串口2输出,似乎串口2无法监视
                                                        */

                                                
                                                                        
                                                        /*
               
                                                          填充北京时间
               
                                                        */

                                                        
                                                        
                                                        beijing_year_4 =  beijing_year /1000;
                                                        beijing_year_3 = (beijing_year %1000)/100;
                                                        beijing_year_2 = (beijing_year %100)/10;
                                                        beijing_year_1 =  beijing_year %10;
               
                                                        beijing_month_shi=  beijing_month /10;
                                                        beijing_month_ge =  beijing_month %10;
               
                                                        beijing_day_shi =   beijing_day /10;
                                                        beijing_day_ge =    beijing_day %10;
                                                
                                                
                                                        beijing_hour_shi =   beijing_hour /10;
                                                        beijing_hour_ge =    beijing_hour %10;
               
                                                        beijing_min_shi =    beijing_min /10;
                                                        beijing_min_ge=      beijing_min %10;
               
                                                        beijing_second_shi = beijing_second /10;
                                                        beijing_second_ge =  beijing_second %10;
               
                                                        beijing_week = beijing_week;
               
                                                    //在这里将数据推送到OLED上----------------------------------------

                                                        Finish_GPS_DATA_flag=1;
                                                        
                                                        
                                                        SEND_STRING_TO_SBUF("rn-------------------------rn");
                                                        
                                                    SEND_STRING_TO_SBUF("rnrnBeijing_GPS_Date=");
                                                        SEND_STRING_TO_SBUF(CONVERT_INT_TO_DECIMAL_STRING(beijing_year));
                                                        SEND_STRING_TO_SBUF("-");
                                                        SEND_STRING_TO_SBUF(CONVERT_INT_TO_DECIMAL_STRING_2WEI(beijing_month));
                                                        SEND_STRING_TO_SBUF("-");
                                                        SEND_STRING_TO_SBUF(CONVERT_INT_TO_DECIMAL_STRING_2WEI(beijing_day));

                                                        SEND_STRING_TO_SBUF("rnrnBeijing_GPS_Time=");
                                                        SEND_STRING_TO_SBUF("-");
                                                        SEND_STRING_TO_SBUF(CONVERT_INT_TO_DECIMAL_STRING_2WEI(beijing_hour));
                                                        SEND_STRING_TO_SBUF("-");
                                                        SEND_STRING_TO_SBUF(CONVERT_INT_TO_DECIMAL_STRING_2WEI(beijing_min));
                                                        SEND_STRING_TO_SBUF("-");
                                                        SEND_STRING_TO_SBUF(CONVERT_INT_TO_DECIMAL_STRING_2WEI(beijing_second));
                                                    SEND_STRING_TO_SBUF("rn");

                                                        SEND_STRING_TO_SBUF("rnrnTo Earth direction=");


                                                        Speed_Len =strlen(Save_Data.my_Speed_direction);
                                                        //SEND_STRING_TO_SBUF("rnrnSpeed_direction=");
                                                        //SEND_STRING_TO_SBUF(Speed_Len);

                                                        if (Speed_Len!=0)
                                                        {
                                                               
                                                                SEND_STRING_TO_SBUF(Save_Data.my_Speed_direction);
                                                        }
                                                        else
                                                        {
                                                                SEND_STRING_TO_SBUF("*******");
                                                        }
                                                        SEND_STRING_TO_SBUF("rn");        

                                                
               
               
                                         }        //判断是否接收到GPS信号
                                         else
                                         {
                                                        
                                                         


                                                         beijing_year_4=0;
                                                         beijing_year_3=0;
                                                         beijing_year_2=0;
                                                         beijing_year_1=0;

                                                         beijing_month_shi=0;
                                                         beijing_month_ge=0;

                                                         beijing_day_shi=0;
                                                         beijing_day_ge=0;

                                                         beijing_hour_shi = 0;
                                                         beijing_hour_ge = 0;

                                                         beijing_min_shi = 0;
                                                         beijing_min_ge= 0;

                                                         beijing_second_shi = 0;
                                                         beijing_second_ge= 0;
                                                        
               
                                                         

               
                                        }        //IF ...else  语句,接收完整信息成功语句块



                         }        //GPS 信息输出                 

                          

                         if (Finish_GPS_DATA_flag==1)
                         {        
                           
                                                Finish_GPS_DATA_flag=0;
                                                                                                

                                       

                                                /*        取消这一句,屏幕不再闪烁******************************
                                                   OLED_Fill(0x00);
                                                ------------------------------------------------------- */
        
                                                //6个汉字,最后一个i 是在数组 F16x16[]中汉字的序号,如 康1金2辉3
                                            for(i=0; i<8; i++)
                                            {
                                                
                                                        if (i==0)        LCD_P16x16Ch(i*16,0,beijing_month_shi); //i是汉字的序号, 汉字0,
                                                        if (i==1)        LCD_P16x16Ch(i*16,0,beijing_month_ge);  //i是汉字的序号, 汉字9

                                                        if (i==2)        LCD_P16x16Ch(i*16,0,10);              //i是汉字的序号,汉字“月”

                                                        if (i==3)        LCD_P16x16Ch(i*16,0,beijing_day_shi); //i是汉字的序号,汉字2
                                                        if (i==4)        LCD_P16x16Ch(i*16,0,beijing_day_ge); //i是汉字的序号,汉字6

                                                        if (i==5)        LCD_P16x16Ch(i*16,0,11);                       //i是汉字的序号,汉字“日”
                                                        
                                                         
                                                        if (i==6)        LCD_P16x16Ch(i*16,0,12);//i是汉字的序号,汉字“@”
                                                        
                                                        if (i==7)  //星期 //i是汉字的序号,汉字“三”
                                                        {
                                                                if (beijing_week==1) LCD_P16x16Ch(i*16,0,13); //星期一
                                                                if (beijing_week==2) LCD_P16x16Ch(i*16,0,14); //星期一
                                                                if (beijing_week==3) LCD_P16x16Ch(i*16,0,15); //星期一
                                                                if (beijing_week==4) LCD_P16x16Ch(i*16,0,16); //星期一
                                                                if (beijing_week==5) LCD_P16x16Ch(i*16,0,17); //星期一
                                                                if (beijing_week==6) LCD_P16x16Ch(i*16,0,18); //星期一
                                                                if (beijing_week==0) LCD_P16x16Ch(i*16,0,19); //星期天        
                                                        }  

                                            }
                                                

                                                 //01是一行汉字----------------------------------------------
                                                 //23是一行汉字----------------------------------------------
                                                 //45是一行汉字-------------------------------------------------

                                                 //第一个参数:0-127,
                                                 //第二个参数:第3个页面地址开始,连续3,4,5页面
                                                 //因为每个页面8行像素,汉字是高度32像素,占用3个页面像素
                                                 //第三个参数是在字符点阵中的汉字的“序号”
                                                
                                                 LCD_P18x32Ch(2+0, 3,beijing_hour_shi); //小时的十位
                                                 LCD_P18x32Ch(2+18,3,beijing_hour_ge);  //小时的个位

                                                 LCD_P08x32Ch(2+18+18,3,0);                        //冒号:

                                                 LCD_P18x32Ch(2+18+18+8,3,beijing_min_shi);    //分钟的十位
                                                 LCD_P18x32Ch(2+18+18+18+8,3,beijing_min_ge);  //分钟的个位

                                                 LCD_P08x32Ch(2+18+18+18+18+8,3,0);     //冒号:

                                                 LCD_P18x32Ch(2+18+18+18+18+8+8,3,beijing_second_shi);   //秒的十位
                                                 LCD_P18x32Ch(2+18+18+18+18+8+8+18,3,beijing_second_ge); //秒的个位

                                                 /*
                                                         //显示图形
                                                    OLED_Fill(0x00);
                                                        delay_ms(1);
                                                        //起始点坐标(x,y),x的范围0~127,y为页的范围0~7
                                                    OLED_DrawBMP(0,0,128,8,BMP3);
                                                    delay_ms(2000);
                                                 */
                                                         
                                                 if ( display_interval_time_flag==1)   
                                                 {
                                                           
                                                           display_interval_time_flag=2;

                                                           for(i=0; i<8; i++)
                                                   {
                                                      
                                                                         //i是汉字的序号, 汉字N,        
                                                                         if (i==0)        LCD_P16x16Ch(i*16,0,20);  
                                                                        
                                                                         //i是汉字的序号,
                                                                         if (i==1)        LCD_P16x16Ch(i*16,0,Speed_direction_data[0]);              
                                                                         //i是汉字的序号,
                                                                         if (i==2)        LCD_P16x16Ch(i*16,0,Speed_direction_data[1]);
                                                                         //i是汉字的序号,
                                                                         if (i==3)        LCD_P16x16Ch(i*16,0,Speed_direction_data[2]);
                                                                        
                                                                        
                                                                         //i是汉字的序号, 汉字空格   
                                                                         if (i==4)        LCD_P16x16Ch(i*16,0,21);
                                                                        
                                                                         //i是汉字的序号, 汉字空格   
                                                                         if (i==5)        LCD_P16x16Ch(i*16,0,get_ocean_height_data[0]);                       
                                                                        
                                                                         //i是汉字的序号, 汉字空格   
                                                                         if (i==6)        LCD_P16x16Ch(i*16,0,get_ocean_height_data[1]);
                                                                        
                                                                         //i是汉字的序号, 汉字空格   
                                                                         if (i==7)        LCD_P16x16Ch(i*16,0,get_ocean_height_data[2]);
                                                           }

                                                 }
                                                
                                                
                                }            //Finish_GPS_DATA_flag===0
                                
                                
                                 
                                
                                 
        }

}


//******************用于时钟******************************************************
void TIMER0_INTERRUPT() interrupt 1
{
         
         
        
         


            //收到GPS完整的信息后,每秒通过串口1输出一次
           if (GPS_INFO_output_FLAG==0)
           {
                        t0_ggg++;

                        if (t0_ggg>200)
                        {
                            t0_ggg=0;
                                GPS_INFO_output_FLAG=1;
                        }

           }



           if (ALL_GPS_DATA_RECEIVE_FINISH_FLAG==1)
           {
                  if (display_interval_time_flag==0)
                  {
                        display_interval_time++;

                        if (display_interval_time>5000)
                        {
                           display_interval_time=0;
                           display_interval_time_flag=1;   //执行
                        }
                  }

           }


           if (display_interval_time_flag==2)
           {
                        display_interval_time++;

                        if (display_interval_time>2000)
                        {
                           display_interval_time=0;
                           
                           display_interval_time_flag=0;
                        }



           }


}


/*           

                            //显示汉字==完整的程序=============================================================
                                /*
                                  第一个参数表示:从行16个像素位置开始显示,
                                  第二个参数表示:0---表示第1行,行像素从00-07,第1页
                                                  1---表示第2行,行像素从08-15,第2页 ,因为汉字是16X16,一行汉字占2页

                                                                  2---表示第3行,行像素从16-23,第3页,
                                                                  3---表示第4行,行像素从24-31,第4页 ,这是第1行汉字

                                                                  4---表示第5行,行像素从32-39,第5页,
                                                                  5---表示第6行,行像素从40-47,第6页 ,这是第2行汉字

                                                                  6---表示第5行,行像素从48-55,第7页,
                                                                  7---表示第6行,行像素从56-64,第8页 ,这是第3行汉字

                                  */
            
                        /*
                            OLED_Fill(0x00);

                                //6个汉字,最后一个i 是在数组 F16x16[]中汉字的序号,如 康1金2辉3
                            for(i=0; i<6; i++)
                            {
                                 
                              LCD_P16x16Ch(i*16+16,0,i);
                                    
                            }


                                //这里空几个汉字显示4个汉字==========================================
                            for(i=0; i<4; i++)
                            {
                              LCD_P16x16Ch(i*16+32,4,i+6);
                              LCD_P16x16Ch(i*16+32,6,i+6+4);
                            }
                            delay_ms(2000);   

                           

*/

推荐阅读

史海拾趣

Holmes Co Inc公司的发展小趣事

面对突如其来的新冠疫情挑战,Holmes Electronics迅速调整策略,加速数字化转型。他们利用云计算、大数据和人工智能等先进技术,构建了高效的远程办公和智能制造体系。通过数字化转型,公司不仅有效保障了员工的安全健康和生产效率,还进一步提升了产品质量和客户满意度。此外,Holmes Electronics还积极开发防疫相关的电子产品,如智能体温检测设备和消毒机器人等,为抗击疫情贡献了自己的力量。

First Sensor公司的发展小趣事

为了进一步提升竞争力,Holmes Electronics采取了一系列并购重组措施。他们首先收购了一家在物联网技术方面具有深厚积累的小型科技公司,通过整合双方资源,迅速在智能家居和智慧城市领域取得突破。随后,公司又成功并购了一家专业的半导体封装测试企业,进一步完善了产业链布局。这些并购重组不仅增强了Holmes Electronics的技术实力和市场地位,还为公司带来了新的增长动力。

Horn公司的发展小趣事

自1969年成立以来,Horn公司便致力于开发和生产切槽、侧铣和槽铣刀具。起初,公司聚焦于为小型机械加工企业提供高质量的工具解决方案。在创始人Paul Horn的领导下,公司迅速建立了技术团队,专注于刀具材料的研发与生产工艺的改进。这一时期,Horn公司凭借其出色的产品质量和定制化的服务,在行业内逐渐树立了良好的口碑。

Epitex Inc公司的发展小趣事

随着全球环保意识的不断提高,Epitex也积极响应环保号召,将环保理念融入到公司的生产经营中。他们采用环保材料和生产工艺,减少对环境的影响。同时,Epitex还积极参与环保公益活动,推动电子行业的绿色发展。

在可持续发展方面,Epitex也做出了积极努力。他们通过技术创新和产业升级,不断提高资源利用效率和产品附加值。同时,Epitex还注重与供应商和客户的合作,共同推动产业链的可持续发展。

EPIC公司的发展小趣事

1998年,Epic Games发布了一款名为“虚幻”的3D第一人称射击游戏。这款游戏不仅游戏内容新颖,更引人注目的是它背后完全自主开发的3D游戏引擎。这个引擎后来被称为“虚幻引擎”,并成为了Epic Games的核心技术之一。随着游戏的成功,虚幻引擎也逐渐受到了业界的关注。许多其他游戏开发商开始采用这款引擎来开发自己的游戏,从而使得Epic Games在游戏引擎领域取得了显著的商业成功。

芯力微(CHI Power)公司的发展小趣事

随着公司业务的不断拓展,芯力微逐渐将目光投向国际市场。公司积极参与国际交流与合作,与国际知名企业建立了良好的合作关系。通过引进国际先进技术和管理经验,芯力微不断提升自身的核心竞争力。同时,公司还积极参加国际展会和论坛等活动,展示自身实力和产品优势,为国际化战略的实施奠定了坚实的基础。

问答坊 | AI 解惑

扬声器感冒了

扬声器型号:BSTC  8530  -273  2A, 器件质量没问题,焊好后在酒精里超声冲洗, 完了上电一试,声音变得很小。 是不是超声损坏了扬声器啊?…

查看全部问答>

博创2410UP TECH 2410 bootloader烧写

最近在学WINCE 5.0  我在使用博创2410UP TECH 2410试验箱时用随机光盘里面的BOOTLOADER 文件烧写引导文件 添加硬件后 输入命令行,sjf2410/f:2410loader.bin    然后选择K9S1208 PROG      然后显示& ...…

查看全部问答>

WinCE5.0中添加对硬盘支持

如题! 今天把那个IDE转USB接到S3C2440上正常工作的80GB硬盘(2.5寸笔记本硬盘,分有2个区,FAT32格式),直接接到开发板的IDE44pin接口上,同时按照PB5。0的帮助文件添加了相关IDE组件:(参见PB5.0帮助文件 ...…

查看全部问答>

准备上PXA310,请大家推荐几个好的代理商以及回答一些相关问题

嘿嘿,准备上PXA310,请大家推荐几个好的代理商以及回答一些相关问题 一、大家有什么好的代理商介绍? 二、要和marvell签署协议需要具备什么条件? 谢谢。呵呵…

查看全部问答>

招聘Senior wince/windows mobile应用开发工程师!

精通C/C++,理解面向对象思想,有良好的编程习惯。 3~5年Windows/Windows Mobile程序开发经验,精通Windows编程,熟悉Win32API, COM。 熟悉TCP/IP等通信协议,熟悉Socket应用,多线程和进程间通讯编程。 熟悉数据库开发, 有实际数据库开发经验 ...…

查看全部问答>

那位高手用过ads1210芯片呀,能给个程序么。

那位高手用过ads1210芯片呀,能给个程序么。…

查看全部问答>

菜鸟提问:关于触摸屏驱动加载的问题

本人在研华的PCM3350上移植WinCE4.2,目前触摸屏驱动一直加不上   具体情况如下:触摸屏光盘上提供了两个dll:TOUCHP.DLL  USBPort.dll  我先修改了project.bib文件在MODULES里加入   TOUCHP.DLL  ...…

查看全部问答>

高手进来吧,关于wince下不重启改变分辨率

最近的项目要求改变wince下的分辨率,这些都能搞定,但有一点,需要重启板子,不能像pc那样直接黑屏然后就改变了,查了很多这方面的资料,先说下我的观点,显卡的驱动和网卡这些不大一样,在每次loadboot的时候加载驱动的时候在注册表里读取相关信 ...…

查看全部问答>

XPower的使用

用的时候出现:PowerEstimator:127-Power estimate is considered inaccurate.To seePower:1337-Clock frequency for clock net \"clk_200m_dac\" is zero.Power:1338-Clock frequency for one or more clocks was not found.怎么回事啊??…

查看全部问答>