51单片机关于密码锁的毕业设计,论文 基于at89c52单片机的电子密码锁毕业设计论文摘要怎么写
\u6bd5\u4e1a\u8bbe\u8ba1\u6211\u60f3\u505a\u57fa\u4e8e\u5355\u7247\u673a\u7684\u5bc6\u7801\u9501\u8bbe\u8ba1\u6069\uff0c\u8bf4\u5b9e\u8bdd\u5bc6\u7801\u9501\u5df2\u7ecf\u6709\u5f88\u591a\u4eba\u505a\u8fc7\u4e86\uff0c\u5df2\u7ecf\u4e0d\u662f\u4e2a\u5f88\u65b0\u5947\u7684\u4e1c\u897f\u4e86\u3002
\u5f53\u7136\u5982\u679c\u4f60\u53ef\u4ee5\u6709\u60f3\u6cd5\u7684\u8bdd\u53ef\u4ee5\u5927\u80c6\u7684\u6269\u5c55\u4e00\u4e0b\u7684\uff0c\u8ba9\u4ed6\u591a\u6709\u4e9b\u529f\u80fd\uff0c\u4ec0\u4e48\u7535\u5b50\u732b\u773c\uff0f\u8bed\u97f3\u5bf9\u8bdd\uff0f\u7559\u8a00\uff0f\u9632\u76d7\uff0f\u9632\u706b\u707e\u2026\u2026\u90fd\u52a0\u4e0a\u53bb\u5427\u3002
\u7528\u5355\u7247\u673a\u505a\u5bc6\u7801\u9501\uff0c\u4ec0\u4e48\u5355\u7247\u673a51?PIC?DSP?ARM?
\u4f60\u6765\u53d6\uff0c\u6211\u53d1\u7ed9\u4f60
\u6211\u6709\u66f4\u5b8c\u6574\u7684
\u786e
程序设计内容
(1). 密码的设定,在此程序中密码是固定在程序存储器ROM中,假设预设的密码为“12345”共5位密码。
(2). 密码的输入问题: 由于采用两个按键来完成密码的输入,那么其中一个按键为功能键,另一个按键为数字键。在输入过程中,首先输入密码的长度,接着根据密码的长度输入密码的位数,直到所有长度的密码都已经输入完毕;或者输入确认功能键之后,才能完成密码的输入过程。进入密码的判断比较处理状态并给出相应的处理过程。
(3).按键禁止功能:初始化时,是允许按键输入密码,当有按键按下并开始进入按键识别状态时,按键禁止功能被激活,但启动的状态在3次密码输入不正确的情况下发生的。
C语言源程序
#include unsigned char code ps[]={1,2,3,4,5};
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
unsigned char pslen=9; unsigned char templen;
unsigned char digit; unsigned char funcount;
unsigned char digitcount;
unsigned char psbuf[9];
bit cmpflag;
bit hibitflag;
bit errorflag;
bit rightflag;
unsigned int second3;
unsigned int aa;
unsigned int bb;
bit alarmflag;
bit exchangeflag;
unsigned int cc;
unsigned int dd;
bit okflag;
unsigned char oka;
unsigned char okb;
void main(void)
{
unsigned char i,j;
P2=dispcode[digitcount];
TMOD=0x01;
TH0=(65536-500)/256;
TL0=(65536-500)%6;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(cmpflag==0)
{
if(P3_6==0) //function key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_6==0)
{
if(hibitflag==0)
{
funcount++;
if(funcount==pslen+2)
{
funcount=0;
cmpflag=1;
}
P1=dispcode[funcount];
}
else
{
second3=0;
}
while(P3_6==0);
}
}
if(P3_7==0) //digit key
{
for(i=10;i>0;i--)
for(j=248;j>0;j--);
if(P3_7==0)
{
if(hibitflag==0)
{
digitcount++;
if(digitcount==10)
{
digitcount=0;
}
P2=dispcode[digitcount];
if(funcount==1)
{
pslen=digitcount;
templen=pslen;
}
else if(funcount>1)
{
psbuf[funcount-2]=digitcount;
}
}
else
{
second3=0;
}
while(P3_7==0);
}
}
}
else
{
cmpflag=0;
for(i=0;i
{
if(ps[i]!=psbuf[i])
{
hibitflag=1;
i=pslen;
errorflag=1;
rightflag=0;
cmpflag=0;
second3=0;
goto a;
}
}
cc=0;
errorflag=0;
rightflag=1;
hibitflag=0;
a: cmpflag=0;
}
}
}
void t0(void)
interrupt 1 using 0 { TH0=(65536-500)/256;
TL0=(65536-500)%6;
if((errorflag==1) && (rightflag==0))
{
bb++;
if(bb==800)
{
bb=0;
alarmflag=~alarmflag;
}
if(alarmflag==1)
{
P0_0=~P0_0;
}
aa++;
if(aa==800)
{
aa=0;
P0_1=~P0_1;
}
second3++;
if(second3==6400)
{
second3=0;
hibitflag=0;
errorflag=0;
rightflag=0;
cmpflag=0;
P0_1=1;
alarmflag=0;
bb=0;
aa=0;
}
}
if((errorflag==0) && (rightflag==1))
{
P0_1=0;
cc++;
if(cc<1000)
{
okflag=1;
}
else if(cc<2000)
{
okflag=0;
}
else
{
errorflag=0;
rightflag=0;
hibitflag=0;
cmpflag=0;
P0_1=1;
cc=0;
oka=0;
okb=0;
okflag=0;
P0_0=1;
}
if(okflag==1)
{
oka++;
if(oka==2)
{
oka=0;
P0_0=~P0_0;
}
}
else
{
okb++;
if(okb==3)
{
okb=0;
P0_0=~P0_0;
}
}
}
}
电子密码锁
摘要 本文的电子密码锁利用数字逻辑电路,实现对门的电子控制,并且有各种附加电路保证电路能够安
工作,有极高的安全系数。
关键词 电子密码锁 电压比较器 555单稳态电路 计数器 JK触发器 UPS电源。
1 引言
随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。
设计本课题时构思了两种方案:一种是用以AT89C2051为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到单片机方案原理复杂,而且调试较为繁琐,所以本文采用后一种方案。
用STC的单片机,里面有EEPROM,把设定的密码写到里面。
正常运行时 输入密码和EEPROM里面的密码比较 正确了就可以进入
新款的单片机都可以设置密码
绛旓細锛1锛夛紟瀵嗙爜鐨璁惧畾锛屽湪姝ょ▼搴忎腑瀵嗙爜鏄浐瀹氬湪绋嬪簭瀛樺偍鍣≧OM涓紝鍋囪棰勮鐨勫瘑鐮佷负鈥12345鈥濆叡5浣嶅瘑鐮併傦紙2锛夛紟瀵嗙爜鐨勮緭鍏ラ棶棰橈細 鐢变簬閲囩敤涓や釜鎸夐敭鏉ュ畬鎴愬瘑鐮佺殑杈撳叆锛岄偅涔堝叾涓竴涓寜閿负鍔熻兘閿紝鍙︿竴涓寜閿负鏁板瓧閿傚湪杈撳叆杩囩▼涓紝棣栧厛杈撳叆瀵嗙爜鐨勯暱搴︼紝鎺ョ潃鏍规嵁瀵嗙爜鐨勯暱搴﹁緭鍏ュ瘑鐮佺殑浣嶆暟锛岀洿鍒版墍鏈夐暱搴︾殑...
绛旓細include<reg51.h> define uint unsigned int char leab[]={0x7f,0x7f,0x7f,0x7f,0x7f,0x7f};delay(uint z){ uint x;for(;z<0;z--)for(x=0;x<10;x++);//1ms } disp(){ char x,y;for(x=5;x>=0;x--){for(y=0;y<10;y++){P0=0;P2=x;P0=leab[x];delay(10);P0...
绛旓細璁捐涓涓敱51鍗曠墖鏈鎺у埗鐨勭數瀛瀵嗙爜閿,杈撳叆鎺ュ彛浣跨敤4脳4閿洏,杈撳嚭鎺ュ彛浣跨敤6浣7娈垫暟鐮佺銆傚崟鐗囨満灏嗚緭鍏ョ殑瀵嗙爜涓庤瀹氱殑瀵嗙爜姣旇緝,鑻ュ瘑鐮佹纭,鍒欏瘑鐮侀攣鎵撳紑(缁胯壊鍙戝厜浜屾瀬绠′寒涓... 璁捐涓涓敱51鍗曠墖鏈烘帶鍒剁殑鐢靛瓙瀵嗙爜閿,杈撳叆鎺ュ彛浣跨敤4脳4閿洏,杈撳嚭鎺ュ彛浣跨敤6浣7娈垫暟鐮佺銆傚崟鐗囨満灏嗚緭鍏ョ殑瀵嗙爜涓庤瀹氱殑瀵嗙爜姣旇緝,鑻ュ瘑鐮佹纭,...
绛旓細鍗曠墖鏈鎺у埗鐨瀵嗙爜閿佽璁銆傚崟鐗囨満p1寮曡剼鐭╅樀鎸夐敭锛屽垎鍒唬琛ㄦ暟瀛楅敭0-9锛岀‘瀹氶敭锛屽彇娑堥敭锛岄噸鏂颁笂妗i敭鍜屼慨鏀瑰瘑鐮侀敭銆傚崟鐗囨満浠巔2鍙h緭鍑3涓俊鍙凤紝鍒嗗埆涓1涓凡寮閿佹寚绀轰俊鍙峰拰瀵嗙爜閿欒淇″彿鎸囩ず锛1涓粍鑹叉姤璀︾伅锛屽垎鍒敤鍙戝厜浜屾瀬绠1-L2鎸囩ず锛岃繕鏈夎渹楦e櫒鎶ヨ銆侺CD1602鐢ㄦ潵鏄剧ず锛屾帀鐢典繚鎶ゆā鍧楋細瀛樺偍鐢佃矾涓昏浣滅敤鏄瓨鍌ㄥ瘑...
绛旓細鏃犺緭鍏ユ椂鏄剧ず鏃ュ巻锛屾俯搴︼紝鍙繘琛岃皟鏃惰瀹氾紝瀵嗙爜杈撳叆鍔熻兘 51鍗曠墖鏈绯荤粺鐗堛乨s1302鏃堕挓妯″潡銆4*4鐭╅樀閿洏銆乨s18b20娓╁害浼犳劅鍣ㄣ12864娑叉櫠鏄剧ず灞忋傝繖涓璁捐鏋勬兂鍏跺疄鑰佹棭灏辨湁浜嗭紝鐢变簬蹇帴杩戞湡鏈冭瘯鎵浠ヤ竴鐩村湪鏋勬兂涓紝绛夊埌鑰冭瘯瀹屽噯澶囧埄鐢ㄦ殤鍋囩殑鏃跺欏疄鐜板畠銆傝冭瘯缁撴潫灏卞幓鏌愬疂璐拱鍣ㄤ欢锛屼负浜嗛敾鐐艰嚜宸辩殑鐒婃帴姘村钩涔颁簡...
绛旓細[1]鍗曠墖鏈澶氬姛鑳瀵嗙爜閿绯荤粺/闃茬伀闃茬洍绯荤粺璁捐 瀹炵幇鍔熻兘锛1銆 瀵嗙爜閿佸姛鑳/鍙互淇敼瀵嗙爜锛 涓嬫寮鏈哄悗鏂板瘑鐮佷粛鐒舵湁鏁 2銆 鏀寔涓閿仮澶嶅垵濮嬪瘑鐮 3銆 鍙坊鍔犻槻鐏槻鐩楁姤璀﹀姛鑳 4銆 鍙繘琛屽姛鑳藉畾鍒 鈽嗗凡浣滃嚭鐨勫疄鐗╀紭閰疯棰戞紨绀哄湴鍧锛歨ttp://v.youku.com/v_show/id_XMTUwMjg3MjQyOA==.html 鍗曠墖鏈鸿摑鐗...
绛旓細//瀹炰緥80锛氱煩闃靛紡閿洏瀹炵幇鐨勭數瀛瀵嗙爜閿 include<reg51.h> //鍖呭惈51鍗曠墖鏈瀵勫瓨鍣ㄥ畾涔夌殑澶存枃浠 sbit P14=P1^4; //灏哖14浣嶅畾涔変负P1.4寮曡剼 sbit P15=P1^5; //灏哖15浣嶅畾涔変负P1.5寮曡剼 sbit P16=P1^6; //灏哖16浣嶅畾涔変负P1.6寮曡剼 sbit P17=P1^7; //灏哖17浣嶅畾涔変负P1.7...
绛旓細uchar index;//鎺у埗杈撳叆瀵嗙爜鐨浣嶆暟 uchar flag_3s=0;//3s鏍囧織浣 uchar keydown;//纭畾鎸夐敭鍙橀噺 define times 15//鍘绘姈鏃堕棿15Ms uchar key1_count,key2_count,key3_count,key4_count;void init(){ wela=0;SMG=0xff;TMOD=0x01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;ET0=1;EA=1...
绛旓細mov r2,#03h ;璁剧疆杈撳叆瀵嗙爜鐨娆℃暟 K:mov ie,#81h ;涓柇鏂瑰紡璁剧疆 mov tcon,#01h k1:mov a,p1 clr p1.2 ;鍒ゆ柇寮鍏充綅缃 mov r1,a anl a,#03h jz dmm dec a jz xianshi dec a jz xianshi dec a jz dmm dmm: mov r3,#08h ;璇诲瘑鐮 鍏綅 mov r6,#80h ;闂姩浣嶆帶鍒 m...
绛旓細鏈夊伩鎻愪緵锛岀涓涓槸甯埆鐨勬瘯涓氳璁鍋氱殑 绗簩涓病鏈変娇鐢ㄨ繃銆; 瀵嗙爜闀垮害鑷敱鍙锛; 瀵嗙爜璁惧畾蹇呴』鍔犲瘑瀛樺偍锛; 涓夋閿欑爜杈撳叆鎶ヨ鎻愮ず锛屼笖10鍒嗛挓鍐呬笉鎺ュ彈鍐嶆杈撳叆锛; 鍏锋湁瓒呯骇瀵嗙爜鍔熻兘锛岄暱搴︽垨鏍煎紡鐗规畩銆傚叾浜岋細51鍗曠墖鏈锛4x4灏忛敭鐩樺拰1622LCD鍋氫竴涓畝鏄瀵嗙爜閿 鎮祻鍒嗭細0 - 绂婚棶棰樼粨鏉熻繕鏈 4 澶 19 ...