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

📄 print.c

📁 这是一称的项目原文件,包括T9汉字输入,打印机,24C512,已经引用到产品上
💻 C
字号:
//************************************************************
//	并口发数示例1 -- 适用于P1口未被占用的情况
//************************************************************
#include "print.h"
#include  "24C02.h"
#include <set.h>

BYTE idata rece_buf[45]; 

void SendData(unsigned char UByte)
{
	P0 = UByte;		
    while(BUSY);
    STB=0;
    STB=1;
}
unsigned char code DataList_1[]={
	0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, //~~~~~~~~~~
	0x0a,
	0xC7,0xEB,0xB5,0xB1,0xC3,0xE6,0xBA,0xCB,0xB6,0xD4,                               //check on time
	0x0a,0x0a,0x0a
	};//表尾
unsigned char idata DataList_4[]={
	0x1c,0x26,0x1c,0x69,0x00,                                                        //汉字模式,16*16 0,1,2,3,4
	0x1b,0x63,0x00,                                                                  //反向打印	 5,6,7
	0x1c,0x0e,                                //8,9                                  //倍宽
	0xB1,0xB1,0xbe,0xA9,0xCC,0xEC,0xD3,0xEE,  //10~17                                //北京天宇
	0x0a,		                              //18
	0x1c,0x0e,                                //19,20                                //倍宽
	0x1b,0x66,0x00,0x02,                      //21,22,23,24                          //换行,2空格
	0xB3,0xC6,0xD6,0xD8,0xB5,0xA5,            //25~30                                //称重单 
	0x0a,                                     //31
	0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, //~~~~~~~~~~32~47
	0x0a	                                  //48
	};//表头信息  
unsigned char code DataList_5[]={
	0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E,0x7E, //~~~~~~~~~~
	0x0a,
	0xD0,0xF2,0xBA,0xC5,0x20,0xCA,0xB1,0xBC,0xE4,0x20,0xD6,0xD8,0xC1,0xBF,0x4B,0x47, //序号 时间 重量KG
 	0x0a	
	};//序号 时间 重量(表头)


                                /*打印当前记录记录*/
void print_record()             //打印当前
{
  
     WORD n;
	 BYTE i;	   //hl//要存记录的首地址
//     char status;
     n=(save_current_num-1)*0x0c+0x0010;
     for(i=0;i<45;i++)
    	{ rece_buf[i]=0;}
    dayin_biaotou();            //表头
	dayin_yonghu();             //用户
	dayin_riqi();               //日期
    cc256R(&rece_buf[0],0x0c,n);
	Delay1(5000);
	dayin_leibie(rece_buf[2]);  //打印类别
	dayin_xuhao();              //  序号(表头2)
    dayin_xinxi(&rece_buf[0], &rece_buf[6],&rece_buf[8]);
	dayin_biaowei();            //表尾

}


void dayin_xuhao(void)          //序号 时间 重量KG(表头)
{
	unsigned char i;
	BUSY = 1;
	for(i=0;i<33;i++)
	{
	 	 SendData(DataList_5[i]);
	}
}


void dayin_all(void)               //打印全部
{
	BYTE i,leibie,status;
	WORD  n;
	BYTE user[8];
	BUSY = 1;
	 for(i=0;i<45;i++)
    { rece_buf[i]=0;}
     
   Delay1(1000); 
   Delay1(100);
   Delay1(1000); 
   Delay1(100);
   status=cc256R(&rece_buf[0] , 0x16, 0x0003); 
   Delay1(1000); 
   Delay1(100);	
   leibie=rece_buf[9];
   for(i=0;i<8;i++)
   
     user[i]=rece_buf[1+i];
     
    for(i=0;i<8;i++)
     {DataList_4[10+i] = user[i] ;} 
     
     dayin_biaotou();                 //表头1
	 dayin_riqi();                   //日期
	 dayin_leibie(leibie);
	 dayin_zongci(save_current_num);
	 dayin_zongzhong(all_weight);
	 dayin_xuhao();                 //序号(表头2)
	
     for(i=save_current_num;i<=save_current_num;i--)  
     {
      rece_buf[0]=i;
      n=(i-1)*0x16+0x0013;
      status=cc256R(&rece_buf[1] , 0x06, n); 
      dayin_xinxi(&rece_buf[0],&rece_buf[1],&rece_buf[5]);
      Delay1(1000); 
	  if(i==1)  i=0;
     } 
   
	
	dayin_biaowei();            //表尾
}


void dayin_biaotou(void)                //打印表头
{
	unsigned char i;
	BUSY = 1;
	for(i=0;i<49;i++)
	{
	 	 SendData(DataList_4[i]);
	}	
}
void dayin_biaowei(void)                //打印表尾
{
	unsigned char i;
	BUSY = 1;
	for(i=0;i<30;i++)
	{
	 	 SendData(DataList_1[i]);
	}	
}
void dayin_shijian(BYTE *time)          //打印时间
{
    BYTE shiwei,gewei; 
	hanzi_fanxiang();
	SendData(0x20);                     //空格
	shiwei =0x30+(*time)/10;
    gewei = 0x30+(*time)%10;
	SendData(shiwei);
	SendData(gewei);
	SendData(0x3a);                     //:
	shiwei =0x30+(*(time+1))/10;
    gewei = 0x30+(*(time+1))%10;
	SendData(shiwei);
	SendData(gewei);
	SendData(0x20);                     //空格

}


void dayin_zongci(WORD p_data)          //打印总次
{
	hanzi_fanxiang();

	set_pizhong_num_address_bydata(p_data) ;
   	Delay1(5000);

   if(save_pizhong_buffer.wanwei==0x20)  save_pizhong_buffer.wanwei=0x30;
   if(save_pizhong_buffer.qianwei==0x20)  save_pizhong_buffer.qianwei=0x30;
   if(save_pizhong_buffer.baiwei==0x20)  save_pizhong_buffer.baiwei=0x30;
   if(save_pizhong_buffer.shiwei==0x20)  save_pizhong_buffer.shiwei=0x30;
 
	
	SendData(0xd7);     //总
	SendData(0xdc);
	SendData(0xb4);     //次
	SendData(0xce);
	SendData(0x3a);     //:
    SendData(save_pizhong_buffer.wanwei);
	SendData(save_pizhong_buffer.qianwei);
	SendData(save_pizhong_buffer.baiwei);
	SendData(save_pizhong_buffer.shiwei);
	SendData(save_pizhong_buffer.gewei);
	SendData(0x0a);     //换行
}

void dayin_zongzhong(long int p_data)          //打印总重
{
	hanzi_fanxiang();

    set_zongzhong_num_address_bydata(p_data);
	Delay1(5000);

	SendData(0xd7);     //总
	SendData(0xdc);
	SendData(0xd6);     //重
	SendData(0xd8);
	SendData(0x3a);     //:
	SendData(save_type_buffer.baiwei);
    SendData(save_type_buffer.shiwei);
	SendData(save_type_buffer.gewei);
	SendData(save_pizhong_buffer.baiwanwei);
	SendData(save_pizhong_buffer.shiwanwei);
	SendData(save_pizhong_buffer.wanwei);
    SendData(save_pizhong_buffer.qianwei);
	SendData(save_pizhong_buffer.baiwei);
	SendData(save_pizhong_buffer.shiwei);
	SendData(save_pizhong_buffer.gewei);
	SendData(0x0a);      //换行

}

void dayin_leibie(BYTE p_data)          //打印类别
{
   BYTE tem_1,tem_2;
	
   hanzi_fanxiang();
   tem_1 = p_data / 100;
   tem_2 = p_data - tem_1 * 100;
   save_type_buffer.baiwei = 0x30 + tem_1;
   save_type_buffer.shiwei = 0x30 + tem_2/10;
   save_type_buffer.gewei  = 0x30 + (p_data - tem_1 * 100 - (tem_2/10) * 10);    

	SendData(0xc0);     //类
	SendData(0xe0);
	SendData(0xb1);     //别
	SendData(0xf0);
	SendData(0x3a);     //:
	SendData(save_type_buffer.baiwei);
	SendData(save_type_buffer.shiwei);
	SendData(save_type_buffer.gewei);
	SendData(0x0a);     //换行

}
void hanzi_fanxiang(void)   //汉字,16*16,反向
{
	SendData(0x1c);
	SendData(0x26);
	SendData(0x1c);
	SendData(0x69);
	SendData(0x00);	
	SendData(0x1b);
	SendData(0x63);
	SendData(0x00);
}

void huanhang_dayin(void)    //换行
{
	SendData(0x0a);
}

void  dayin_yonghu()          //打印用户 
{
   hanzi_fanxiang();
   SendData(0xd3);     //用
   SendData(0xc3);
   SendData(0xbb);     //户
   SendData(0xa7);
   SendData(0x3a);     //:
   cc256R(&rece_buf[0],0x08,0x0007); 
   Delay1(5000);
   SendData(rece_buf[0]);
   SendData(rece_buf[1]);
   SendData(rece_buf[2]);
   SendData(rece_buf[3]);
   SendData(rece_buf[4]);	
   SendData(rece_buf[5]);
   SendData(rece_buf[6]);
   SendData(rece_buf[7]);
   SendData(0x0a);        //换行

}

void dayin_xinxi(BYTE *sequence_num,BYTE *time,BYTE *weight)        //存储信息
{
   
    long int  sequence_num_temp;
	long int  weight_temp ;               
  
	sequence_num_temp= (*sequence_num)*0x100 + *(sequence_num+1);

 	weight_temp= (*weight)*0x1000000+(*(weight+1))*0x10000+(*(weight+2))*0x100+(*(weight+3));

	set_pizhong_num_address_bydata(sequence_num_temp) ;
   
   if(save_pizhong_buffer.wanwei==0x20)  save_pizhong_buffer.wanwei=0x30;
   if(save_pizhong_buffer.qianwei==0x20)  save_pizhong_buffer.qianwei=0x30;
   if(save_pizhong_buffer.baiwei==0x20)  save_pizhong_buffer.baiwei=0x30;
   if(save_pizhong_buffer.shiwei==0x20)  save_pizhong_buffer.shiwei=0x30;
 
	//SendData(save_pizhong_buffer.wanwei);    //屏蔽以后,打印的序号为3位数
    //SendData(save_pizhong_buffer.qianwei);
	SendData(save_pizhong_buffer.baiwei);
	SendData(save_pizhong_buffer.shiwei);
	SendData(save_pizhong_buffer.gewei);

	dayin_shijian(time);

	set_pizhong_num_address_bydata(weight_temp) ;
	SendData(save_pizhong_buffer.shiwanwei);
	SendData(save_pizhong_buffer.wanwei);
	SendData(save_pizhong_buffer.qianwei);
	SendData(save_pizhong_buffer.baiwei);
	SendData(save_pizhong_buffer.shiwei);
	SendData(save_pizhong_buffer.gewei);

	SendData(0x0a);        //换行
}

void dayin_riqi(void)           //打印日期
{
	hanzi_fanxiang();
	SendData(0xc8);    //日
	SendData(0xd5);
	SendData(0xc6);    //期
	SendData(0xda);
	SendData(0x3a);    //:
	
	Get_1302(&data_to_1302);
    get_date_from_1302_data(&data_to_1302);
	SendData(0x32);    //2
	SendData(0x30);    //0
	SendData(year_buffer.shiwei);
	SendData(year_buffer.gewei);
	SendData(0x2e);     //.
	SendData(month_buffer.shiwei);
	SendData(month_buffer.gewei);
	SendData(0x2e);     //.
	SendData(day_buffer.shiwei);
	SendData(day_buffer.gewei);
    SendData(0x0a);     //换行
}

void delay(void)         //延时,主程序调用了                                
{ 
	unsigned char m,n,s; 
    for(m=20;m>0;m--)
    for(n=20;n>0;n--) 
    for(s=248;s>0;s--); 
} 

void dayin_huizong(void)         //打印汇总
{
    WORD i,n;
	WORD  num=0;
	long int all_leibie_weight=0;
	long int weight_temp=0;
    dayin_biaotou();             //表头1
	dayin_yonghu();              //用户
	dayin_riqi();                //日期
	dayin_leibie(save_current_type);

	for(i=save_current_num;i<=save_current_num;i--)  
	 { 
		  n=(i-1)*0x0c+0x0010+0x0002;
    	  cc256R(&rece_buf[2] , 0x01, n);
		  Delay1(5000);
		  if(rece_buf[2]==save_current_type)
	    	{
				num++;
				Delay1(5000);
			}
		  if(i==1)  i=0;
	 }
	 dayin_zongci(num);             //打印总次
	 dayin_xuhao();                 //序号(表头2)
     for(i=save_current_num;i<=save_current_num;i--)  
     {
      rece_buf[0]=i>>8;
	  rece_buf[1]=i;
      n=(i-1)*0x0c+0x0010+0x0002;

      cc256R(&rece_buf[2] , 0x01, n);
	  Delay1(5000);
	  if(rece_buf[2]==save_current_type)
	    {
	    cc256R(&rece_buf[2] , 0x06, n+4);
		Delay1(5000);
		weight_temp=rece_buf[4]*0x1000000+rece_buf[5]*0x10000+ rece_buf[6]*0x100+rece_buf[7]; 
		all_leibie_weight+=weight_temp;
		Delay1(5000);
		dayin_xinxi(&rece_buf[0],&rece_buf[2],&rece_buf[4]); 
		Delay1(5000);
		}
	  else continue;
	  if(i==1)  i=0;
     } 

    dayin_zongzhong(all_leibie_weight);
	 Delay1(5000);

	dayin_biaowei();
}

⌨️ 快捷键说明

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