因为上个月丢了家钥匙,今日无聊中没啥事儿,就想自己着手规划个自己用的门禁来玩,至少钥匙丢了也不愁了,还能够一卡通。因为根本上现在没硬件来规划,那就先用软件来模仿一下吧,届时感觉不错再买元器件。
今日估量也做不了什么,就大约剖析下机器的一些东东吧。
首要考虑运用的卡的类型,是运用id卡仍是ic卡仍是二代身份证呢?身份证嘛怕丢,不能老是随身带。id卡和ic卡都行,不过ic卡的读头要贵许多又不便利自做,所以最终决议用id卡吧,就算自己做也没什么,大不了买个芯片读曼彻斯特*码也应该简单,何况读卡器,卡片也廉价嘛。
id读卡器届时买最廉价的就行了,不必多想什么了,只需记住届时搞清楚到手的参数就行,不要拿个维根32的当成维根26的来用,就可能走许多弯路了。
主控芯片就用89s52吧,二个外部中止,二个守时中止,32个I/O应该够用了。
存储器的话只存开门卡号和暗码等数据,不必太大,就用24c02够了,几十个用户容量够家里用了。
其他的配件都是小件散件,用届时再考虑吧。
用电脑做上位机进行联网长途开门,加卡删卡等操作,电脑软件今后做好下位机后再写了,唉,英语不可,VB,DP等盛行软件都不能用,看来只能用易语言了。
现在到晚上了,今日白日现已画好了proteus图,大约说逐个散布:1,电源12v输入12v/5v输出。2,主控P3口操控继电器蜂鸣器LED输出和曼码,IIC,中止(读卡器输入)输入和串口通讯。P2,P1口留做读卡器输入(用查询法来读数据)和信号输出。P0口做键盘输入了。主控就暂时就样散布届时需求时再改吧。
今日就先做到就里,使命才刚刚开端,单片机程序估量要几天才干写好吧。
制造自用门禁第1个程序
今日开端写下位机也便是89s52的程序。一个早上才搞定键盘扫描程序,程序根本上正确,仅仅分明加了松开检测了,怎样有时在按下时会发送呢。实在是查看不出哪儿的问题,也许是模仿软件的问题吧。
现在忽然想到怎样先写键盘程序呢,应该写重要的先才对啊,否则到最终重要的部分没写成那不是糟蹋许多精力?可是没有实践硬件做起来费力,串口通讯不知怎样用软件模仿,也便是因为这样早上的键盘程序都是*软件调试和蜂鸣器来提示来叛断是否正确,所以做起来很慢。如果有终端来显现那就便利多了。不想买液晶显现,尽管1602液晶应该没多少钱可是怕今后用不到仍是用电脑来做显现吧,接上串口来通讯就行。但问题是现在要有芯片,数据线,根本外围元件和洞洞板等等才行。家里街上和工业城市不一样,东西应该不好买,到市区里去看看吧,不可再淘宝了,立刻去了……
贴上我的键盘程序:
/*////////////////////////////////////函数原型: uchar key(void)函数阐明:键盘扫描版别: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;}