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

📄 diss_s.c

📁 税控收款机软件。包括底层驱动和上层的应用一起。是一个完整的税控收款机软件方案
💻 C
📖 第 1 页 / 共 5 页
字号:
        	case 2:
                if(PassWord1())break;;
                DailyCollect();

                fiscal();	
                break;

        	case 3:
                base_info();
                break;

        	case 4:
				cls();
				DisHzLinYm(" 1.发票海量检测",Col1);
			    DisHzLinYm(" 2.硬件检测",Col2);
				DisHzLinYm(" 3.日累计模拟测试",Col3);
				GetKey();
				switch(keyc)
				{
					case 1:
		                if(PassWord(2))break;
		
		    			AutoInvoiceCHK();
		
		                break;
					case 2:
     					check();
                		break;
					case 3:
						sys_time.year=9;
						sys_time.month=0x12;
						sys_time.date=0x30;
						Writetime1();
						cls();
						DisHzLinYm("   日累计模拟生成中...",Col2);
						DailyCollect();
						break;
				}
				break;


        	case 5:
    			DisHzLinYm("1.票号查询2.开票日期查询",Col1);
    			DisHzLinYm("3.时间段日交易查询",Col2);
    			DisHzLinYm("4.时间段报税查询",Col3);
    			DisHzLinYm("5.时间段查发票卷查询",Col4);
    			GetKey();
                switch(keyc)
                {
        			case 1: 
						InvoiceDisCHKandPrn(1);
                        break;

        			case 2: 
						InvoiceDisCHKandPrn(2);
                        break;

        			case 3: 
                        DailyCHK();
                        break;

        			case 4: 
                        DeclareCHK();
                        break;

        			case 5: 
                        InvVolCHK();
                        break;
                }
                break;

        	case 6: 
                if(PassWord(2))break;
    			if(InvoiceStatus())break;
				DailyCollect();
    			fiscal_tui(); 
                break;

        	case 7:
                
                if(PassWord(2))break;
    			if(InvoiceStatus())break;
    			DailyCollect();
				fiscal_fei();
                break;

            case 8:
                fiscalcheck();
                break;
        }
	}while(1);     
}
uchar PassWord1(void)
{
    uchar xdata temp[10];
	uchar j;
    cls();

    DisHzLinYm("请输入密码:",Col3);
    for(j=0;j<10;j++)
    {
        GetKey();
        if(keyc==0x1b)return 1;
        if(keyc==KEY_CR)break;
		if(keyc==KEY_DEL)
		{
			temp[j-1]=0;
			DisAsc(&PrnVAsc,Col3,14+j);
			j=j-2;
		}
        else 
		{
			temp[j]=keyc;
	        DisAsc(&ASC_Xing,Col3,15+j);
		}
    }
    if(memcmp(temp,GLZpassword,10)!=0)return 1;
 
    return 0;
}

void  ClsLin(uchar col)
{
	uchar i;
	
    for(i=1;i<25;i++)DisAsc(&PrnVAsc,col,i);
}

void PTeamInit(uchar *p_dm,uchar col)
{
    uchar i;
	for(i=0;i<24;i++) p_team[i]=p_dm;
    for(i=Row9;i<=23;i++) DisAsc(&PrnVAsc,col,i);//old is Row7
	DisAsc(&D00,col,Row24);
}

void DisAscPush(uchar *p_dm,uchar col,uchar end_row)
{
	uchar i;
	for(i=end_row-1;i<23;i++) 
	{
		p_team[i]=p_team[i+1];
		DisAsc(p_team[i],col,i+1);
	}
	p_team[23]=p_dm;
	DisAsc(p_team[23],col,24);
}

void DisAscPop(uchar col,uchar end_row)
{
	uchar i;
	for(i=23;i>end_row;i--) 
	{
		p_team[i]=p_team[i-1];
		DisAsc(p_team[i],col,i);
	}
}

uchar * Readtime1(void)
{
	uchar time_buff[4];
	upsd_i2c_rcv (0xd0,0,7);
	sys_time.second=i2c_rcv_buf[0]&0x7f;
	sys_time.minute=i2c_rcv_buf[1]&0x7f;
	sys_time.hour=i2c_rcv_buf[2]&0x3f;
	sys_time.date=i2c_rcv_buf[4]&0x3f;
	sys_time.month=i2c_rcv_buf[5]&0x1f;
	sys_time.day=i2c_rcv_buf[3]&7;
	sys_time.year=i2c_rcv_buf[6];
	time_buff[0]=32;
	time_buff[1]=sys_time.year;
	time_buff[2]=sys_time.month;
	time_buff[3]=sys_time.date;
	return time_buff;
}

void Writetime1(void)
{
	i2c_xmit_buf[6]=sys_time.year;
	i2c_xmit_buf[5]=sys_time.month;
	i2c_xmit_buf[4]=sys_time.date;
	i2c_xmit_buf[2]=sys_time.hour;
	i2c_xmit_buf[1]=sys_time.minute;
	i2c_xmit_buf[0]=0x80;
	upsd_i2c_xmit (0xd0,0,7);
	DL30MS();
	i2c_xmit_buf[0]=0x59;
	upsd_i2c_xmit (0xd0,0,1);
}

void DisHzYm(uchar *p_dm,uchar col,uchar row)
{    
	uint data iHzYm;
	iHzYm=(*(p_dm)-0xa1-15)*94;
	p_dm++;
	iHzYm=iHzYm+ *(p_dm)-0xa1;
	p_xb=(iHzYm%2048)*32; 
	if(p_xb<32768){A15=0;p_xb+=32768;}	
	else A15=1;
    UPSD_xreg.DIRECTION_B=7;
    UPSD_xreg.DATAOUT_B=iHzYm/2048+4;
	DisHz(p_xb,col,row);
}

void  DisHzLinYm(uchar *p_hzline,uchar col)
{
   	uchar data num,rchar;
	ClsLin(col);
   	num=1;
   	while (num<25)
   	{ 
		if(*(p_hzline))
		{
	     rchar=*(p_hzline);
		 if (rchar>0xa0)   //显示汉字
          {  
		  		DisHzYm(p_hzline, col,num);//
				//DisHzYm(p_hzline, col,num/2+1);
		     num+=2;
	         p_hzline+=2;
		  }
		  else       //显示数与字符
		  {
			//DisAsc(&PrnVAsc+(rchar-32)*0x10,col,num+1);
			DisAsc(&PrnVAsc+(rchar-' ')*0x10,col,num);
			num++;
			p_hzline++;
		  }
	  }
	  else 
		  break;
   }
}


float CalDataInput(uchar col)
{
	uchar data i,j,b_dot_puted=0;
	float data ggg;

	for(i=0;i<10;i++) databuf[i]=0;databuf[0]=48;
	DisAsc(&D00,col,Row24);
	//if((keyc=='+')||(keyc=='-')||(keyc=='*')||(keyc=='/'))DisAsc(&D00,col,Row24);
	if((keyc=='+')||(keyc==KEY_PRN)||(keyc=='o')||(keyc=='p'))DisAsc(&D00,col,Row24);
	else PTeamInit(&PrnVAsc,col);
	j=0;
    i=0;
	do
	{
		CalInput:
		GetKey();
		switch(keyc)
		{
			if(j>=9) break;
			case KEY_0:
				if(timeinput)
				{
					DisAscPush(&D00,col,Row13);
					databuf[j+i]=0x30;
					break;
				}
				if((j==0)) 
				{
					databuf[0]=48;
					goto CalInput;
				}			
				DisAscPush(&D00,col,Row13);
				databuf[j+i]=0x30;
				break;
	
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
			case 6:
			case 7:
			case 8:
			case 9:
				DisAscPush(&D00+16*keyc,col,Row13);
				databuf[j+i]=0x30+keyc;
				break;
	
			case KEY_DOT:
				{
					if((j==0)&&(!b_dot_puted))
					{
						DisAscPush(&D00,col,Row13); 
						DisAscPush(&ASC_DOT,col,Row13); 
						databuf[0]=0x30;
						databuf[1]=KEY_DOT;
						b_dot_puted=1;
						i=1;
						break;
					}
					if(b_dot_puted) break;
					DisAscPush(&ASC_DOT,col,Row13);
					databuf[j]=KEY_DOT;
                    b_dot_puted=1;
					break;
				}
			case KEY_DEL:
				if((j==0)) 
				{
					databuf[0]=48;
					DisAsc(&D00,col,Row24);
					goto CalInput;
				}
				else
				{
					if(databuf[j+i-1]=='.'){b_dot_puted=0;databuf[j+i-1]=0x0;i=0;}
					else databuf[j+i-1]=0x0;
					j-=2;
					DisAscPop(col,Row13);
					DisAsc(&PrnVAsc,col,Row24);
				}
				break; 
			case KEY_ESC:
				{
					for(i=Row7;i<=24;i++) DisHz(&PrnVAsc,col,i);
					DisAsc(&D00,col,Row24);
					for(i=0;i<10;i++)databuf[i]=0;
					databuf[0]=48;
					j=0;
					PTeamInit(&PrnVAsc,col);
					break;
				}
			case KEY_CR:
				if(cal)goto CalInput;
				break;
			case 'l'://'=':
				if(cal)
				{
					sscanf(databuf,"%f",&ggg);
                    //ggg=Scanf1();
					return ggg;
				}
			case '+':
			case KEY_PRN://'-':
			case 'p'://'*':
			case 'o'://'/':
				if(cal)
				{
					PTeamInit(&PrnVAsc,col);
                    //ggg=Scanf1();
					sscanf(databuf,"%f",&ggg);
					return ggg;
				}
				else goto CalInput;
			default: goto CalInput;
		}
		j++;
		if(j>=10)j--;
	}while(((keyc!=KEY_CR))&&(keyc!=KEY_ESC));
    //ggg=Scanf1();
	sscanf(databuf,"%f",&ggg);
	return ggg;
} 

void cls(void)// 清屏
{
	ClsLin(Col1);
	ClsLin(Col2);
	ClsLin(Col3);
	ClsLin(Col4);
}

void DisCs1On()
{
	uchar xdata *p_chip;
	p_chip=&CS1STATE_R;             /*on液晶显示*/
	while(0xff==*p_chip);  
	p_chip=&CS1COM_W;
	*p_chip=0x3f;
	*p_chip=0xc0;
}
void DisCs2On()
{
	uchar xdata *p_chip;
	p_chip=&CS2STATE_R;             /*on液晶显示*/
	while(0xff==*p_chip);  
	p_chip=&CS2COM_W;
	*p_chip=0x3f;
	*p_chip=0xc0;
}
void DisCs3On()
{
	uchar xdata *p_chip;
	p_chip=&CS3STATE_R;             /*on液晶显示*/
	while(0xff==*p_chip);  
	p_chip=&CS3COM_W;
	*p_chip=0x3f;
	*p_chip=0xc0;
}

void DisCs1Off()
{
	uchar xdata *p_chip;
	p_chip=&CS1STATE_R;             /*off液晶显示*/
	while(0xff==*p_chip);  
	
	p_chip=&CS1COM_W;
	*p_chip=0x3e;
}

void DisCs2Off()
{
	uchar xdata *p_chip;
	p_chip=&CS2STATE_R;             /*off液晶显示*/
	while(0xff==*p_chip);  
	p_chip=&CS2COM_W;
	*p_chip=0x3e;
}

void DisCs3Off()
{
	uchar xdata *p_chip;
	p_chip=&CS3STATE_R;             /*off液晶显示*/
	while(0xff==*p_chip);  
	p_chip=&CS3COM_W;
	*p_chip=0x3e;
}

void  fnLCMInit(void)
{
	DisCs1Off();
	DisCs2Off();
	DisCs3Off();
	DisCs1On();
	DisCs2On();
	DisCs3On();
	DisCs1Off();
	DisCs2Off();
	DisCs3Off();
	DisCs1On();
	DisCs2On();
	DisCs3On();
}

//DisAsc 16*8
void DisAsc(uchar *p_dm,uchar col,uchar row)
{
	uchar xdata *p_chip;
	uchar data i,j;
	          
	if(row>=1&&row<=8)
	{ 	            
		for(j=1;j<=2;j++)
		{
			p_chip=&CS1STATE_R;
			while(0xff==*p_chip);
			p_chip=&CS1COM_W;
			*p_chip=col;          //write LINE_adr b8,ba,bc,be
			p_chip=&CS1STATE_R;
			while(0xff==*p_chip);
			p_chip=&CS1COM_W;
			switch(row)
			{
				case 1: *p_chip=0x40;break;  // row_start_adr/hz
				case 2: *p_chip=0x48;break;
				case 3: *p_chip=0x50;break;
				case 4: *p_chip=0x58;break;
				case 5: *p_chip=0x60;break;  // row_start_adr/hz
				case 6: *p_chip=0x68;break;
				case 7: *p_chip=0x70;break;
				case 8: *p_chip=0x78;break;
			}
			for(i=0;i<=7;i++)
			{
				p_chip=&CS1DATA_W;
				*p_chip=*(p_dm++);
				p_chip=&CS1STATE_R;
				while(0xff==*p_chip);
			}
			col++;
		}
	}		

	if(row>=9&&row<=16)
	{
		for(j=1;j<=2;j++)
		{

			p_chip=&CS2STATE_R;
			while(0xff==*p_chip);
			p_chip=&CS2COM_W;
			*p_chip=col;          //write LINE_adr b8,ba,bc,be
			p_chip=&CS2STATE_R;
			while(0xff==*p_chip);
			p_chip=&CS2COM_W;
			switch(row)
			{
				case 9:  *p_chip=0x40;break;  // row_start_adr/hz
				case 10: *p_chip=0x48;break;
				case 11: *p_chip=0x50;break;
				case 12: *p_chip=0x58;break;
				case 13: *p_chip=0x60;break;  // row_start_adr/hz
				case 14: *p_chip=0x68;break;
				case 15: *p_chip=0x70;break;
				case 16: *p_chip=0x78;break;
			}
			for(i=0;i<=7;i++)
			{

⌨️ 快捷键说明

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