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

📄 s6b0108.i

📁 电表解决方案概要power_meter_r8c2g_source_code
💻 I
📖 第 1 页 / 共 4 页
字号:



















 



void Delay(int t)
{
	while(--t);
}

 



void Long_Delay(int t)
{
	int n = 0xff;
	
	while(--t)
	{
		while(--n);
		n = 0xff;
	}
}

 







unsigned char Data_Convert(unsigned char lcd_data)
{
  Lcd_Byte_0.lcd_byte				  = lcd_data;
  Lcd_Byte_1.lcd_byte				  = lcd_data;
  
  Lcd_Byte_0.lcd_byte				  &= 0x0f;
  Lcd_Byte_1.lcd_byte				  &= 0xf0;
    
  Lcd_Byte_0.lcd_bit.lb7				  = Lcd_Byte_0.lcd_bit.lb0				 			 ;						 
  Lcd_Byte_0.lcd_bit.lb6				  = Lcd_Byte_0.lcd_bit.lb1				  ;  
  Lcd_Byte_0.lcd_bit.lb5				  = Lcd_Byte_0.lcd_bit.lb2				  ;
  Lcd_Byte_0.lcd_bit.lb4				  = Lcd_Byte_0.lcd_bit.lb3				  ;
  
  Lcd_Byte_0.lcd_byte				  &= 0xf0;
  
  Lcd_Byte_0.lcd_byte				  = Lcd_Byte_0.lcd_byte				  >> 4;	   
  Lcd_Byte_2.lcd_byte				  = Lcd_Byte_0.lcd_byte				  |  Lcd_Byte_1.lcd_byte				  ;	 	 

  return Lcd_Byte_2.lcd_byte				  ;							 
  
}

 







void Write_0108_Reg(unsigned char Reg_Code)
{
	unsigned char bus_low;
	unsigned char bus_high;
	
	bus_low = bus_high = Data_Convert(Reg_Code);		 
	
	bus_low &= 0x0f;				 
	bus_high &= 0xf0;
	
	bus_high = bus_high >> 4;		
		
	p6_addr.bit.b2				 					  = 0;							 
 
	p0_addr.byte					 	 &= 0xf0;
	p1_addr.byte					  &= 0xf0;
	p0_addr.byte					 	 |= bus_low;
	p1_addr.byte					  |= bus_high;
	p0_addr.bit.b4				 						  = 1;
	p0_addr.bit.b4				 						  = 0;
}

 







void Write_0108_Data(unsigned char Bus_Data)
{
	unsigned char bus_low;
	unsigned char bus_high;
	
	bus_low = bus_high = Data_Convert(Bus_Data);		 
	
	bus_low &= 0x0f;
	bus_high &= 0xf0;
	
	bus_high = bus_high >> 4;
			
	p6_addr.bit.b2				 					  = 1;						 
 
 
	p0_addr.byte					 	 &= 0xf0;
	p1_addr.byte					  &= 0xf0;
	p0_addr.byte					 	 |= bus_low;
	p1_addr.byte					  |= bus_high;
	p0_addr.bit.b4				 						  = 1;
 
	p0_addr.bit.b4				 						  = 0;
}

 







unsigned char Read_0108_Data()
{
	unsigned char Bus_Data_0;
	unsigned char Bus_Data_1;
	
	p6_addr.bit.b2				 					  = 1;
 
	p0_addr.byte					 	 &= 0xf0;
	p1_addr.byte					  &= 0xf0;	
	p0_addr.bit.b4				 						  = 1;						 
	Bus_Data_1 = p1_addr.byte					  ;
	Bus_Data_0 = p0_addr.byte					 	 ;
	p0_addr.bit.b4				 						  = 0;						 
	
	Bus_Data_1 = Bus_Data_1 << 4;	
	Bus_Data_0 &= 	0xf0;
	Bus_Data_0 |= Bus_Data_1;
	
	return Bus_Data_0;
	
}

 







void Set_XY(unsigned char X_Column,  unsigned char Y_Page)
{
	Write_0108_Reg(0xB8			  +Y_Page);
	Write_0108_Reg(0x40			  +X_Column);
}

 







void Init_0108()
{
	Delay(100);
	p0_addr.bit.b5				 					  =0;					 
	p6_addr.bit.b1				 					  =0;
	Delay(100);
	Write_0108_Reg(0x3E			  );
	Write_0108_Reg(0xC0			  );
	Write_0108_Reg(0xB8			  );
	Write_0108_Reg(0x40			  );
	Write_0108_Reg(0x3F			  );
	Delay(100);
	p0_addr.bit.b5				 					  =0;					 
	p6_addr.bit.b1				 					  =1;
	Delay(100);
	Write_0108_Reg(0x3E			  );
	Write_0108_Reg(0xC0			  );
	Write_0108_Reg(0xB8			  );
	Write_0108_Reg(0x40			  );
	Write_0108_Reg(0x3F			  );
	Delay(100);
	p0_addr.bit.b5				 					  =1;					 
	p6_addr.bit.b1				 					  =0;
	Delay(100);
	Write_0108_Reg(0x3E			  );
	Write_0108_Reg(0xC0			  );
	Write_0108_Reg(0xB8			  );
	Write_0108_Reg(0x40			  );
	Write_0108_Reg(0x3F			  );
		
}


 






void Clr_Screen_0()
{
	unsigned char j, k;
	unsigned int n=0;

	p0_addr.bit.b5				 					  =0;
	p6_addr.bit.b1				 					  =0;
	Delay(100);
	for(k=0;k<8;k++)
	{
		Write_0108_Reg(0xB8			  +k);				 
		Write_0108_Reg(0x40			  );				 
		Write_0108_Reg(0xC0			  );		 
		
		for(j=0;j<64;j++) 
		{
			Write_0108_Data(0x00);				 
			n++;
		}
		
	}
}

 







void Clr_Screen_1()
{
	unsigned char j, k;
	unsigned int n=0;

	p0_addr.bit.b5				 					  =0;
	p6_addr.bit.b1				 					  =1;
	Delay(100);
	for(k=0;k<8;k++)
	{
		Write_0108_Reg(0xB8			  +k);
		Write_0108_Reg(0x40			  );
		Write_0108_Reg(0xC0			  );
		
		for(j=0;j<64;j++) 
		{
			Write_0108_Data(0x00);
			n++;
		}
		
	}
}

 







void Clr_Screen_2()
{
	unsigned char j, k;
	unsigned int n=0;

	p0_addr.bit.b5				 					  =1;
	p6_addr.bit.b1				 					  =0;
	Delay(100);
	for(k=0;k<8;k++)
	{
		Write_0108_Reg(0xB8			  +k);
		Write_0108_Reg(0x40			  );		
		Write_0108_Reg(0xC0			  );
		
		for(j=0;j<64;j++) 
		{
			Write_0108_Data(0x00);
			n++;
		}
		
	}
}

 















void Set_Char(unsigned char cs, unsigned char page, unsigned char num, unsigned char far * bitmap)		 
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	
	unsigned char a,b;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);	
	
	Write_0108_Reg(0xB8			  + page);					 
	Write_0108_Reg(0x40			  + num);					 
	Write_0108_Reg(0xC0			  );					 
	
	if (page == 2)					 
	 {
		for(j=0;j<8;j++) 
	 	 {
			 
			b = bitmap[n];
			a = b | 0x01;
			Write_0108_Data(a);					
			n++;
	 	 }
	 }
	else 
	 {
		for(j=0;j<8;j++) 
	 	 {
			Write_0108_Data(bitmap[n]);
			n++;
	 	 }		 
	 }
	
	page += 1;
	
	Write_0108_Reg(0xB8			  + page);
	Write_0108_Reg(0x40			  + num);
	
	if (page == 7)					 
	 {
		for(j=0;j<8;j++) 
	 	 {
			 
			b = bitmap[n];
			a = b | 0x80;
			Write_0108_Data(a);					
			n++;
	 	 }
	 }
	else 
	 {
		for(j=0;j<8;j++) 
	 	 {
			Write_0108_Data(bitmap[n]);
			n++;
	 	 }		 
	 }
	 
}


 















void Set_Caracter(unsigned char cs, unsigned char page, unsigned char num, unsigned char far * bitmap)
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);
	
	Write_0108_Reg(0xB8			  + page);				 
	Write_0108_Reg(0x40			  + num * 8);			 
	Write_0108_Reg(0xC0			  );				 

	for(j=0;j<16;j++) 
	 {
		Write_0108_Data(bitmap[n]);
		n++;
	 }
	
	page += 1;
	
	Write_0108_Reg(0xB8			  + page);				 
	Write_0108_Reg(0x40			  + num * 8);
	
	for(j=0;j<16;j++) 
	 {
		Write_0108_Data(bitmap[n]);
		n++;
	 }
	 
}

 











void Set_Two_Page(unsigned char cs, unsigned char page, unsigned char far * bitmap)
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);

	Write_0108_Reg(0xB8			  + page);
	Write_0108_Reg(0x40			  );
	Write_0108_Reg(0xC0			  );

	for(j=0;j<64;j++) 
	{
		if (j<63)
		Write_0108_Data(bitmap[n]);
		else 
		Write_0108_Data(~bitmap[n]);		 
		
		n++;
	}
	
	page += 1;
	
	Write_0108_Reg(0xB8			  + page);
	Write_0108_Reg(0x40			  );
	
	for(j=0;j<64;j++) 
	 {
		if (j<63)
		Write_0108_Data(bitmap[n]);
		else 
		Write_0108_Data(~bitmap[n]);		 		
		
		n++;
	 }
	 
}

 











void FSH_Set_Two_Page(unsigned char cs, unsigned char page, unsigned char far * bitmap)
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);

	Write_0108_Reg(0xB8			  + page);
	Write_0108_Reg(0x40			  );
	Write_0108_Reg(0xC0			  );

	for(j=0;j<64;j++) 
	{
		if (j<63)
		Write_0108_Data(bitmap[n]);
		else 
		Write_0108_Data(bitmap[n]);
		
		n++;
	}
	
	page += 1;
	
	Write_0108_Reg(0xB8			  + page);
	Write_0108_Reg(0x40			  );
	
	for(j=0;j<64;j++) 
	 {
		if (j<63)
		Write_0108_Data(bitmap[n]);
		else 
		Write_0108_Data(bitmap[n]);		
		
		n++;
	 }
	 
}
 











void Comp_Set_Two_Page(unsigned char cs, unsigned char page, unsigned char far * bitmap)
{
	unsigned char j;
	
	unsigned char a,b;
	unsigned int n=0;
	unsigned int i;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);

	Write_0108_Reg(0xB8			  + page);
	Write_0108_Reg(0x40			  );
	Write_0108_Reg(0xC0			  );

	if (page == 2)
	 {
		for(j=0;j<64;j++) 
		 {				 
			if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
			Write_0108_Data(bitmap[n]);
 
			else
			 {
				b = bitmap[n];
				a = b & 0xfe;
				Write_0108_Data(~a);						 				
			 }
			n++;				 
		 }
	 }	
	else if (page != 2)
	 {				 
		for(j=0;j<64;j++) 
		 {
			if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
			Write_0108_Data(bitmap[n]);
 
			else
			Write_0108_Data(~bitmap[n]);					 			 
			n++;
		 }	
	 }
	
	page += 1;
	
	Write_0108_Reg(0xB8			  + page);
	Write_0108_Reg(0x40			  );
	
	if (page == 7)
	 {
		for(j=0;j<64;j++) 
		 {				 
			if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
			Write_0108_Data(bitmap[n]);
 
			else
			 {
				b = bitmap[n];
				a = b & 0x7f;
				Write_0108_Data(~a);						 
			 }
			n++;					 
		 }
	 }		
	else if (page != 7)
	 {				 
		for(j=0;j<64;j++) 
		 {
			if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
			Write_0108_Data(bitmap[n]);
 
			else
			Write_0108_Data(~bitmap[n]);					 	 
			n++;
		 }	
	 }
}

 









void Set_Screen(unsigned char cs, unsigned char far *bitmap)
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);
	for(k=0;k<8;k++)
	{
		Write_0108_Reg(0xB8			  +k);
		Write_0108_Reg(0x40			  );
		Write_0108_Reg(0xC0			  );
		
		for(j=0;j<64;j++) 
		{
			Write_0108_Data(bitmap[n]);
			n++;
 
 
		}
		
	}
}

 













void Comp_Set_Screen(unsigned char cs, unsigned char x1, unsigned char y1, unsigned char far * bitmap)
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	unsigned char a;
	unsigned char b;
	unsigned char c;
	unsigned char d;
	
	
 
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);
	for(k=0;k<8;k++)
	{
		Write_0108_Reg(0xB8			  +k);
		Write_0108_Reg(0x40			  );
		Write_0108_Reg(0xC0			  );
		
		if ((k < x1)||(k > y1))
		 {
			for(j=0;j<64;j++) 
		 	{
				Write_0108_Data(bitmap[n]);
				n++;
		 	}
		 }
		if ((k >= x1)&&(k <= y1))				 
		 {
			if (k==2)
			 {
				for(j=0;j<64;j++) 
		 	  	{				 
					if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
					Write_0108_Data(bitmap[n]);
 
					else
					 {
						b = bitmap[n];
						a = b & 0xfe;
						Write_0108_Data(~a);						 			
					 }
					n++;				 
				}
			 }	
			 
			if (k==7)
			 {
				for(j=0;j<64;j++) 
		 	  	{				 
					if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
					Write_0108_Data(bitmap[n]);
 
					else
					 {
						b = bitmap[n];
						a = b & 0x7f;
						Write_0108_Data(~a);						 	
					 }
					n++;					 
				}
			 }			 
			
			else if ((k!=2)&&(k!=7))
			 {				 
				for(j=0;j<64;j++) 
		 	  	 {
					if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
					Write_0108_Data(bitmap[n]);
 
					else
					Write_0108_Data(~bitmap[n]);					 	
								 
					n++;
		 	  	 }	
			 }
		 }
	}
}

 













void Flash_Set_Screen(unsigned char cs, unsigned char x2, unsigned char y2, unsigned char far * bitmap)
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);
	for(k=0;k<8;k++)
	{
		Write_0108_Reg(0xB8			  +k);
		Write_0108_Reg(0x40			  );
		Write_0108_Reg(0xC0			  );
		
		if ((k < x2)||(k > y2))
		 {
			for(j=0;j<64;j++) 
		 	{
				Write_0108_Data(bitmap[n]);
				n++;
		 	}
		 }
		 
		if ((k >= x2)&&(k <= y2))				 
		 {
			if (k==2)
			 {
				for(j=0;j<64;j++) 
		 	  	{				 
					if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
					Write_0108_Data(bitmap[n]);
 
					else
					 {
						Write_0108_Data(0x01);						 		
					 }
					n++;				 
				}
			 }	
			 
			if (k==7)
			 {
				for(j=0;j<64;j++) 
		 	  	{				 
					if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
					Write_0108_Data(bitmap[n]);
 
					else
					 {
						Write_0108_Data(0x80);						 	
					 }
					n++;					 
				}
			 }			 
			
			else if ((k!=2)&&(k!=7))
			 {				 
				for(j=0;j<64;j++) 
		 	  	 {
					if((j == 0)||((j == 63)&&(cs == 0x02					  )))			 
					Write_0108_Data(bitmap[n]);
 
					else
					Write_0108_Data(0x00);							 	
								 
					n++;
		 	  	 }	
			 }
		 }		 
	}
}

 















void Change_Set_Screen(unsigned char cs, unsigned char x3, unsigned char y3, unsigned char far * new_bitmap, unsigned char far * bitmap)
{
	unsigned char j, k;
	unsigned int n=0;
	unsigned int i;
	
	if (cs == 0x00					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =0;
	 }
	else if (cs == 0x01					  )
	 {
		p0_addr.bit.b5				 					  =0;
		p6_addr.bit.b1				 					  =1;
	 }
	else if (cs == 0x02					  )
	 {
		p0_addr.bit.b5				 					  =1;
		p6_addr.bit.b1				 					  =0;
	 }
	 
	Delay(100);
	for(k=0;k<8;k++)
	{
		Write_0108_Reg(0xB8			  +k);
		Write_0108_Reg(0x40			  );
		Write_0108_Reg(0xC0			  );
		
		if ((k < x3)||(k > y3))						 
		 {
			for(j=0;j<64;j++) 
		 	{
				Write_0108_Data(bitmap[n]);
				n++;
		 	}
		 }
		if ((k >= x3)&&(k <= y3))					 
		 {
			for(j=0;j<64;j++) 
		 	{
 
 
				
 
				Write_0108_Data(new_bitmap[n-x3*64]);
				
				n++;
		 	}	
		 }
	}
}

 



 


















































































 


⌨️ 快捷键说明

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