历史上的今天
今天是:2024年10月15日(星期二)
2021年10月15日 | 基于51单片机的电子密码锁设计-- 1602显示
2021-10-15 来源:eefocus
一.硬件方案
本系统由STC89C52单片机、44矩阵键盘,蜂鸣器,复位电路和晶振电路、继电器等组成,44键盘主要用于密码的输入和修改,蜂鸣器报警,复位电路和晶振电路与STC89C52单片机组成单片机最小系统。它具有设置、修改6位用户密码、输错报警、密码错误报警等功能。
主要由51单片机+最小系统+LCD1602液晶显示模块+蜂鸣器模块+LED指示灯模块+继电器驱动模块+矩阵键盘模块+AT24C02芯片模块;如图:

二.设计功能
(1)采用AT24C02芯片可以实现存储的密码掉电保存。密码为1-16位,开锁时可以随意输入虚假密码掩人耳目可以随意更改,更改时要输入两遍确认;
(2)采用矩阵按键输入、1602液晶显示、继电器模拟开锁,有开锁指示灯。继电器有常开常闭触点可外接电磁锁等负载;
(3)有管理员密码,即使望记密码也不怕,可以找回;
(4)按键功能如图:

三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

四.软件设计
(1)程序流程图

(2)主程序源码
/******************主程序**********************/
void main()
{
static uint value ;
password_chushifa();
init_1602();
UartInit();
time_init(); //定时器初始化
read_24c02_8(6,0,password);
beiguan = 0;
while(1)
{
if(flag_password_cichu1 < 3) //错误三次按键不能用了
{
key(); //按键函数
if(key_can < 20)
{
beep =0;
if(beiguan == 0)
{
if(menu_1 == 0)
key_with(); //按键处理函数
xiugai_password(); //修改密码
}
else
beiguan = 0;
flag_time = 0;
delay_1ms(300);
beep =1;
}
}
if(flag_200ms == 1)
{
flag_200ms = 0;
if(beiguan == 0) //延时关闭锁20秒关闭背光
{
flag_time ++;
if(flag_time >= 5 * 30) //30秒
{
flag_time = 0;
beiguan = 1; //关闭背光
}
}
if(relay == 0) //延时关闭锁
{
flag_guan++;
if(flag_guan >= 5 * 10) //10秒
{
flag_guan = 0;
relay = 1; //关闭密码锁
}
}else
flag_guan = 0;
if(flag_password_cichu1 >= 3)
{
value ++; //200ms
beep = ~beep; //蜂鸣器报警
if(value >= 5 * 60) //1分钟
{
value = 0;
beep = 1;
flag_password_cichu1 = 0;
}
}
}
delay_1ms(1);
}
}
/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{
static uchar value;
TH0 = 0x3c;
TL0 = 0xb0; // 50ms 12M
value ++;
if(value % 4 == 0)
{
flag_200ms = 1;
}
}
上一篇:基于51单片机的温湿度控制系统
史海拾趣
|
我创建了一个下载型工程,就用zinc中Hello的实例做的,在下载的时候老是出现这个错误: Errors while downloading G:/tornado2.2/target/proj/Project1/SIMNTgnu/Project1.out: _LinkMain__14ZafApplication _Control__14ZafApplicationUi ___1 ...… 查看全部问答> |
|
以前使用ADS1.2时都是在原有的工程上添加自己的程序,这次自己建了一个工程,发现ARM竟然不会动,程序和以前的程序一样。可能是建工程的时候设置的问题导致不能运行。 哪个好心的大哥能否建立一个工程,每设置一步剪一个图片下来,并加以说明!急 ...… 查看全部问答> |
|
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家 ...… 查看全部问答> |
|
最近在做FFT,发几个用到的三角函数计算程序 #define DSP32_Q(x) ((int) ((x)*(((unsigned) (1 << (20)))))) const int atanLUT[20] = { DSP32_Q(0.78539816340), DSP32_Q(0.46364760900), DSP32_Q(0.24497866313), DSP32_Q(0. ...… 查看全部问答> |
|
最近看了DCMI的摄像头程序,终于调通了程序,摄像头工作起来了,PC通过串口接收到了摄像头采集的图像, 程序主循环里检测一帧图像采集完成的标志,然后关闭DCMI模块,串口传输数据,并清jpg_flag标志,最后再打开DCMI模块,等待下次中断: DCMI中 ...… 查看全部问答> |




