?? 0203.c
字號:
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 + -