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

📄 key.c

📁 单片机控制的12864液晶显示器的驱动程序,通过按键控制
💻 C
📖 第 1 页 / 共 3 页
字号:
			ShowOneChar(z_zhang,0,4,14);
		}		
		if((ErrorTemp&0x20)==0)
		{
			ShowOneChar(z_zhen,0,6,12);
			ShowOneChar(z_chang,0,6,14);
		}
		else
		{
			ShowOneChar(z_gu,0,6,12);
			ShowOneChar(z_zhang,0,6,14);
		}			
}			

void FillGuZhangPage2()
{
		unsigned int ErrorShuZiTemp;
		unsigned int ErrorMoNiTemp;
		ErrorShuZiTemp=DataRead25045EEROM(SAVEGUZHANG_ADD);
		ErrorMoNiTemp=DataRead25045EEROM(SAVEGUZHANG_ADD+2);
		Fill4NULL(2,15);
		Fill4NULL(4,15);
		Fill4NULL(6,15);
		if((ErrorShuZiTemp&0x40)!=0||(ErrorMoNiTemp&0x900)!=0)
		{
			ShowOneChar(z_guo,0,2,12);
			ShowOneChar(z_ya,0,2,14);
		}
		else if((ErrorShuZiTemp&0x80)!=0||(ErrorMoNiTemp&0x24!=0))
		{
			ShowOneChar(z_qian,0,2,12);
			ShowOneChar(z_ya,0,2,14);
		}
		else
		{
			ShowOneChar(z_zhen,0,2,12);
			ShowOneChar(z_chang,0,2,14);
		}

		if((ErrorShuZiTemp&0x100)!=0||(ErrorMoNiTemp&0x1200)!=0)
		{
			ShowOneChar(z_guo,0,4,12);
			ShowOneChar(z_ya,0,4,14);
		}
		else if((ErrorShuZiTemp&0x200)!=0||(ErrorMoNiTemp&0x48)!=0)
		{
			ShowOneChar(z_qian,0,4,12);
			ShowOneChar(z_ya,0,4,14);
		}
		else
		{
			ShowOneChar(z_zhen,0,4,12);
			ShowOneChar(z_chang,0,4,14);
		}

		if((ErrorShuZiTemp&0x400)!=0||(ErrorMoNiTemp&0x2400)!=0)
		{
			ShowOneChar(z_guo,0,6,12);
			ShowOneChar(z_ya,0,6,14);
		}
		else if((ErrorShuZiTemp&0x800)!=0||(ErrorMoNiTemp&0x90)!=0)
		{
			ShowOneChar(z_qian,0,6,12);
			ShowOneChar(z_ya,0,6,14);
		}
		else
		{
			ShowOneChar(z_zhen,0,6,12);
			ShowOneChar(z_chang,0,6,14);
		}

}

void FillGuZhangPage3()
{
		unsigned char ErrorShuZiTemp;
		unsigned int ErrorMoNiTemp;
		ErrorShuZiTemp=ByteRead25045EEROM(SAVEGUZHANG_ADD+1);	//只取高8位
		ErrorMoNiTemp=DataRead25045EEROM(SAVEGUZHANG_ADD+2);	//取2个字节
		Fill4NULL(0,15);
		Fill4NULL(2,15);
		Fill4NULL(4,15);
		Fill4NULL(6,15);
		if((ErrorMoNiTemp&0x01)!=0)
		{
			ShowOneChar(z_guo,0,0,12);
			ShowOneChar(z_ya,0,0,14);
		}
		else if((ErrorMoNiTemp&0x02)!=0)
		{
			ShowOneChar(z_qian,0,0,12);
			ShowOneChar(z_ya,0,0,14);
		}
		else
		{
			ShowOneChar(z_zhen,0,0,12);
			ShowOneChar(z_chang,0,0,14);
		}

		if((ErrorMoNiTemp&0x4000)!=0)
		{
			ShowOneChar(z_guo,0,2,12);
			ShowOneChar(z_liu,0,2,14);
		}
		else
		{
			ShowOneChar(z_zhen,0,2,12);
			ShowOneChar(z_chang,0,2,14);
		}

		if((ErrorShuZiTemp&0x10)!=0)
		{
			ShowOneChar(z_guo,0,4,12);
			ShowOneChar(z_ya,0,4,14);
		}
		else if((ErrorShuZiTemp&0x20)!=0)
		{
			ShowOneChar(z_qian,0,4,12);
			ShowOneChar(z_ya,0,4,14);
		}
		else
		{
			ShowOneChar(z_zhen,0,4,12);
			ShowOneChar(z_chang,0,4,14);
		}
		
		if((ErrorShuZiTemp&0x40)!=0)
		{
			ShowOneChar(z_guo,0,6,12);
			ShowOneChar(z_liu,0,6,14);
		}
		else
		{
			ShowOneChar(z_zhen,0,6,12);
			ShowOneChar(z_chang,0,6,14);
		}
		
}

void FillGuZhangPage4()
{
		unsigned char ErrorTemp;
		ErrorTemp=ByteRead25045EEROM(SAVEGUZHANG_ADD);
		Fill4NULL(2,15);
		Fill4NULL(4,15);
		Fill4NULL(6,15);
		if((ErrorTemp&0x01)==0)
		{
			ShowOneChar(z_zhen,0,2,12);
			ShowOneChar(z_chang,0,2,14);
		}
		else
		{
			ShowOneChar(z_guo,0,2,12);
			ShowOneChar(z_wen,0,2,14);
		}
		if((ErrorTemp&0x02)==0)
		{
			ShowOneChar(z_zhen,0,4,12);
			ShowOneChar(z_chang,0,4,14);
		}
		else
		{
			ShowOneChar(z_guo,0,4,12);
			ShowOneChar(z_wen,0,4,14);
		}		
		if((ErrorTemp&0x40)==0)
		{
			ShowOneChar(z_zhen,0,6,12);
			ShowOneChar(z_chang,0,6,14);
		}
		else
		{
			ShowOneChar(z_guo,0,6,12);
			ShowOneChar(z_wen,0,6,14);
		}			
}			

void  GetGuZhang()			//取出故障
{
		unsigned char i;
		unsigned long GuZhangCode;	//实际需要18位
		//初始化
		for(i=0;i<GUZHANGLEN;i++)		
			(ErrorStr+i) = 0;
		OneGuZhangLen = 0;		//一次故障的个数
		OneGuZhangNum = 0;
		//取出故障和故障时间
		PageWrite25045EEROM(ReadGuZhangPtr,(unsigned char *)(&GuZhangShiJian));
		PageWrite25045EEROM(ReadGuZhangPtr,(unsigned char *)(&GuZhangCode));

		if(	GuZhangCode==0)
		break;
	    
		for(i=0;i<18;i++)
		{
			if(GuZhangCode&0x01==1)
			{
					*(ErrorStr+OneGuZhangLen) = i;
					OneGuZhangLen ++;
			}
			GuZhangCode = GuZhangCode>>1;
		}
		GuZhangPageLen=(OneGuZhangLen+2)/4; //加1是为了加上第一行的时间和第二行的故障总数
		if(OneGuZhangLen%4!=0)	GuZhangPageLen=GuZhangPageLen+1;
}

void FillGuZhang()			//显示实际的故障信息,按下确定键才更新
{
		unsigned char i;
		unsigned char *MessageStartPtr;	//显示信息头地址在数组中的位置
		unsigned char xnum;		//显示的行数

		if(GuZhangPageNum >= GuZhangPageLen||GuZhangPageNum==0)
			return;
		if((GuZhangPageNum == 0)&&(GuZhangPageLen==1))//只有一页
		{	
			xnum = OneGuZhangLen;
			MessageStartPtr = ErrorStr;
		}
		else  if((GuZhangPageNum == 0)&&(GuZhangPageLen>1))	//多页中的第一页
		{
			xnum = 2;
			MessageStartPtr = ErrorStr;
			ShowOneChar(z_downArrow,FALSE,6,14);
		}

		else  if(GuZhangPageNum == GuZhangPageLen-1)		//最后一页
		{
			xnum = (OneGuZhangLen+2)%4
			MessageStartPtr = ErrorStr+(GuZhangPageNum*4-2);
			ShowOneChar(z_upArrow,FALSE,0,14);
		}
		else										//中间页
		{
			xnum = 4;
			MessageStartPtr =ErrorStr+(GuZhangPageNum*4-2);
			ShowOneChar(z_downArrow,FALSE,6,14);
			ShowOneChar(z_upArrow,FALSE,0,14);
		}
		LedFillNULL();
		for(i=0;i<xnum;i++)
		{
			FillNum(OneGuZhangNum,0,i+i,0);
			MessageBox(MESSAGE_GUZHANG+(*MessageStartPtr)*MESSAGE_GUZHANG_YNUM,MESSAGE_GUZHANG_STARTX+i+i,MESSAGE_GUZHANG_STARTY,1,MESSAGE_GUZHANG_YNUM);
			MessageStartPtr++;
			OneGuZhangNum++;
		}
}


//fill 2 null before y;y>1,在第y列前写两个字即写宽度*长度=16*32,可以认为是4个数字
void Fill4NULL(unsigned char x,unsigned char y)
{
	ShowOneHalfChar(z_NULL,FALSE,x,y);
	ShowOneHalfChar(z_NULL,FALSE,x,y-1);
	ShowOneHalfChar(z_NULL,FALSE,x,y-2);
	ShowOneHalfChar(z_NULL,FALSE,x,y-3);
}

void Fill2NULL(unsigned char x,unsigned char y)
{
	ShowOneHalfChar(z_NULL,FALSE,x,y);
	ShowOneHalfChar(z_NULL,FALSE,x,y-1);
}

/*
void FillNULL(unsigned char xnum,unsigned char ynum,unsigned char x,unsigned char y)
{
	unsigned char i;
	unsigned char j;
	for(i=0;i<xnum;i++)
		for(j=0;j<ynum;j++)
			ShowOneHalfChar(z_NULL,FALSE,x,y+i);
}
*/
void DefaultPageProcess()
{
	if(Incomedata.SourceState==00)  ShowWait();
	else  ShowCharPage(PAGE_DEFAULT,PAGE_DEFAULT_LINE,PAGE_DEFAULT_SEL);//显示默认界面	
}

/*--------------key in default page,缺省状态下有键按下的处理程序-----------------------*/
void KeyInLedDefault()
{
        FeedDog();
		switch (gKeyCode)	
        {
		case KEY_CANCEL :
				MenuLayer = LED_DEFAULT;
				DefaultPageProcess();
				FillDefault();
		break;
		case KEY_UP :
				if( MenuLayer == LED_DEFAULT)  //当前显示的是缺省状态
				{
						MenuLayer = LED_DEFAULT_4;	//菜单回到缺省状态时的累计量查询
				}
				else MenuLayer = MenuLayer - 2;
				switch(MenuLayer)
				{
				 case LED_DEFAULT:	//液晶显示缺省状态
				 	DefaultPageProcess();
					FillDefault();
				 break;
				 case LED_DEFAULT_1:	//显示缺省状态下快捷查询的输入量
    	         	ShowCharPage(PAGE_MENU_MAIN1,PAGE_MENU_MAIN1_LINE,PAGE_MENU_MAIN1_SEL);
					FillInput();
				 break;
				 case LED_DEFAULT_2:	//输出量
    	         	ShowCharPage(PAGE_MENU_MAIN2,PAGE_MENU_MAIN2_LINE,PAGE_MENU_MAIN2_SEL);
					FillOutput();
				 break;
				 case LED_DEFAULT_3:	//直流量
				 	LedFillNULL();
				 	MessageBox(MESSAGE_MENU3,MESSAGE_MENU3_STARTX,MESSAGE_MENU3_STARTY,MESSAGE_MENU3_XNUM,MESSAGE_MENU3_YNUM);
					FillDirectCurrent();
				 break;
				 case LED_DEFAULT_4:	//故障查询
				 	LedFillNULL();
				 	MessageBox(MESSAGE_MENU5,MESSAGE_MENU5_STARTX,MESSAGE_MENU5_STARTY,MESSAGE_MENU5_XNUM,MESSAGE_MENU5_YNUM);
					FillGuZhangCode();
				 break;
				}
		break;
		case KEY_DOWN :
				if( MenuLayer == LED_DEFAULT_4)
				{
						MenuLayer = LED_DEFAULT;
				}
				else MenuLayer = MenuLayer + 2;
				switch(MenuLayer)
				{
				 case LED_DEFAULT:		//液晶显示缺省状态
					DefaultPageProcess();
					FillDefault();
				 break;
				 case LED_DEFAULT_1:	//显示缺省状态下快捷查询的输入量
    	         	ShowCharPage(PAGE_MENU_MAIN1,PAGE_MENU_MAIN1_LINE,PAGE_MENU_MAIN1_SEL);
					FillInput();
				 break;
				 case LED_DEFAULT_2:	//输出量
    	         	ShowCharPage(PAGE_MENU_MAIN2,PAGE_MENU_MAIN2_LINE,PAGE_MENU_MAIN2_SEL);
					FillOutput();
				 break;
				 case LED_DEFAULT_3:	//直流量
				 	LedFillNULL();
				 	MessageBox(MESSAGE_MENU3,MESSAGE_MENU3_STARTX,MESSAGE_MENU3_STARTY,MESSAGE_MENU3_XNUM,MESSAGE_MENU3_YNUM);
					FillDirectCurrent();
				 break;
				 case LED_DEFAULT_4:	//故障查询
				 	LedFillNULL();
				 	MessageBox(MESSAGE_MENU5,MESSAGE_MENU5_STARTX,MESSAGE_MENU5_STARTY,MESSAGE_MENU5_XNUM,MESSAGE_MENU5_YNUM);
					FillGuZhangCode();
				}
		break;
        case KEY_OK :
                MenuLayer  = LED_MENU_MAIN;
                MenuSelect = PAGE_MENU_MAIN_SEL;
                ShowCharPage(PAGE_MENU_MAIN,PAGE_MENU_MAIN_LINE,PAGE_MENU_MAIN_SEL);
        break;
        case KEY_UPDATE:
				switch(MenuLayer)
				{
				case LED_DEFAULT:
	 	 				if(IsUpdateLed==TRUE)  
						{
							DefaultPageProcess();
							IsUpdateLed  = FALSE;
						}
						FillDefault();
				 break;
				 case LED_DEFAULT_1:	//显示缺省状态下快捷查询的输入量
				 		if(IsUpdateLed==TRUE)
						{
    	         			ShowCharPage(PAGE_MENU_MAIN1,PAGE_MENU_MAIN1_LINE,PAGE_MENU_MAIN1_SEL);
							IsUpdateLed  = FALSE;
						}	
						FillInput();
				 break;
				 case LED_DEFAULT_2:	//输出量
				 		if(IsUpdateLed==TRUE)
						{
    	         			ShowCharPage(PAGE_MENU_MAIN2,PAGE_MENU_MAIN2_LINE,PAGE_MENU_MAIN2_SEL);
							IsUpdateLed  = FALSE;
						}
						FillOutput();

⌨️ 快捷键说明

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