找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2861|回复: 4
打印 上一主题 下一主题
收起左侧

基于STC12C5A60S2单片机密码锁设计

[复制链接]
跳转到指定楼层
楼主
ID:345547 发表于 2018-9-9 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       采用单片机设计一种可防止多次试探破译的密码锁系统,系统采用电磁锁,有门内/外两个键盘,由单片机根据输入的密码情况,控制电磁锁的开关。具体功能如下:
可设置8位密码,每位密码可取值0~9
  ②用户能够自行设定和修改密码;
  ③输入密码时,每个按键有提示音;
  ④若输入的8位密码不正确,则报警3秒提示;
  若连续三次输入错误密码,系统报警1分钟,报警器间输入密码无效,以防窃贼多次试探密码;
  若输入的8位密码完全正确,开锁,同时发出1秒的提示音;
  ⑤系统使用电磁锁,开锁时,电磁线圈打开5s,而后恢复初始状态;
  †系统设有两个键盘,门外密码键盘只提供数字0~9用于输入密码,门内键盘除带有数字键外,还提供确认和设定按键,以便重新设置密码;
  ‡门内部分带有显示器件,要求使用8LED数码管,用于提示密码的设定情况;
设定密码时,增加LCD显示设定的密码,输入完毕后,按下确认键,如果不足8位,LCD显示ERR(数码管也可显示类似字型),此时设定的密码无效。如果输入的密码满8位,则LCD显示AGN提示字符,要求重新输入一遍,两次输入吻合的情况下,密码设定成功,LCD显示OK提示,并伴有2S的提示音。
附上部分代码:
#include <STC12C5A60S2.h>
#include <string.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define fadd 0x0000
sbit P3_7=P3^7;
uchar *q;
uchar Temp;
uint r,t,e,dat;
uchar flag=0;   //用户自定义定时溢出标志位
uchar buffer[8]="00000000";  //huan cun
sbit rs=P2^7;
sbit rd=P2^6;
sbit lcden=P2^5;
sbit relay=P2^4;    //定义继电器引脚
sbit laba=P2^3;
uchar  DSY_BUFFER[16]="                "; //数组用于存放显示符号
uchar  DSY_BUFFER1[16]="                "; //数组用于存放显示符号
uchar idata Userpassword[8]={0};     //存放用户密码
uchar code table2[8]="01234567";    //初始化密码
uchar code table[]="Input Password..";
uchar temp,i=0,j=0,k=0,n;
uchar IS_valid_user;
/*************delay************/
void delayms(uint z)    //延时毫秒级
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void delay5s()    //延时5s
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 228;
j = 253;
k = 219;
do
{
  do
  {
   while (--k);
  } while (--j);
} while (--i);
}

void delay3s()    //延时3s
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 137;
j = 203;
k = 232;
do
{
  do
  {
   while (--k);
  } while (--j);
} while (--i);
}

void delay1s()    //延时1s
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 12;
j = 103;
k = 57;
do
{
  do
  {
   while (--k);
  } while (--j);
} while (--i);
}

void delay()
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 5;
j = 144;
k = 71;
do
{
  do
  {
   while (--k);
  } while (--j);
} while (--i);
}

/****************lcd1602******************/
void write_com(uchar com)
{
rs=0;
rd=0;
lcden=0;
P0=com;
delayms(3);
lcden=1;
delayms(3);
lcden=0;
}
void write_date(uchar date)
{
rs=1;
rd=0;
lcden=0;
P0=date;
delayms(3);
lcden=1;
delayms(3);
lcden=0;
}
void Display_String(uchar *p,uchar com)
{  uchar i;
   write_com(com);
   for(i=0;i<16;i++)
   {
   write_date(p);
}
}
void init_lcd()
{
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
    Display_String(table,0x80);
Display_String("Lock OK!         ",0xc0);
}

/***********EEPROM*************/
void chachu()
{
     dat=0x10;
  while(dat!=0)
{
IAP_CONTR=0x82;
IAP_CMD=0x03;
IAP_ADDRL=0x0000;
IAP_ADDRH=(0x0000>>8);
IAP_TRIG=0x5A;
IAP_TRIG=0xA5;
delay();
dat=(IAP_CONTR&0x10);
}
}


      

密码锁程序.docx

17.12 KB, 下载次数: 38, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:326450 发表于 2018-11-13 17:05 | 只看该作者
嘻嘻,不错不错
回复

使用道具 举报

板凳
ID:448081 发表于 2018-12-17 16:00 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

地板
ID:448081 发表于 2018-12-17 16:29 | 只看该作者
谢谢楼主分享 感谢感谢
回复

使用道具 举报

5#
ID:548958 发表于 2019-5-29 09:37 来自手机 | 只看该作者
电路仿真图有么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表