单片机/MCU论坛
登录
直播中
wangka
13年用户
5636经验值
擅长:基础元器件 模拟与电源 操作系统/软件
私信
关注
单片机电子密码锁C程序完整代码【独家分享】
单片机
电子密码锁
单片机
电子
密码锁C程序完整代码【独家分享】
这里提供电子密码锁设计的完整代码程序,可以满足电子密码锁毕业设计、电子密码锁产品设计的要求。欢迎大家提出改进建议。
完整代码程序这里下载:
游客,如果您要查看本帖隐藏内容请
回复
#include
#include"intrins.h"
#include"key.h"
#include"xsh.h"
#include"24c02.h"
#define ulong unsigned long
bit BJCB=0;//报警标志
XG=0,//修改密码标志位
BJ=0,//报警标志位
SJ=0;//锁键盘标志位
// xg=0;//修改密码标志位
uchar PSWD0_0[16]={0};//密码输入缓存存储单元
//uchar code PSWD0_1[16]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};//用户初始密码存储单元
//uchar PSWD1_0[16]={0};//读出密码缓存存储单元
uchar PSWD1_1[16]={1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8};//管理员初始密码存储单元
***it OUT=P3^5;//输出端口
***it L1=P0^2;//上电指示
***it L2=P0^1;//开锁指示
***it L3=P0^0;//报警指示
uint mg=0,//密码个数
KSC=0,//开锁次数
BJC=0,//报警次数
TCNTY=0,//用户按键定时次数累加
TCNTG=0,//管理员输入密码定时次数
yhsh,//用户输入标志位
glsh,//管理员输标志位
shw;//密码输完标志位
void yhmimaxig();//密码修改程序
void glmimaxig();//管理员修改程序
void bjyin(ulong t)
{
ulong c;
uint n;
for(c=0;c
{
for(n=0;n<50;n++); //延时
BEEP=~BEEP; //取反输出到喇叭的信号
}
}
void delay_10ms(void)
{
uint i = 1000;
while(i--);
}
//////////////定时中断服务函数//////////////////////////////////////
void
ti
mer0() interrupt 1
{
uint i;
TH0=(65536-50000)/256; //对TH0 TL0赋值50MS定时
TL0=(65536-50000)%256; //重装计数初值
if(yhsh==1)
{
TCNTY++;//用户定时计数
if(shw==1)
{
TR0=0;
TCNTY=0;
}
if(TCNTY==200)
{
TR0=0;//关闭T0定时器
TCNTY=0;
mg=0;//密码个数清零
L1=1;
for(i=0;i<2;i++)//声光报警
电路
{
L3=0;
bjyin(1000);
L3=1;
delay(1000);
}
L1=0;
}
}
else if(glsh==1)
{
TCNTG++;//管理员定时计数
if(shw==1)
{
TR0=0;
TCNTG=0;
}
if(TCNTG==160)
{
TR0=0;//关闭T0定时器
TCNTG=0;
mg=0;//密码个数清零
L1=1;
for(i=0;i<2;i++)//声光报警电路
{
L3=0;
bjyin(1000);
L3=1;
delay(1000);
}
L1=0;
}
}
}
void main()
{
uint i;
TMOD=0x01; //定时器工作在方式1
ET0=1;
EA=1;
TH0=(65536-50000)/256; //对TH0 TL0赋值
TL0=(65536-50000)%256; //使定时器0.05秒中断一次
//Read_page24c02(0x00,PSWD1_1,16);//向24c02里读用户初始密码
//i2cWrite24LC16B(0,0X20);
/////////////第一次向24c02里写入初始管理员密码、用户密码、开锁次数/////////////////////
KSC=i2cRead24LC16B(0X20);
loop: L1=0;//上电红灯亮
L2=1;//开锁成功后绿灯亮
L3=1;//输错时黄灯亮报警
OUT=0;//开信号关闭
display_0(KSC);//开锁前显示
///////////密码输入/////////////////
if(SJ==0)//锁键盘标志位为0
{
do
{
flag=0;//键盘标志位
key();
if(flag==1&&num==12) //判断是否为管理员功能键按下
{
goto gl;
}
if(flag==1&&num<=9)
{
PSWD0_0[mg]=num;
mg++;//密码个数
}
if(flag==1&&num==14&&mg>=1)//输入错误删除
{
mg=mg-1;
}
if(mg==1) //有密码键按下开定时器限时
{
TR0=1;
yhsh=1;
}
}
while(num!=15);
if(mg!=16)
{
for(i=mg;i<16;i++)
{
PSWD0_0=0;
}
}
/////////////////密码比较电路////////////////////////////
回帖
(872)
keruiqi
2012-1-6 12:00:49
谢谢
谢谢
1
1
举报
王恩义:
好东西,谢谢楼主分享
qop3412
2012-1-6 12:08:10
嗯哼 不错哦
嗯哼 不错哦
举报
qop3412
2012-1-6 12:09:06
多谢!
多谢!
举报
z061403
2012-1-6 12:25:36
下载学习一下不错
下载学习一下不错
举报
潜移默化
2012-1-6 19:36:31
举报
shu_007
2012-1-6 21:13:32
good!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
good!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
举报
cdy_shenhua
2012-1-6 23:13:08
ddddsss
ddddsss
举报
ckchiu
2012-1-6 23:28:08
good
good
举报
cantmakeit
2012-1-10 23:28:15
看看
看看
举报
lvku
2012-1-12 09:13:33
收藏了
收藏了
举报
小艾AI
2012-1-12 11:19:30
来学习下呵呵
来学习下呵呵
举报
dengfeng84
2012-1-12 11:43:07
这个是好东西啊
这个是好东西啊
举报
334212704
2012-1-12 13:59:50
good
good
举报
占伟辉
2012-1-12 14:09:38
好啊
好啊
举报
1652914288.570900
2012-1-12 15:28:22
谢谢 分享
谢谢 分享
举报
yzz5117
2012-1-13 08:58:20
{:soso_e179:}
{:soso_e179:}
举报
吴耿建
2012-1-13 09:03:30
试试
试试
举报
陈维林
2012-1-13 09:08:32
看看是否有价值
看看是否有价值
举报
朽木
2012-1-13 09:56:09
很感兴趣的,看看。
很感兴趣的,看看。
举报
更多回帖
rotate(-90deg);
回复
相关帖子
单片机
电子密码锁
单片机电子
密码锁
24
基于
单片机电子
密码锁
设计
40
##
单片机电子
密码锁
+新
65
单片机电子
密码锁
设计
190
单片机电子
密码锁
_新
3
电子
密码锁
单片机
设计
完整
程序
电路
22
基于51
单片机电子
密码锁
的
程序
及仿真
98
单片机电子
密码锁
(仿真+
程序
)
165
单片机电子
密码锁
设计
7324
基于
单片机电子
密码锁
设计
7882
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分