⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0203.c

📁 液晶兼容0701
💻 C
📖 第 1 页 / 共 3 页
字号:
    InI2C_ReadACK();

    B=mLocation;
    InI2C_Write();          /*写地址*/
    InI2C_ReadACK();

    InI2C_Start();

    B=0xa3;
    InI2C_Write();          /*读命令*/

    _nop_();
    _nop_();
    InI2C_ReadACK();
    _nop_();
    _nop_();

    InI2C_Read();
    InI2C_WriteACK();

    InI2C_Stop();
    return(B);
}

/********************************************
天以后是取8563天以后的数据
********************************************/
void P8563_ReadDay()
{
    g8563_Store[DAY]=I2C_ReadData(5)&0x3f;
    g8563_Store[MONTH]=I2C_ReadData(7)&0x1f;
    g8563_Store[YEAR]=I2C_ReadData(8);
}

/********************************************
内部函数,读入时间到内部缓冲区
********************************************/
void InP8563_Read()
{
    g8563_Store[SECOND]=I2C_ReadData(2)&0x7f;
    g8563_Store[MINUTE]=I2C_ReadData(3)&0x7f;
    g8563_Store[HOUR]=I2C_ReadData(4)&0x3f;
    P8563_ReadDay();
}

/********************************************
读入时间到内部缓冲区
********************************************/
void P8563_ReadTime()
{
    InP8563_Read();
    if(g8563_Store[0]==0){
        InP8563_Read();             /*如果为秒=0,为防止时间变化,再读一次*/
    }
}

/********************************************
写时间修改值
********************************************/
void P8563_WriteTime()
{
unsigned char i;

    for(i=0;i<4;i++){
        I2C_WriteData(i+2,g8563_Store[i]/*g8563_Store[i]*/);
    }
    for(i=4;i<6;i++){
        I2C_WriteData(i+3,g8563_Store[i]/*g8563_Store[i]*/);
    }
}

/********************************************
P8563的初始化,将CLOOUT设置为1HZ,检查是否第一次启动,是则初始化时间
********************************************/
void P8563_Init()
{
//unsigned char i;

    I2C_WriteData(0xd,0x83);

//    if((I2C_ReadData(0xc)&g8563_Store[3])!=0x5)
    {
//      for(i=0;i<6;i++)g8563_Store[i]=g8563_Store[i];            /*初始化*/
      P8563_WriteTime();
      I2C_WriteData(0xc,0x5);
    }
}


void dispclk(void)
{//unsigned char i; 
 P8563_ReadTime();
 lcddisp(22,14,0Xff,(g8563_Store[5]>>4)+0X10); /*年*/
 lcddisp(23,14,0Xff,(g8563_Store[5]&0XF)+0X10); /*年*/
 lcddisp(24,14,0Xff,0X0d); /*-*/

 lcddisp(25,14,0XFF,(g8563_Store[4]>>4)+0X10); /*月*/
 lcddisp(26,14,0XFF,(g8563_Store[4]&0XF)+0X10); /*月*/
 lcddisp(27,14,0XFF,0X0D); /*-*/
 lcddisp(28,14,0XFF,(g8563_Store[3]>>4)+0X10); /*日*/
 lcddisp(29,14,0XFF,(g8563_Store[3]&0XF)+0X10); /*日*/

 lcddisp(22,15,0XFF,(g8563_Store[2]>>4)+0X10); /*时*/
 lcddisp(23,15,0XFF,(g8563_Store[2]&0XF)+0X10); /*时*/
 lcddisp(24,15,0XFF,0X1A); /*-*/
 lcddisp(25,15,0XFF,(g8563_Store[1]>>4)+0X10); /*分*/
 lcddisp(26,15,0XFF,(g8563_Store[1]&0XF)+0X10); /*分*/
 lcddisp(27,15,0XFF,0X1A); /*-*/
 lcddisp(28,15,0XFF,(g8563_Store[0]>>4)+0X10); /*秒*/
 lcddisp(29,15,0XFF,(g8563_Store[0]&0XF)+0X10); /*秒*/
}//end if(shizhong==0)
void lcddisp(unsigned char i,unsigned char j,unsigned char m,unsigned char n)
{
  while(!lcdok); lcdok=0;
  while(txtolcd);
  tolcd[0]=0xFF;
  tolcd[1]=i;
  tolcd[2]=j;
  tolcd[3]=m;
  tolcd[4]=n;
  txtolcd=1; 
  TI=1;
}
void sendidel(void)
{    k_x_jishi=5;
     ST554A;;;;/*发送到上位机得空闲码*/
     ACC=ST05;
     while(!ACC5){ST554A;ACC=ST05;}
     RBR=0xAA;
     CS256;
}
void tobuff(void)
{unsigned long xdata  zongzhong,zhouzhong[8]; 
 unsigned char i,j,zhouzushu;
 unsigned char xdata zhouxing[8];
 unsigned int xdata maintemp;
 unsigned int xdata /* chaoxianlv,*/ ch_x_l_m;

                         zongzhong=0;
                         zhouzushu=subcom[16];
                 		 for(j=0;j<zhouzushu;j++) zongzhong+=subcom[17+2*j]*256+subcom[17+2*j+1];

                         for(i=0;i<8;i++) zhouzhong[i]=0;
                         
	                     for(j=0;j<zhouzushu;j++) zhouzhong[j]=subcom[17+2*j]*256+subcom[17+2*j+1];
 		                 for(j=0;j<zhouzushu;j++) zhouxing[j]=subcom[17+2*zhouzushu+j];                 
                         ch_x_l_m=0;
                         for(i=0;i<zhouzushu;i++){
                                         switch(zhouxing[i])
                					      { case 0: maintemp=0;break;
                         					case 1: maintemp=(zhouzhong[i]/ezai1); break;                
					                        case 2: maintemp=(zhouzhong[i]/ezai2);break;                
                    					    case 3: maintemp=(zhouzhong[i]/ezai3);break;                
					                        case 4: maintemp=(zhouzhong[i]/ezai4);break;                
                    					    case 5: maintemp=(zhouzhong[i]/ezai5);break;                
					                        case 6: maintemp=(zhouzhong[i]/ezai6);break;                 
					                        case 7: maintemp=(zhouzhong[i]/ezai7);break;                 
					                        case 8: maintemp=(zhouzhong[i]/ezai8);break;                 
                                          }

                                        if(zhouxing[i]>8)maintemp=0;
                                        if(maintemp>ch_x_l_m)ch_x_l_m=maintemp;
                                                 }

                              if(ch_x_l_m>100)ch_x_l_m=ch_x_l_m-100;
                              else ch_x_l_m=0;


              toupcom[cheshu][0]=0xF0;/*起始标志*/
			  i=xuhao/10;
              j=xuhao%10; 
			  toupcom[cheshu][1]=(i<<4)+j;/*车辆通过的序号*/
              toupcom[cheshu][2]=chedaoh;/*车道号*/
              toupcom[cheshu][3]=0;/*超载标志*/
              if(ch_x_l_m>50) toupcom[cheshu][3]=1;
              toupcom[cheshu][4]=(zhouzushu<<4)+1;/*车型*/

              toupcom[cheshu][7]=0;
              toupcom[cheshu][6]=0;
              toupcom[cheshu][5]=0;
              while(zongzhong>=100000){zongzhong-=100000;toupcom[cheshu][7]++;}
              toupcom[cheshu][7]=toupcom[cheshu][7]*16;
              while(zongzhong>=10000){zongzhong-=10000;toupcom[cheshu][7]++;}
 

              while(zongzhong>=1000){zongzhong-=1000;toupcom[cheshu][6]++;}
              toupcom[cheshu][6]=toupcom[cheshu][6]*16;
              while(zongzhong>=100){zongzhong-=100;toupcom[cheshu][6]++;}

              while(zongzhong>=10){zongzhong-=10;toupcom[cheshu][5]++;}
              toupcom[cheshu][5]=toupcom[cheshu][5]*16;
              toupcom[cheshu][5]+=zongzhong;

              toupcom[cheshu][8]=(((ch_x_l_m%100)/10)*16)+(ch_x_l_m%10);/*超载率*/
              toupcom[cheshu][9]=(((ch_x_l_m%10000)/1000)*16)+(ch_x_l_m%1000)/100;/*超载率*/
              maintemp=subcom[12]*256+subcom[13];
              toupcom[cheshu][10]=(((maintemp%1000)/100)<<4)+(maintemp%100)/10;/*车速*/
              toupcom[cheshu][11]=((maintemp/10000)<<4)+((maintemp%10000)/1000);/*车速*/
              j=subcom[16];
              for(i=0;i<j-1;i++)maintemp=subcom[17+j*3+i]*256+subcom[17+j*3+i+1];
              toupcom[cheshu][12]=((maintemp%100)/10<<4)+(maintemp%10);/*总轴距*/;
              toupcom[cheshu][13]=(((maintemp%10000)/1000)<<4)+(maintemp%1000)/100;/*总轴距*/;
              toupcom[cheshu][14]=((maintemp/100000)<<4)+(maintemp%100000)/10000;/*总轴距*/;
              toupcom[cheshu][15]=zhouzushu;/*轴数*/
              j=2*zhouzushu;
              for(i=0;i<zhouzushu;i++)toupcom[cheshu][16+i*4]=subcom[17+(2*zhouzushu)+i];/*轴型1*/

              for(i=0;i<zhouzushu;i++){toupcom[cheshu][17+i*4]=0;
                                       toupcom[cheshu][17+i*4+1]=0;
                                       toupcom[cheshu][17+i*4+2]=0;
                                       }

             for(i=0;i<zhouzushu;i++){/*轴重1*/
                                  while(zhouzhong[i]>=100000){zhouzhong[i]-=100000;toupcom[cheshu][17+i*4]++;}
                                  toupcom[cheshu][17+i*4]=toupcom[cheshu][17+i*4]*16;
                                  while(zhouzhong[i]>=10000){zhouzhong[i]-=10000;toupcom[cheshu][17+i*4]++;}

                                  while(zhouzhong[i]>=1000){zhouzhong[i]-=1000;toupcom[cheshu][17+i*4+1]++;}
                                  toupcom[cheshu][17+i*4+1]=toupcom[cheshu][17+i*4+1]*16;
                                  while(zhouzhong[i]>=100){zhouzhong[i]-=100;toupcom[cheshu][17+i*4+1]++;}

                                  while(zhouzhong[i]>=10){zhouzhong[i]-=10;toupcom[cheshu][17+i*4+2]++;}
                                  toupcom[cheshu][17+i*4+2]=toupcom[cheshu][17+i*4+2]*16;
                                  toupcom[cheshu][17+i*4+2]+=zhouzhong[i];

                                     }/*end of 计算轴重*/

              for(i=0;i<(16+subcom[16]*4);i++) toupcom[cheshu][16+subcom[16]*4]+=subcom[i];/*校验和*/
              toupcom[cheshu][17+subcom[16]*4]=0xE0;/*结束标志*/


             CS256;   
	 		  
}

void gunping(void)
  { unsigned char m,gp,cheinggp,fuzhu=1;  

     CS256;;
     m=0;
     for(gp=0;gp<3;gp++){

              fuzhu=1;
              cheinggp=(cheing+gp)%10;
              if(cheinggp==cheshu)m=1;//消除显示
              if(m){lcddisp( 0,24+gp*24,0xA2,0XA2);
	                lcddisp( 2,24+gp*24,0xA2,0XA2);
                    lcddisp( 4,24+gp*24,0xA2,0XA2);
                    lcddisp( 6,24+gp*24,0xA2,0XA2);
                    lcddisp( 8,24+gp*24,0xA2,0XA2);
                    lcddisp(10,24+gp*24,0xA2,0XA2);
                    lcddisp(12,24+gp*24,0xA2,0xA2);
                    lcddisp(14,24+gp*24,0xA2,0XA2);
                    lcddisp(16,24+gp*24,0xA2,0XA2);
                    lcddisp(20,24+gp*24,0xA2,0XA2);
                    lcddisp(22,24+gp*24,0xA2,0XA2);
                    lcddisp(24,24+gp*24,0xA2,0XA2);
                    lcddisp(26,24+gp*24,0xA2,0xA2);
                    lcddisp(28,24+gp*24,0xA2,0XA2);
                    }

              else{
			        if((toupcom[cheinggp][7]>>4)==0){lcddisp( 0,24+gp*24,0xA2,0XA2);fuzhu=0;}
                    else        lcddisp(0,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][7]>>4));

                    if(((toupcom[cheinggp][7]&0x0f)==0)&(fuzhu==0))lcddisp( 2,24+gp*24,0xA2,0XA2);
                    else    	{lcddisp(2,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][7]&0xf));fuzhu=1;}

                    if(((toupcom[cheinggp][6]>>4)==0)&(fuzhu==0))lcddisp( 4,24+gp*24,0xA2,0XA2);
                    else        {lcddisp(4,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][6]>>4));fuzhu=1;}

                    if(((toupcom[cheinggp][6]&0x0f)==0)&(fuzhu==0))lcddisp(6,24+gp*24,0xA2,0XA2);
                    else        {lcddisp(6,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][6]&0xf));fuzhu=1;}
					               
                    lcddisp(8,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][5]>>4));
                    lcddisp(10,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][5]&0xf));
                    lcddisp(12,24+gp*24,0xA3,0xB0);
                    lcddisp(14,24+gp*24,0xA3,0xEB);
                    lcddisp(16,24+gp*24,0xA3,0XE7);

                    if((toupcom[cheinggp][9]>>4)==0){lcddisp( 20,24+gp*24,0xA2,0XA2);fuzhu=0;}
                    else  lcddisp(20,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][9]>>4));

                    if(((toupcom[cheinggp][9]&0x0f)==0)&(fuzhu==0))lcddisp( 22,24+gp*24,0xA2,0XA2);
                    else  {lcddisp(22,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][9]&0xf));fuzhu=1;}

                    if(((toupcom[cheinggp][8]>>4)==0)&(fuzhu==0))lcddisp( 24,24+gp*24,0xA2,0XA2); 
                    else  {lcddisp(24,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][8]>>4));fuzhu=1;}

                    lcddisp(26,24+gp*24,0xA3,0XB0+(toupcom[cheinggp][8]&0xf));
                    lcddisp(28,24+gp*24,0xA3,0XA5);
					}
                     }
} 
void bendichuli(void)
{         unsigned char i,j,m,cheshutemp,chexingtemp;//,chexing2;
          unsigned int xdata t_x_fee,ch_x_l_m;
              
           //显示本地处理
          lcddisp(22,90,0XB1,0XBE);
          lcddisp(24,90,0XB5,0XD8);
          lcddisp(26,90,0XB4,0XA6);
          lcddisp(28,90,0XC0,0XED);

     
         keyfinish=0;
         feefinish=0;							  					   
         cheshutemp=100;
         chexingtemp=0x66;
while(feefinish==0){if(cheshutemp!=cheshu)gunping();
                    if(key==0xF2){key=0xFF;lcddisp(0,0,0xfd,0Xff);} /*背光切换*/ 
                    cheshutemp=cheshu; 
                    dispclk();
                    if(key<10)chexing=key;
   if(chexingtemp!=chexing){
                    lcddisp(10,112,0xA3,chexing+0xB0);
                    switch(chexing)
                              {case 0: t_x_fee=0;break;
                               case 1: t_x_fee=10;break;                              
                               case 2: t_x_fee=15;break;                                                            
                               case 3: t_x_fee=20;break;                                                            
                               case 4: t_x_fee=30;break;                                                            
                               case 5: t_x_fee=40;break;                                                            
                               case 6: t_x_fee=55;break;                                                            
                               case 7: t_x_fee=65;break;                                                            
                               case 8: t_x_fee=100;break;                                                            
                               case 9: t_x_fee=100;break;                                                            
                               }

                 ch_x_l_m=(toupcom[cheing][9]>>4)*1000+(toupcom[cheing][9]&0X0F)*100+(toupcom[cheing][8]>>4)*10+(toupcom[cheing][8]&0X0F);

                 if(ch_x_l_m>100)beilv=6;
                 else {if(ch_x_l_m>50)beilv=2;
                       else {if(ch_x_l_m>30)beilv=1;
                             else beilv=0;
                            }
                       }
           
                 t_x_fee=(t_x_fee*(2+beilv)/2);

                 todaping[1]=((chexing/10)<<4)+(chexing%10);
                 todaping[2+d_p_modi]=(((ch_x_l_m%100)/10)<<4)+(ch_x_l_m%10);
                 todaping[3+d_p_modi]=(ch_x_l_m%1000)/100;
                 todaping[4+d_p_modi]=(((t_x_fee%100)/10)<<4)+(t_x_fee%10);
                 todaping[5+d_p_modi]=(((t_x_fee/10000)%1000)<<4)+((t_x_fee%1000)/100);

/****************************显示费额********************************/
                 if((todaping[5+d_p_modi]&0x0f)==0)lcddisp(10,90,0xa2,0xa2);
				 else  lcddisp(10,90,0xa3,(todaping[5+d_p_modi]&0x0f)+0XB0);
                 lcddisp(12,90,0xa3,(todaping[4+d_p_modi]>>4)+0XB0);
                 lcddisp(14,90,0xa3,(todaping[4+d_p_modi]&0x0f)+0XB0);
/********************end of 显示飞蛾***************/                 

                 for(i=0;i<8;i++){ST554C;;;;/*发送到室外大屏*/
                                  ACC=ST05;
                                  while(!ACC5){ST554C;ACC=ST05;}
                                  RBR=todaping[i];
                                 }
                  chexingtemp=chexing; 
                   }//end of   if(chexingtemp!=chexing)       

                 CS256;

                 feefinish=feefinish&keyfinish;
                 


                 m=0x66;
                 for(i=1;i<4;i++){if((cheing+i)%10==cheshu)m=0;}
                 if(m)feefinish=1;//后续车辆顶掉第一辆车
}//end of whiel(feefinsh); 

            feefinish=0;
if(cheing!=cheshu)
            {
            j=subcom[16];
            toupcom[cheing][16+j*4]=todaping[2+d_p_modi];//(t_x_fee/100);/*金额*/           
            toupcom[cheing][17+j*4]=todaping[3+d_p_modi];//((t_x_fee%100)/10)*16+(t_x_fee%10);/*金额*/           
            toupcom[cheing][18+j*4]=(g8563_Store[5]);/*年*/
            toupcom[cheing][19+j*4]=(g8563_Store[4]);/*月*/
            toupcom[cheing][20+j*4]=(g8563_Store[3]);/*日*/
            toupcom[cheing][21+j*4]=(g8563_Store[2]);/*时*/
            toupcom[cheing][22+j*4]=(g8563_Store[1]);/*分*/
            toupcom[cheing][23+j*4]=g8563_Store[0];/*秒*/
            for(i=0;i<(24+subcom[16]*4);i++) toupcom[cheing][24+j*4]+=subcom[i];/*校验和*/
            toupcom[cheing][25+j*4]=0xE0;/*结束标志*/

            for(i=0;i<(26+toupcom[cheing][15]*4);i++) //此处在改改
                              {
                               j=toupcom[cheing][i];
                               address=savednum*58+i+0x20000;
                               F29040write(j);
                               CS256;
                               }
            savednum++;if(savednum>5000)savednum=0;
            address=0x10000;
            F29040write(savednum);
            address=0x10001;
            F29040write(savednum>>8);
            address=0x10002;
            F29040write(sendnum);
            address=0x10003;
            F29040write(sendnum>>8);

            }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -