硬件电路的设计

(末尾附文件)

方案框图

原理图:
本设计选用属于STM32系列的STM32F103C8T6单片机作为控制电路的核心部件,矩阵键盘用于输入数字密码和进行各种功能的实现。由用户通过连接单片机的矩阵键盘输入密码,后经过单片机对用户输入的密码与自己保存的密码进行对比从而判断密码是否正确,然后控制引脚的高低电平传到开锁电路或者报警电路控制开锁还是报警,实际使用时只要将单片机的负载由继电器换成电子密码锁的电磁铁吸合线圈即可。

各模块功能如下:
1)键盘输入模块:分为密码输入按键与几个功能按键,用于完成密码锁输入功能。
2)显示模块:用于完成对系统状态显示及操作提示功能。
3)报警模块:用于完成输错密码多次时的警报功能。
4)开锁模块:应用继电器及发光二极管模拟开锁,完成开锁及开锁提示。

本系统外围电路包括矩阵键盘输入电路、复位电路、LCD显示电路、报警电路、开锁电路,根据实际情况键盘输入部分选择4×4矩阵键盘,显示部分选择字符型液晶显示LCD1602。

按键输入模块
由于本设计所用到的按键数量较多而不适合用独立按键式键盘。采用的是矩阵式按键键盘,它由行和列组成,也称行列式键盘,按键位于行列的交叉点上,密码锁的密码由键盘输入完成,与独立式按键键盘相比,要节省很多I/O口。本设计中使用的这个4×4键盘不但能完成密码的输入还能作特别功能键使用。键盘的每个按键功能在程序设计中设置


LCD 显示模块
显示部分由液晶显示器LCD1602取代普通的数码管完成。开锁时,按下键盘上的开锁按键后,利用键盘上的数字键0-9输入密码,每按下一个数字键后在显示器上显示一个*,输入多少位就显示多少个*。当密码输入完成时,按下确认键,如果输入的密码正确的话, LCD显示“DOOR OPEN”,单片机其中P2.0引脚会输出低电平,使三极管T2导通,电磁铁吸合,继电器开关跳转,电子密码锁被打开,如果密码不正确,LCD显示屏会显示“CODE WRONG”,P2.0输出的是高电平,电子密码锁不能打开。通过LCD显示屏,可以清楚地判断出密码锁所处的状态。

报警模块
报警部分由陶瓷压电发声装置及外围电路组成,加电后不发声,当有键按下时,“叮”声,每按一下,发声一次,密码正确时,响两声并开锁,当密码输入错误时,单片机的PC13引脚为高电平,三极管T3导通蜂鸣器发出噪声报警。如图2.4所示。


开锁模块
开锁控制电路的功能是当输入正确的密码后将锁打开。系统使用单片机其中一引脚线发出信号,经三极管放大后,由继电器驱动电磁阀动作将锁打开。用户通过键盘任意设置密码,并储存在FLASH中作为锁码指令。开锁步骤如下:利用键盘上的数字键0-9输入密码,最后按下确认键。当用户输入密码后,单片机自动识别密码,如果密码不符,则报警。只有当密码正确,单片机才能使继电器处于开锁状态

软件设计

#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "sys.h"
#include "delay.h"
#include "lcd.h"
#include "led.h"
#include "usart.h"
#include "dht11.h"
#include "key.h"
#include "beep.h"
#include <stdio.h>
#include "stmflash.h"
#include "timer.h"
#include "exit.h"
#define ADDR_hum_up_1  0X0800b000
#define ADDR_hum_up_2  0X0800c000
int key=0;
int j=0;
u8 k1_flag=1;
u8 k2_flag=1;
u8 k3_flag=1;
u8 k4_flag=1;
int setpass_flag11=1;//标识正在设置密码,继电器不关闭
int err3_flag=1;
int i=0;
int djtime_flag=360;
int down_flag=0;
static u8 key_up=1;//不支持连按
u8 open_flag=1;//用于标识是否是系统的第一次打开u8 pass_shuru=0;u8 setpassword_flag=0;
u8 setopen_flag=1;//用于标识开机之后是否打开过
u8 setpass_flag=0;//当密码设置成功之后的标志位
u8 err_flag=0;//输出错误次数记录标志位
u8 errtime_flag=0;//用于错误之后延时并重置屏幕的标志位
u8 beep_flag=1;//用于标识当按键按下,蜂鸣器滴一声的时间
u8 password[]={9,9,9,9,9,9};;//记录输入的密码
u8 setpassword1[6]={1,1,1,1,1,1};//设置密码的存放位置
u8 setpassword2[6];//设置密码的存放位置static u8 ok_flag=0;//记录每次判断密码有几位正确
u8 flag16=1;//标志按键16是第几次按下,做相应的动作u8 cspassword[]={0,0,0,0,0,0};
u8 cjpassword[]={1,3,1,4,2,0};u8 table0[]="===Coded Lock===";
u8 table1[]="password:       ";
u8 table2[]="      open      ";
u8 table3[]="      error     ";
u8 table4[]="SetNewWordEnable";
u8 table5[]="input again     ";
u8 table6[]="ResetPassword OK";
u8 flash1[]={0};
u8 flash2[]={1,0,0,0,0,0};void show1(void){LCD1602_Show_dat(0,1,table1[0]);LCD1602_Show_dat(1,1,table1[1]);LCD1602_Show_dat(2,1,table1[2]);LCD1602_Show_dat(3,1,table1[3]);LCD1602_Show_dat(4,1,table1[4]);LCD1602_Show_dat(5,1,table1[5]);LCD1602_Show_dat(6,1,table1[6]);LCD1602_Show_dat(7,1,table1[7]);LCD1602_Show_dat(8,1,table1[8]);LCD1602_Show_dat(9,1,table1[9]);for(j=0;j<i;j++){LCD1602_Write_Dat('*');}for(j=0;j<6-i;j++){LCD1602_Write_Dat(' ');}} void show2(void){LCD1602_Show_dat(0,1,table2[0]);LCD1602_Show_dat(1,1,table2[1]);LCD1602_Show_dat(2,1,table2[2]);LCD1602_Show_dat(3,1,table2[3]);LCD1602_Show_dat(4,1,table2[4]);LCD1602_Show_dat(5,1,table2[5]);LCD1602_Show_dat(6,1,table2[6]);LCD1602_Show_dat(7,1,table2[7]);LCD1602_Show_dat(8,1,table2[8]);LCD1602_Show_dat(9,1,table2[9]);LCD1602_Show_dat(0xa,1,table2[10]);LCD1602_Show_dat(0xb,1,table2[11]);LCD1602_Show_dat(0xc,1,table2[12]);LCD1602_Show_dat(0xd,1,table2[13]);LCD1602_Show_dat(0xe,1,table2[14]);LCD1602_Show_dat(0xf,1,table2[15]);}void show3(void){LCD1602_Show_dat(0,1,table3[0]);LCD1602_Show_dat(1,1,table3[1]);LCD1602_Show_dat(2,1,table3[2]);LCD1602_Show_dat(3,1,table3[3]);LCD1602_Show_dat(4,1,table3[4]);LCD1602_Show_dat(5,1,table3[5]);LCD1602_Show_dat(6,1,table3[6]);LCD1602_Show_dat(7,1,table3[7]);LCD1602_Show_dat(8,1,table3[8]);LCD1602_Show_dat(9,1,table3[9]);LCD1602_Show_dat(0xa,1,table3[10]);LCD1602_Show_dat(0xb,1,table3[11]);if(err3_flag==1){LCD1602_Show_dat(0xc,1,table3[12]);LCD1602_Show_dat(0xd,1,table3[13]);LCD1602_Show_dat(0xe,1,table3[14]);LCD1602_Show_dat(0xf,1,table3[15]);}else if(err3_flag==2){LCD1602_Show_dat(0xc,1,0x30+djtime_flag/2/100);LCD1602_Show_dat(0xd,1,0x30+djtime_flag/2/10%10);LCD1602_Show_dat(0xe,1,0x30+djtime_flag/2%10);LCD1602_Show_dat(0xf,1,'s');}}void show4(void){LCD1602_Show_dat(0,1,table4[0]);LCD1602_Show_dat(1,1,table4[1]);LCD1602_Show_dat(2,1,table4[2]);LCD1602_Show_dat(3,1,table4[3]);LCD1602_Show_dat(4,1,table4[4]);LCD1602_Show_dat(5,1,table4[5]);LCD1602_Show_dat(6,1,table4[6]);LCD1602_Show_dat(7,1,table4[7]);LCD1602_Show_dat(8,1,table4[8]);LCD1602_Show_dat(9,1,table4[9]);LCD1602_Show_dat(0xa,1,table4[10]);LCD1602_Show_dat(0xb,1,table4[11]);LCD1602_Show_dat(0xc,1,table4[12]);LCD1602_Show_dat(0xd,1,table4[13]);LCD1602_Show_dat(0xe,1,table4[14]);LCD1602_Show_dat(0xf,1,table4[15]);}void show5(void){LCD1602_Show_dat(0,1,table5[0]);LCD1602_Show_dat(1,1,table5[1]);LCD1602_Show_dat(2,1,table5[2]);LCD1602_Show_dat(3,1,table5[3]);LCD1602_Show_dat(4,1,table5[4]);LCD1602_Show_dat(5,1,table5[5]);LCD1602_Show_dat(6,1,table5[6]);LCD1602_Show_dat(7,1,table5[7]);LCD1602_Show_dat(8,1,table5[8]);LCD1602_Show_dat(9,1,table5[9]);LCD1602_Show_dat(0xa,1,table5[10]);LCD1602_Show_dat(0xb,1,table5[11]);LCD1602_Show_dat(0xc,1,table5[12]);LCD1602_Show_dat(0xd,1,table5[13]);LCD1602_Show_dat(0xe,1,table5[14]);LCD1602_Show_dat(0xf,1,table5[15]);}void show6(void){LCD1602_Show_dat(0,1,table6[0]);LCD1602_Show_dat(1,1,table6[1]);LCD1602_Show_dat(2,1,table6[2]);LCD1602_Show_dat(3,1,table6[3]);LCD1602_Show_dat(4,1,table6[4]);LCD1602_Show_dat(5,1,table6[5]);LCD1602_Show_dat(6,1,table6[6]);LCD1602_Show_dat(7,1,table6[7]);LCD1602_Show_dat(8,1,table6[8]);LCD1602_Show_dat(9,1,table6[9]);LCD1602_Show_dat(0xa,1,table6[10]);LCD1602_Show_dat(0xb,1,table6[11]);LCD1602_Show_dat(0xc,1,table6[12]);LCD1602_Show_dat(0xd,1,table6[13]);LCD1602_Show_dat(0xe,1,table6[14]);LCD1602_Show_dat(0xf,1,table6[15]);}
void mound(void)
{           if(open_flag==1){show1();}else if(open_flag==2){show2();}else if(open_flag==3){show3();}else if(open_flag==4){show4();}else if(open_flag==5){show5();}else if(open_flag==6){show6();}

.

链接:https://pan.baidu.com/s/1G_gcOky-ssHRDY_aH9uRsQ
提取码:1fnn

.

基于STM32F103的电子磁密码锁智能门禁原理图PCB程序设计相关推荐

  1. 基于STM32F103单片机的直流电压电流检测仪原理图PCB设计

    系统功能设计 本系统由STM32F103C8T6单片机核心板.ACS712电流检测模块.电压采集.LCD1602液晶及电源组成. 1.通过单片机检测电压(15V内)和直流电流(5A内),并在1602液 ...

  2. 根据stc89原理图画pcb_基于STC89C52单片机毕业设计(完整版) 附 原理图 pcb图 源程序 仿真图...

    基于stc89c52单片机毕业设计 附 原理图 pcb图 源程序 仿真图 表3-1 P3口管脚备选功能 3.2 晶体振荡器 晶体振荡器,简称晶振,其作用在于产生原始的时钟频率,这个频率经过频率发生器的 ...

  3. 基于STM32F103单片机的指南针电子罗盘方位显示原理图PCB程序设计

    硬件电路的设计 (末尾附文件) 本系统由STM32F103C8T6单片机.LCD1602液晶显示.GY-271模块及电压组成. 1.上电先进行数据校准,刚上电,液晶没有出现显示的情况下:以传感器为中心 ...

  4. 基于STM32F103单片机智能火灾烟雾检测报警器 原理图PCB程序设计

    硬件电路的设计 (末尾附文件) 本系统由STM32F103C8T6单片机核心板.烟雾传感器.LCD1602液晶显示.蜂鸣器报警.按键控制及电源组成. 1.通过传感器检测传感器实际值,并将传感器实际值显 ...

  5. 基于STM32单片机三色全彩RGB LED灯控制系统 原理图PCB程序设计

    硬件电路的设计 (末尾附文件) 系统硬件系统分析设计 系统功能设计 本系统由STM32F103C8T6单片机核心板.RGB灯驱动.按键组成. 1.系统实时驱动RGB灯进行显示不同颜色,颜色调整可以通过 ...

  6. 34、基于51单片机锂电池电压电流容量检测仪表LCD液晶显示 原理图PCB程序设计

    方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度.非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通 ...

  7. 基于STM32单片机的智能鱼缸控制系统原理图PCB

    功能介绍: 0.本系统采用STM32F103C8T6作为单片机 1.采用DS1302时钟芯片可实时显示时间,通过四个功能按键可设置投喂等操作定时时间 2.具有WiFi模块可以与手机进行数据传输通信 3 ...

  8. 基于51单片机声音噪声分贝检测采集显示proteus仿真原理图PCB程序设计

    硬件设计 (末尾附文件) 功能说明: 1.基于STC89C51/52(与AT89S51/52.AT89C51/52通用)单片机作为主控制器 2.采用LCD1602液晶显示屏实时显示分贝值: 3.使用小 ...

  9. 基于STM32单片机的智能水表水流量计原理图PCB

    功能: 0.本系统采用STM32F103C8T6作为单片机 1.该系统采用LCD1602液晶显示各种参数,包括瞬时流量速度,已经总流量,同时可通过按键设置最大阈值,一旦流量超过该值将启动报警 2.报警 ...

  10. 基于51单片机的温度控制proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示当前温度及温度范围设定 2.超过温度设定范围将启动加热棒加热或风扇冷却 3.超过设定温度将声光报警 4.按键可设置温 ...

最新文章

  1. centos普通用户设置sudo权限
  2. edittext禁止换行符但能自动换行简书_使用n-gram创建自动完成系统
  3. JAVA-WBE——spring security 3.2 认证-学习笔记2
  4. OpenCV提炼角点位置的实例(附完整代码)
  5. C++ sprintf 函数的使用
  6. Redis 过期键删除策略、内存淘汰机制
  7. 八大排序算法交换排序算法
  8. 远程连接Linux服务器无法连接解决办法
  9. Python让繁琐工作自动化——chapter14 处理CSV和JSON数据
  10. STM32电机库(ST-MC-Workbench)学习记录——电流采样参数设置
  11. 《疯狂的程序员64》读后感
  12. 再次回归 IDEA 的部分修改记录...
  13. 安捷伦温度测试仪 软件,安捷伦34970A数据采集器温度测试仪是德科技34970A+34901A模块...
  14. word/excel 通配符
  15. 计算机科学论文生成器,高考满分作文生成器来了!分分钟批量完成「生活在XX上」...
  16. ​​​LabVIEW DLL传递一个二维数组报错
  17. 助力自动驾驶商业化 高德公布高精地图技术路线图
  18. 三维表面的降噪处理 (surface denoising)
  19. jsp+ssm计算机毕业设计电影影评网【附源码】
  20. ubuntu14.04下推荐的工具及插件

热门文章

  1. [ZT]Grub4dos for WinPE 启动菜单
  2. 计算机一些常用快捷指令
  3. CNNIC发布第39次《中国互联网络发展状况统计报告》
  4. linux patch 给文件打补丁,Linux补丁工具patch生成使用补丁用法示例
  5. 华硕x8aip_华硕X8AIP可以升级么?如果可以……求升级建议……
  6. 节理玫瑰花图怎么画_什么软件能便捷地绘制出节理玫瑰花图、水系玫瑰花图?...
  7. 计算机组成原理——补码一位乘(Booth算法)+举例+小白理解
  8. 全志A33_Vstar
  9. Windows下 使用Python 3 调用讯飞 TTS 引擎实现文本转语音
  10. 计算机工程与应用论文模板,计算机工程与应用论文模板