工作室课题3密码锁设计Word文档下载推荐.docx
- 文档编号:16706961
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:22
- 大小:159.69KB
工作室课题3密码锁设计Word文档下载推荐.docx
《工作室课题3密码锁设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《工作室课题3密码锁设计Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
本方案选用了AT89C52单片机来作为本系统的核心,图二所示的是中央处理模块的电路部分,即单片机的电路连接。
图二、中央处理模块
2.2显示模块设计
本设计采用的是液晶1602作为显示部分,如图三所示。
图三、显示模块电路
2.3键盘模块设计
由于键盘个数较少,所以采用简单式键盘,其如图四所示。
(1)
(2)
图四、键盘模块电路
键盘模块有2个部分部分
(1)为功能键
(2)为数字键。
功能键共有3个按键,设置键、确认键和取消键,分别对应接到中央处理器P2.3,P3.5,P3.7引脚上。
数字键是矩阵键盘接到中央处理器的P1口。
2.4报警及开锁模块设计
本设计报警模块采用的是蜂鸣器,其管脚通过与三极管连接,然后在三极管的基极再接到单片机的IO引脚上,从而实现报警模块设计。
开锁模块采用有两种方式,一种是收到正确红外波后通过接通电磁锁开锁,另一种是输入的密码正确后开锁。
报警及开锁模块如图五所示。
图五、报警及温度采集电路
2.5遥控器部分
图六遥控器发射模块的电路连接图。
首先,将从串行发射口P3.1送出的数据反馈到P1.1口时行内部调制,再从P1.2口送出,再经过红外发射二极管发射出去,发射距离为10m
接收时:
采用与发射击队配套的红外接收头,将发射出的数据接收后送到串行口P3.0中,再由系统进行确认接收数据是否与发送数据是否相符,相符则开锁,以发光二极管亮来表示,不相符则放弃,以发光二极管灭来表示。
图六、发射模
三、系统软件设计
3.1主程序设计
系统的软件设计采用结构化和模块化设计的方法,便于程序的编写、调试和排除错误,同时也便于检验和维护。
根据设计的要求和前面描述的控制器系统硬件设计的具体情况,单片机系统的软件程序主要由以下模块组成:
初始化,显示,键盘,密码部分和开锁报警。
主程序发送和接受流程图如图七所示。
图七、发送,接受程序流程图
四、总结
由于本设计还在设计阶段一些功能还不完善,以上只是本设计的大体思路,程序设计采用模块化的方式,附录将贴上几个子程序。
目前通过仿真可以实现本机输入密码开锁功能(包括显示密码锁状态),遥控部分还有待于完善。
附录1系统电路原理图
附录2程序清单
初始化部分
#include<
reg52.h>
#include"
intrins.h"
#defineuintunsignedint
#defineucharunsignedchar
#definenop()_nop_()
sbitP17=P0^7;
sbitRS=P2^0;
sbitRW=P2^1;
sbitE=P2^2;
sbitset=P2^3;
sbitsuo=P2^4;
sbitsp=P2^7;
sbitok=P3^5;
sbitled=P3^6;
sbitquxiao=P3^7;
ucharkey,temp,flag=0;
ucharcodetable[6][16]={"
enterthecode:
"
"
1234567890a"
thenewcode:
error!
!
theoldcode:
welcome!
};
ucharcodetable0[6][7]={"
*"
**"
***"
****"
*****"
******"
ucharnum[]="
111111"
;
//初始密码
ucharkeyscan();
voiddisplay_1();
voiddisplay_0();
voiddisplay_2();
voiddisplay_4();
voiddisplay_3();
//error
voidSHOW_LCD();
voidbusy();
voidwrite1();
voidwrite2(uchari);
voidenter_code();
voidset_code();
voidenter_main();
voidset_main();
voiddelay(ucharz);
设置密码子程序:
ucharshe_mima()
{
uchark,j,q;
uchara,i,z,p;
a=keyscan();
if(a!
=0xa0)
{
while(table0[i][j]!
='
\0'
)
{
P0=0xc0;
write1();
delay(5);
write2(table0[i][j]);
j++;
}
j=0;
i=i+1;
if(i==6)
i=0;
k=k+1;
p=num[k];
if(a==p)
{
z=z+1;
}
if(k==6)
k=0;
}
if(ok==0)
if(z==6)
z=0;
q=1;
else
display_3();
delay(200);
display_0();
returnq;
}
voidset_code()//设置密码程序
uchara,i=0;
a=keyscan();
if(a!
i=i+1;
write2(table[1][a]);
默认开锁程序:
voidenter_main()
uchara=0,i=0;
display_0();
while(a==0)
P0=0xc0;
enter_code();
if(set==0)
{
a=1;
}
voidset_main()
uchark=0,a=0,b=0,i=0;
display_2();
while(b==0)
b=she_mima();
k=b;
if(quxiao==0)
{b=1;
}
}
if(k==1)
{
display_1();
set_code();
if(quxiao==0)
{
if(ok==0)
voidenter_code(){
uchara,k,i,z,p,j=0;
suo=1;
display_4();
suo=0;
display_0();
sp=1;
sp=0;
显示部分:
voiddisplay_0()//状态显示enterthecode
ucharj=0;
SHOW_LCD();
write1();
while(table[0][j]!
write2(table[0][j]);
P0=0xc0;
delay(5);
voiddisplay_1()//newcode
while(table[2][j]!
write2(table[2][j]);
voiddisplay_2()//oldcode
while(table[4][j]!
write2(table[4][j]);
P1=0xc0;
voiddisplay_3()//error
while(table[3][j]!
write2(table[3][j]);
voiddisplay_4()//error
while(table[5][j]!
write2(table[5][j]);
}
voidSHOW_LCD()//lcd设置程序
P0=0x38;
P0=0x01;
P0=0x06;
P0=0x0c;
P0=0x80;
voidbusy()//判断LCD是否忙
{
do
P0=0xff;
RS=0;
RW=1;
E=0;
nop();
E=1;
}while(P17==1);
voidwrite1()//lcd写控制字
RS=0;
RW=0;
busy();
voidwrite2(uchari)//lcd写数据
P0=i;
RS=1;
延时程序:
voiddelay(ucharz)
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
键盘部分:
ucharkeyscan()
key=0xa0;
P1=0xfe;
temp=P1;
delay(5);
if(temp!
=0xfe)
switch(temp)
{
case0xee:
key=0x31;
break;
case0xde:
key=0x32;
case0xbe:
key=0x33;
case0x7e:
key=0x34;
}
while(temp!
=0xfe)//松手判断
led=1;
delay(50);
led=0;
P1=0xfd;
=0xfd)
case0xed:
key=0x35;
break;
case0xdd:
key=0x36;
case0xbd:
key=0x37;
case0x7d:
key=0x38;
=0xfd)//松手判断
temp=P1;
P1=0xfb;
=0xfb)
case0xeb:
key=0x39;
break;
case0xdb:
key=0x30;
=0xfb)//松手判断
returnkey;
主程序部分:
voidmain()
while
(1)
led=0;
set=0;
if(set==0)
set_main();
else
enter_main();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工作室 课题 密码锁 设计