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

📄 setup.c

📁 指纹识别源代码,用于智能门紧,还有配合MF800卡使用
💻 C
📖 第 1 页 / 共 5 页
字号:
#include "reg58.h"
#include "intrins.h"
#define _SETUP_C_
#include "setup.h"
#include "lcd.h"
#include "keypad.h"
#include "system.h"
#include "finger.h"
#include "rxd.h"
#include "define.h"
#include "sram.h"
#include "event.h"
#include "keypad.h"
#include "ts.h"
#include "user.h"
#include "clock.h"
#include "inout.h"
#include "373.h"
#include "timer.h"
#include "inout.h"
#include "pccomm.h"
#include "modem.h"

unsigned char data setupitem;
unsigned char data subsetcount;
unsigned char data setcount;
unsigned short data setcount16;
unsigned short data currentsn;
bit submenuflag,submenu1flag,setflag;
unsigned char code secumodesel[MAXSETMODESEL]={LMIDONLY,LMFPONLY,LMIDFP,LMIDPWFP};
////////////////////////////////////////////////////////////////////////////////////
void getidfromlcd()
{
	tempbuff[0]=0;
	tempbuff[1]=0;
	tempbuff[2]=0;
	tempbuff[3]=0;
	tempbuff[4]=0;
	tempbuff[5]=0;
	tempbuff[6]=0;
	tempbuff[7]=0;
	idata2idata(dispbuff[LINE2]+MASTERIDSTARTP,tempbuff+8-setcount,setcount);

	userid[0]=(tempbuff[0]<<4)+(tempbuff[1]&0xf);
	userid[1]=(tempbuff[2]<<4)+(tempbuff[3]&0xf);
	userid[2]=(tempbuff[4]<<4)+(tempbuff[5]&0xf);
	userid[3]=(tempbuff[6]<<4)+(tempbuff[7]&0xf);
}
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
void clearsetup()
{
	submenuflag=0;
	submenu1flag=0;
	setcount=0;
	subsetcount=0;
	setcount16=0;

}
///////////////////////////////////////////////////////////////////////////
void terminatesetup()
{
	setflag=0;
	passinflag=0;
	clearsetup();
	//lcdback();
	//displaymessage(LMMAIN,LINE1);
	displayMain();
	displaytime();
}
///////////////////////////////////////////////////////////////////////////
void setmodedisp()
{
	if(!submenuflag)
	{
		setupitem=SETMODE;
		displaymessage(LMMODESELECT,LINE1);
		setcount=readsecumode();
		displaymessage(secumodesel[setcount],LINE2);
	}
	else
	{
		dispselectmessage(secumodesel[setcount]);
	}
}
///////////////////////////////////////////////////////////////////////////
void setmode()		//ok
{
	if(keynumber==0xff)setmodedisp();			//display
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=readsecumode();
				dispselectmessage(secumodesel[setcount]);
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)settimedisp();
			else if(keynumber==NUMBER4)setkeyindisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				ram_writep0(SECUMODE,setcount);
				submenuflag=0;
				//setmode(0xff);
				setmodedisp();
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				setmodedisp();
				//setmode(0xff);
			}
			else if(keynumber==NUMBER6)
			{
				setcount++;
				if(setcount>(MAXSETMODESEL-1))setcount=0;
				dispselectmessage(secumodesel[setcount]);

			}
			else if(keynumber==NUMBER4)
			{
				setcount--;
				if(setcount>(MAXSETMODESEL-1))setcount=MAXSETMODESEL-1;
				dispselectmessage(secumodesel[setcount]);
			}
		}
	}
}
///////////////////////////////////////////////////////////////////////////
void settimedisp()
{
	if(!submenuflag)
	{
		setupitem=SETTIME;
		displaymessage(LMTIMESET,LINE1);
		displaytimeee();
	}
	else
	{
		display(LINE2);
	}
}
///////////////////////////////////////////////////////////////////////////
void settime()		//ok
{
	if(keynumber==0xff)settimedisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				displaymessage(LMTIMEFORMAT,LINE1);
				setcount=0;
				displaymessage(LMBLANK,LINE2);
				lcdcuron(0,LINE2);
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)settypedisp();
			else if(keynumber==NUMBER4)setmodedisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				//settime(0xff);
				settimedisp();
			}
			else
			{
				//dispbuff[1][setcount]=keynumber+0x30;
				//setcount++;
				//if(setcount>=15)setcount=0;
				//settimedisp();
				
				dispbuff[LINE2][setcount]=keynumber+0x30;
				//displaybyte('*',MASTERPASSSTARTP+setcount+0x40+SET_DDRAM_ADD);
				display(LINE2);
				setcount++;
				lcdcuron(setcount,LINE2);
				if(setcount>=MAXSETTIMECOUNT)
				{
					checksavedate();
					submenuflag=0;
					settimedisp();
				}
				
			}
		}
	}
}
////////////////////////////////////////////////////////////////////////////////////
unsigned char code typemodesel[]={LMNUSED,LMUSED};
////////////////////////////////////////////////////////////////////////////////////
void settypedisp()
{
	if(!submenuflag)
	{
		setupitem=SETTYPE;
		displaymessage(LMTYPESELECT,LINE1);
		setcount=readfpmode();
		displaymessage(typemodesel[setcount],LINE2);
	}
	else
	{
		dispselectmessage(typemodesel[setcount]);
	}
}
///////////////////////////////////////////////////////////////////////////
void settype()		//ok
{
	if(keynumber==0xff)settypedisp();			//display
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=readfpmode();
				dispselectmessage(typemodesel[setcount]);
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setapbdisp();
			else if(keynumber==NUMBER4)settimedisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				ram_writep0(FPMODE,setcount);
				submenuflag=0;
				//settype(0xff);
				settypedisp();
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				settypedisp();
				//settype(0xff);
			}
			else if(keynumber==NUMBER6)
			{
				setcount++;
				if(setcount>(MAXSETTYPESEL-1))setcount=0;
				dispselectmessage(typemodesel[setcount]);

			}
			else if(keynumber==NUMBER4)
			{
				setcount--;
				if(setcount>(MAXSETTYPESEL-1))setcount=MAXSETTYPESEL-1;
				dispselectmessage(secumodesel[setcount]);
			}
		}
	}
}
///////////////////////////////////////////////////////////////////////////

void dispselectmessage(unsigned char lm)
{
	//buffcopy((unsigned char*)dispmessage[lm],(unsigned char*)(dispbuff[1]+2),14);
	//code2idata((unsigned char code *)dispmessage[lm],(unsigned char idata*)(dispbuff[1]+2),14);
	unsigned char i;
	for(i=0;i<14;i++)
	{
		dispbuff[LINE2][i+2]=dispmessage[lm][i];
	}
	dispbuff[1][0]='-';
	dispbuff[1][1]='>';
	display(LINE2);
}
////////////////////////////////////////////////////////////////////////////////////
unsigned char code tblapb[]={LMNUSED,LMUSED};
////////////////////////////////////////////////////////////////////////////////////
void setapbdisp()
{
	if(!submenuflag)
	{
		setupitem=SETAPB;
		displaymessage(LMSETAPB,LINE1);
		//setcount=ram_readp0(APBMODE);
		setcount=readapbmode();
		displaymessage(tblapb[setcount],LINE2);
	}
	else
	{
		dispselectmessage(tblapb[setcount]);
	}
}
////////////////////////////////////////////////////////////////////////////////////
void setapb()			//ok
{
	if(keynumber==0xff)setapbdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setapbdisp();
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setcommiddisp();
			else if(keynumber==NUMBER4)settypedisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				submenuflag=0;
				ram_writep0(APBMODE,setcount);
				setapbdisp();
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				//setapb(0xff);
				setapbdisp();
			}
			else if(keynumber==NUMBER6)
			{
				setcount++;
				if(setcount>=MAXSETAPBSEL)setcount=0;
				setapbdisp();
				//setapb(0xff);
			}
			else if(keynumber==NUMBER4)
			{
				setcount--;
				if(setcount>=MAXSETAPBSEL)setcount=MAXSETAPBSEL-1;
				setapbdisp();
				//setapb(0xff);
			}
		}
	}
}
/////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////
void setcommiddisp()
{
	if(!submenuflag)
	{
		setupitem=SETCOMMID;	
		displaymessage(LMSETCOMMID,LINE1);
		displaymessage(LMBLANK,LINE2);
		displayshort((unsigned short)readcommid(),2,23);
	}
	else
	{
		display(LINE2);
	}
}
/////////////////////////////////////////////////////////////////////////////////////
void setcommid()
{
	unsigned char tempdata;

	if(keynumber==0xff)setcommiddisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=0;
				//here blink the cursor
				lcdcuron(COMMIDSTARTP,LINE2);
				//setcommiddisp();
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setduressdisp();
			else if(keynumber==NUMBER4)setapbdisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				setcommiddisp();
			}
			else 
			{
				dispbuff[LINE2][COMMIDSTARTP+setcount]=keynumber+0x30;
				setcount++;
				display(LINE2);
				lcdcuron(setcount+COMMIDSTARTP,LINE2);
				if(setcount>=2)
				{
					tempdata=( dispbuff[LINE2][COMMIDSTARTP]-0X30)*10+dispbuff[LINE2][COMMIDSTARTP+1]-0x30;
					if(tempdata<MAXCOMMID)
					{
						ram_writep0(COMMID,tempdata);
					}
					submenuflag=0;
					setcommiddisp();
				}
				//setcommiddisp();
			}
		}
	}
}
////////////////////////////////////////////////////////////////////////////////
unsigned char code tblduress[]={LMNUSED,LMUSED};
////////////////////////////////////////////////////////////////////////////////
void setduressdisp()
{
	if(!submenuflag)
	{
		setupitem=SETDURESS;
		displaymessage(LMSETDURESS,LINE1);
		displaymessage(tblduress[readduress()],LINE2);
	}
	else
	{
		dispselectmessage(tblduress[setcount]);
	}
}
////////////////////////////////////////////////////////////////////////////////
void setduress()		//ok
{
	if(keynumber==0xff)setduressdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=readduress();
				//setduress(0xff);
				dispselectmessage(tblduress[setcount]);
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setbaudratedisp();
			else if(keynumber==NUMBER4)setcommiddisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				submenuflag=0;
				ram_writep0(DURESSMODE,setcount);

				if(setcount)setduresspwdisp();
				else setduressdisp();	//setduress(0xff);
				
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				setduressdisp();
			}
			else if(keynumber==NUMBER6)
			{
				setcount++;
				if(setcount>=MAXDURESSSEL)setcount=0;
				setduressdisp();
			}
			else if(keynumber==NUMBER4)
			{
				setcount--;
				if(setcount>=MAXDURESSSEL)setcount=MAXDURESSSEL-1;
				setduressdisp();
			}
		}
	}
}
/////////////////////////////////////////////////////////////////////////////////
/*void displaybcd(unsigned char * pbcddata,unsigned char count,unsigned char startposi)
{
	unsigned char i,line;
	if(startposi>=32)return;

	if(startposi>=16)
	{
		line=LINE2;
		startposi-=16;
	}
	else	line=LINE1;

	for(i=0;i<count;i++)
	{
		if(i&1)dispbuff[line][i+startposi]=*(pbcddata+i/2)&0xf+0x30;
		else dispbuff[line][i+startposi]=*(pbcddata+i/2)>>4+0x30;
	}
}*/
/////////////////////////////////////////////////////////////////////////////////
void setduresspwdisp()
{
	if(!submenuflag)
	{
		setupitem=SETDURESSPW;
		displaymessage(LMSETDURESSPW,LINE1);
		displaymessage(LMBLANK,LINE2);
		//here display the password
		displayshort(readduresspw(),2,23);
	}
	else
	{		//here display the edited password
		display(LINE2);
	}
}
/////////////////////////////////////////////////////////////////////////////////
void setduresspw()
{
	unsigned char tempdata;

	if(keynumber==0xff)setduresspwdisp();
	else
	{
		if(!submenuflag)
		{
			if(keynumber==ENTER)
			{
				submenuflag=1;
				setcount=0;
				lcdcuron(DURESSPWSTARTP,LINE2);
			}
			else if(keynumber==CANCEL)terminatesetup();
			else if(keynumber==NUMBER6)setbaudratedisp();
			else if(keynumber==NUMBER4)setduressdisp();
		}
		else
		{
			if(keynumber==ENTER)
			{
				//submenuflag=0;
				//here save the new duress password
				//setduresspw(0xff);
				//ram_write(DURESSPASS,0,dispbuff[1][7]*10+dispbuff[1][8]);
				//setduresspwdisp();
			}
			else if(keynumber==CANCEL)
			{
				//submenuflag=0;
				clearsetup();
				//setduresspw(0xff);
				setduresspwdisp();
			}
			else 
			{
				dispbuff[LINE2][DURESSPWSTARTP+setcount]=keynumber+0x30;
				setcount++;
				display(LINE2);
				lcdcuron(setcount+DURESSPWSTARTP,LINE2);
				if(setcount>=2)
				{
					tempdata=( dispbuff[LINE2][DURESSPWSTARTP]-0X30)*10+dispbuff[LINE2][DURESSPWSTARTP+1]-0x30;
					if(tempdata<MAXDURESSPASS)
					{
						ram_writep0(DURESSPW,tempdata);
					}
					submenuflag=0;
					setduresspwdisp();
				}
			
			}
		}
	}
}
/////////////////////////////////////////////////////////////////////////////////
unsigned char code tblbaud[]={LM9600,LM19200,LM38400,LM4800};
/////////////////////////////////////////////////////////////////////////////////
void setbaudratedisp()
{
	if(!submenuflag)
	{
		setupitem=SETBAUDRATE;
		displaymessage(LMSETBAUDRATE,LINE1);
		displaymessage(tblbaud[readbaudrate()],LINE2);
	}

⌨️ 快捷键说明

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