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