📄 bbbb.c
字号:
/*********************************************
* 文件名:bbbb.c
*********************************************/
#include <REG51STC.H>
#include <ABSACC.H>
#include "CMD16887.H"
#include <INTRINS.H>
#include "externxy.h"
/***************************************************************
* 功能:显示锁机b
* 输入密码过程中是从右到左,即第1个输入的在最右边--个位。
***************************************************************/
void disp_lock_b(void)
{ void *ptr;
uchar i,j;
uchar dispmem[16];
if(menu2==4)
{
if(temp_memb!=4)
{
keyb_num[0]=keynumdata[temp_memb];
keyb_num[1]=keynumdata[27];
keyb_num[2]=keynumdata[3];
keyb_num[3]=keynumdata[0];
}
else
{ ptr=&ration_num_b;
writebyteseq(PASSSTARTADD+4,ptr,4);
keyb_num[0]=keynumdata[3];
keyb_num[1]=keynumdata[3];
keyb_num[2]=keynumdata[3];
keyb_num[3]=keynumdata[3];
}
}
else
{
keyb_num[0]=keynumdata[19];
keyb_num[1]=keynumdata[27];
keyb_num[2]=keynumdata[3];
keyb_num[3]=keynumdata[0];
}
if(locknooil_b) keyb_num[4]=0x01;
else keyb_num[4]=0x02;
if(multiple_b==1)j=0;
else if(multiple_b==10)j=1;
else if(multiple_b==100)j=2;
else if(multiple_b==1000)j=3;
else j=4;
for(i=0;i<j;i++)
{
dispmem[i]=0x0e; //'-'
}
for(i=j;i<16;i++)
{
dispmem[i]=0x0f;
}
ptr=&dispmem;
disp_updata_lcd(LCDBADD,ptr);
disp_dot2(5); //LCD1小数点--无
}
/**************************************************
* 功能: ; 显示定量加油数据b
***************************************************/
void disp_vip_b(void)
{ uchar i,j,temp;
uchar dispmem[6];
uchar lcdadd,dotdata;
bit bymem;
disp_ration_ending_b();
if(ration_mode_b)
{
keyb_num[4]=0x04; //定升
dispmem[5]=0x0a; //L
lcdadd=0x04;
dotdata=dotmode[decimal_b];
dotdata&=0x36;
disp_lcd2(ration_num_b,0x0a); //公升
}
else
{
keyb_num[4]=0x08; //定元
dispmem[5]=0x0c; //L
lcdadd=0x0a;
dotdata=dotmode[decimal_b];
dotdata&=0x2d;
disp_lcd2(ration_num_b,0x04);
}
disp_dot2(dotdata); //LCD2小数点
dispmem[4]=0x0f;dispmem[3]=0x0f;dispmem[2]=0x0f;dispmem[1]=0x0f;dispmem[0]=0x0f;
AUXR |=0x02;
for(i=6;i>0;i--)
{ ACC=0x38;
XBYTE[LCDBADD]=ACC; //ST
bbyte=dispmem[i-1];
temp=bbyte*16+i+lcdadd-1;
for(j=8;j>0;j--)
{ bbyte=temp;
bymem=(bit)(bbyte&0x80);
temp<<=1;
bbyte=0x38;
a1= bymem; //DS-->DATA
XBYTE[LCDBADD]=bbyte;
ACC|=0x01;
XBYTE[LCDBADD]=ACC; //CP-->CLK ↑
ACC&=0xfe;
XBYTE[LCDBADD]=ACC; //CP-->CLK ↓
}
ACC=0x3c;
XBYTE[LCDBADD]=ACC; //ST-->INH
}
AUXR &=0xfd;
}
/***********************************************************
* 功能:计算、显示定量加油结局b
***********************************************************/
void disp_ration_ending_b(void)
{
xdata uchar tt[6];
ulong ma;
uint aa,bb;
uchar i;
uchar strdot; //小数点位置
bbyte=dotmode[decimal_b]; //小数点
if(ration_mode_b)
{ //升
if(a4){ma=ration_num_b*120/100; strdot=2;}
else if(a1){ma=ration_num_b*120/1000;strdot=3;}
else {ma=ration_num_b*120;strdot=0;}
}
else
{
if(a5)aa=100; //单价小数点
else if(a2)aa=1000;
else aa=1;
if(a3){bb=100;strdot=2;} //金额小数点
else if(a0){bb=10;strdot=1;}
else {bb=1;strdot=0;}
ma=ration_num_b*120*aa/bb/price_b;
}
//ma=nn;
//ration_pulse_a=ma; //定量脉冲
calculate_ration(1);
ma=ration_num_b;
tt[5]=ma%10;ma/=10;
tt[4]=ma%10;ma/=10;
tt[3]=ma%10;ma/=10;
tt[2]=ma%10;ma/=10;
tt[1]=ma%10;ma/=10;
tt[0]=ma%10;ma/=10;
for(i=0;i<5;i++)
{ if(i==(5-strdot))break;
if(tt[i]==0x00) tt[i]=28;
else break;
}
if(multiple_b==1000)
{ switch(strdot)
{ case 3:
keyb_num[0]=keynumdata[tt[2]];
keyb_num[1]=keynumdata[tt[1]];
keyb_num[2]=keynumdata[tt[0]];
keyb_num[3]=keynumdata[28];break;
default:
break;
}
}
else if(multiple_b==100)
{
switch(strdot)
{
case 2:
keyb_num[0]=keynumdata[tt[3]];
keyb_num[1]=keynumdata[tt[2]];
keyb_num[2]=keynumdata[tt[1]];
keyb_num[3]=keynumdata[tt[0]];break;
case 3:
keyb_num[0]=keynumdata[tt[3]];
keyb_num[1]=keynumdata[tt[2]]+0x80;
keyb_num[2]=keynumdata[tt[1]];
keyb_num[3]=keynumdata[tt[0]];break;
default:
break;
}
}
else if(multiple_b==10)
{
switch(strdot)
{
case 1:
keyb_num[0]=keynumdata[tt[4]];
keyb_num[1]=keynumdata[tt[3]];
keyb_num[2]=keynumdata[tt[2]];
keyb_num[3]=keynumdata[tt[1]];break;
case 3:
keyb_num[0]=keynumdata[tt[5]];
keyb_num[1]=keynumdata[tt[4]];
keyb_num[2]=keynumdata[tt[3]];
keyb_num[3]=keynumdata[tt[2]]+0x80;break;
default:
break;
}
}
else if(multiple_b==1)
{
switch(strdot)
{ case 0:
keyb_num[0]=keynumdata[tt[5]];
keyb_num[1]=keynumdata[tt[4]];
keyb_num[2]=keynumdata[tt[3]];
keyb_num[3]=keynumdata[tt[2]];break;
case 2:
keyb_num[0]=keynumdata[tt[4]];
keyb_num[1]=keynumdata[tt[3]]+0x80;
keyb_num[2]=keynumdata[tt[2]];
keyb_num[3]=keynumdata[tt[1]];break;
case 3:
keyb_num[0]=keynumdata[tt[4]];
keyb_num[1]=keynumdata[tt[3]];
keyb_num[2]=keynumdata[tt[2]]+0x80;
keyb_num[3]=keynumdata[tt[1]];break;
}
}
else // if(multiple_a==0)
{
switch(strdot)
{ case 0:
keyb_num[0]=keynumdata[tt[5]];
keyb_num[1]=keynumdata[tt[4]];
keyb_num[2]=keynumdata[tt[3]];
keyb_num[3]=keynumdata[tt[2]];break;
case 1:
keyb_num[0]=keynumdata[tt[5]];
keyb_num[1]=keynumdata[tt[4]]+0x80;
keyb_num[2]=keynumdata[tt[3]];
keyb_num[3]=keynumdata[tt[2]];break;
case 2:
keyb_num[0]=keynumdata[tt[5]];
keyb_num[1]=keynumdata[tt[4]];
keyb_num[2]=keynumdata[tt[3]]+0x80;
keyb_num[3]=keynumdata[tt[2]];break;
case 3:
keyb_num[0]=keynumdata[tt[5]];
keyb_num[1]=keynumdata[tt[4]];
keyb_num[2]=keynumdata[tt[3]];
keyb_num[3]=keynumdata[tt[2]]+0x80;break;
}
}
}
/*********************************************************
* 功能:进入特殊菜单的密码显示
**********************************************************/
void disp_pass_vital(uchar gunidid)
{ void *ptr;
uchar i,j;
uchar dispmem[16];
if(gunidid==0)
{
keya_num[0]=keynumdata[5];
keya_num[1]=keynumdata[5];
keya_num[2]=keynumdata[10];
keya_num[3]=keynumdata[23];
if(multiple_a==1)j=0;
else if(multiple_a==10)j=1;
else if(multiple_a==100)j=2;
else if(multiple_a==1000)j=3;
else j=4;
for(i=0;i<j;i++)
{
dispmem[i]=0x0e; //'-'
}
for(i=j;i<16;i++)
{
dispmem[i]=0x0f;
}
ptr=&dispmem;
disp_updata_lcd(LCDAADD,ptr);
disp_dot1(5); //LCD1小数点--无
}
else //gunidid==1
{
keyb_num[0]=keynumdata[5];
keyb_num[1]=keynumdata[5];
keyb_num[2]=keynumdata[10];
keyb_num[3]=keynumdata[23];
if(multiple_b==1)j=0;
else if(multiple_b==10)j=1;
else if(multiple_b==100)j=2;
else if(multiple_b==1000)j=3;
else j=4;
for(i=0;i<j;i++)
{
dispmem[i]=0x0e; //'-'
}
for(i=j;i<16;i++)
{
dispmem[i]=0x0f;
}
ptr=&dispmem;
disp_updata_lcd(LCDBADD,ptr);
disp_dot2(5); //LCD2小数点--无
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -