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

📄 disp.c

📁 液晶静态显示程序,有使用都可提供原理图
💻 C
📖 第 1 页 / 共 3 页
字号:
		else
		{
			keyb_num[0]=keynumdata[17];//"Hand"			
		}
		keyb_num[1]=keynumdata[27];
		if(state2==4)
		{
			keyb_num[2]=keynumdata[6];
			keyb_num[3]=keynumdata[0]; //06-H
 	   }
		else
		{
			keyb_num[2]=keynumdata[27];
			keyb_num[3]=keynumdata[3];  //3--H
 	   }
		keyb_num[4]=0x02;
	}
}
/***************************************************************
*  功能:显示选择的打印机
***************************************************************/
void  disp_printselect(uchar  gunidid)
{
	if(gunidid==0)  //枪0
	{	
		keya_num[0]=keynumdata[pirnt_select_a+1];
		keya_num[1]=keynumdata[27];
		if(state1==4)
		{
			keya_num[2]=keynumdata[7];
			keya_num[3]=keynumdata[0];  //"07-1"
		}
		else
		{
			keya_num[2]=keynumdata[27];
			keya_num[3]=keynumdata[4];  //"4--1"
		}
		keya_num[4]=0x02;
		
	}
	else  //gunidid==1
	{
		keyb_num[0]=keynumdata[pirnt_select_b+1];
		keyb_num[1]=keynumdata[27];
		if(state2==4)
		{
			keyb_num[2]=keynumdata[7];
			keyb_num[3]=keynumdata[0];  //"07-1"
		}
		else
		{
			keyb_num[2]=keynumdata[27];
			keyb_num[3]=keynumdata[4];  //"4--1"
		}
		keyb_num[4]=0x02;
	}
}
/***************************************************************
*  功能:显示选择的油品
***************************************************************/
void  disp_product(uchar  gunidid)
{
	if(gunidid==0)  //枪0
	{	
		keya_num[0]=keynumdata[oil_types_a];
		keya_num[1]=keynumdata[27];
		keya_num[2]=keynumdata[27];
		keya_num[3]=keynumdata[2];  //"Pr-0"
		keya_num[4]=0x02;
		
	}
	else
	{
		keyb_num[0]=keynumdata[oil_types_b];
		keyb_num[1]=keynumdata[27];
		keyb_num[2]=keynumdata[27];
		keyb_num[3]=keynumdata[2];  //"Pr-1"
		keyb_num[4]=0x02;
	}
}
/***************************************************************
*  功能:lcd1/lcd2显示--清屏
***************************************************************/
void  disp_lcd_clear(uchar  gunidid)
{  uchar  dispmem[16];
   uchar i;
   uchar *ptr;
   for(i=0;i<16;i++)
	{
		dispmem[i]=0x0f;
	}
	ptr=&dispmem;
	disp_out(gunidid,ptr,8);
	dispmem[0+8]=0xff;
	disp_out(gunidid,ptr,6);
}
/***************************************************************
*  功能:显示设置的单价
***************************************************************/
void  disp_setprice(uchar  gunidid)
{  uchar  i;
xdata	uchar  dispmem[16];
	uchar *ptr;
	ulong  mn;
	union
	{
		ulong  x;
		uchar  c[4];
	}temp;
	//-------------------
	for(i=0;i<16;i++)
	{
		dispmem[i]=0x0f;
	}
	ptr=&dispmem;
	disp_out(gunidid,ptr,8);
	//--------------------------
	if(gunidid==0)  //枪0
	{	
		keya_num[0]=keynumdata[23];
		keya_num[1]=keynumdata[23];
		keya_num[2]=keynumdata[27];
		keya_num[3]=keynumdata[1];  //"1-PP"
		keya_num[4]=0x02;
		
		mn=price_a;  
		for(i=0;i<6;i++)
		{
			dispmem[i]=mn%10;mn/=10;
		}
		temp.x=price_a;
		table_buf[3]=temp.c[3];
		table_buf[2]=temp.c[2];
		table_buf[1]=temp.c[1];
		table_buf[0]=temp.c[0];
		
		
		for(i=5;i>0;i--)
		{  if(i==dota_data[4])break;
			if(dispmem[i]==0) dispmem[i]=0x0f;
			else  break;
		}
		
	}
	else
	{
		keyb_num[0]=keynumdata[23];
		keyb_num[1]=keynumdata[23];
		keyb_num[2]=keynumdata[27];
		keyb_num[3]=keynumdata[1];  //"1-PP"
		keyb_num[4]=0x02;
		
		mn=price_b;  
		for(i=0;i<6;i++)
		{
			dispmem[i]=mn%10;mn/=10;
		}

		temp.x=price_b;
		table_buf[3+53]=temp.c[3];
		table_buf[2+53]=temp.c[2];
		table_buf[1+53]=temp.c[1];
		table_buf[0+53]=temp.c[0];
		
		for(i=5;i>0;i--)
		{  if(i==dotb_data[4])break;
			if(dispmem[i]==0) dispmem[i]=0x0f;
			else  break;
		}		
		
	}	
	if(gunidid==0)bbyte=dota_data[4];   
	else bbyte=dotb_data[4];
	if(bbyte==2)dispmem[0+8]=0xcf;//空位
	else if(bbyte==3)dispmem[0+8]=0xfc;//空位
	else dispmem[0+8]=0xff;//空位
	

	dispmem[10]=dotmem[bbyte];
	ptr=&dispmem;
	disp_out(gunidid,ptr,6);
}
/***************************************************************
*  功能:显示加油菜单项--1#
***************************************************************/
void disp_memu1_oil(void)
{
	switch(menu1)
	{
		case 1:   //查询前十次加油记录			
			disp_eeprom_history(0,0);
			break;
		case 2:  //查询时钟
			Get1302();
			disp_time(0);
			break;
		case 3:  //锁机
			disp_lock_a();
			break;		
		case 4:  //修改锁机密码
		  	disp_lock_a();
			break;
		case 5:   //显示版本号
			disp_ver(0);
			break;
		case 6:   //设置打印机工作方式  "Auto"戓"Hand"   00--[Auto]自动 01--[Hand]手动
			disp_printer_mode(0);
			writebyte(92,printermode_a);
			save_ok=1;
			break;
		case 7:   //选择打印机,"P--0/1"
			disp_printselect(0);
			writebyte(93,pirnt_select_a);
			save_ok=1;
			break;
		default:
			break;
	}
}
/***************************************************************
*  功能:显示加油菜单项--2#
***************************************************************/
void disp_memu2_oil(void)
{
	switch(menu2)
	{
		case 1:   //查询前十次加油记录			
			disp_eeprom_history(1,0);
			break;
		case 2:  //查询时钟
			Get1302();
			disp_time(1);
			break;
		case 3:  //锁机
			disp_lock_b();
			break;		
		case 4:  //修改锁机密码
		  	disp_lock_b();
			break;
		case 5:   //显示版本号
			disp_ver(1);
			break;
		case 6:   //设置打印机工作方式  "Auto"戓"Hand"   00--[Auto]自动 01--[Hand]手动
			#if  GUNJLMODE>2//单计量时
				printermode_a=printermode_b;
				writebyte(92,printermode_a);
				save_ok=1;
			#endif
			disp_printer_mode(1);
			writebyte(99,printermode_b);
			save_ok=1;
			break;
		case 7:   //选择打印机,"P--0/1"
			#if  GUNJLMODE>2//单计量时
				printermode_a=printermode_b;
				writebyte(93,pirnt_select_a);
				save_ok=1;
			#endif
			disp_printselect(1);
			writebyte(100,pirnt_select_b);
			save_ok=1;
			break;
		default:
			break;
	}
}
/***************************************************************
*  功能:显示设置菜单项--1#
***************************************************************/
void disp_memu1_set(void)
{  void  *pt;
	if(menu1==7) menu1=8;  
	switch(menu1)
	{
		case 1:   //设置单价"00-P"
			disp_setprice(0);
			if(price_a>0)
			{
				pt=&price_a;
				writebyteseq(498,pt,4);   //保存单价
				save_ok=1;
				table_buf[52] |=0x01;  //通知读单价
			}
			else 
			{
				pt=&(price_a); 
				readbyteseq(498,pt,4);//单价a
			}
			break;
		case 2: //油品
 	      if(oil_types_a>7) oil_types_a=0;
			disp_lcd_clear(0);  //清屏
			disp_product(0);
			writebyte(78,oil_types_a);
			save_ok=1;
			break;
		case 3:   //设置打印机工作方式  "Auto"戓"Hand"   00--[Auto]自动 01--[Hand]手动
			disp_printer_mode(0);
			writebyte(92,printermode_a);
			save_ok=1;
			break;
		case 4:   //选择打印机,"P--0/1"
			disp_printselect(0);
			writebyte(93,pirnt_select_a);
			save_ok=1;
			break;
		case 5:   //修改时钟"t--t"
			if(temp_mema==0)Get1302();
			if(temp_mema==13)Set1302();
			disp_time(0);
			break;
		case 6:   //设置提前关阀量  "2--60"
			if(residue_a>60) residue_a=60;
			disp_lcd_clear(0);  //清屏
			disp_velocity_control(0);
			writebyte(87,residue_a);
			save_ok=1;
			break;
		case 7:   //设置每秒增量 "09-3"
			
			break;		
		case 8:  //设置中控地址 "Ad-32"
			if(gunadd_a>32) gunadd_a=1;
			disp_lcd_clear(0);  //清屏
			disp_address(0);
			writebyte(89,gunadd_a);
			save_ok=1;
			break;		
		case 9:  //进入特殊菜单
			disp_pass_vital(0);
			break;
		default:
			break;
	}
}
/***************************************************************
*  功能:显示设置菜单项--2#
***************************************************************/
void disp_memu2_set(void)
{  void  *pt;
   
   if(menu2==7) menu2=8; 	
	switch(menu2)
	{
		case 1:   //设置单价"00-P"
			disp_setprice(1);
			if(price_b>0)
			{
				#if  GUNJLMODE>2//单计量时
      			price_a=price_b; 
					pt=&price_a;
					writebyteseq(498,pt,4);   //保存单价
					save_ok=1;
					table_buf[52] |=0x01;  //通知读单价
				#endif
				pt=&price_b;
				writebyteseq(502,pt,4);   //保存单价
				save_ok=1;
				table_buf[52+53] |=0x01;
			}
			else
			{
				pt=&(price_b);  
				readbyteseq(502,pt,4);//单价b
			}
			break;
		case 2:   //油品
			#if  GUNJLMODE>2//单计量时
				oil_types_a=oil_types_b;
				disp_lcd_clear(0);  //清屏
				disp_product(0);
				writebyte(78,oil_types_a);
				save_ok=1;
			#endif
		   if(oil_types_b>7) oil_types_b=0;
			disp_lcd_clear(1);  //清屏
 	      disp_product(1);
			writebyte(79,oil_types_b);
			save_ok=1;
			break;
		case 3:   //设置打印机工作方式  "Auto"戓"Hand"   00--[Auto]自动 01--[Hand]手动
			#if  GUNJLMODE>2//单计量时
				printermode_a=printermode_b;
				writebyte(92,printermode_a);
				save_ok=1;
			#endif
			disp_printer_mode(1);
			writebyte(99,printermode_b);
			save_ok=1;
			break;
		case 4:   //选择打印机,"P--0/1"
			#if  GUNJLMODE>2//单计量时
				printermode_a=printermode_b;
				writebyte(93,pirnt_select_a);
				save_ok=1;
			#endif
			disp_printselect(1);
			writebyte(100,pirnt_select_b);
			save_ok=1;
			break;
		case 5:   //修改时钟"t--t"
			if(temp_mema==0)Get1302();
			if(temp_mema==13)Set1302();
			disp_time(1);
			break;
		case 6:   //设置提前关阀量  "2--60"
			#if  GUNJLMODE>2//单计量时
				residue_a=residue_b;
				writebyte(87,residue_a);
			#endif
			if(residue_b>60) residue_b=60;
			disp_lcd_clear(1);  //清屏
			disp_velocity_control(1);
			writebyte(94,residue_b);
			save_ok=1;
			break;
		case 7:   //设置每秒增量 "09-3"
			
			break;		
		case 8:  //设置中控地址 "Ad-32"
			if(gunadd_a>32) gunadd_a=1;
			disp_lcd_clear(1);  //清屏
			disp_address(1);
			writebyte(96,gunadd_b);
			save_ok=1;
			break;		
		case 9:  //进入特殊菜单
			disp_pass_vital(1);
			break;
		default:
			break;
	}
}
/***************************************************************
*  功能:显示特殊菜单项--1#
***************************************************************/
void disp_memu1_important(void)
{  if(!setpas_a) if(menu1>2)menu1=1;
	switch(menu1)
	{
		case 1: 	//设置小数点 "08-5"
			if(decimal_a>6) decimal_a=2;
		  	disp_setdot(0);
			writebyte(90,decimal_a);
			table_buf[52] |=0x01;
			count_cnta();   //计数器与总累的校正
	  		count_cntb();   //计数器与总累的校正
			save_ok=1;
			break;
		case 2:   //设置每秒增量 "09-3"
			if(increment_a>23) increment_a=23;
			disp_lcd_clear(0);  //清屏
			disp_dilate(0);    
			writebyte(91,increment_a);
			save_ok=1;
			break;
		case 3:  	   	
			ration_mode_a=0;
			disp_total_a();
			break;
		case 4: 	   	
			ration_mode_a=1;
			disp_total_a();
			break;
		case 5: //Bare
			keya_num[0]=keynumdata[15];
			keya_num[1]=keynumdata[24];
			keya_num[2]=keynumdata[10];
			keya_num[3]=keynumdata[11];  //"bArE"
			keya_num[4]=0x02;
			break;
		default:
			break;
	}
}
/***************************************************************
*  功能:显示特殊菜单项--2#
***************************************************************/
void disp_memu2_important(void)
{  if(!setpas_b) if(menu2>2)menu2=1;
	switch(menu2)
	{  
		case 1: //设置小数点 "08-5"  
			if(decimal_b>6) decimal_b=2;
		   disp_setdot(1);
			writebyte(97,decimal_b); 
			table_buf[52+53] |=0x01;
			count_cnta();   //计数器与总累的校正
	  		count_cntb();   //计数器与总累的校正
			save_ok=1;
			break;
		case 2:   //设置每秒增量 "09-3"
			if(increment_b>23) increment_b=23;
			disp_lcd_clear(1);  //清屏
			disp_dilate(1);    
			writebyte(98,increment_b);
			save_ok=1;
			break;
		case 3: 	   	
			ration_mode_b=0;
			disp_total_b();
			break;
		case 4: 			
			ration_mode_b=1;
			disp_total_b();
			break;
		case 5:   //Bare
			keyb_num[0]=keynumdata[15];
			keyb_num[1]=keynumdata[24];
			keyb_num[2]=keynumdata[10];
			keyb_num[3]=keynumdata[11];  //"bArE"
			keyb_num[4]=0x02;
			break;
		default:
			break;
	}
}
/***************************************************************
*  功能:显示加油数据--1#
***************************************************************/
void update_lcd1(void)
{
		
	if(gun1.pulse>disp_floor_level_a)
	{			
		if(!cease_power)disp_lcd(gun1.sale,gun1.liter,0);
	}
	else
	{		
		if(!cease_power)disp_lcd(0,0,0);
	}
}
/***************************************************************
*  功能:显示加油数据--2#
***************************************************************/
void update_lcd2(void)
{
   #if  GUNJLMODE>2//单计量时
		update_lcd1();
	#else
		if(gun2.pulse>disp_floor_level_b)
		{
			if(!cease_power)disp_lcd(gun2.sale,gun2.liter,1);		
		}
		else
		{
			if(!cease_power)disp_lcd(0,0,1);
			
		}
	#endif
}
/***************************************************************
*  功能:显示密度系数
***************************************************************/
void  disp_coefficient(void)
{   ulong x;
   if(ration_num_a==0)x=coefficient_set;	
	else x=ration_num_a;
	keya_num[0]=keynumdata[x%10];x/=10;
	keya_num[1]=keynumdata[x%10];x/=10;	
	keya_num[2]=keynumdata[x%10];x/=10;
	keya_num[3]=keynumdata[x%10]+0x80;  	
}

⌨️ 快捷键说明

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