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

📄 lcd.c

📁 指纹识别源代码,用于智能门紧,还有配合MF800卡使用
💻 C
字号:
#include "reg58.h"
#include "intrins.h"

#define _LCD_C_
#include "lcd.h"
#include "define.h"
#include "timer.h"
#include "bus.h"
#include "sram.h"
#include "system.h"
#include "clock.h"
#include "setup.h"
#include "keypad.h"


unsigned char idata dispbuff[2][16];

unsigned char code dispmessage[][16]=
{
	{"Finger_000  [F1]"},
	{" Input Password "},
	{"Put your finger "},
	{"Master Password:"},
	{" Mode selection "},
	{"ID ONLY         "},
	{"ID+FINGER(P/W)  "},
	{"ID+P/W+FINGER   "},
	{"  TIME SETTING  "},
	{"YYYYMMDDhhmmssW "},
	{"TYPE SELECTION  "},
	{"    APB SETUP   "},
	{"COMM ID SETTING "},
	{"DURESS MODE SET "},
	{"SET DURESS P/W  "},
	{"BAUD RATE SETUP "},
	{"4800            "},
	{"9600            "},
	{"19200           "},
	{"38400           "},
	{"  EVENT CLEAR   "},
	{"1 - YES, 0 - NO "},
	{"MASTER ID CHANGE"},
	{" SYS INITIALIZE "},
	{"   ID  CLEAR    "},
	{"TIME SCHE CLEAR "},
	{" TIME SCHEDULE  "},
	{"T/S : 01  HOL  1"},
	{" HOLIDAY DEFINE "},
	{"HOL TS:01   #01 "},
	{" IN/OUT  DEFINE "},
	{"1. Exit Button  "},
	{"2. Door Contact "},
	{"3. AUX1         "},
	{"4. AUX2         "},
	{"5. Tamper S/W   "},
	{"6. R1 ID OK     "},
	{"7. R1 ID Error  "},
	{"8. R1 T/S Error "},
	{"9. R1 APB Error "},
	{"10. R2 ID OK    "},
	{"11. R2 ID Error "},
	{"12. R2 T/S Error"},
	{"13. R2 APB Error"},
	{"14. DURESS MODE "},
	{"15. Output T/S  "},
	{"16. IN/OUT T/S  "},
	{" HOLIDAY INDEX  "},
	{"T/S Index :     "},
	{"H/D Index :     "},
	{"   MODE INDEX   "},
	{"  LCD DISPLAY   "},
	{"STATUS          "},
	{"CARD NO         "},
	{"  OUTPUT TIME   "},
	{"0.1 SEC         "},
	{"1 SEC           "},
	{"ID REGISTRATION "},
	{"  Key Input ID  "},
	{"  -> ________   "},
	{"PW____TS__RD_FP_"},
	{"TO REGISTER FP  "},
	{"PUT YOUR FP ON: "},
	{"LIFT AND PUT FP "},
	{"WAITTING...     "},
	{"ID REGISTERED!  "},
	{"   ID DELETE    "},
	{" Enter Card No. "},
	{"  ID DELETEED   "},
	{"    ID LIST     "},
	{" ID LIST TOP    "},
	{" ID LIST BOTTOM "},
	{"    ID COUNT    "},
	{"  EVENT COUNT   "}, 
	{"  F/W version   "},
	{"     V00.00     "},
	{"  OUTPUT TEST   "},
	{"   LCD TEST     "},
	{"  READER  TEST  "},
	{"  INPUT TEST    "},
	{"    COMM TEST   "},
	{"                "},
	{"USE             "},
	{"NOT USE         "},
	{"   RAM TEST     "},
	{"  KEYPAD TEST   "},
	{"    [____]      "},
	{" INPUT  ID      "},
	{"ENABLE          "},
	{"DISABLE         "},
	{" SET PIN KEY IN "},
	{"TS :      HOL   "},
	{"   :   -   :    "},
	{"HOL :     #     "},
	{"   /     :  :   "},
	{"BANK =          "},
	{" RAM TESTING... "},
	{"RAM test PASS!!!"},
	{"RAM test FAIL!!!"},
	{"Press any key..."},
	{"   OUTPUT       "},
	{"     ON         "},
	{"     OFF        "},
	{" Registed ID!   "},
	{" Unregisted ID! "},
	{"USER SPACE EMPTY"},
	{"SYS INITIALED!  "},
	{"Input New Master"},
	{"    [________]  "},
	{"  Master ID!    "},
	{"   FIM SELECT   "},
	{"LIFT & PUT AGAIN"},
	{"USER SPACE FULL!"},
	{"ID REGISTER FAIL"},
	{" ACCESS GRANTED "},
	{" ACCESS DENIED  "},
	{" ANTI PASS BACK "},
	{"TIME SCHE ERROR "},
	{" PASSWORD ERROR "},
	{"   FP ERROR     "},
	{"PUT OLDMaster FP"},
	{"MASTER CHANGE OK"},
	{" CHANGE FAILED  "},
	{" MASTER ID == 0 "},
	{"0123456789ABCDEF"},
	{"INITIALIZING...."},
	{" READER 1       "},
	{" READER 2       "},
	{" SCANNING...... "},
	{"ACCESS DOOR ERR "},
	{" CLEANING ...   "},
	{" COMM TEST PASS "},
	{" COMM TEST FAIL "},
	{" COMM TESTING.. "},
	{" REMOVE WIRES   "},
	{"FP ONLY         "}


	
	
	

};
void lcdsetrs()
{
	DATAPORT=2;
	SEL573L=1;	
	_nop_();
	SEL573L=0;
}

void lcdclrrs()
{
	DATAPORT=0;
	SEL573L=1;
	_nop_();
	SEL573L=0;
}

void write_command(unsigned char cmd)
{
	lcdclrrs();

	//LCDRS=0;
	//LCDRW=0;


	LCDDATA=cmd;
	LCDEN=1;
	_nop_();
	LCDEN=0;
}

void write_data(unsigned char lcddata)
{
	//LCDRS=1;
	//LCDRW=0;
	lcdsetrs();

	LCDDATA=lcddata;
	LCDEN=1;
	_nop_();
	LCDEN=0;
}
/////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////
void displaybyte(unsigned char dispdata,unsigned char dispposi)
{
	write_command(dispposi);
	delay50us();
	//delay50us();
	write_data(dispdata);
	delay50us();
}
////////////////////////////////////////////////////////////////////////
void display(unsigned char line)
{
	unsigned char i;
	if(line==LINE1)
	{
		write_command(SET_DDRAM_ADD);
		delay50us();
		for(i=0;i<16;i++)
		{
			write_data(dispbuff[0][i]);
			delay50us();
		}
	}
	else 
	{
		write_command(SET_DDRAM_ADD+0X40);
		delay50us();
		for(i=0;i<16;i++)
		{
			write_data(dispbuff[1][i]);
			delay50us();
		}
	}
}
void displaymessage(unsigned char lmess,unsigned char line)
{
	//buffcopy(dispmessage[lmess],dispbuff[line],16);
	unsigned char i;
	for(i=0;i<16;i++)
	{
		dispbuff[line][i]=dispmessage[lmess][i];
	}
	//code2disp(dispmessage[lmess],line);
	//code2idata(dispmessage[lmess],dispbuff[line],16);
	display(line);

}
void displayMain()
{
	unsigned char i;
	for(i=0;i<16;i++)
	{
		dispbuff[LINE1][i]=dispmessage[LMMAIN][i];
	}

	dispbuff[LINE1][14]=readFunctions()+'1';
	display(LINE1);
}
//////////////////////////////////////////////////////////////////////////////////

void displaytimeee()
{
	dispbuff[1][0]=' ';

	dispbuff[1][1]=datetime[DTMON]/10+0X30;
	dispbuff[1][2]=datetime[DTMON]%10+0X30;

	dispbuff[1][3]='/';

	dispbuff[1][4]=datetime[DTDAY]/10+0X30;
	dispbuff[1][5]=datetime[DTDAY]%10+0X30;

	dispbuff[1][6]=' ';

	dispbuff[1][7]=datetime[DTHUR]/10+0X30;
	dispbuff[1][8]=datetime[DTHUR]%10+0X30;

	dispbuff[1][9]=':';

	dispbuff[1][10]=datetime[DTMIN]/10+0X30;
	dispbuff[1][11]=datetime[DTMIN]%10+0X30;

	dispbuff[1][12]=':';

	dispbuff[1][13]=datetime[DTSEC]/10+0X30;
	dispbuff[1][14]=datetime[DTSEC]%10+0X30;

	dispbuff[1][15]=' ';
	
	display(LINE2);
}
void displaytime()
{
	//getdatetime(tempbuff);
	if(setflag)return;
	if(passinflag)return;
	displaytimeee();
	
}
void init_lcd()
{
	LCDEN=0;
	write_command(CLR_DISP);
	delayTimerl(T5MS);
	write_command(DISP_B8_L2_H7);
	delayTimerl(T5MS);
	write_command(CUR_INC);
	delayTimerl(T5MS);
	write_command(DISP_ON_CUR_B);
	delayTimerl(T5MS);
	write_command(CLR_DISP);
	delayTimerl(T5MS);
	
	write_command(DISP_B8_L2_H7);
	delayTimerl(T5MS);
	
	//write_command(CUR_BACK);
	//delay(T5MS);
	//delay(T5MS);
	//write_command(DISP_B8_L2_H7);
	//delay(T5MS);
	//displaymessage(0,0);
	displayMain();


}
//////////////////////////////////////////////////////////////////
void lcdcuron(unsigned char position,unsigned char line)
{
	if(position>=16)return;
	if(!line)
	{
		write_command(SET_DDRAM_ADD+position);
		delay50us();
	}
	else
	{
		write_command(SET_DDRAM_ADD+0X40+position);
		delay50us();
	}
	//write_command(DISP_ON_NCUR_B);
}
//////////////////////////////////////////////////////////////////
void displayshort(unsigned short dispdata,unsigned char count,unsigned char startposi)
{
	unsigned char line,i;
	if(startposi>=32)return;


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

	for(i=0;i<count;i++)
	{
		dispbuff[line][startposi+i]=tempbuff[5-count+i]+0x30;
	}
	display(line);
}
/////////////////////////////////////////////////////////////////////////////////////
void displaybcd(unsigned char dispdata,unsigned char startposi)
{
	unsigned char line;
	if(startposi>=32)return;

	if(startposi>=16)
	{
		line=LINE2;
		startposi-=16;
	}
	else
	{
		line=LINE1;
	}
	dispbuff[line][startposi]=(dispdata>>4)+0x30;
	dispbuff[line][startposi+1]=(dispdata&0xf)+0x30;
	display(line);
}
/////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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