STM32门禁系统

news/2024/12/4 7:55:07/

系列文章目录 

1.STM32门禁系统:整体及简易模块的简介

2.STM32门禁系统:0.96寸显示模块的简介

3.STM32门禁系统:舵机模块的简介

4.等待开发中~~~~


文章目录

目录

系列文章目录 

1.STM32门禁系统:整体及简易模块的介绍

前言

一、门禁系统简介

二、模块的介绍

1.矩阵键盘的介绍:

直接看代码吧,没啥可讲的,就是多个按键检测

2、蜂鸣器的介绍

1.这代码也不给了就是初始化蜂鸣器端口后再拉低或者拉高。

总结

下一章是0.96寸OLED模块的介绍



前言

本文章是我在学习STM32后做的第一个小项目,自我感觉文章通俗易懂,因为都是自己遇到过的问题。本文按照模块一章一章发布。

一、门禁系统简介

门禁系统采用STM32F103C6T6作为主控,有矩阵键盘模块,OLED显示模块,舵机模块,指纹模块,刷卡模块,蜂鸣器模块,WIFI模块。

二、模块的介绍

1.矩阵键盘的介绍:

直接看代码吧,没啥可讲的,就是多个按键检测

代码如下(示例):

#include "Matrix.h"/*     定义列端口从列开始检测行
*/
#define COLUMN1(x)     GPIO_WriteBit(GPIOA,GPIO_Pin_0,    (BitAction)(x))      
#define COLUMN2(x)     GPIO_WriteBit(GPIOC,GPIO_Pin_15,    (BitAction)(x))     
#define COLUMN3(x)     GPIO_WriteBit(GPIOC,GPIO_Pin_14,    (BitAction)(x))    
#define    COLUMN4(x)     GPIO_WriteBit(GPIOC,GPIO_Pin_13,    (BitAction)(x))    // 初始化所有IO口
void Matrix_Init()
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStruct);GPIO_SetBits(GPIOC,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);//拉低引脚GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStruct);GPIO_SetBits(GPIOA,GPIO_Pin_0);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStruct);GPIO_SetBits(GPIOB,GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);}
uint8_t Matrix_Detect()
{uint8_t num=0;COLUMN1(0);COLUMN2(1);COLUMN3(1);COLUMN4(1);if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0);Delay_ms(20);num =16;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0);Delay_ms(20);num =12;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0);Delay_ms(20);num =8;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0);Delay_ms(20);num =4;}COLUMN1(1);COLUMN2(0);COLUMN3(1);COLUMN4(1);if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0);Delay_ms(20);num =15;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0);Delay_ms(20);num =11;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0);Delay_ms(20);num =7;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0);Delay_ms(20);num =3;}COLUMN1(1);COLUMN2(1);COLUMN3(0);COLUMN4(1);if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0);Delay_ms(20);num =14;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0);Delay_ms(20);num =10;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0);Delay_ms(20);num =6;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0);Delay_ms(20);num =2;}COLUMN1(1);COLUMN2(0);COLUMN3(1);COLUMN4(0);if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12) == 0);Delay_ms(20);num =13;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13) == 0);Delay_ms(20);num =9;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14) == 0);Delay_ms(20);num =5;}if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0){Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15) == 0);Delay_ms(20);num =1;}return num;}

2、蜂鸣器的介绍

1.这代码也不给了就是初始化蜂鸣器端口后再拉低或者拉高。
 


总结

下一章是0.96寸OLED模块的介绍


http://www.ppmy.cn/news/246122.html

相关文章

基于RFID技术的智能门禁系统设计(控制部分)

目 录 摘要 I Abstract II 第1章 绪论 1 1.1 课题研究的背景及意义 1 1.2 课题研究现状 1 1.2.1国内研究现状 1 1.2.2国外研究现状 2 1.3 门禁系统发展趋势 3 1.4 课题设计任务 3 1.5 论文结构 3 第2章 基于RFID技术的门禁系统理论基础 4 2.1射频识别技术概述 4 2.1.1射频识别技…

简易全双工物联网远程控制门禁设计方案

远程控制物联网方案 (此方案成本250元~300元优点是远低于产家报价400~500,使用自家服务器扩展成本低) 组装后连线效果实物图 网关配置 工具见下面产品说明 通讯是TCP/IP协议,一定要配置好服务器地址与网关 通讯是TCP/IP协议,一定要配置好服务器地址与网关 通讯是TCP…

门禁管理

门禁管理系统 目录 1.前言... 1 2.系统设计特点... 1 3.系统实现... 3 4.门禁系统结构图... 5 5.门禁系统设备... 6 6.门禁管理系统特点... 10 7.管理软件简介... 11 8.系统配置及报价... 14 1.前言 门禁系统已成为安全防范系统中极其重要的一部分,在一些发…

基于射频技术的门禁管理系统

引言 随着科学水平的不断提高,基于 RFID 技术的门禁管理系统日渐成熟,现如今已被各大高校,公司,政府机关等敏感区域使用,其强大的功能已为人们深刻认识,它已进入人类社会的各大安全防范领域并发挥着至关重要的作用。越来越多的管理人员意识到…

【基于RFID的门禁系统】

本文为毕业设计分享,门禁系统已经很多了,本人做的就只是参考刷卡门禁系统,在里面添加一些自己的需求,设计时参考了其他资料,并综合了其他作品的功能,主要包含后台设置和刷卡以及密码等功能,该设…

大数据开发难学么

好学不好学真的是小马过河的问题,会者不难,难者不会。但是不可否认的是,在初学一门语言的时候,都是会有一些难度的,就看你有没有找对学习路线和适合自己的学习方法~最简单的方法就是自己先学习一下,看看自己…

人脸识别门禁系统

利用树莓派开发板以及现有的摄像头,通过调用百度智能云的API接口进行人脸识别对比完成了整个过程实现简易的人脸识别门禁系统,并通过server酱平台,向相应的URL发送一个POST或者GET请求完成了对开门者信息推送到主人微信上的一个功能。通过多次…

门禁系统

1.什么是门禁系统? 门禁系统顾名思义就是对出入口通道进行管制的系统,它是在传统的门锁基础上发展而来。常见的门禁系统包括:密码识别门禁系统、刷卡识别门禁系统、生物识别门禁系统等。 2.门禁系统的分类 密码识别门禁系统 通过检验输入密码是否正确…