门禁控制器代码
门禁系统是在智能建筑领域,意为Access Control System,简称ACS。指“门”的禁止权限,是对“门“的戒备防范。这里的“门”,广义来说,包括能够通行的各种通道,包括人通行的门,车辆通行的门等。因此,门禁就包括了车辆门禁。在车场管理应用中,车辆门禁是车辆管理的一种重要手段,不以收取停车费为目的,主要是管理车辆进出权限。
出入口门禁安全管理系统是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,光学,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施。适用各种机要部门,如银行、宾馆、车场管理、机房、军械库、机要室、办公间,智能化小区,工厂等。
门禁系统早已超越了单纯的门道及钥匙管理,它已经逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着较大的作用。
门禁系统源程序
#include 《reg51.h》
#include 《Intrins.h》
#define DATA P0 //1602驱动端口
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit KA=P2^7;
int Pre_KeyNo=16,KeyNo=16;
void delayMs( int x);
void Keys_Scan();
void Busy() //LED液晶是否忙碌
{
DATA = 0xff;
RS = 0;
RW = 1;
while(DATA & 0x80)
{
E = 0;
E = 1;
}
E = 0;
}
//LED写指令程序
void WriteCommand(unsigned char btCommand)
{
Busy();
RS = 0;
RW = 0;
E = 1;
DATA = btCommand;
E = 0;
}
//LED写数据程序
void WriteData(unsigned char btData)
{
Busy();
RS = 1;
RW = 0;
E = 1;
DATA = btData;
E = 0;
}
//LED清屏显示
void Clear()
{
WriteCommand(1);
}
//LED初始化
void Init()
{
WriteCommand(0x0c); //开显示,无光标显示
WriteCommand(0x06); //文字不动,光标自动右移
WriteCommand(0x38); //设置显示模式:8位2行5x7点阵
WriteCommand(0x40);
//for(i=0;i《24;i++) //日字产生
//WriteData(rizi[i]);
}
//LED显示单个字符
void DisplayOne(bit bRow, unsigned char btColumn, unsigned char btData, bit bIsNumber)
{
if (bRow) WriteCommand(0xc0 + btColumn);
else WriteCommand(0x80 + btColumn);
if (bIsNumber) WriteData(btData + 0x30);
else WriteData(btData);
}
void Keys_Scan()
{
char Tmp;
P1=0x0f; delayMs(1);
Tmp=P1^0x0f;
switch(Tmp)
{
case 1:KeyNo=0;break;
case 2:KeyNo=1;break;
case 4:KeyNo=2;break;
case 8:KeyNo=3;break;
default:KeyNo=16;
}
P1=0xf0;
delayMs(1);
Tmp=P1》》4^0x0f;
switch(Tmp)
{
case 1:KeyNo+=0; break;
case 2:KeyNo+=4; break;
case 4:KeyNo+=8; break;
case 8:KeyNo+=12;
}
}
void delayMs( int x)
{
char t; while(x--)
for(t=0;t《120;t++);
}
void main()
{
int hang=0,c=0;
int i,j=0;
unsigned char tab[12],tab1[12]={1,1,1,1,1,1};
unsigned char tab3[]=“welcome to ”;
unsigned char tab4[]=“alter password.”;
unsigned char tab5[]=“OK”;
unsigned char tab6[]=“NO”;
Init();
loop1:Clear();
i=0;
KeyNo=16;
while(1)
{
WriteCommand(0x80);
for(c=0;c《14;c++)WriteData(tab3[c]);
P1=0xf0;
if(P1!=0xf0) Keys_Scan();
if(Pre_KeyNo!=KeyNo)
{
if(KeyNo》=0&&KeyNo《=9)
{
tab[i++]=KeyNo;
DisplayOne(1,i, ‘*’,0);
//DisplayOne(0,i, KeyNo,1);
}
if(KeyNo==14)
var cpro_id = “u2845472”;
{
while(P1!=0xf0);
goto loop1;
}
if(KeyNo==11)KA=1;
if(KeyNo==10)
{
for(j=0;j《6;j++)
if(tab[j]!=tab1[j])break;
if(j==6)
{
KA=0; for(j=0;j《6;j++) tab[j]=0;
}
while(P1!=0xf0);
goto loop1;
} if(KeyNo==12)
{
i=0;
WriteCommand(0x80);
for(c=0;c《16;c++)WriteData(tab4[c]);
while(1)
{
KeyNo=16;
P1=0xf0;
if(P1!=0xf0) Keys_Scan();
if(Pre_KeyNo!=KeyNo)
{
if(KeyNo》=0&&KeyNo《=9)
{
tab1[i++]=KeyNo;
DisplayOne(1,i, ‘*’,0);
// DisplayOne(0,i, KeyNo,1);
}
}
while(P1!=0xf0);
if(KeyNo==13)goto loop1;
}
}
KeyNo=16;
while(P1!=0xf0);
}
delayMs(100);
}
}