门禁控制器代码

安防监控

19人已加入

描述

门禁系统是在智能建筑领域,意为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);

}

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分