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

📄 kb.c

📁 此程序为本人在公司开发的继电器功能测试仪
💻 C
📖 第 1 页 / 共 2 页
字号:
	#include <absacc.h>
	#include <intrins.h>
	#include "variable.h"
	#include "main.h"
	#include "lcd.h"
	#include "kb.h"
	#include "i2c.h"
	#include "ad.h"
	#include "screen.h"
	void KB_Proc(void)
	{
		static bit F_L=0;
		DA_C=0;
		if((DA_C&0XF0)!=0XF0)
		{
			delay(5000);
			if(((DA_C&0XF0)==0XF0)||F_L) return;
			F_L=1;
			DA_C=0XFE;
			switch(DA_C&0XF0)
			{
				case 0xE0: Key_Num(1);break;
				case 0xD0: Key_Num(4);break;
				case 0xB0: Key_Num(7);break;
				case 0x70: Key_Num(0);break;
			}
			DA_C=0XFD;
			switch(DA_C&0XF0)
			{
				case 0xE0: Key_Num(2); break;
				case 0xD0: Key_Num(5); break;
				case 0xB0: Key_Num(8); break;
				case 0x70: Key_Next_Page(); break;
			}
			DA_C=0XFB;
			switch(DA_C&0XF0)
			{
				case 0xE0: Key_Num(3); break;
				case 0xD0: Key_Num(6); break;
				case 0xB0: Key_Num(9); break;
				case 0x70: Key_Pre_Page(); break;
			}
			DA_C=0XF7;
			switch(DA_C&0XF0)
			{
				case 0xE0: Key_Set_Enter(); break;
				case 0xD0: Key_Next_Bit(); break;
				case 0xB0: Key_Pre_Bit(); break;
				case 0x70: 
				{
					Key_Test(); 
					if(Connect_ok)
					{
						unsigned char r;
						ES=0;
						SBUF=0x22;
						while(!TI);
						TI=0;
						for(r=0;r<12;r++)
						{
							IntToByte(Test_Data[r]);
						}
						ES=1;
					}
				} break;
			}
		}
		if(((DA_C&0XF0)==0XF0)&&F_L) F_L=0;
	}


	void Key_Set_Enter(void)
	{
		IO_B=0xFF;
		DA_Convert(0);
		SetK_Flag=!SetK_Flag;
		LCD_Clear();
		if(SetK_Flag==1)
		{		
			//Screen_Setting();
			Page_Val=1;

		}
		else
		{
			//Screen_Test();
			Page_Val=0;	
			//Ini_Read();
		}
		Screen_Setting(Page_Val);
		Screen_Read(Page_Val);
	}

	void Key_Num(unsigned char i)
	{	
		static unsigned char SetC_Flag=0;
		static bit SetV_Flag=0,SetR_Flag=0,Adjust_Flag=0;
		unsigned char z;
		if(SetK_Flag==1)
		{
			LCD_CmdWrite(0x10,0x0B);
			switch(Page_Val)
			{
				case 1:
				{
					z=Unit_Addr_L;
					Unit_Addr_L+=Dis_X;
					WRITEBYTE(0xA0,Unit_Addr_H,Unit_Addr_L,i);			
					SetP_Data[Dis_X]=i;			
					GotoXY(Set_X_1[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);	
					Unit_Addr_L=z;
				} break;
				case 2:
				{
					if((Dis_Y==2)&&(i==1))
					{
						if(Dis_X==0)
						{
							SetC_Flag++;
							if(SetC_Flag==3) SetC_Flag=0;
							if(SetC_Flag==0)
							{
								SetP_Data[0]=1;
								SetP_Data[1]=0;	
								SetP_Data[2]=0;				
							}
							if(SetC_Flag==1)
							{
								SetP_Data[0]=0;
								SetP_Data[1]=1;	
								SetP_Data[2]=0;				
							}
							if(SetC_Flag==2)
							{
								SetP_Data[0]=0;
								SetP_Data[1]=0;	
								SetP_Data[2]=1;				
							}
							WRITEDATAARRAY(3,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
							GotoXY(Set_X_2[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
							for(z=0;z<Num_Now;z++)
							{
								LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
								delay(200);
							}
							for(z=0;z<Num_Now;z++) Dis_X--;
						}
						else if(Dis_X==3)
						{
							SetR_Flag=!SetR_Flag;
							if(SetR_Flag) SetP_Data[Dis_X]=10;//1A
							else SetP_Data[Dis_X]=12;	//1C
							z=Unit_Addr_L;
							Unit_Addr_L+=Dis_X;
							WRITEBYTE(0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data[Dis_X]);
							GotoXY(Set_X_2[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
							LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
							Unit_Addr_L=z;
						}
					}
					else if((Dis_Y==2)&&(i!=1)) ;
					else
					{
						z=Unit_Addr_L;
						Unit_Addr_L+=Dis_X;
						WRITEBYTE(0xA0,Unit_Addr_H,Unit_Addr_L,i);			
						SetP_Data[Dis_X]=i;			
						GotoXY(Set_X_2[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
						Unit_Addr_L=z;	
					}
				} break;
				case 3:
				{
					if((Dis_Y==4)&&(i==1))
					{
						SetV_Flag=!SetV_Flag;
						if(SetV_Flag) 
						{
							SetP_Data[0]=2;
							SetP_Data[1]=4;
						}
						else
						{
							SetP_Data[0]=1;
							SetP_Data[1]=2;					
						}
						WRITEDATAARRAY(2,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
						GotoXY(Set_X_3[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
						for(z=0;z<Num_Now;z++)
						{
							LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
							delay(200);
						}
						for(z=0;z<Num_Now;z++) Dis_X--;
					}
					else if((Dis_Y==4)&&(i!=1)) ;
					else
					{
						z=Unit_Addr_L;
						Unit_Addr_L+=Dis_X;
						WRITEBYTE(0xA0,Unit_Addr_H,Unit_Addr_L,i);			
						SetP_Data[Dis_X]=i;			
						GotoXY(Set_X_3[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
						Unit_Addr_L=z;
					}
				} break;
				case 4:
				{
					z=Unit_Addr_L;
					Unit_Addr_L+=Dis_X;
					WRITEBYTE(0xA0,Unit_Addr_H,Unit_Addr_L,i);			
					SetP_Data[Dis_X]=i;			
					GotoXY(Set_X_4[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);	
					Unit_Addr_L=z;
				} break;
				case 7:
				{
					if((Dis_Y==1)&&(Dis_X==0)&&(i==1))
					{
						Adjust_Flag=!Adjust_Flag;
						if(Adjust_Flag==1) SetP_Data[0]=16;//+
						else SetP_Data[0]=17;//-
						WRITEBYTE(0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data[0]);
						GotoXY(Adjust[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
						//Comp_Data_T[4]=SetP_Data[0];
					}
					else if((Dis_Y==1)&&(Dis_X==0)&&(i!=1)) ;
					else
					{
						z=Unit_Addr_L;
						Unit_Addr_L+=Dis_X;
						WRITEBYTE(0xA0,Unit_Addr_H,Unit_Addr_L,i);			
						SetP_Data[Dis_X]=i;			
						GotoXY(Adjust[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
						if(Dis_Y==0)
						{
							Unit_Addr_L=86;
							READDATAARRAY(4,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
							Comp_Data[22]=SetP_Data[0]*1000+SetP_Data[1]*100+SetP_Data[2]*10+SetP_Data[3];
							DA_Convert(Comp_Data[22]*4.095/(2.4*MULTI_V));
						}
						Unit_Addr_L=z;
					}
				} break;
			}
		}
	}

	void Key_Next_Bit(void)
	{
		unsigned char i;
		if(SetK_Flag==1)
		{
			switch(Page_Val)
			{
				case 1:
				{
					if(Dis_X==0) READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);//white
					GotoXY(Set_X_1[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);
					Dis_X++;
					if(Dis_X==8) Dis_X=0;
					LCD_CmdWrite(0x10,0x0B);
					GotoXY(Set_X_1[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);
						
				} break;
			   	case 2:
				{	
					if(Dis_X==0) READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);
					GotoXY(Set_X_2[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					for(i=0;i<Num_Now;i++)
					{
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
						delay(200);
					}
					if(Num_Now==3) Num_Now=1;
					if((Dis_X==4)&&(Dis_Y==2))
					{
						Dis_X=0;
						Dis_Y=0;
						Unit_Addr_L=8;
						READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					}
					if(Dis_X==8)
					{
					 	Dis_X=0;
						Dis_Y++;
						if(Dis_Y<2)
						{
							Unit_Addr_L+=8;
							READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
						}
						else
						{
							Unit_Addr_L=82;
							READDATAARRAY(4,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
							Num_Now=3;
						}
								
					}
					LCD_CmdWrite(0x10,0x0B);
					GotoXY(Set_X_2[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					for(i=0;i<Num_Now;i++)
					{
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
						delay(200);
					}
					for(i=0;i<Num_Now;i++) Dis_X--;
				} break;
				case 3:
				{
					if(Dis_X==0) READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);
					GotoXY(Set_X_3[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					for(i=0;i<Num_Now;i++)
					{
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
						delay(200);
					}
					if(Num_Now==2) Num_Now=1;
					if((Dis_X==2)&&(Dis_Y==4))
					{
						Dis_X=0;
						Dis_Y=0;
						Unit_Addr_L=24;
						READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					}
					if(Dis_X==8)
					{
					 	Dis_X=0;
						Dis_Y++;
						if(Dis_Y<4)
						{
							Unit_Addr_L+=8;
							READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
						}
						else
						{
							Unit_Addr_L=80;
							READDATAARRAY(2,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
							Num_Now=2;
						}
								
					}
					LCD_CmdWrite(0x10,0x0B);
					GotoXY(Set_X_3[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					for(i=0;i<Num_Now;i++)
					{
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
						delay(200);
					}
					for(i=0;i<Num_Now;i++) Dis_X--;					
				} break;
				case 4:
				{
					if(Dis_X==0) READDATAARRAY(6,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);//white
					GotoXY(Set_X_4[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);
					Dis_X++;
					if(Dis_X==6)
					{
				 		Dis_X=0;
						Dis_Y++;
						Unit_Addr_L+=6;
						if(Dis_Y==4)
						{
							Dis_Y=0;
							Unit_Addr_L=56;							
						}
						READDATAARRAY(6,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
				 	}
					LCD_CmdWrite(0x10,0x0B);
					GotoXY(Set_X_4[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);					
				} break;
				case 7:
				{
					if(Dis_X==0) READDATAARRAY(4,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);//white
					GotoXY(Adjust[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);
					Dis_X++;
					if(Dis_X==4)
					{
				 		Dis_X=0;
						Dis_Y++;
						Unit_Addr_L+=4;
						if(Dis_Y==2)
						{
							Dis_Y=0;
							Unit_Addr_L=86;							
						}
						READDATAARRAY(4,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
				 	}
					LCD_CmdWrite(0x10,0x0B);
					GotoXY(Adjust[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);					
				} break;
			}
		}		
	}

	void Key_Pre_Bit(void)
	{
		unsigned char i;
		if(SetK_Flag==1)
		{
			switch(Page_Val)
			{
				case 1:
				{
					READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);//white
					GotoXY(Set_X_1[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);
					Dis_X--;
					if(Dis_X>7) Dis_X=7;
					LCD_CmdWrite(0x10,0x0B);
					GotoXY(Set_X_1[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					LCD_DataWrite(Display_Code[SetP_Data[Dis_X]]);
					delay(200);
						
				} break;
			   	case 2:
				{	
					READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);
					GotoXY(Set_X_2[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					for(i=0;i<Num_Now;i++)
					{
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
						delay(200);
					}
					for(i=0;i<Num_Now;i++) Dis_X--;
					if(Num_Now==3) Num_Now=1;
					if(Dis_X!=0)//&&(Dis_Y==0)))
					{
						Dis_X--;

						if((Dis_X==2)&&(Dis_Y==2))
						{
							Dis_X=0;
							//Dis_Y=0;
							Num_Now=3;
							//Unit_Addr_L=8;
							//READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);

						}

					}
					else if(Dis_Y==0)
					{
					 	Dis_X=3;
						Dis_Y=2;
						Unit_Addr_L=82;
						READDATAARRAY(4,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					}
					else
					{
						Dis_Y--;
						if(Dis_Y<1)
						{
							Dis_X=7;
							Unit_Addr_L-=8;
							READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
						}
						else if(Dis_Y==1) 
						{
							Dis_X=7;
							Unit_Addr_L=16;
							READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);							
						}						
					}

						/*else
						{
							Dis_X=3;
							Dis_Y=2;
							Unit_Addr_L=82;
							READDATAARRAY(4,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
							//Num_Now=3;
						}*/
								
					//}
					LCD_CmdWrite(0x10,0x0B);
					GotoXY(Set_X_2[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					for(i=0;i<Num_Now;i++)
					{
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
						delay(200);
					}
					for(i=0;i<Num_Now;i++) Dis_X--;
				} break;
				case 3:
				{
					READDATAARRAY(8,0xA0,Unit_Addr_H,Unit_Addr_L,SetP_Data);
					LCD_CmdWrite(0x10,0x2B);
					GotoXY(Set_X_3[Dis_Y][Dis_X],Loc_Y[Dis_Y]);
					for(i=0;i<Num_Now;i++)
					{
						LCD_DataWrite(Display_Code[SetP_Data[Dis_X++]]);
						delay(200);
					}
					for(i=0;i<Num_Now;i++) Dis_X--;
					Dis_X--;
					if(Num_Now==2) Num_Now=1;

⌨️ 快捷键说明

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