自己做的門禁系統(tǒng)1
今天估計也做不了什么,就大概分析下機(jī)器的一些東東吧。
首先考慮使用的卡的類型,是使用id卡還是ic卡還是二代身份證呢?身份證嘛怕丟,不能老是隨身帶。id卡和ic卡都行,不過ic卡的讀頭要貴很多又不方便自做,所以最后決定用id卡吧,就算自己做也沒什么,大不了買個芯片讀曼徹斯特*碼也應(yīng)該容易,況且讀卡器,卡片也便宜嘛。
id讀卡器到時買最便宜的就行了,不用多想什么了,只要記得到時搞清楚到手的參數(shù)就行,不要拿個維根32的當(dāng)成維根26的來用,就可能走很多彎路了。
主控芯片就用89s52吧,二個外部中斷,二個定時中斷,32個I/O應(yīng)該夠用了。
存儲器的話只存開門卡號和密碼等數(shù)據(jù),不用太大,就用24c02夠了,幾十個用戶容量夠家里用了。
其他的配件都是小件散件,用到時再考慮吧。
用電腦做上位機(jī)進(jìn)行聯(lián)網(wǎng)遠(yuǎn)程開門,加卡刪卡等操作,電腦軟件以后做好下位機(jī)后再寫了,唉,英語不行,VB,DP等流行軟件都不能用,看來只能用易語言了。
現(xiàn)在到晚上了,今天白天已經(jīng)畫好了proteus圖,大概說一一分布:1,電源12v輸入12v/5v輸出。2,主控P3口控制繼電器蜂鳴器LED輸出和曼碼,IIC,中斷(讀卡器輸入)輸入和串口通訊。P2,P1口留做讀卡器輸入(用查詢法來讀數(shù)據(jù))和信號輸出。P0口做鍵盤輸入了。主控就暫時就樣分布到時需要時再改吧。
今天就先做到就里,任務(wù)才剛剛開始,單片機(jī)程序估計要幾天才能寫好吧。
制作自用門禁第1個程序
今天開始寫下位機(jī)也就是89s52的程序。一個早上才搞定鍵盤掃描程序,程序基本上正確,只是明明加了松開檢測了,怎么有時在按下時會發(fā)送呢。實(shí)在是檢查不出哪兒的問題,也許是模擬軟件的問題吧。
現(xiàn)在突然想到怎么先寫鍵盤程序呢,應(yīng)該寫重要的先才對啊,不然到最后重要的部分沒寫成那不是浪費(fèi)很多精力?但是沒有實(shí)際硬件做起來費(fèi)勁,串口通訊不知怎么用軟件模擬,也就是因?yàn)檫@樣早上的鍵盤程序都是*軟件調(diào)試和蜂鳴器來提示來叛斷是否正確,所以做起來很慢。如果有終端來顯示那就方便多了。不想買液晶顯示,雖然1602液晶應(yīng)該沒多少錢但是怕以后用不到還是用電腦來做顯示吧,接上串口來通訊就行。但問題是現(xiàn)在要有芯片,數(shù)據(jù)線,基本外圍元件和洞洞板等等才行。家里街上和工業(yè)城市不一樣,東西應(yīng)該不好買,到市區(qū)里去看看吧,不行再淘寶了,馬上去了……
貼上我的鍵盤程序:
/*////////////////////////////////////函數(shù)原型: uchar key(void)函數(shù)說明:鍵盤掃描版本:V1.0.0 程序員:LIY12586////////////////////////////////////*/uchar key(void){uchar temp,number;P0=0x0f;if(P0!=0x0f){P0=0xfe;if(P0!=0xfe){ temp=P0;switch (temp){ //11110000case 0xee: //01111110number=4;break;case 0xde:number=3;break;case 0xbe:number=2;break;case 0x7e:number=1;break;}while(P0!=0xfe);sound(1);return number;}P0=0xfd;if(P0!=0xfd){ temp=P0;switch (temp){case 0xed:number=8;break;case 0xdd:number=7;break;case 0xbd:number=6;break;case 0x7d:number=5;break;}while(P0!=0xfd);sound(1);return number;}P0=0xfb;//temp=P0;//temp=temp|0xf0;if(P0!=0xfb){ temp=P0;switch (temp){case 0xeb:number=12;break;case 0xdb:number=11;break;case 0xbb:number=10;break;case 0x7b:number=9;break;}while(P0!=0xfb);sound(1);return number;}P0=0xf7;//temp=P0;//temp=temp|0xf0;if(P0!=0xf7){ temp=P0;switch (temp){case 0xe7:number=16;break;case 0xd7:number=15;break;case 0xb7:number=14;break;case 0x77:number=13;break;}while(P0!=0xf7);sound(1);return number;} }return 0;}
評論