基于單總線的感應(yīng)式IC卡門禁系統(tǒng)設(shè)計
文章出處:http://www.sgrivertours.com 作者:陳羲梅 人氣: 發(fā)表時間:2011年07月04日
門禁系統(tǒng)是對重要區(qū)域或通道的出入口進行管理與控制的系統(tǒng),它是一種新型現(xiàn)代化安全管理系統(tǒng),它集微機自動識別技術(shù)和現(xiàn)代安全管理措施為一體,涉及電子、機械、光學、計算機技術(shù)、通信技術(shù)、生物技術(shù)等諸多高新技術(shù)。
為了有效提高門禁系統(tǒng)的管理功能和實時性,所設(shè)計的基于VC 的門禁管理系統(tǒng)應(yīng)具有對門戶出入控制、保安防盜、報警等多種功能,它主要方便內(nèi)部員工或住戶出入,杜絕外來人員隨意進出,既方便了內(nèi)部管理,又增強了內(nèi)部的安全保障。
最近幾年隨著感應(yīng)卡技術(shù),生物識別技術(shù)的發(fā)展,門禁系統(tǒng)得到了飛躍式的發(fā)展,進入了成熟期,出現(xiàn)了感應(yīng)卡式門禁系統(tǒng),指紋門禁系統(tǒng),虹膜門禁系統(tǒng),面部識別門禁系統(tǒng),亂序鍵盤門禁系統(tǒng)等各種技術(shù)的系統(tǒng),它們在安全性,方便性,易管理性等方面都各有特長,門禁系統(tǒng)的應(yīng)用領(lǐng)域也越來越廣。
1 總體設(shè)計
1.1 課題研究的主要內(nèi)容
本文對門禁系統(tǒng)進行了簡要的概述。門禁系管理統(tǒng)的組成包含以下幾個部分:
(1) 門禁控制器。門禁系統(tǒng)的核心部分,相當于計算機的CPU,它負責整個系統(tǒng)輸入、輸出信息的處理和儲存,控制等等。
(2) 讀卡器(識別儀)。讀取卡片中數(shù)據(jù)(生物特征信息)的設(shè)備。
(3) 電控鎖。門禁系統(tǒng)中鎖門的執(zhí)行部件。用戶應(yīng)根據(jù)門的材料、出門要求等需求選取不同的鎖具。
(4) 卡片。開門的鑰匙。
(5) AS232。串口通信接口。
(6) 80C196KC。數(shù)據(jù)采集模塊。
(7) 電腦。運行門禁信息管理系統(tǒng)(DCIM)。
1.2 總體設(shè)計分析
為了提高門禁管理系統(tǒng)監(jiān)控的實時性,采用 VB 語言開發(fā)門禁管理系統(tǒng),完成了門禁管理系統(tǒng)操作界面、門禁控制器與上位機的通信以及門禁管理系統(tǒng)數(shù)據(jù)庫編程?,F(xiàn)場應(yīng)用表明,所設(shè)計門禁管理系統(tǒng)具有良好的實時監(jiān)控性,確保門禁系統(tǒng)穩(wěn)定、高效地工作,該系統(tǒng)具有實際應(yīng)用價值。系統(tǒng)結(jié)構(gòu)圖如圖1-1 所示。總體設(shè)計需求:
(1)設(shè)計單總線接口電路驅(qū)動程序
(2)設(shè)計智能電子鎖監(jiān)控程序
(3)設(shè)計門禁信息管理程序
1.2.1 系統(tǒng)硬件技術(shù)
本設(shè)計的硬件部分大致可分為:DS1990A; AT90S2313 ; CAN 遠程通信; AS232+PC。DS1990A 序列號iButton 是一種堅固的數(shù)據(jù)載體,可作為自動識別系統(tǒng)的電子注冊號。數(shù)據(jù)通過1-Wire 協(xié)議傳輸,只需要一條信號引線和一個地回路。每個DS1990A 內(nèi)包含工廠刻入的唯一64 位注冊號[2]。
AT90S2313 是一款基于AVR RISC 的低功耗CMOS的8 位單片機通過在一個時鐘周期內(nèi)執(zhí)行一條指令A(yù)T90S2313 可以取得接近1MIPS/MHz 的性能從而使得設(shè)計人員可以在功耗和執(zhí)行速度之間取得平衡AVR 核將32 個工作寄存器和豐富的指令集聯(lián)結(jié)在一起所有的工作寄存器都與ALU 算邏單元直接相連允許在一個時鐘周期內(nèi)執(zhí)行的單條指令同時訪問兩個獨立的寄存器這種結(jié)構(gòu)提高了代碼效率使AVR 得到了比普通CISC 單片機高將近10 倍的性能。
CAN 的結(jié)構(gòu)是總線型。CAN 總線協(xié)議是建立在國際標準組織的開放系統(tǒng)互連模型基礎(chǔ)上的,主要描述設(shè)備之間的信息傳遞。CAN 總線的模型結(jié)構(gòu)只有3 層,選取了OSI 參考模型底層的物理層,數(shù)據(jù)鏈路層和應(yīng)用層。數(shù)據(jù)鏈路層包括邏輯鏈路控制子層和介質(zhì)訪問控制子層。邏輯鏈路控制子層(LLC)包括:驗收濾波,過載通知和恢復(fù)管理。介質(zhì)訪問控制層(MAC)包括:數(shù)據(jù)包裝/解包;幀編碼(填充,消除填充);介質(zhì)訪問管理;錯誤檢測;錯誤標定;應(yīng)答;并行轉(zhuǎn)換成串行/串行轉(zhuǎn)換成并行。
CAN 總線不需要其它中間層,應(yīng)用層數(shù)據(jù)直接取自數(shù)據(jù)鏈路層或直接向鏈路層寫數(shù)據(jù)。CAN 智能節(jié)點電路圖如圖1-2 所示
進行串行通訊時要滿足一定的條件,比如電腦的串口是 RS232 電平的,而單片機的串口是TTL 電平的,兩者之間必須有一個電平轉(zhuǎn)換電路,計算機串口與CAN 總線通信通過電平轉(zhuǎn)換芯片MAX232 實現(xiàn)TTL 電平到ELA 電平的轉(zhuǎn)換,單片機實現(xiàn)計算機與CAN 節(jié)點之間的數(shù)據(jù)交換。
1.2.2 門禁管理系統(tǒng)設(shè)計
門禁管理系統(tǒng)是門禁系統(tǒng)中的重要組成部分。它主要完成門禁系統(tǒng)的監(jiān)控、管理、查詢等工作。通過門禁管理系統(tǒng)軟件的設(shè)計,監(jiān)控人員可對出/入口的狀態(tài)、門禁控制器的工作狀態(tài)進行監(jiān)控管理,并可擴展完成巡更、考勤、人員定位等功能。管理系統(tǒng)結(jié)構(gòu)圖如圖1-3所示。
2 軟件設(shè)計
2.1 單片機與信息按鈕通信
單片機通過單總線和信息按鈕通信,主機呼叫從機時,從機才能應(yīng)答,因此主機訪問單總線器件都必須嚴格遵循單總線命令序列,也就是初始化、ROM 命令、功能命令。如果出現(xiàn)序列混亂,單總線器件將不會響應(yīng)主機(搜索ROM 命令、報警搜索命令除外) 。因此通信編寫要嚴格遵守單總線協(xié)議,否則就會出現(xiàn)錯誤。
我們在電子鎖上設(shè)置一個控制開關(guān),其功能是:當開關(guān)撥至 1 處時,將鑰匙插入門鎖,單片機自動讀取iButton 的64 位ID 碼,并存人單片機的EEPROM 中,存入完畢時,系統(tǒng)會有綠燈閃爍。從而完成鎖對鑰匙的初始化。當開關(guān)撥至0 處時,為正常使用狀態(tài)。
2.2 單片機控制軟件設(shè)計
CAN 總線控制器PCA82C200,其初始化程序如下:
DI
LDB AX , # 03H ;接收中斷開放,復(fù)位請求位置“1”
STB AX ,CR
LDB AX , # 01H ;將節(jié)點1 標識符送ACR
STB AX ,ACR
LDB AX , # 00 ;置ACR 所對應(yīng)的位都為相關(guān)位
STB AX ,AMR
LDB AX , # 01H ;傳輸波特率250Kbps (采用的是16M 晶振)
STB AX ,BTRO
LDB AX , # 1CH
STB AX ,BTR1
LDB AX , # 0AAH ;設(shè)置輸出方式
STB AX ,0CR
LDB AX , # 02H ;PCA82C200 開始正常工作
STB AX ,CR
EI
采用中斷方式通信的流程圖如圖2-1 所示。
2.3 單片機與 PC 機通信
函數(shù)聲明,變量定義
#include <reg.51.h>
#define COUNT10 //定義接收緩沖區(qū)大小
Unsigned char buffer[COUNT]; //定義接收緩沖區(qū)
Unsigned char point; //定義接收數(shù)據(jù)個數(shù)指示變量
Void UART_init(); //串口初始化函數(shù)
Void COM_send(void); //串口接收函數(shù)
Unsigned char CLU_checkdata(void); //計算機校驗函數(shù)
•Void UART_init(); 串口初始化函數(shù)
函數(shù)功能:在系統(tǒng)時鐘為 11.0592MHZ 時,設(shè)定串口數(shù)據(jù)傳輸率為9600bit/sVoid UART_init();
{ //初始化串口和數(shù)據(jù)傳輸率發(fā)生器
SCON=0x58; //選擇串口工作方式,打開接收允許
TMOD=0x21; //定時器1 工作在方式2,定時器0 工作在方式1
TH1=0xfd; //實現(xiàn)數(shù)據(jù)傳輸率9600bit/s(系統(tǒng)時鐘11.0592MHZ)
TR1=0; //啟動定時器1
ET1=0;
ES=1; //允許串行口中斷
PS=1; //設(shè)計允許串行口中斷優(yōu)先級
EA=1; //單片機中斷允許
}
•Com_interrup()串口接收中斷處理函數(shù)
函數(shù)功能:接收包括起始位’S’在內(nèi)的10bit 數(shù)據(jù)到緩沖區(qū)
Com_interrupt(void)interrupt 4 using 3{
Unsigned char RECEIVR_buffer;
If(RI) //處理接收中斷
{
RI=0; //清楚中斷標志位
RECEIVR_buffer=SBUF; //接收串口數(shù)據(jù)
If(point==0) //如果還沒有接收到起始位
{
If(RECEIVR_buffer==’S’) //判斷是否起始標志位
Point++; //是,準備接收下一位
Else
Point=0; //不是,繼續(xù)等待起始位
}
Else if(point>0&&point<10) //判斷是否接收夠10bit 數(shù)據(jù)
Buffer[point++]=RECEIVR_buffer; //不夠,把接收到的數(shù)據(jù)放入接收緩存區(qū)
Else point=0; //緩沖區(qū)已滿,清除緩存區(qū)內(nèi)數(shù)據(jù)重新接收
}
If(TI); //處理發(fā)送中斷
{
TI=0;
}
}
•COM_send()串口發(fā)送函數(shù)
函數(shù)功能:把數(shù)據(jù)緩沖區(qū)的 10bit 數(shù)據(jù)發(fā)送出去
Void COM_send(){
For(point=0;point<=10,TI=1;point++) //連續(xù)發(fā)送10bit 數(shù)據(jù)
//把緩存區(qū)的數(shù)據(jù)都發(fā)送到串口
{
SUBF=buffer[point];
TI=0;
}
}
•CLU_checkdata()計算機校驗位函數(shù)
輸入變量:無
輸出變量:checkdata,包括起始位在內(nèi)的前九位數(shù)據(jù)的校驗和
函數(shù)功能:計算校驗和
Unsigned char CLU_checkdata(void){ //計算校驗位
Unsigned char checkdata=0;
For(point=0;point<9,TI=1;point++)
{
Checkdata=checkdata︱buffer[point]
}
Return(checkdata);
}
•主函數(shù)
函數(shù)功能:調(diào)度子函數(shù),完成通信過程
Void main(void){
Unsigned char checkdata;
Do
{
UART_init(); //初始化串口
If(point==10) //判斷數(shù)據(jù)是否接收完成
Checkdata=CLU_checkdata; //調(diào)用求校驗和函數(shù)
If(checkdata==buffer[9]) //判斷校驗和是否正確
COM_send(); //正確則調(diào)用發(fā)送程序
Point=0;
}
While(1);
}
2.4 計算機管理界面設(shè)計
登陸之后,進入管理軟件的界面。
員工主要信息包括員工的聯(lián)系電話、年齡、所在部門、員工住址等。對員工信息的查詢?nèi)鐖D所示,在操作界面中可以根據(jù)不同的查詢條件進行查找。
在門禁管理中,包括對電子鎖的管理。其中ID 號取的是門鎖對應(yīng)的鑰匙的ID 號(每把鑰匙有自己固定的ID 號),一把鎖可以配對多把鑰匙。
在實時監(jiān)控中,可以對房間的一些狀態(tài)進行監(jiān)控,諸如門鎖打開的狀態(tài)、濕度、溫度、有無煙霧等。第一張圖是對某一個房間狀態(tài)進行監(jiān)控,第二張圖則顯示的是對所有房間進行的監(jiān)控。
在門禁管理選項中,管理員還可以對門進行強制關(guān)門開門操作。在系統(tǒng)維護中,可以對串口進行設(shè)置,對管理員密碼進行修改,對實時數(shù)據(jù)備份等等。這里不再進行贅述。
3 結(jié)論
門禁管理系統(tǒng)設(shè)計涉及的主要技術(shù)有單總線技術(shù)、串口通信技術(shù)、CAN 總線等,整個系實現(xiàn)了門禁管理操作界面、完成門禁系統(tǒng)的監(jiān)控、管理、查詢等工作。通過門禁管理系統(tǒng)軟件的設(shè)計,監(jiān)控人員可對出/入口的狀態(tài)、門禁控制器的工作狀態(tài)進行監(jiān)控管理。