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

📄 setup.c

📁 指纹识别源代码,用于智能门紧,还有配合MF800卡使用
💻 C
📖 第 1 页 / 共 5 页
字号:
				setcount=readpinkeyin();
				setkeyindisp();

			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setmodedisp();
			else if(keynumber==NUMBER4)settscleardisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				ram_writep0(PINKEYIN,setcount);
				submenuflag=0;
				setkeyindisp();
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				setkeyindisp();
			}
			else if(keynumber==NUMBER6)
			{
				setcount++;
				if(setcount>=MAXKEYINSEL)setcount=0;
				setkeyindisp();
			}
			else if(keynumber==NUMBER4)
			{
				setcount--;
				if(setcount>=MAXKEYINSEL)setcount=MAXKEYINSEL-1;
				setkeyindisp();
			}
		}
	}
}
//////////////////////////////////////////////////////////////////////////////
unsigned char code tbltsday[][3]=
{
	{"HOL"},
	{"SUN"},
	{"MON"},
	{"TUE"},
	{"WED"},
	{"THU"},
	{"FRI"},
	{"SAT"}
};
//////////////////////////////////////////////////////////////////////////////
void displayts(unsigned char tsgroup,unsigned char tsindex)
{
	

	displaymessage(LMSETTSDETAIL1,LINE1);
	displayshort(tsgroup+1,2,5);

	dispbuff[0][10]=tbltsday[tsindex/5][0];
	dispbuff[0][11]=tbltsday[tsindex/5][1];
	dispbuff[0][12]=tbltsday[tsindex/5][2];

	dispbuff[0][15]=tsindex%5+0x30;
	display(LINE1);

	gettsdata(tsgroup*40+tsindex);
	displaymessage(LMSETTSDETAIL2,LINE2);
	
	dispbuff[1][1]=tempbuff[0]/10+0x30;
	dispbuff[1][2]=tempbuff[0]%10+0x30;
	dispbuff[1][4]=tempbuff[1]/10+0x30;
	dispbuff[1][5]=tempbuff[1]%10+0x30;
	dispbuff[1][9]=tempbuff[2]/10+0x30;
	dispbuff[1][10]=tempbuff[2]%10+0x30;
	dispbuff[1][12]=tempbuff[3]/10+0x30;
	dispbuff[1][13]=tempbuff[3]%10+0x30;

	display(LINE2);

}
//////////////////////////////////////////////////////////////////////////////
void settsdisp()
{
	if(!submenuflag)
	{
		setupitem=SETTS;
		displaymessage(LMTIMESCHEDULE,LINE1);
		displaymessage(LMBLANK,LINE2);
	}
	else
	{
		if(!submenu1flag)
		{
			displayts(setcount16/40,setcount16%40);
		}
		else
		{
			display(LINE2);
		}
	}
}
//////////////////////////////////////////////////////////////////////////////
unsigned char code tblsettsposi[]={1,2,4,5,9,10,12,13};
//////////////////////////////////////////////////////////////////////////////
void setts()
{
	if(keynumber==0xff)settsdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				clearsetup();
				submenuflag=1;
				settsdisp();
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setholdefdisp();
			else if(keynumber==NUMBER4)setmodeindexdisp();
		}
		else
		{
			if(!submenu1flag)
			{
				if(keynumber==ENTER)
				{
					submenu1flag=1;
					subsetcount=0;
					//here blink the cursor
					lcdcuron(tblsettsposi[subsetcount],LINE2);
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					settsdisp();
				}
				else if(keynumber==2)
				{
					setcount16-=5;
					if(setcount16>=MAXTSINDEX)setcount16+=MAXTSINDEX;
					settsdisp();
				}
				else if(keynumber==8)
				{
					setcount16+=5;
					if(setcount16>=MAXTSINDEX)setcount16=setcount16-MAXTSINDEX;
					settsdisp();
				}
				else if(keynumber==4)
				{
					setcount16--;
					if(setcount16>=MAXTSINDEX)setcount16=MAXTSINDEX-1;
					settsdisp();
				}
				else if(keynumber==6)
				{
					setcount16++;
					if(setcount16>=MAXTSINDEX)setcount16=0;
					settsdisp();
				}
				else if(keynumber==7)
				{
					setcount16-=40;
					if(setcount16>=MAXTSINDEX)setcount16=setcount16+MAXTSINDEX;
					settsdisp();
				}
				else if(keynumber==9)
				{
					setcount16+=40;
					if(setcount16>=MAXTSINDEX)setcount16-=MAXTSINDEX;
					settsdisp();
				}
				
			}
			else
			{
				
				if(keynumber==ENTER)
				{
					//do nothing 
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					settsdisp();
				}
				else
				{

					dispbuff[LINE2][tblsettsposi[subsetcount]]=keynumber+0x30;
					display(LINE2);
					
					subsetcount++;
					lcdcuron(tblsettsposi[subsetcount],LINE2);
					if(subsetcount>=8)
					{
						//here save the ts data
						checksavets(setcount16);
						submenuflag=1;
						submenu1flag=0;
						settsdisp();
					}
				}
			}
		}
	}
}
//////////////////////////////////////////////////////////////
unsigned char code tblsetholposi[]={1,2,4,5};
/////////////////////////////////////////////////////////////////////////
bit getholdata(unsigned short holindex)
{
	//unsigned char page;
	unsigned short startadd;
	if(holindex>=320)return FALSE;

	//page=holindex/128+PAGEHOLSTART;

	//startadd=holindex%128*2;
	startadd=holindex*2+PAGEHOLSTART*256;

	tempbuff[0]=ram_read(startadd,0);
	if((tempbuff[0]>12))
	{
		tempbuff[0]=0;
		ram_write(startadd,0,0);
	}
	tempbuff[1]=ram_read(startadd+1,0);
	if((tempbuff[1]>31))
	{
		tempbuff[1]=0;
		ram_write(startadd,0,0);
	}
}
/////////////////////////////////////////////////////////////////////////
void checksavehol(unsigned short holindex)
{
	//unsigned char page;
	unsigned short startadd;
	if(holindex>=320)return;
	
	//page=holindex/128+PAGEHOLSTART;

	//startadd=holindex%128*2;
	startadd=holindex*2+PAGEHOLSTART*256;
	tempbuff[0]=(dispbuff[LINE2][tblsetholposi[0]]-0x30)*10+dispbuff[LINE2][tblsetholposi[1]]-0x30;
	if(tempbuff[0]>12)return;
	tempbuff[1]=(dispbuff[LINE2][tblsetholposi[2]]-0x30)*10+dispbuff[LINE2][tblsetholposi[3]]-0x30;
	if(tempbuff[0]>31)return;
	
	ram_write(startadd,0,tempbuff[0]);
	ram_write(startadd+1,0,tempbuff[1]);
}
/////////////////////////////////////////////////////////////////////////
void displayhol(unsigned char holgroup,unsigned char holindex)
{
	displaymessage(LMSETHOLDETAIL1,LINE1);
	displayshort(holgroup+1,2,6);

	displayshort(holindex,2,11);

	display(LINE1);

	getholdata(holgroup*32+holindex);
	dispbuff[1][1]=tempbuff[0]/10+0x30;
	dispbuff[1][2]=tempbuff[0]%10+0x30;
	dispbuff[1][3]='-';
	dispbuff[1][4]=tempbuff[1]/10+0x30;
	dispbuff[1][5]=tempbuff[1]%10+0x30;

	display(LINE2);
	
}
//////////////////////////////////////////////////////////////
void setholdefdisp()
{
	if(!submenuflag)
	{
		setupitem=SETHOLDEF;
		displaymessage(LMSETHOLDEF,LINE1);
		displaymessage(LMBLANK,LINE2);
	}
	else
	{
		if(!submenu1flag)
		{
			displayhol(setcount16/32,setcount16%32);
		}
		else
		{
			display(LINE2);
		}
	}
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
void setholdef()
{
	if(keynumber==0xff)setholdefdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount16=0;
				subsetcount=0;
				setholdefdisp();
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setiodefdisp();
			else if(keynumber==NUMBER4)settsdisp();
		}
		else
		{
			if(!submenu1flag)
			{
				if(keynumber==ENTER)
				{
					submenu1flag=1;
					subsetcount=0;
					//here blink the cursor
					lcdcuron(tblsetholposi[subsetcount],LINE2);
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					setholdefdisp();
				}
				else if(keynumber==2)
				{
					setcount16-=32;
					if(setcount16>=MAXHOLINDEX)setcount16+=MAXHOLINDEX;
					setholdefdisp();
				}
				else if(keynumber==8)
				{
					setcount16+=32;
					if(setcount16>=MAXHOLINDEX)setcount16=setcount16-MAXHOLINDEX;
					setholdefdisp();
				}
				else if(keynumber==4)
				{
					setcount16--;
					if(setcount16>=MAXHOLINDEX)setcount16=MAXHOLINDEX-1;
					setholdefdisp();
				}
				else if(keynumber==6)
				{
					setcount16++;
					if(setcount16>=MAXHOLINDEX)setcount16=0;
					setholdefdisp();
				}
			}
			else
			{
				
				if(keynumber==ENTER)
				{
					//do nothing 
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					setholdefdisp();
				}
				else
				{

					dispbuff[LINE2][tblsetholposi[subsetcount]]=keynumber+0x30;
					display(LINE2);
					subsetcount++;
					lcdcuron(tblsetholposi[subsetcount],LINE2);
					if(subsetcount>=4)
					{
						//here save the holdef data
						checksavehol(setcount16);
						submenuflag=1;
						submenu1flag=0;
						setholdefdisp();
					}
				}
			}
		}
	}
}
////////////////////////////////////////////////////////////////////
unsigned char code tblsetioposi[]={1,2,4,5,7,8,10,11,13,14};
////////////////////////////////////////////////////////////////////
unsigned char code tbliodisp[16]=
{
	LMEXITBUTTON,LMDOORCONTACT,LMAUX1,LMAUX2,LMTAMPER,LMR1IDOK,LMR1IDERROR,LMR1TSERROR,
	LMR1APBERROR,LMR2IDOK,LMR2IDERROR,LMR2TSERROR,LMR2APBERROR,LMDURESSMODE,LMOUTPUTTS,LMINOUTTS
};

/////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
void displayio(unsigned char ioindex)
{
	unsigned char i;
	displaymessage(tbliodisp[setcount],LINE1);

	getiodata(ioindex);
	for(i=0;i<5;i++)
	{
		dispbuff[LINE2][tblsetioposi[2*i]]=tempbuff[i]/10+0x30;
		dispbuff[LINE2][tblsetioposi[2*i+1]]=tempbuff[i]%10+0x30;
	}

	display(LINE2);
	
}
//////////////////////////////////////////////////////////////
void setiodefdisp()
{
	if(!submenuflag)
	{
		setupitem=SETIODEF;
		displaymessage(LMSETIODEF,LINE1);
		displaymessage(LMBLANK,LINE2);
	}
	else
	{
		if(!submenu1flag)
		{
			displayio(setcount);
		}
		else
		{
			display(LINE2);
		}
	}
}
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
void setiodef()
{
	if(keynumber==0xff)setiodefdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=0;
				setiodefdisp();
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)settsholindexdisp();
			else if(keynumber==NUMBER4)setholdefdisp();
		}
		else
		{
			if(!submenu1flag)
			{
				if(keynumber==ENTER)
				{
					submenu1flag=1;
					subsetcount=0;
					//here blink the cursor
					lcdcuron(tblsetioposi[subsetcount],LINE2);
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					setiodefdisp();
				}
				else if(keynumber==4)
				{
					setcount--;
					if(setcount>=MAXIOINDEX)setcount=MAXIOINDEX-1;
					setiodefdisp();
				}
				else if(keynumber==6)
				{
					setcount++;
					if(setcount>=MAXIOINDEX)setcount=0;
					setiodefdisp();
				}
			}
			else
			{
				
				if(keynumber==ENTER)
				{
					//do nothing 
				}
				else if(keynumber==CANCEL)
				{
					//submenuflag=0;
					clearsetup();
					setiodefdisp();
				}
				else
				{

					dispbuff[1][tblsetioposi[subsetcount]]=keynumber+0x30;
					display(LINE2);
					
					subsetcount++;
					lcdcuron(tblsetioposi[subsetcount],LINE2);
					if(subsetcount>=10)
					{
						//here save the iodef data
						checksaveio(setcount);
						submenuflag=1;
						submenu1flag=0;
						setiodefdisp();
					}
				}
			}
		}
	}
}
////////////////////////////////////////////////////////////////////
bit gettsholindex(unsigned char tsindex)
{
	//unsigned char tempdata;
	if(tsindex>9)return FALSE;
	
	tempbuff[0]=ram_readp0(TSHOLINDEXSTART+tsindex);
	if(tempbuff[0]>=MAXTSHOLINDEX)
	{
		ram_writep0(TSHOLINDEXSTART+tsindex,0);
		tempbuff[0]=0;
	}
	return TRUE;
}
////////////////////////////////////////////////////////////////////
void checksavetsholindex(unsigned char tsindex)
{
	unsigned char tempdata;
	if(tsindex>9)return;
	tempdata=(dispbuff[LINE2][TSHOLINDEXP]-0X30)*10+dispbuff[LINE2][TSHOLINDEXP+1]-0X30;
	if(tempdata>9)return;
	
	ram_writep0(TSHOLINDEXSTART+tsindex,tempdata);	
}
////////////////////////////////////////////////////////////////////
void displaytshol(unsigned char tsindex)
{
	displaymessage(LMTSINDEX,LINE1);
	displaymessage(LMSETHOLINDEX,LINE2);
	displayshort(tsindex+1,2,TSHOLINDEXP);
	if(!gettsholindex(tsindex))return;
	displayshort(tempbuff[0],2,TSHOLINDEXP+16);
}
////////////////////////////////////////////////////////////////////
void settsholindexdisp()
{
	if(!submenuflag)
	{
		setupitem=SETHOLINDEX;
		displaymessage(LMHOLIDAYINDEX,LINE1);
		//displayshort(ram_read(HOLINDEX,0),2,25);
		displaymessage(LMBLANK,LINE2);
	}
	else
	{	
		if(!submenu1flag)
		{
			//displayhol(setcount16/32,setcount16%32);
			displaytshol(setcount);
		}
		else
		{
			display(LINE2);
		}
	}
}
//////////////////////////////////////////////////////////
unsigned char code tbltsholindexposi[]={TSHOLINDEXP,TSHOLINDEXP+1};
//////////////////////////////////////////////////////////
void setholindex()
{
	if(keynumber==0xff)settsholindexdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=0;
				settsholindexdisp();
			}
			else if(keynumber==CANCEL)terminatesetup();

⌨️ 快捷键说明

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