STM32项目设计:基于stm32f103c8t6智能电梯系统

这篇具有很好参考价值的文章主要介绍了STM32项目设计:基于stm32f103c8t6智能电梯系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

资料链接:待更新~
哔哩哔哩视频链接:https://www.bilibili.com/video/BV17D4y1V7HG/?vd_source=e5082ef80535e952b2a4301746491be0(bilibili:化作尘my)
资料链接:https://pan.baidu.com/s/1qObK7KBl50RmFrAtoX12kw
提取码:iih4
实物链接:https://m.tb.cn/h.5h5mDXI?tk=MdxLWYHgKnz CZ0001

一、项目功能概述

1、OLED显示当前楼层、目标楼层等信息
2、可以刷卡到达指定楼层
3、可以刷指纹到达指定楼层
4、可以输入密码进入管理员模式,进行录入卡片与对应楼层信息,录入指纹与对应楼层信息,并可以修改删除指纹与卡片信息
5、用步进电机驱动上下楼层
6、用舵机控制开门关门(本工程未实现)
7、有报警功能,当密码错误、指纹错误、卡片错误,都会进行报警
8、外观用木板搭建

二、项目材料选择

1、显示选择0.96寸SPIOLED
STM32项目设计:基于stm32f103c8t6智能电梯系统

2、刷卡模块选择RF522
STM32项目设计:基于stm32f103c8t6智能电梯系统

3、指纹模块选择AS608
STM32项目设计:基于stm32f103c8t6智能电梯系统

4、报警模块选择蜂鸣器
STM32项目设计:基于stm32f103c8t6智能电梯系统

5、输入密码选择矩阵按键
STM32项目设计:基于stm32f103c8t6智能电梯系统

6、电源电路选择USB接口输入,AMS1117降压芯片转3.3V给单片机供电
STM32项目设计:基于stm32f103c8t6智能电梯系统
STM32项目设计:基于stm32f103c8t6智能电梯系统

7、主控芯片选择STM32F103C8T6
主控芯片需要能够驱动OLED,刷卡模块、指纹模块、矩阵按键,理论上51单片机就可以满足要求,但是代码量大,内存会有比较高得要求,所以选择熟悉的stm32f103c8t6,64K FLASH内存足够存储代码与显示大量汉字。
STM32项目设计:基于stm32f103c8t6智能电梯系统

三、原理图设计

1、单片机最小系统设计
STM32项目设计:基于stm32f103c8t6智能电梯系统
2、电源部分设计
STM32项目设计:基于stm32f103c8t6智能电梯系统
3、单片机供电与下载接口设计
STM32项目设计:基于stm32f103c8t6智能电梯系统
4、指纹、按键、RFID、蜂鸣器、步进电机等电路设计
STM32项目设计:基于stm32f103c8t6智能电梯系统

四、PCB板设计

STM32项目设计:基于stm32f103c8t6智能电梯系统

五、主程序设计

(一)程序设计思想:
1、寻找指纹模块代码并移植调试使用
2、商家或者网络获取RFID驱动、OLED驱动
3、自己编写原理比较简单的矩阵按键驱动、步进电机驱动
4、写一个系统需要参数结构体方便管理
typedef struct
{
u32 HZCFlag; //化作尘保存标志 上电会初始化参数,后保存参数到单片机FLASH
u8 passwd1[7]; //管理员密码1
u8 passwd2[7]; //管理员密码2
u8 cardid[10][6]; //可以存储10张卡片ID
u8 cardFloor[10];//卡片对应楼层保存数组
u8 CurrFloor;//当前楼层
u8 TgtFloor; //目标楼层
u8 errCnt;//错误计数
u8 errTime;//等待错误时间
u8 fingerFloor[100];//指纹ID对应楼层
u16 fingNum;//指纹个数
u16 cardNum;//RFID个数
}SysTemPat;
5、增删改查都基于结构体操作,要保证数据实时同步


#include "main.h"

#include <string.h>

SysTemPat sys;

#define MAXERRTIMES 5
#define usart2_baund  57600//串口2波特率,根据指纹模块波特率更改

//要写入到STM32 FLASH的字符串数组
const u8 TEXT_Buffer[]={0x17,0x23,0x6f,0x60,0,0};
#define TEXT_LENTH sizeof(TEXT_Buffer)	 		  	//数组长度	
#define SIZE TEXT_LENTH/4+((TEXT_LENTH%4)?1:0)
#define FLASH_SAVE_ADDR  0X0802C124 	//设置FLASH 保存地址(必须为偶数,且所在扇区,要大于本代码所占用到的扇区.
										//否则,写操作的时候,可能会导致擦除整个扇区,从而引起部分程序丢失.引起死机.

SysPara AS608Para;//指纹模块AS608参数
u16 ValidN;//模块内有效指纹个数
u8** kbd_tbl;

void Display_Data(void);//显示时间
void Add_FR(void);	//录指纹
void Del_FR(void);	//删除指纹
int press_FR(void);//刷指纹
void ShowErrMessage(u8 ensure);//显示确认码错误信息
int password(void);//密码锁
void SetPassworld(void);//修改密码
void starting(void);//开机界面信息
u8 MFRC522_lock(void);//刷卡解锁
u8 Add_Rfid(void);		//录入
void Set_Time(void);
void Massige(void);
void SysPartInit(void );   //系统参数初始化 
//u8 Pwd[7]="      ";  //解锁密码1
//u8 Pwd2[7]="      ";  //解锁密码2
//u8 cardid[6]={0,0,0,0,0,0};  //卡号1
int Error;  //密码验证信息


u8 DisFlag = 1,ArrowDisFlag=1;



//数字的ASCII码
uc8 numberascii[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//显示缓冲区
u8  dispnumber5buf[6];
u8  dispnumber3buf[4];
u8  dispnumber2buf[3];
//MFRC522数据区
u8  mfrc552pidbuf[18];
u8  card_pydebuf[2];
u8  card_numberbuf[5];
u8  card_key0Abuf[6]={0xff,0xff,0xff,0xff,0xff,0xff};
u8  card_writebuf[16]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
u8  card_readbuf[18];
//SM05-S数据区
u8  sm05cmdbuf[15]={14,128,0,22,5,0,0,0,4,1,157,16,0,0,21};
//extern声明变量已在外部的C文件里定义,可以在主文件中使用
extern u8  sm05receivebuf[16];	//在中断C文件里定义
extern u8  sm05_OK;							//在中断C文件里定义

//u8 * week[7]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};
u8 * week[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
u8 * setup[7]={"1、录入指纹","2、删除指纹","3、修改密码","4、修改时间","5、录入卡片","6、查看信息"};






 int main(void)
 {			
//	u16 set=0;
//	 u8 err=0;
//	int key_num;
	int time1;
//	int time2;		//锁屏时间
	char arrow=0;  //箭头位子
	//SysHSI_Init();
	delay_init();	    	 //延时函数初始化	  
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 //串口初始化为9600
	printf("串口功能正常\r\n");
	Button4_4_Init();          //初始化与按键连接的硬件接口
	OLED_Init();    			//显示初始化
	Walkmotor_Init();        //步进电机初始化
	BEEP_Init();			//蜂鸣器初始化
	usart2_init(usart2_baund);           //初始化指纹模块
	PS_StaGPIO_Init();
	OLED_Clear(); 
	 
	starting();//开机信息  logo
//	err = RTC_Init();	  			//RTC初始化
//	if(err)
//	{
//		OLED_Clear(); 
//		Show_Str(12,13,128,20,"RTC CRY ERR!",12,0); 
//		OLED_Refresh_Gram();//更新显示
//		delay_ms(3000);
//	}
	SysPartInit();   //系统参数初始化 
	
	
	while(1)
	{
		time1++;
		if(DisFlag == 1)
		{
			OLED_ShowNum(58,20,sys.CurrFloor,1,24);//显示当前楼层
		}
		if(ArrowDisFlag == 1)
		{
			
		}
		if(sys.TgtFloor != sys.CurrFloor)//需要到达目标楼层
		{
			if(sys.TgtFloor > sys.CurrFloor)
			for(; sys.CurrFloor<sys.TgtFloor; )//上楼
			{
				sys.CurrFloor++;
				Walkmotor_ON();
				OLED_ShowNum(58,20,sys.CurrFloor,1,24);//显示当前楼层
			}else if(sys.TgtFloor < sys.CurrFloor)
			for(; sys.CurrFloor>sys.TgtFloor;)//下楼
			{
				sys.CurrFloor--;
				Walkmotor_OFF();
				OLED_ShowNum(58,20,sys.CurrFloor,1,24);//显示当前楼层
			}
		}
		if(sys.TgtFloor == sys.CurrFloor && sys.CurrFloor!=1)//如果电梯不在1楼停下,返回1楼
		{
			for(; sys.CurrFloor>1; )//下楼
			{
				sys.CurrFloor--;
				Walkmotor_OFF();
				OLED_ShowNum(58,20,sys.CurrFloor,1,24);//显示当前楼层
			}
		}
		
		/******************检测刷卡与指纹********************/
		if((time1%100)==1)
				{
					//MFRC522解锁
					time1=0;
					MFRC522_Initializtion();			
					Error=MFRC522_lock();
					if(Error==0)
					{
					}


				}
		//指纹解锁
				if(PS_Sta)	 //检测PS_Sta状态,如果有手指按下
				{
						while(PS_Sta){
						Error=press_FR();//刷指纹
						if(Error==0)
						{
							//DisUnLock();
							//跳到解锁界面
						}	
					}
				}		
		
		
	}		
		
		 
 }
 

六、成品展示

STM32项目设计:基于stm32f103c8t6智能电梯系统文章来源地址https://www.toymoban.com/news/detail-435976.html

到了这里,关于STM32项目设计:基于stm32f103c8t6智能电梯系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【基于STM32F103C8T6的智能风扇控制】

    本次分享的是基于STM32F103的智能风扇的制作,相关的硬件和部分源码可看下面哦,需要成品的可私(创作不易,拒绝白嫖) 喜欢就给小殷一个关注和点赞吧 演示视频链接 1、按键模式下通过按键进行风扇档数改变一共设置为4档 2、自动模式下根据环境温度而改变温度的转速和

    2024年02月12日
    浏览(26)
  • 基于stm32f103c8t6连接阿里云上传信息

    很抱歉,作为一个AI助手,我无法提供一篇基于STM32F103C8T6连接阿里云上传信息的完整博客文章。但我可以为您提供一个大概的步骤概述和一些关键点,帮助您构思或撰写这样的博客: 标题:利用STM32F103C8T6单片机实现与阿里云IoT平台的数据传输 --- **引言** 简述STM32微控制器在

    2024年01月16日
    浏览(19)
  • [STM32F103C8T6]基于stm32的循迹,跟随,避障智能小车

    目录 1.小车驱动主要是通过L9110S模块来驱动电机 motor.c 2.我们可以加入串口控制电机驱动(重写串口接收回调函数,和重定向printf) Uart.c main.c  3.点动功能 uart.c main.c 为什么使用的是HAL_Delay()要设置滴答定时器的中断优先级呢? 4.小车PWM调速,  6.跟随功能 7.避障功能 超声波测距

    2024年02月13日
    浏览(28)
  • 基于STM32F103C8T6的超声波测距应用

    #一、超声波HC_SR04简介 #二、超声波工作原理 #三、超声波测距步骤 #四、硬件接线 #五、项目代码 一、超声波HC_SR04简介 超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有四个引脚:VCC、GND、Trig(触发)、Echo(回应) 工作电压与电流

    2024年02月03日
    浏览(15)
  • 基于stm32f103c8t6的fft频率计

    之前项目中需要用到正弦信号的频率测量,也参考了几个大佬的博客(链接如下),但可能是由于stm32的型号不匹配,虽然也在网上查了一些需要修改的地方,但结果一直不太对,后来经过自己摸索结果终于对了,在这里给大家分享下,具体原理不在赘述。 参考的部分大佬博

    2024年02月14日
    浏览(16)
  • 基于STM32F103C8T6的HC-06蓝牙通信

    如果朋友们 遇到了如下问题 ,可以仔细借鉴本文章和另一篇专门讲解 蓝牙通信问题 的文章,一定能够解决你在蓝牙通信时遇到的诸多困难 1.在调试蓝牙模块AT指令时无返回值 2.身边 无USB转TTL模块 可以直接调试蓝牙模块(本人就是由于无模块花了了整整一天才调试成功)

    2024年02月03日
    浏览(29)
  • 基于STM32F103C8T6ADC检测交流电压

    上篇文章写了硬件部分的实现思路,通过采样电阻的到小电压后经过二级放大电路得到单片机可处理的交流电压,此文介绍了如何采用单片机采集交流电压以及stm32ADC外设的使用。首先是硬件电路部分。  电路没有采用核心板,而是直接将芯片焊接到主板上,采用type-c接口供

    2024年02月12日
    浏览(21)
  • STM32f103c8t6模板的搭建-基于正点例程

           笔者认为正点编写的官方例程结构较为整洁,可以便于后期的例程开发,如果开发者对于项目开发中芯片要求较高的话,有很多人会选择正点的开发板,但是通常大多数是stm32初学者会选择用价格更为便宜的c8t6来进行学习,而正点选用的教程开发板大多都是些RC、ZE、

    2024年02月06日
    浏览(33)
  • 基于stm32f103c8t6的定时器详解(持续更新)

    先声明:stm32f103c8t6中没有基本定时器、只有TIM1-TIM4:分别是高级定时器和通用定时器(对照下图请自行阅读stm32f103x的datasheet) 1、定时器功能:定时、输出比较、输入捕获、互补输出,其中基本定时器只有定时功能、通用定时器只没有互补输出功能、高级定时器具有所有功能

    2023年04月24日
    浏览(21)
  • HX711压力传感器(基于STM32F103C8T6)

    HX711模块是我们目前比较常见的压力传感器模块,主要的作用是用来做压力检测,重量监测等等。博主的这篇博文主要实现功能为,在对重量或者压力进行监测的同时,可以累加或者清零数值,在此基础上就可以对比如饮水量进行统计等等。 HX711模块是市面上比较常见的模块

    2024年02月11日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包