前言:
不久前结束了硬件课设,想着也花了不少精力做这个,走了不少弯路,找了网上很多资料,但无奈都是单独的例程文件,自己不断整合调整后才得到了现在这个版本,故在此写个博客记录一下。本项目主要是基于stm32f103c8t6进行的智能门锁设计,实现了键盘解锁、指纹解锁、RFID解锁,解锁过程主要用步进电机进行模拟。
一、材料准备
1、bom表

注意其中的USB转TTL可以不买,视读者自身调试代码能力而定。
另外还需要一些其他材料,比如杜邦线、面包板,各种芯片或者小原件的排针需要焊接的最好让商家焊好,不然之后调试过程就会贼痛苦(真的是血的教训)。当然,焊接能力到位的读者还可以尝试买洞洞板和导线让自己的作品更美观。
二、模块设计
1、OLED模块
在将芯片安装在面包板上后,我们可以先安装OLED模块以便之后其他模块的调试。因为我们买的是4针的OLED屏,代码编写的时候也要注意用对应的iic协议。
部分代码如下:
#include "oled_iic.h"
#include "Delay.h"
#include "oledfont.h"
#include "string.h"
unsigned int HZ=0;
//返回GB16字库里汉字个数
unsigned int GB16_NUM(void)
{
unsigned int HZ_NUM;
unsigned char *PT;
PT = hz_index;
while(*PT++ != '\0')
{
HZ_NUM++;
}
return HZ_NUM/2;
}
void IIC_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(OLED_SCL_RCC|OLED_SDA_RCC, ENABLE); /* 打开GPIO时钟 */
GPIO_InitStructure.GPIO_Pin = OLED_SCL_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; /* 开漏输出 */
GPIO_Init(OLED_SCL_GPIO_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = OLED_SDA_PIN;
GPIO_Init(OLED_SDA_GPIO_PORT, &GPIO_InitStructure);
/* 给一个停止信号, 复位IIC总线上的所有设备到待机模式 */
IIC_Stop();
}
static void IIC_Delay(void)
{
uint8_t i;
/*
下面的时间是通过逻辑分析仪测试得到的。
工作条件:CPU主频72MHz ,MDK编译环境,1级优化
循环次数为10时,SCL频率 = 205KHz
循环次数为7时,SCL频率 = 347KHz, SCL高电平时间1.5us,SCL低电平时间2.87us
循环次数为5时,SCL频率 = 421KHz, SCL高电平时间1.25us,SCL低电平时间2.375us
*/
for (i = 0; i < 10; i++);
}
/*
*********************************************************************************************************
*

该文详述了一项基于STM32F103C8T6芯片的智能门锁设计,实现了键盘、指纹和RFID三种解锁方式,以及步进电机驱动的模拟开关门功能。作者分享了项目材料准备、各模块的代码实现,包括OLED显示、4x4矩阵按键、AS608指纹识别和RFID读卡的详细步骤,并提供了部分关键代码示例。
最低0.47元/天 解锁文章
1082

被折叠的 条评论
为什么被折叠?



