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

📄 other.c

📁 HT1621液晶控制测试
💻 C
字号:
/*****************************************
*    文件名:OTHER.C
*****************************************/
#include <REG51STC.H>
#include "CMD16887.H"
#include "externxy.h"
/******************************************
*  功能:金额取整加油
*******************************************/
void oil_intmoney(uchar gunidid)   //金额取整加油
{  ulong  mm;
	uint aa,bb,cc;	

	if(gunidid==0){mm=gun1.sale;ration_mode_a=0;bbyte=dotmode[decimal_a];}
	else {mm=gun2.sale;ration_mode_b=0;bbyte=dotmode[decimal_b];}

	   //小数点
		
	if(a5)aa=100;  //单价小数点
	else if(a2)aa=1000;
	else aa=1;

	if(a3){bb=100;cc=mm%100;mm=mm+100-cc;cc=100-cc;}  //金额小数点
	else if(a0){bb=10;cc=mm%100;mm=mm+10-cc;cc=10-cc;}
	else {bb=1;cc=0;mm+=50;}
	
	if(gunidid==0)
	{	ration_num_a=mm;
		mm=mm*120*aa/bb/price_a-gun1.pulse-jl1s;
		ration_pulse_a=mm;  //定量脉冲
	}
	else
	{	ration_num_b=mm;
		mm=mm*120*aa/bb/price_b-gun2.pulse-jl2s;
		ration_pulse_b=mm;  //定量脉冲
	}
	
}
/**********************************************************
*   功能:取消加油时,按退出键后清原来加油数据
**********************************************************/
void  clr_exitdata_a(void)
{
	//gun1.liter=0;
	//gun1.sale=0;
	//gun1.pulse=0;
	updatea=1;   //通知更新
}
/**********************************************************
*   功能:取消加油时,按退出键后清原来加油数据
**********************************************************/
void  clr_exitdata_b(void)
{
	//gun2.liter=0;
	//gun2.sale=0;
	//gun2.pulse=0;
	updateb=1;   //通知更新
}
/**********************************************************
*   功能:检查锁机密码a/b
***********************************************************/
bit pass_check(uchar gunidid)
{	void  *pt;
	uint  add;
	union{
		uchar c[4];
		ulong x;
   }temp;
	add=PASSSTARTADD;
	pt=&temp.c[0];
	if(gunidid==0)
	{ 	
		readbyteseq(add,pt,4);
		if(menu1==2 ||(menu1==4 && temp_mema==1))
		{
			if(temp.x==ration_num_a && multiple_a==10000) return(1);   //密码验证
			if(ration_num_a==0x5e4 && multiple_a==10000 && (menu1==4 || locknooil_a)) return(1);   //修改戓被锁住时有用
			else  return(0);
		}
		else if(menu1==4 && temp_mema==3)
		{
			if(ration_pulse_a==ration_num_a && multiple_a==10000) return(1); //两次密码必须一致
			else  return(0);
		}
	}
	else     //   gunidid==1  //
	{	add+=4;
		readbyteseq(add,pt,4);
		if(menu2==2 ||(menu2==4 && temp_memb==1))
		{
			if(temp.x==ration_num_b && multiple_b==10000) return(1);   //密码验证
			if(ration_num_b==0x5e4 && multiple_b==10000 && (menu2==4 || locknooil_b)) return(1);   //修改戓被锁住时有用
			else  return(0);
		}
		else if(menu2==4 && temp_memb==3)
		{
			if(ration_pulse_b==ration_num_b && multiple_b==10000) return(1); //两次密码必须一致
			else  return(0);
		}
	}
}
/**********************************************************
*  功能:计算定量脉冲数  number为金额限量,gunidid为工作面序号
**********************************************************/
void  calculate_ration(uchar gunidid)
{	uint aa,bb,cc;
	float  mm,fb;
	ulong  nn;
	if(gunidid==0)
	{	
		bbyte=dotmode[decimal_a];   //小数点
		if(a5)aa=100;  //单价小数点
		else if(a2)aa=1000;
		else aa=1;
      
		if(a3){bb=100;}  //金额小数点
		else if(a0){bb=10;}
		else {bb=1;}

		if(a4)cc=100;
		else cc=1000;
		if(!ration_mode_a)
		{	//定元	
			mm=ration_num_a;
			mm=mm*aa/bb/price_a+0.005;
			fb=999999.0/cc;
			if(mm>fb)
			{	ration_num_a=999999;
				mm=999999.0/cc+0.005;
				//fb=999999.0*bb*price_a/aa/cc;
				//ration_num_a=fb;
				ration_mode_a=1;  //定升
				vip_mode_a=ration_mode_a;
				multiple_a=0;
				if(state1==2)k1spk_time=110; 
			}
			mm=mm*120.0;
			nn=mm;
			//if(nn<120) nn=0;
			ration_pulse_a=nn;			
		}
		else
		{	//定升
			mm=ration_num_a;
			mm=mm/cc+0.005;
			fb=999999.0*aa/bb/price_a;
			if(mm>fb)
			{
				ration_num_a=999999;
				mm=999999.0*aa/bb/price_a+0.005;
				//fb=999999.0*cc*aa/bb/price_a;
				//ration_num_a=fb;
				ration_mode_a=0;  //定元
				vip_mode_a=ration_mode_a;
				multiple_a=0;
				if(state1==2)k1spk_time=110; 
			}
			mm=mm*120.0;
			nn=mm;
			//if(nn<120) nn=0;
			ration_pulse_a=nn;	
		}
	}
	//--------------------------
	else
	{	
		bbyte=dotmode[decimal_b];   //小数点
		if(a5)aa=100;  //单价小数点
		else if(a2)aa=1000;
		else aa=1;
      
		if(a3){bb=100;}  //金额小数点
		else if(a0){bb=10;}
		else {bb=1;}

		if(a4)cc=100;
		else cc=1000;
		if(!ration_mode_b)
		{	//定元	
			mm=ration_num_b;
			mm=mm*aa/bb/price_b+0.005;
			fb=999999.0/cc;
			if(mm>fb)
			{	ration_num_b=999999;
				mm=999999.0/cc+0.005;
				//fb=999999.0*bb*price_b/aa/cc;
				//ration_num_b=fb;
				ration_mode_b=1;  //定升
				vip_mode_b=ration_mode_b;
				multiple_b=0;
				if(state2==2)k2spk_time=110; 
			}
			mm=mm*120.0;
			nn=mm;
			//if(nn<120) nn=0;
			ration_pulse_b=nn;			
		}
		else
		{	//定升
			mm=ration_num_b;
			mm=mm/cc+0.005;
			fb=999999.0*aa/bb/price_b;
			if(mm>fb)
			{
				ration_num_b=999999;
				mm=999999.0*aa/bb/price_b+0.005;
				//fb=999999.0*cc*aa/bb/price_b;
				//ration_num_b=fb;
				ration_mode_b=0;  //定元
				vip_mode_b=ration_mode_b;
				multiple_b=0;
				if(state2==2)k2spk_time=110; 
			}
			mm=mm*120.0;
			nn=mm;	
			//if(nn<120) nn=0;
			ration_pulse_b=nn;	
		}
	}
}
/**********************************************
*   功能:调时间日期
***********************************************/
void  set_time(uchar number)
{
	if(menu1==9)
	{	temp_mema++;
		switch(temp_mema)
		{
			case 0:
				break;
			case 1:
				ucCurtime[0]=0xff;ucCurtime[1]=0xff;ucCurtime[2]=0xff;ucCurtime[3]=0xff;ucCurtime[4]=0xff;ucCurtime[5]=0xff;ucCurtime[6]=number*16+0xf;
				break;
			case 2:
				ucCurtime[6]=ucCurtime[6]-ucCurtime[6]%16;ucCurtime[6]+=number;
				break;
			case 3:
				ucCurtime[4]=number*16+0xf;
				break;
			case 4:
				ucCurtime[4]=ucCurtime[4]-ucCurtime[4]%16;ucCurtime[4]+=number;
				break;
			case 5:
				ucCurtime[3]=number*16+0xf;
				break;
			case 6:
				ucCurtime[3]=ucCurtime[3]-ucCurtime[3]%16;ucCurtime[3]+=number;
				break;
			case 7:
				ucCurtime[2]=number*16+0xf;
				break;
			case 8:
				ucCurtime[2]=ucCurtime[2]-ucCurtime[2]%16;ucCurtime[2]+=number;
				break;
			case 9:
				ucCurtime[1]=number*16+0xf;
				break;
			case 10:
				ucCurtime[1]=ucCurtime[1]-ucCurtime[1]%16;ucCurtime[1]+=number;
				break;
			case 11:
				ucCurtime[0]=number*16+0xf;
				break;
			case 12:
				ucCurtime[0]=ucCurtime[0]-ucCurtime[0]%16;ucCurtime[0]+=number;
				break;
			case 13:
				ucCurtime[5]=number;
				break;
			default:
			   break;
		}
		disp_memu1_set();
	}
}
/**********************************************************
*  功能: 累计转换至列表a
**********************************************************/
void accumulative_total_list_a(void)
{	uchar m;
	char i;
	ulong y;
	y=gun1.sum_liter;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+28]=m;
	}
	//-------------------
	y=gun1.sum_sale;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+34]=m;
	}
	//----------------------
	y=gun1.work_liter;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+10]=m;
	}
	//-------------------
	y=gun1.work_sale;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+16]=m;
	}
	//----------------------
	table_buf[52] |=0x06;   //读标志
}
/**********************************************************
*  功能: 累计转换至列表b
**********************************************************/
void accumulative_total_list_b(void)
{	uchar m;
	char i;
	ulong y;
	y=gun2.sum_liter;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+28+53]=m;
	}
	//--------------------
	y=gun2.sum_sale;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+34+53]=m;
	}
	//-------------------
	y=gun2.work_liter;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+10+53]=m;
	}
	//--------------------
	y=gun2.work_sale;
	for(i=0;i<6;i++)
	{
		m=y%10;y/=10;
		m+=(y%10)*16;y/=10;
  		table_buf[i+16+53]=m;
	}
	//-------------------
	table_buf[52+53] |=0x06;   //读标志
}

⌨️ 快捷键说明

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